diff --git a/src/layouts/vehicle-damage/damage-location-question/damage-location-question.vue b/src/layouts/vehicle-damage/damage-location-question/damage-location-question.vue index 40fb2cdb4..16d67b3ee 100644 --- a/src/layouts/vehicle-damage/damage-location-question/damage-location-question.vue +++ b/src/layouts/vehicle-damage/damage-location-question/damage-location-question.vue @@ -6,7 +6,8 @@ :answers="answersToDisplay" :groupName="groupName" buttonType="listCard" - v-model="selectedDamageLocations" + isRequired + v-model="selectedValues" validationRules="damage-location-required" /> @@ -26,12 +27,11 @@ export default ({ name: "damageLocationQuestion", data(){ return { - damageOptions: {}, - selectedDamageLocations: this.modelValue + damageOptions: Object, } }, - props: { - modelValue: [Array, String, Number], + props: { + modelValue: Array, groupName: String, cmsWidgetName: String, }, @@ -47,6 +47,14 @@ export default ({ answersFromCms(){ return this.getCmsContent(this.cmsWidgetName, 'Answers'); }, + selectedValues: { + get: function() { + return this.modelValue; + }, + set: function(newValue) { + this.$emit("update:modelValue", newValue); + } + }, damageOptionsMap(){ return { Windshield: true, @@ -69,11 +77,6 @@ export default ({ }); }, }, - watch: { - selectedDamageLocations(selectedDamageLocations) { - this.$emit("update:modelValue", selectedDamageLocations); - } - }, components: { buttonQuestion, }, diff --git a/src/layouts/vehicle-damage/replace-options-question/replace-options-question.vue b/src/layouts/vehicle-damage/replace-options-question/replace-options-question.vue index b3d7f537c..d4da8cd1b 100644 --- a/src/layouts/vehicle-damage/replace-options-question/replace-options-question.vue +++ b/src/layouts/vehicle-damage/replace-options-question/replace-options-question.vue @@ -8,7 +8,7 @@ :answers="answersToDisplay" :groupName="groupName" buttonType="listCard" - v-model="selectedReplaceOptions" + v-model="selectedValues" :validationRules="validationRules" :suppressError="suppressError" :isRequired="isRequired" @@ -23,17 +23,16 @@ import store from "@/store"; export default ({ name: "replaceOptionsQuestion", - data() { + data(){ return { replaceOptions: [], - selectedReplaceOptions: this.modelValue } }, props: { - modelValue: [Array, String, Number], isAvailable: Boolean, filterByVehicleCategory: Boolean, groupName: String, + modelValue: [Array, String, Number], isMultiSelect: Boolean, validationRules: String, suppressError: Boolean, @@ -41,15 +40,13 @@ export default ({ isRequired: Boolean, }, methods: { - initializeComponent(replaceOptions) { + initializeComponent(replaceOptions){ this.replaceOptions = replaceOptions; }, updateSelectedValues() { // UPDATE SELECTEDVALUES IF ONLY ONE ANSWER - // ex: BackGlass stationary - if (Array.isArray(this.answersToDisplay) && this.answersToDisplay.length === 1) { - const selectedAnswer = this.answersToDisplay[0].Name; - this.selectedReplaceOptions = this.isMultiSelect ? [selectedAnswer] : selectedAnswer; + if(Array.isArray(this.answersToDisplay) && this.answersToDisplay.length === 1) { + this.selectedValues = [this.answersToDisplay[0].Name]; } }, }, @@ -60,6 +57,14 @@ export default ({ answersFromCms(){ return this.getCmsContent(this.cmsWidgetName, 'Answers'); }, + selectedValues: { + get: function() { + return this.modelValue; + }, + set: function(newValue) { + this.$emit("update:modelValue", newValue); + } + }, answersToDisplay(){ const filteredAnswers = Array.isArray(this.answersFromCms) ? this.answersFromCms.filter(ans => @@ -86,11 +91,8 @@ export default ({ }, shouldDisplayReplaceOptionsQuestion(shouldDisplayReplaceOptionsQuestion) { if (!shouldDisplayReplaceOptionsQuestion) { - this.selectedReplaceOptions = []; + this.selectedValues = []; } - }, - selectedReplaceOptions(selectedReplaceOptions) { - this.$emit("update:modelValue", selectedReplaceOptions); } }, components: { diff --git a/src/layouts/vehicle-damage/windshield-options/windshield-chip-count-question/windshield-chip-count-question.vue b/src/layouts/vehicle-damage/windshield-options/windshield-chip-count-question/windshield-chip-count-question.vue index c2188f9e8..fc26c1d8c 100644 --- a/src/layouts/vehicle-damage/windshield-options/windshield-chip-count-question/windshield-chip-count-question.vue +++ b/src/layouts/vehicle-damage/windshield-options/windshield-chip-count-question/windshield-chip-count-question.vue @@ -7,7 +7,7 @@ :groupName="groupName" buttonType="listButtonHorizontal" useTextForValue - v-model="numberOfChips" + v-model="selectedValue" :validationRules="validationRules" isRequired /> @@ -19,12 +19,7 @@ import buttonQuestion from "@/common-components/button-question/button-question"; export default ({ - name: "windshieldChipCountQuestion", - data() { - return { - numberOfChips: this.modelValue - } - }, + name: "windshieldOptions", props: { modelValue: [String, Number], groupName: String, @@ -39,14 +34,18 @@ export default ({ answersFromCms(){ 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: { buttonQuestion, - }, - watch: { - numberOfChips(numberOfChips) { - this.$emit("update:modelValue", numberOfChips); - } } }) \ No newline at end of file diff --git a/src/layouts/vehicle-damage/windshield-options/windshield-damage-type-question/windshield-damage-type-question.vue b/src/layouts/vehicle-damage/windshield-options/windshield-damage-type-question/windshield-damage-type-question.vue index 5a275c45f..e76536103 100644 --- a/src/layouts/vehicle-damage/windshield-options/windshield-damage-type-question/windshield-damage-type-question.vue +++ b/src/layouts/vehicle-damage/windshield-options/windshield-damage-type-question/windshield-damage-type-question.vue @@ -1,18 +1,16 @@ @@ -20,13 +18,8 @@ + } +}) + \ No newline at end of file diff --git a/src/layouts/vehicle-damage/windshield-options/windshield-options.vue b/src/layouts/vehicle-damage/windshield-options/windshield-options.vue index f22370d69..cd229e007 100644 --- a/src/layouts/vehicle-damage/windshield-options/windshield-options.vue +++ b/src/layouts/vehicle-damage/windshield-options/windshield-options.vue @@ -57,8 +57,8 @@ defineRule("windshield-replace-options-required", required(errorMessages.WINSHIE defineRule("check-for-repair-and-replace", (selectedWindshieldDamageType, selectedDamageLocations) => { return selectedWindshieldDamageType.toString() != damageLocationsSelected.REPAIR || - !selectedDamageLocations.includes(damageLocationsSelected.WINDSHIELD) || - selectedDamageLocations.length === 1; + (!selectedDamageLocations.includes(damageLocationsSelected.WINDSHIELD) && !selectedDamageLocations[0]?.includes(damageLocationsSelected.WINDSHIELD)) || + (selectedDamageLocations.length === 1 && selectedDamageLocations[0].length === 1); }); defineRule("repair-only", (value) => { return value.toString() === damageLocationsSelected.REPAIR; diff --git a/src/layouts/vehicle-make/make-question/make-question.vue b/src/layouts/vehicle-make/make-question/make-question.vue index c3e906cdd..c2a7cd2d2 100644 --- a/src/layouts/vehicle-make/make-question/make-question.vue +++ b/src/layouts/vehicle-make/make-question/make-question.vue @@ -1,15 +1,16 @@ diff --git a/src/layouts/vehicle-model/model-question/model-question.vue b/src/layouts/vehicle-model/model-question/model-question.vue index 2c1dc46bd..393df6fc9 100644 --- a/src/layouts/vehicle-model/model-question/model-question.vue +++ b/src/layouts/vehicle-model/model-question/model-question.vue @@ -7,7 +7,7 @@ :answers="models" groupName="ChooseVehicleModel" textPosition="text-start" - v-model="selectedModel" + v-model="selectedValue" :selectOnKeypress="false" isRequired /> @@ -25,7 +25,6 @@ export default { data() { return { models: [], - selectedModel: "" }; }, props: { @@ -36,6 +35,14 @@ export default { questionText(){ return this.getCmsContent(this.cmsWidgetName, 'QuestionText'); }, + selectedValue: { + get: function() { + return this.modelValue + }, + set: function(newValue) { + this.$emit("update:modelValue", newValue); + } + } }, components: { buttonQuestion, @@ -51,10 +58,5 @@ export default { this.models = initialData; }, }, - watch: { - selectedModel(selectedModel) { - this.$emit("update:modelValue", selectedModel); - } - } }; diff --git a/src/layouts/vehicle-style/style-question/style-question.vue b/src/layouts/vehicle-style/style-question/style-question.vue index 8e60df50d..bf8fd3d07 100644 --- a/src/layouts/vehicle-style/style-question/style-question.vue +++ b/src/layouts/vehicle-style/style-question/style-question.vue @@ -7,7 +7,7 @@ :answers="styles" groupName="ChooseVehicleStyle" textPosition="text-start" - v-model="selectedStyle" + v-model="selectedValue" :selectOnKeypress="false" isRequired /> @@ -25,16 +25,24 @@ export default { data() { return { styles: [], - selectedStyle: "" }; }, props: { + modelValue: String, cmsWidgetName: String, }, computed: { questionText(){ return this.getCmsContent(this.cmsWidgetName, 'QuestionText'); }, + selectedValue: { + get: function() { + return this.modelValue + }, + set: function(newValue) { + this.$emit("update:modelValue", newValue); + } + } }, components: { buttonQuestion, @@ -54,10 +62,5 @@ export default { this.styles = initialData; }, }, - watch: { - selectedStyle(selectedStyle) { - this.$emit("update:modelValue", selectedStyle); - } - } }; diff --git a/src/layouts/vehicle-year/year-question/year-question.vue b/src/layouts/vehicle-year/year-question/year-question.vue index 1835a7f74..06af5ce64 100644 --- a/src/layouts/vehicle-year/year-question/year-question.vue +++ b/src/layouts/vehicle-year/year-question/year-question.vue @@ -1,18 +1,16 @@