CSR-762 Finish list-button
This commit is contained in:
parent
42fdd8aa46
commit
3707443e15
5 changed files with 75 additions and 80 deletions
|
|
@ -39,20 +39,18 @@
|
||||||
<div :class="getComponentLoopWrapperClasses">
|
<div :class="getComponentLoopWrapperClasses">
|
||||||
<div
|
<div
|
||||||
:class="getComponentWrapperClasses"
|
:class="getComponentWrapperClasses"
|
||||||
v-for="answer in answers"
|
v-for="answer in buttonsInfo"
|
||||||
:key="answer.Name ? answer.Name : answer"
|
:key="answer.Name ? answer.Name : answer"
|
||||||
>
|
>
|
||||||
<component
|
<component
|
||||||
:is="buttonType"
|
:is="buttonType"
|
||||||
:buttonLabel="
|
:buttonLabel="answer.buttonLabel"
|
||||||
answer.Text ? answer.Text : getAnswerString(answer, 'Name')
|
:buttonLabelSubCopy="answer.buttonLabelSubCopy"
|
||||||
"
|
|
||||||
:buttonLabelSubCopy="answer.SubText"
|
|
||||||
:isMultiSelect="isMultiSelect"
|
:isMultiSelect="isMultiSelect"
|
||||||
:groupName="groupName"
|
:groupName="groupName"
|
||||||
:value="answer.Name"
|
:value="answer.value"
|
||||||
:modelValue="modelValue"
|
:modelValue="modelValue"
|
||||||
@change="(e) => test(e)"
|
@change="(e) => handleAnswerChange(e)"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- <component
|
<!-- <component
|
||||||
|
|
@ -195,14 +193,25 @@ export default {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
selectedValues: {
|
// selectedValues: {
|
||||||
get: function () {
|
// get: function () {
|
||||||
return this.modelValue;
|
// return this.modelValue;
|
||||||
},
|
// },
|
||||||
set: function (newValue) {
|
// set: function (newValue) {
|
||||||
// this.$emit("update:modelValue", newValue);
|
// // this.$emit("update:modelValue", newValue);
|
||||||
},
|
// },
|
||||||
},
|
// },
|
||||||
|
buttonsInfo() {
|
||||||
|
return this.answers.map(answer => ({
|
||||||
|
buttonLabel: answer.Text ?? answer,
|
||||||
|
altText: answer.Name ? answer.Name : answer,
|
||||||
|
buttonLabelSubCopy: answer.SubText,
|
||||||
|
buttonImage: answer.AnswerImageUrl,
|
||||||
|
buttonImageId: answer.ImageId,
|
||||||
|
groupName: this.formatString(this.groupName),
|
||||||
|
value: this.useTextForValue ? answer.Text : (answer.Name ?? answer)
|
||||||
|
}))
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
formatString(str) {
|
formatString(str) {
|
||||||
|
|
@ -226,56 +235,26 @@ export default {
|
||||||
: this.formatString(answer.toString());
|
: this.formatString(answer.toString());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
handleCheckedChanged(val) {
|
// handleCheckedChanged(val) {
|
||||||
if (this.selectingInitiatesLoad) {
|
// if (this.selectingInitiatesLoad) {
|
||||||
this.selectedValues = val.value;
|
// this.selectedValues = val.value;
|
||||||
} else {
|
|
||||||
if (Array.isArray(this.selectedValues)) {
|
|
||||||
const newSelectedValues = this.selectedValues;
|
|
||||||
val.checkValue
|
|
||||||
? newSelectedValues.push(val.value)
|
|
||||||
: newSelectedValues.splice(newSelectedValues.indexOf(val.value), 1);
|
|
||||||
this.selectedValues = newSelectedValues;
|
|
||||||
} else {
|
|
||||||
this.selectedValues = val.value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.$emit("isCheckedChanged", val);
|
|
||||||
},
|
|
||||||
test(event) {
|
|
||||||
console.log(event)
|
|
||||||
this.$emit("update:modelValue", event);
|
|
||||||
},
|
|
||||||
// test(event, value) {
|
|
||||||
// console.log(value)
|
|
||||||
// console.log("BQ event: ", event)
|
|
||||||
// let isChecked = event.target?.checked;
|
|
||||||
// let valueToEmit;
|
|
||||||
// if (this.isMultiSelect && this.modelValue instanceof Array) {
|
|
||||||
// let newValue = [...this.modelValue];
|
|
||||||
// const toggledValue = event.target?.value;
|
|
||||||
// console.log("A: ", this.modelValue)
|
|
||||||
// console.log("isChecked: ", isChecked)
|
|
||||||
// console.log("value: ", toggledValue)
|
|
||||||
// if (isChecked) {
|
|
||||||
// newValue.push(toggledValue);
|
|
||||||
// } else {
|
|
||||||
// newValue.splice(newValue.indexOf(toggledValue), 1);
|
|
||||||
// }
|
|
||||||
// console.log("handleCheckboxChange: ", newValue);
|
|
||||||
// // this.$emit("update:modelValue", newValue);
|
|
||||||
// // this.$emit("update:value", newValue)
|
|
||||||
|
|
||||||
// valueToEmit = newValue;
|
|
||||||
// } else {
|
// } else {
|
||||||
// console.log("handleRadioChange: ", isChecked);
|
// if (Array.isArray(this.selectedValues)) {
|
||||||
// // this.$emit("update:modelValue", value);
|
// const newSelectedValues = this.selectedValues;
|
||||||
// valueToEmit = value;
|
// val.checkValue
|
||||||
|
// ? newSelectedValues.push(val.value)
|
||||||
|
// : newSelectedValues.splice(newSelectedValues.indexOf(val.value), 1);
|
||||||
|
// this.selectedValues = newSelectedValues;
|
||||||
|
// } else {
|
||||||
|
// this.selectedValues = val.value;
|
||||||
|
// }
|
||||||
// }
|
// }
|
||||||
|
// this.$emit("isCheckedChanged", val);
|
||||||
// console.log("BQ emitting: ", valueToEmit)
|
|
||||||
// this.$emit("update:modelValue", valueToEmit);
|
|
||||||
// },
|
// },
|
||||||
|
handleAnswerChange(eventValue) {
|
||||||
|
console.log(eventValue)
|
||||||
|
this.$emit("update:modelValue", eventValue);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
listButton,
|
listButton,
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,11 @@
|
||||||
<template>
|
<template>
|
||||||
<label :class="classes" :for="buttonId">
|
<label :class="classes" :for="buttonId">
|
||||||
classes: {{classes}}<br/>
|
<!-- classes: {{classes}}<br/>
|
||||||
value: {{value}} <br/>
|
value: {{value}} <br/>
|
||||||
modelValue: {{modelValue}} <br/>
|
modelValue: {{modelValue}} <br/>
|
||||||
buttonId: {{buttonId}} <br/>
|
buttonId: {{buttonId}} <br/> -->
|
||||||
<input
|
<input
|
||||||
:type="inputType"
|
:type="inputType"
|
||||||
|
|
||||||
:id="buttonId"
|
:id="buttonId"
|
||||||
:name="groupName"
|
:name="groupName"
|
||||||
:aria-required="isRequired"
|
:aria-required="isRequired"
|
||||||
|
|
@ -26,3 +25,11 @@ export default {
|
||||||
mixins: [buttonMixin],
|
mixins: [buttonMixin],
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
input {
|
||||||
|
opacity: 0;
|
||||||
|
height: 0;
|
||||||
|
width: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<buttonQuestion
|
<div>
|
||||||
|
YQ: {{ selectedValue }}
|
||||||
|
<buttonQuestion
|
||||||
class="radioQuestion"
|
class="radioQuestion"
|
||||||
isOverflowScrollable
|
isOverflowScrollable
|
||||||
selectingInitiatesLoad
|
selectingInitiatesLoad
|
||||||
|
|
@ -10,6 +12,8 @@
|
||||||
v-model="selectedValue"
|
v-model="selectedValue"
|
||||||
isRequired
|
isRequired
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
@ -21,7 +25,8 @@ export default {
|
||||||
name: "year-question",
|
name: "year-question",
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
years: Array,
|
years: [],
|
||||||
|
selectedValue: null
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
|
|
@ -35,14 +40,14 @@ export default {
|
||||||
questionText(){
|
questionText(){
|
||||||
return this.getCmsContent(this.cmsWidgetName, 'QuestionText');
|
return this.getCmsContent(this.cmsWidgetName, 'QuestionText');
|
||||||
},
|
},
|
||||||
selectedValue: {
|
// selectedValue: {
|
||||||
get: function() {
|
// get: function() {
|
||||||
return this.modelValue
|
// return this.modelValue
|
||||||
},
|
// },
|
||||||
set: function(newValue) {
|
// set: function(newValue) {
|
||||||
this.$emit("update:modelValue", newValue);
|
// this.$emit("update:modelValue", newValue);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
loadInitialData() {
|
loadInitialData() {
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,6 @@ export default {
|
||||||
|
|
||||||
console.log("ButtonWrapper is emitting: ", valueToEmit);
|
console.log("ButtonWrapper is emitting: ", valueToEmit);
|
||||||
this.$emit("change", valueToEmit);
|
this.$emit("change", valueToEmit);
|
||||||
// this.$emit("change", event);
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|
|
||||||
|
|
@ -19,15 +19,16 @@
|
||||||
class="d-flex flex-column justify-content-center py-3 px-4"
|
class="d-flex flex-column justify-content-center py-3 px-4"
|
||||||
@mouseup="triggerButton"
|
@mouseup="triggerButton"
|
||||||
> -->
|
> -->
|
||||||
LB value: {{ value }}<br />
|
<!-- LB value: {{ value }}<br />
|
||||||
LB modelValue: {{ modelValue }}
|
LB modelValue: {{ modelValue }}
|
||||||
|
LB groupName: {{ groupName }} -->
|
||||||
<!-- , {'has-error': errors.length > 0 || hasError} -->
|
<!-- , {'has-error': errors.length > 0 || hasError} -->
|
||||||
<!-- <buttonWrapper
|
<!-- <buttonWrapper
|
||||||
v-bind="$props"
|
v-bind="$props"
|
||||||
:classes="['list-group list-button rounded-3 d-flex flex-column w-100 mb-2', {'has-error': errors.length > 0 || hasError}]"
|
:classes="['list-group list-button rounded-3 d-flex flex-column w-100 mb-2', {'has-error': errors.length > 0 || hasError}]"
|
||||||
@change="(e) => $emit('change', e)"
|
@change="(e) => $emit('change', e)"
|
||||||
> -->
|
> -->
|
||||||
LB groupName: {{ groupName }}
|
|
||||||
<buttonWrapper
|
<buttonWrapper
|
||||||
:isMultiSelect="isMultiSelect"
|
:isMultiSelect="isMultiSelect"
|
||||||
:modelValue="modelValue"
|
:modelValue="modelValue"
|
||||||
|
|
@ -37,7 +38,7 @@
|
||||||
'list-group list-button rounded-3 d-flex flex-column w-100 mb-2',
|
'list-group list-button rounded-3 d-flex flex-column w-100 mb-2',
|
||||||
{ 'has-error': errors.length > 0 || hasError },
|
{ 'has-error': errors.length > 0 || hasError },
|
||||||
]"
|
]"
|
||||||
@change="lbTest"
|
@change="handleAnswerChange"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
|
|
@ -117,7 +118,10 @@ export default {
|
||||||
displayLoader() {
|
displayLoader() {
|
||||||
this.isLoaderDisplayed = true;
|
this.isLoaderDisplayed = true;
|
||||||
},
|
},
|
||||||
lbTest(e) {
|
handleAnswerChange(e) {
|
||||||
|
if (this.selectingInitiatesLoad) {
|
||||||
|
this.displayLoader();
|
||||||
|
}
|
||||||
console.log("lbTest event: ", e)
|
console.log("lbTest event: ", e)
|
||||||
this.$emit("change", e);
|
this.$emit("change", e);
|
||||||
},
|
},
|
||||||
|
|
@ -138,6 +142,7 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO KO THIS IS IMPORTANT
|
// TODO KO THIS IS IMPORTANT
|
||||||
|
// Move this to button-wrapper?
|
||||||
this.pushEventToGA(
|
this.pushEventToGA(
|
||||||
this.$route.query[queryStrings.FMG_PAGE],
|
this.$route.query[queryStrings.FMG_PAGE],
|
||||||
this.GaActions.CLICKED,
|
this.GaActions.CLICKED,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue