CSR-762 Finish list-button

This commit is contained in:
Katie 2022-09-16 09:12:59 -04:00
parent 42fdd8aa46
commit 3707443e15
5 changed files with 75 additions and 80 deletions

View file

@ -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,

View file

@ -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>

View file

@ -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() {

View file

@ -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: {

View file

@ -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,