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="getComponentWrapperClasses"
v-for="answer in answers"
v-for="answer in buttonsInfo"
:key="answer.Name ? answer.Name : answer"
>
<component
:is="buttonType"
:buttonLabel="
answer.Text ? answer.Text : getAnswerString(answer, 'Name')
"
:buttonLabelSubCopy="answer.SubText"
:buttonLabel="answer.buttonLabel"
:buttonLabelSubCopy="answer.buttonLabelSubCopy"
:isMultiSelect="isMultiSelect"
:groupName="groupName"
:value="answer.Name"
:value="answer.value"
:modelValue="modelValue"
@change="(e) => test(e)"
@change="(e) => handleAnswerChange(e)"
/>
<!-- <component
@ -195,14 +193,25 @@ export default {
return "";
}
},
selectedValues: {
get: function () {
return this.modelValue;
},
set: function (newValue) {
// this.$emit("update:modelValue", newValue);
},
},
// selectedValues: {
// get: function () {
// return this.modelValue;
// },
// set: function (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: {
formatString(str) {
@ -226,56 +235,26 @@ export default {
: this.formatString(answer.toString());
}
},
handleCheckedChanged(val) {
if (this.selectingInitiatesLoad) {
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;
// handleCheckedChanged(val) {
// if (this.selectingInitiatesLoad) {
// this.selectedValues = val.value;
// } else {
// console.log("handleRadioChange: ", isChecked);
// // this.$emit("update:modelValue", value);
// valueToEmit = value;
// 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;
// }
// }
// console.log("BQ emitting: ", valueToEmit)
// this.$emit("update:modelValue", valueToEmit);
// this.$emit("isCheckedChanged", val);
// },
handleAnswerChange(eventValue) {
console.log(eventValue)
this.$emit("update:modelValue", eventValue);
},
},
components: {
listButton,

View file

@ -1,12 +1,11 @@
<template>
<label :class="classes" :for="buttonId">
classes: {{classes}}<br/>
<!-- classes: {{classes}}<br/>
value: {{value}} <br/>
modelValue: {{modelValue}} <br/>
buttonId: {{buttonId}} <br/>
buttonId: {{buttonId}} <br/> -->
<input
:type="inputType"
:id="buttonId"
:name="groupName"
:aria-required="isRequired"
@ -26,3 +25,11 @@ export default {
mixins: [buttonMixin],
};
</script>
<style scoped>
input {
opacity: 0;
height: 0;
width: 0;
}
</style>

View file

@ -1,5 +1,7 @@
<template>
<buttonQuestion
<div>
YQ: {{ selectedValue }}
<buttonQuestion
class="radioQuestion"
isOverflowScrollable
selectingInitiatesLoad
@ -10,6 +12,8 @@
v-model="selectedValue"
isRequired
/>
</div>
</template>
<script>
@ -21,7 +25,8 @@ export default {
name: "year-question",
data() {
return {
years: Array,
years: [],
selectedValue: null
};
},
props: {
@ -35,14 +40,14 @@ export default {
questionText(){
return this.getCmsContent(this.cmsWidgetName, 'QuestionText');
},
selectedValue: {
get: function() {
return this.modelValue
},
set: function(newValue) {
this.$emit("update:modelValue", newValue);
}
}
// selectedValue: {
// get: function() {
// return this.modelValue
// },
// set: function(newValue) {
// this.$emit("update:modelValue", newValue);
// }
// }
},
methods: {
loadInitialData() {

View file

@ -62,7 +62,6 @@ export default {
console.log("ButtonWrapper is emitting: ", valueToEmit);
this.$emit("change", valueToEmit);
// this.$emit("change", event);
},
},
computed: {

View file

@ -19,15 +19,16 @@
class="d-flex flex-column justify-content-center py-3 px-4"
@mouseup="triggerButton"
> -->
LB value: {{ value }}<br />
<!-- LB value: {{ value }}<br />
LB modelValue: {{ modelValue }}
LB groupName: {{ groupName }} -->
<!-- , {'has-error': errors.length > 0 || hasError} -->
<!-- <buttonWrapper
v-bind="$props"
: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)"
> -->
LB groupName: {{ groupName }}
<buttonWrapper
:isMultiSelect="isMultiSelect"
:modelValue="modelValue"
@ -37,7 +38,7 @@
'list-group list-button rounded-3 d-flex flex-column w-100 mb-2',
{ 'has-error': errors.length > 0 || hasError },
]"
@change="lbTest"
@change="handleAnswerChange"
>
<div
tabindex="-1"
@ -117,7 +118,10 @@ export default {
displayLoader() {
this.isLoaderDisplayed = true;
},
lbTest(e) {
handleAnswerChange(e) {
if (this.selectingInitiatesLoad) {
this.displayLoader();
}
console.log("lbTest event: ", e)
this.$emit("change", e);
},
@ -138,6 +142,7 @@ export default {
}
// TODO KO THIS IS IMPORTANT
// Move this to button-wrapper?
this.pushEventToGA(
this.$route.query[queryStrings.FMG_PAGE],
this.GaActions.CLICKED,