CSR-762 Undo changing from computed to watch

This commit is contained in:
Katie 2022-10-03 08:44:58 -04:00
parent 9e91a60ea3
commit 76b1bd9b2e
8 changed files with 146 additions and 140 deletions

View file

@ -6,7 +6,8 @@
:answers="answersToDisplay" :answers="answersToDisplay"
:groupName="groupName" :groupName="groupName"
buttonType="listCard" buttonType="listCard"
v-model="selectedDamageLocations" isRequired
v-model="selectedValues"
validationRules="damage-location-required" validationRules="damage-location-required"
/> />
</div> </div>
@ -26,12 +27,11 @@ export default ({
name: "damageLocationQuestion", name: "damageLocationQuestion",
data(){ data(){
return { return {
damageOptions: {}, damageOptions: Object,
selectedDamageLocations: this.modelValue
} }
}, },
props: { props: {
modelValue: [Array, String, Number], modelValue: Array,
groupName: String, groupName: String,
cmsWidgetName: String, cmsWidgetName: String,
}, },
@ -47,6 +47,14 @@ export default ({
answersFromCms(){ answersFromCms(){
return this.getCmsContent(this.cmsWidgetName, 'Answers'); return this.getCmsContent(this.cmsWidgetName, 'Answers');
}, },
selectedValues: {
get: function() {
return this.modelValue;
},
set: function(newValue) {
this.$emit("update:modelValue", newValue);
}
},
damageOptionsMap(){ damageOptionsMap(){
return { return {
Windshield: true, Windshield: true,
@ -69,11 +77,6 @@ export default ({
}); });
}, },
}, },
watch: {
selectedDamageLocations(selectedDamageLocations) {
this.$emit("update:modelValue", selectedDamageLocations);
}
},
components: { components: {
buttonQuestion, buttonQuestion,
}, },

View file

@ -8,7 +8,7 @@
:answers="answersToDisplay" :answers="answersToDisplay"
:groupName="groupName" :groupName="groupName"
buttonType="listCard" buttonType="listCard"
v-model="selectedReplaceOptions" v-model="selectedValues"
:validationRules="validationRules" :validationRules="validationRules"
:suppressError="suppressError" :suppressError="suppressError"
:isRequired="isRequired" :isRequired="isRequired"
@ -23,17 +23,16 @@ import store from "@/store";
export default ({ export default ({
name: "replaceOptionsQuestion", name: "replaceOptionsQuestion",
data() { data(){
return { return {
replaceOptions: [], replaceOptions: [],
selectedReplaceOptions: this.modelValue
} }
}, },
props: { props: {
modelValue: [Array, String, Number],
isAvailable: Boolean, isAvailable: Boolean,
filterByVehicleCategory: Boolean, filterByVehicleCategory: Boolean,
groupName: String, groupName: String,
modelValue: [Array, String, Number],
isMultiSelect: Boolean, isMultiSelect: Boolean,
validationRules: String, validationRules: String,
suppressError: Boolean, suppressError: Boolean,
@ -41,15 +40,13 @@ export default ({
isRequired: Boolean, isRequired: Boolean,
}, },
methods: { methods: {
initializeComponent(replaceOptions) { initializeComponent(replaceOptions){
this.replaceOptions = replaceOptions; this.replaceOptions = replaceOptions;
}, },
updateSelectedValues() { updateSelectedValues() {
// UPDATE SELECTEDVALUES IF ONLY ONE ANSWER // UPDATE SELECTEDVALUES IF ONLY ONE ANSWER
// ex: BackGlass stationary if(Array.isArray(this.answersToDisplay) && this.answersToDisplay.length === 1) {
if (Array.isArray(this.answersToDisplay) && this.answersToDisplay.length === 1) { this.selectedValues = [this.answersToDisplay[0].Name];
const selectedAnswer = this.answersToDisplay[0].Name;
this.selectedReplaceOptions = this.isMultiSelect ? [selectedAnswer] : selectedAnswer;
} }
}, },
}, },
@ -60,6 +57,14 @@ export default ({
answersFromCms(){ answersFromCms(){
return this.getCmsContent(this.cmsWidgetName, 'Answers'); return this.getCmsContent(this.cmsWidgetName, 'Answers');
}, },
selectedValues: {
get: function() {
return this.modelValue;
},
set: function(newValue) {
this.$emit("update:modelValue", newValue);
}
},
answersToDisplay(){ answersToDisplay(){
const filteredAnswers = Array.isArray(this.answersFromCms) const filteredAnswers = Array.isArray(this.answersFromCms)
? this.answersFromCms.filter(ans => ? this.answersFromCms.filter(ans =>
@ -86,11 +91,8 @@ export default ({
}, },
shouldDisplayReplaceOptionsQuestion(shouldDisplayReplaceOptionsQuestion) { shouldDisplayReplaceOptionsQuestion(shouldDisplayReplaceOptionsQuestion) {
if (!shouldDisplayReplaceOptionsQuestion) { if (!shouldDisplayReplaceOptionsQuestion) {
this.selectedReplaceOptions = []; this.selectedValues = [];
} }
},
selectedReplaceOptions(selectedReplaceOptions) {
this.$emit("update:modelValue", selectedReplaceOptions);
} }
}, },
components: { components: {

View file

@ -7,7 +7,7 @@
:groupName="groupName" :groupName="groupName"
buttonType="listButtonHorizontal" buttonType="listButtonHorizontal"
useTextForValue useTextForValue
v-model="numberOfChips" v-model="selectedValue"
:validationRules="validationRules" :validationRules="validationRules"
isRequired isRequired
/> />
@ -19,12 +19,7 @@
import buttonQuestion from "@/common-components/button-question/button-question"; import buttonQuestion from "@/common-components/button-question/button-question";
export default ({ export default ({
name: "windshieldChipCountQuestion", name: "windshieldOptions",
data() {
return {
numberOfChips: this.modelValue
}
},
props: { props: {
modelValue: [String, Number], modelValue: [String, Number],
groupName: String, groupName: String,
@ -39,14 +34,18 @@ export default ({
answersFromCms(){ answersFromCms(){
return this.getCmsContent(this.cmsWidgetName, 'Answers'); return this.getCmsContent(this.cmsWidgetName, 'Answers');
}, },
selectedValue: {
get: function() {
return this.modelValue;
},
set: function(newValue) {
const numberValue = Number(newValue);
this.$emit("update:modelValue", numberValue);
}
},
}, },
components: { components: {
buttonQuestion, buttonQuestion,
},
watch: {
numberOfChips(numberOfChips) {
this.$emit("update:modelValue", numberOfChips);
}
} }
}) })
</script> </script>

View file

@ -1,18 +1,16 @@
<template> <template>
<transition name="fade" mode="out-in"> <transition name="fade" mode="out-in">
<div <div class="windshield-damage-type-question" v-if="isAvailable" aria-live="polite">
class="windshield-damage-type-question"
v-if="isAvailable"
aria-live="polite">
<buttonQuestion <buttonQuestion
:questionText="questionText" :questionText="questionText"
:answers="answersFromCms" :answers="answersFromCms"
:groupName="groupName" :groupName="groupName"
buttonType="listCard" buttonType="listCard"
v-model="selectedWindshieldDamageType" v-model="selectedValues"
:suppressError="suppressError" :suppressError="suppressError"
:validationRules="validationRules" :validationRules="validationRules"
isRequired /> isRequired
/>
</div> </div>
</transition> </transition>
</template> </template>
@ -20,13 +18,8 @@
<script> <script>
import buttonQuestion from "@/common-components/button-question/button-question"; import buttonQuestion from "@/common-components/button-question/button-question";
export default { export default ({
name: "windshieldDamageTypeQuestion", name: "windshieldDamageTypeQuestion",
data() {
return {
selectedWindshieldDamageType: this.modelValue,
};
},
props: { props: {
modelValue: String, modelValue: String,
groupName: String, groupName: String,
@ -36,20 +29,23 @@ export default {
cmsWidgetName: String, cmsWidgetName: String,
}, },
computed: { computed: {
questionText() { questionText(){
return this.getCmsContent(this.cmsWidgetName, "QuestionText"); return this.getCmsContent(this.cmsWidgetName, 'QuestionText');
}, },
answersFromCms() { answersFromCms(){
return this.getCmsContent(this.cmsWidgetName, "Answers"); return this.getCmsContent(this.cmsWidgetName, 'Answers');
}, },
}, selectedValues: {
watch: { get: function() {
selectedWindshieldDamageType(selectedWindshieldDamageType) { return this.modelValue;
this.$emit("update:modelValue", selectedWindshieldDamageType); },
set: function(newValue) {
this.$emit("update:modelValue", newValue);
}
}, },
}, },
components: { components: {
buttonQuestion, buttonQuestion,
}, }
}; })
</script> </script>

View file

@ -1,15 +1,16 @@
<template> <template>
<buttonQuestion <buttonQuestion
class="radioQuestion" class="radioQuestion"
isOverflowScrollable isOverflowScrollable
selectingInitiatesLoad selectingInitiatesLoad
:questionText="questionText" :questionText="questionText"
:answers="makes" :answers="makes"
groupName="ChooseVehicleMake" groupName="ChooseVehicleMake"
textPosition="text-start" textPosition="text-start"
v-model="selectedMake" v-model="selectedValue"
:selectOnKeypress="false" :selectOnKeypress="false"
isRequired /> isRequired
/>
</template> </template>
<script> <script>
@ -20,40 +21,42 @@ import { storeActions } from "@/constants/store-actions.js";
import baseMixin from "@/mixins/base-mixin.js"; import baseMixin from "@/mixins/base-mixin.js";
export default { export default {
name: "make-question", name: "make-question",
data() { data() {
return { return {
makes: [], makes: [],
selectedMake: "" };
}; },
props: {
modelValue: String,
cmsWidgetName: String,
},
computed: {
questionText(){
return this.getCmsContent(this.cmsWidgetName, 'QuestionText');
}, },
props: { selectedValue: {
modelValue: String, get: function() {
cmsWidgetName: String, return this.modelValue
},
set: function(newValue) {
this.$emit("update:modelValue", newValue);
}
}
},
components: {
buttonQuestion,
},
methods: {
loadInitialData() {
return baseMixin.methods.dispatchStoreAction(
storeActions.GET_VEHICLE_MAKES,
{ year: store.getters.vehicle.year }
);
}, },
computed: { initializeComponent(initialData) {
questionText() { this.makes = initialData;
return this.getCmsContent(this.cmsWidgetName, "QuestionText");
},
},
components: {
buttonQuestion,
},
methods: {
loadInitialData() {
return baseMixin.methods.dispatchStoreAction(
storeActions.GET_VEHICLE_MAKES,
{ year: store.getters.vehicle.year }
);
},
initializeComponent(initialData) {
this.makes = initialData;
},
},
watch: {
selectedMake(selectedMake) {
this.$emit("update:modelValue", selectedMake);
},
}, },
},
}; };
</script> </script>

View file

@ -7,7 +7,7 @@
:answers="models" :answers="models"
groupName="ChooseVehicleModel" groupName="ChooseVehicleModel"
textPosition="text-start" textPosition="text-start"
v-model="selectedModel" v-model="selectedValue"
:selectOnKeypress="false" :selectOnKeypress="false"
isRequired isRequired
/> />
@ -25,7 +25,6 @@ export default {
data() { data() {
return { return {
models: [], models: [],
selectedModel: ""
}; };
}, },
props: { props: {
@ -36,6 +35,14 @@ export default {
questionText(){ questionText(){
return this.getCmsContent(this.cmsWidgetName, 'QuestionText'); return this.getCmsContent(this.cmsWidgetName, 'QuestionText');
}, },
selectedValue: {
get: function() {
return this.modelValue
},
set: function(newValue) {
this.$emit("update:modelValue", newValue);
}
}
}, },
components: { components: {
buttonQuestion, buttonQuestion,
@ -51,10 +58,5 @@ export default {
this.models = initialData; this.models = initialData;
}, },
}, },
watch: {
selectedModel(selectedModel) {
this.$emit("update:modelValue", selectedModel);
}
}
}; };
</script> </script>

View file

@ -7,8 +7,7 @@
:answers="styles" :answers="styles"
groupName="ChooseVehicleStyle" groupName="ChooseVehicleStyle"
textPosition="text-start" textPosition="text-start"
v-model="selectedStyle" v-model="selectedValue"
:selectOnKeypress="false"
isRequired isRequired
/> />
</template> </template>
@ -25,16 +24,24 @@ export default {
data() { data() {
return { return {
styles: [], styles: [],
selectedStyle: ""
}; };
}, },
props: { props: {
modelValue: String,
cmsWidgetName: String, cmsWidgetName: String,
}, },
computed: { computed: {
questionText(){ questionText(){
return this.getCmsContent(this.cmsWidgetName, 'QuestionText'); return this.getCmsContent(this.cmsWidgetName, 'QuestionText');
}, },
selectedValue: {
get: function() {
return this.modelValue
},
set: function(newValue) {
this.$emit("update:modelValue", newValue);
}
}
}, },
components: { components: {
buttonQuestion, buttonQuestion,
@ -54,10 +61,5 @@ export default {
this.styles = initialData; this.styles = initialData;
}, },
}, },
watch: {
selectedStyle(selectedStyle) {
this.$emit("update:modelValue", selectedStyle);
}
}
}; };
</script> </script>

View file

@ -1,18 +1,15 @@
<template> <template>
<div> <buttonQuestion
<buttonQuestion class="radioQuestion"
class="radioQuestion" isOverflowScrollable
isOverflowScrollable selectingInitiatesLoad
selectingInitiatesLoad :questionText="questionText"
:questionText="questionText" :answers="years"
:answers="years" groupName="ChooseVehicleYear"
groupName="ChooseVehicleYear" textPosition="text-start"
textPosition="text-start" v-model="selectedValue"
v-model="selectedYear" isRequired
:selectOnKeypress="false" />
isRequired
/>
</div>
</template> </template>
<script> <script>
@ -20,25 +17,32 @@ import buttonQuestion from "@/common-components/button-question/button-question"
// Supporting files // Supporting files
import { storeActions } from "@/constants/store-actions.js"; import { storeActions } from "@/constants/store-actions.js";
import baseMixin from "@/mixins/base-mixin.js"; import baseMixin from "@/mixins/base-mixin.js";
export default { export default {
name: "year-question", name: "year-question",
data() { data() {
return { return {
years: [], years: [],
selectedYear: ""
}; };
}, },
props: { props: {
modelValue: String,
cmsWidgetName: String, cmsWidgetName: String,
}, },
components: { components: {
buttonQuestion buttonQuestion,
}, },
computed: { computed: {
questionText() { questionText(){
return this.getCmsContent(this.cmsWidgetName, "QuestionText"); return this.getCmsContent(this.cmsWidgetName, 'QuestionText');
}, },
selectedValue: {
get: function() {
return this.modelValue
},
set: function(newValue) {
this.$emit("update:modelValue", newValue);
}
}
}, },
methods: { methods: {
loadInitialData() { loadInitialData() {
@ -51,10 +55,5 @@ export default {
this.years = initialData; this.years = initialData;
}, },
}, },
watch: {
selectedYear(selectedYear) {
this.$emit("update:modelValue", selectedYear);
}
}
}; };
</script> </script>