CSR-296: add back glass replace options question

This commit is contained in:
Adam Caouette 2022-02-17 11:21:48 -05:00
parent c906c2e9c9
commit 6526dbbbad
4 changed files with 37 additions and 18 deletions

View file

@ -121,6 +121,7 @@ export default {
}, },
}, },
mounted(){ mounted(){
// UPDATE SELECTEDVALUES IF ONLY ONE ANSWER
if(Array.isArray(this.answers) && this.answers.length === 1) { if(Array.isArray(this.answers) && this.answers.length === 1) {
const newSelectedValues = this.selectedValues; const newSelectedValues = this.selectedValues;
newSelectedValues.push(typeof(this.answers[0]) === 'object' ? this.answers[0].Name : this.answers[0]); newSelectedValues.push(typeof(this.answers[0]) === 'object' ? this.answers[0].Name : this.answers[0]);

View file

@ -2,9 +2,9 @@
<transition name="fade"> <transition name="fade">
<div class="replace-options-question"> <div class="replace-options-question">
<buttonQuestion <buttonQuestion
v-if="isAvailable && answersToDisplay.length > 1" v-if="isAvailable && answersToDisplay.length > 0"
:questionText="questionText" :questionText="questionText"
isMultiSelect :isMultiSelect="isMultiSelect"
:answers="answersToDisplay" :answers="answersToDisplay"
:groupName="groupName" :groupName="groupName"
buttonType="listCard" buttonType="listCard"
@ -42,6 +42,7 @@ export default ({
filterByVehicleCategory: Boolean, filterByVehicleCategory: Boolean,
groupName: String, groupName: String,
modelValue: Array, modelValue: Array,
isMultiSelect: Boolean,
}, },
methods: { methods: {
initializeComponent(cmsContent, replaceOptions){ initializeComponent(cmsContent, replaceOptions){
@ -60,11 +61,11 @@ export default ({
} }
}, },
answersToDisplay(){ answersToDisplay(){
return Array.isArray(this.answersFromCms) return Array.isArray(this.answersFromCms)
? this.answersFromCms.filter(ans => ? this.answersFromCms.filter(ans =>
{ {
const name = ans.Name.split('-'); const name = ans.Name.split('-');
return this.filterByVehicleCategory ? name[0].toUpperCase() === store.getters.vehicle.category : name[0].toUpperCase() === store.getters.vehicle.category && this.replaceOptions.includes(name[1]) return this.filterByVehicleCategory ? name[0].toUpperCase() === store.getters.vehicle.category && this.replaceOptions.includes(name[1]) : this.replaceOptions.includes(ans.Name);
}) })
: []; : [];
}, },

View file

@ -3,8 +3,25 @@
<funnelHeader ref="funnelHeader" /> <funnelHeader ref="funnelHeader" />
<vehicleBanner ref="vehicleBanner" :displayGenericVehicleImage=false /> <vehicleBanner ref="vehicleBanner" :displayGenericVehicleImage=false />
<funnelSubHeader ref="funnelSubHeader" /> <funnelSubHeader ref="funnelSubHeader" />
<damageLocationQuestion ref="damageLocation" v-model="selectedDamageLocations" groupName="DamageLocationQuestion" /> <damageLocationQuestion
<replaceOptionsQuestion ref="driverSideOptions" isAvailable v-model="driverSideOptionsData" groupName="DriverSideReplaceOptionsQuestion" /> ref="damageLocation"
v-model="selectedDamageLocations"
groupName="DamageLocationQuestion"
/>
<replaceOptionsQuestion
ref="driverSideOptions"
isAvailable
isMultiSelect
filterByVehicleCategory
v-model="driverSideOptionsData"
groupName="DriverSideReplaceOptionsQuestion"
/>
<replaceOptionsQuestion
ref="backGlassOptions"
isAvailable
v-model="selectedRearReplaceOptions"
groupName="BackGlassReplaceOptionsQuestion"
/>
<funnelFooter ref="funnelFooter" @back-clicked="backButtonAction" /> <funnelFooter ref="funnelFooter" @back-clicked="backButtonAction" />
</div> </div>
</template> </template>
@ -62,11 +79,14 @@ export default {
vm.$refs.funnelSubHeader.initializeComponent( vm.$refs.funnelSubHeader.initializeComponent(
resultMap.cmsContent.FunnelSubHeaderWidget resultMap.cmsContent.FunnelSubHeaderWidget
); );
vm.$refs.damageLocation.initializeComponent(
resultMap.cmsContent.DamageLocationQuestion, resultMap.damageOptions
);
vm.$refs.driverSideOptions.initializeComponent( vm.$refs.driverSideOptions.initializeComponent(
resultMap.cmsContent.DriverSideReplaceOptionsQuestion, resultMap.damageOptions.driverSideOptions.availableReplacementOptions resultMap.cmsContent.DriverSideReplaceOptionsQuestion, resultMap.damageOptions.driverSideOptions.availableReplacementOptions
); );
vm.$refs.damageLocation.initializeComponent( vm.$refs.backGlassOptions.initializeComponent(
resultMap.cmsContent.DamageLocationQuestion, resultMap.damageOptions resultMap.cmsContent.RearReplaceOptionsQuestion, resultMap.damageOptions.backGlassOptions.availableReplacementOptions
); );
vm.$refs.funnelFooter.initializeComponent( vm.$refs.funnelFooter.initializeComponent(
resultMap.cmsContent.FunnelFooterWidget resultMap.cmsContent.FunnelFooterWidget
@ -77,6 +97,7 @@ export default {
return { return {
selectedDamageLocations: [], selectedDamageLocations: [],
driverSideOptionsData: [], driverSideOptionsData: [],
selectedRearReplaceOptions: [],
} }
}, },
methods: { methods: {

View file

@ -74,16 +74,6 @@ export default {
validationRules: String, validationRules: String,
selectedButtonIDs: [Array, String], selectedButtonIDs: [Array, String],
}, },
data(){
return {
checkValue: Boolean,
}
},
created(){
if(this.selectedButtonIDs){
this.checkValue = this.isMultiSelect ? this.selectedButtonIDs.includes(this.buttonID) : this.selectedButtonIDs[0];
}
},
computed: { computed: {
getLabelClasses() { getLabelClasses() {
if (this.isWide) { if (this.isWide) {
@ -96,6 +86,12 @@ export default {
return "flex-column pt-4 pb-2"; return "flex-column pt-4 pb-2";
} }
}, },
checkValue() {
if(this.selectedButtonIDs){
return this.isMultiSelect ? this.selectedButtonIDs.includes(this.buttonID) : this.selectedButtonIDs[0];
}
return false;
},
}, },
methods: { methods: {
handleCheckChange(newValue, oldValue){ handleCheckChange(newValue, oldValue){