Merge branch 'develop' into feature/digital/SSR-179
This commit is contained in:
commit
6e715dfdef
77 changed files with 497 additions and 422 deletions
|
|
@ -1,291 +0,0 @@
|
||||||
<!-- Documented in confluence https://safelite.atlassian.net/wiki/spaces/DC/pages/76644418/Button+Question+Component -->
|
|
||||||
<template>
|
|
||||||
<div
|
|
||||||
:class="
|
|
||||||
isOverflowScrollable ? 'button-question button-question-overflow' : 'button-question'
|
|
||||||
">
|
|
||||||
<div v-if="questionText && answers && answers.length > 0" class="question-text d-flex">
|
|
||||||
<span class="fw-bold w-100">{{ questionText }}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="w-100 d-flex justify-content-center">
|
|
||||||
<fieldset
|
|
||||||
class="w-100"
|
|
||||||
:aria-required="isRequired"
|
|
||||||
:class="getFieldSetClasses"
|
|
||||||
:role="isMultiSelect ? 'group' : 'radiogroup'"
|
|
||||||
:aria-labelledby="formatString(groupName)">
|
|
||||||
<legend
|
|
||||||
class="sr-only"
|
|
||||||
:data-focus-target="formatString(groupName)"
|
|
||||||
tabindex="-1"
|
|
||||||
:id="formatString(groupName)">
|
|
||||||
{{ questionText }}
|
|
||||||
{{
|
|
||||||
isMultiSelect && answers && answers.length > 1
|
|
||||||
? "Select one or more options below."
|
|
||||||
: "Select an option below."
|
|
||||||
}}
|
|
||||||
</legend>
|
|
||||||
<div :class="getComponentLoopWrapperClasses">
|
|
||||||
<div
|
|
||||||
:class="getComponentWrapperClasses"
|
|
||||||
v-for="answer in buttonsInfo"
|
|
||||||
:key="answer.value ? answer.value : answer">
|
|
||||||
<component
|
|
||||||
:is="buttonTypeString"
|
|
||||||
:buttonLabel="answer.buttonLabel"
|
|
||||||
:buttonLabelSubCopy="answer.buttonLabelSubCopy"
|
|
||||||
:buttonBodyCopy="answer.buttonBodyCopy"
|
|
||||||
:buttonAuxillaryCopy="answer.buttonAuxillaryCopy"
|
|
||||||
:buttonFooterCopy="answer.buttonFooterCopy"
|
|
||||||
:buttonImage="answer.buttonImage"
|
|
||||||
:buttonImageId="answer.buttonImageId"
|
|
||||||
:groupName="answer.groupName"
|
|
||||||
:isMultiSelect="isMultiSelect"
|
|
||||||
:value="answer.value"
|
|
||||||
:selectingInitiatesLoad="selectingInitiatesLoad"
|
|
||||||
:isWide="isWide"
|
|
||||||
:validationRules="validationRules"
|
|
||||||
:textPosition="textPosition"
|
|
||||||
:additionalButtonStyling="additionalButtonStyling"
|
|
||||||
:lastValuePushedToGa="lastValuePushedToGa"
|
|
||||||
:setLastValuePushedToGa="setLastValuePushedToGa"
|
|
||||||
:suppressError="suppressError"
|
|
||||||
v-model="selectedValues" />
|
|
||||||
<!-- For nested questions -->
|
|
||||||
<transition name="fade" mode="out-in">
|
|
||||||
<div
|
|
||||||
v-if="
|
|
||||||
typeof selectedValues == 'string' &&
|
|
||||||
selectedValues == answer.value
|
|
||||||
">
|
|
||||||
<slot></slot>
|
|
||||||
</div>
|
|
||||||
</transition>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
<div class="row form-test-error mt-1">
|
|
||||||
<error-message :name="formatString(groupName)" v-if="!suppressError"></error-message>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import listButton from "@/ux-components/list-button/list-button";
|
|
||||||
import listButtonHorizontal from "@/ux-components/list-button-horizontal/list-button-horizontal";
|
|
||||||
import listCard from "@/ux-components/list-card/list-card";
|
|
||||||
import radio from "@/ux-components/radio/radio";
|
|
||||||
import { ErrorMessage } from "vee-validate";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: "buttonQuestion",
|
|
||||||
props: {
|
|
||||||
buttonTypeString: {
|
|
||||||
type: String,
|
|
||||||
default: "listButton",
|
|
||||||
},
|
|
||||||
buttonTypeObject: {
|
|
||||||
type: Object,
|
|
||||||
default: null,
|
|
||||||
},
|
|
||||||
isMultiSelect: Boolean,
|
|
||||||
groupName: String,
|
|
||||||
questionText: String,
|
|
||||||
answers: Array,
|
|
||||||
textPosition: {
|
|
||||||
type: String,
|
|
||||||
default: "text-center",
|
|
||||||
},
|
|
||||||
selectingInitiatesLoad: Boolean,
|
|
||||||
loaderColor: {
|
|
||||||
type: String,
|
|
||||||
default: "blue",
|
|
||||||
},
|
|
||||||
loaderPosition: {
|
|
||||||
type: String,
|
|
||||||
default: "right",
|
|
||||||
},
|
|
||||||
isRequired: Boolean,
|
|
||||||
isOverflowScrollable: Boolean,
|
|
||||||
isWide: Boolean,
|
|
||||||
isCashOrInsurance: Boolean,
|
|
||||||
modelValue: [Array, Number, String],
|
|
||||||
value: [Number, String],
|
|
||||||
validationRules: String,
|
|
||||||
suppressError: Boolean,
|
|
||||||
useTextForValue: Boolean,
|
|
||||||
valueToLogType: String,
|
|
||||||
additionalButtonStyling: String,
|
|
||||||
},
|
|
||||||
beforeMount() {
|
|
||||||
if (this.buttonTypeObject) {
|
|
||||||
this.$options.components[this.buttonTypeString] = this.buttonTypeObject;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
lastValuePushedToGa: null,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
getFieldSetClasses() {
|
|
||||||
if (this.isOverflowScrollable) {
|
|
||||||
return "container-fluid overflow-scroll position-absolute px-5 pt-1 py-0";
|
|
||||||
}
|
|
||||||
else if (this.buttonTypeString === "listCard") {
|
|
||||||
return "w-100";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
},
|
|
||||||
getComponentLoopWrapperClasses() {
|
|
||||||
let classes;
|
|
||||||
switch (this.buttonTypeString) {
|
|
||||||
case "listButton":
|
|
||||||
classes = "w-100";
|
|
||||||
break;
|
|
||||||
case "listButtonHorizontal":
|
|
||||||
classes = "d-flex flex-row p-0";
|
|
||||||
break;
|
|
||||||
case "listCard":
|
|
||||||
classes = "row g-2 justify-content-center";
|
|
||||||
if (this.isWide) {
|
|
||||||
classes += " flex-column";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "radio":
|
|
||||||
classes = "ui-radio d-flex";
|
|
||||||
break;
|
|
||||||
case "servicePackageRadio":
|
|
||||||
classes = "package-main";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return classes;
|
|
||||||
},
|
|
||||||
getComponentWrapperClasses() {
|
|
||||||
let classes = "";
|
|
||||||
|
|
||||||
classes += this.isWide ? "col-12" : "col";
|
|
||||||
|
|
||||||
if (this.buttonTypeString == "radio") {
|
|
||||||
classes += " radio-button-container";
|
|
||||||
} else if (this.buttonTypeString == "servicePackageRadio") {
|
|
||||||
classes = "package-wrapper";
|
|
||||||
}
|
|
||||||
|
|
||||||
return classes;
|
|
||||||
},
|
|
||||||
buttonsInfo() {
|
|
||||||
return (Array.isArray(this.answers) ? this.answers : [])?.map((answer) => ({
|
|
||||||
buttonLabel: answer.buttonLabel ?? answer.Text ?? answer,
|
|
||||||
altText: answer.altText ?? (answer.Name ? answer.Name : answer),
|
|
||||||
buttonLabelSubCopy: answer.buttonLabelSubCopy ?? answer.SubText,
|
|
||||||
buttonBodyCopy: answer.buttonBodyCopy ?? answer.buttonBodyCopy,
|
|
||||||
buttonAuxillaryCopy: answer.buttonAuxillaryCopy ?? answer.buttonAuxillaryCopy,
|
|
||||||
buttonFooterCopy: answer.buttonFooterCopy ?? answer.buttonFooterCopy,
|
|
||||||
buttonImage: answer.buttonImage ?? answer.AnswerImageUrl,
|
|
||||||
buttonImageId: answer.buttonImageId ?? answer.ImageId,
|
|
||||||
groupName: this.formatString(this.groupName),
|
|
||||||
value:
|
|
||||||
answer.value ??
|
|
||||||
(this.useTextForValue && answer.Text ? answer.Text : answer.Name) ??
|
|
||||||
(typeof answer !== "object" ? answer : null),
|
|
||||||
}));
|
|
||||||
},
|
|
||||||
selectedValues: {
|
|
||||||
get() {
|
|
||||||
return this.modelValue;
|
|
||||||
},
|
|
||||||
set(selectedAnswers) {
|
|
||||||
this.$emit("update:modelValue", selectedAnswers);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
formatString(str) {
|
|
||||||
return String(str).replaceAll(" ", "-");
|
|
||||||
},
|
|
||||||
setLastValuePushedToGa(lastValuePushedToGa) {
|
|
||||||
this.lastValuePushedToGa = lastValuePushedToGa;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
listButton,
|
|
||||||
listButtonHorizontal,
|
|
||||||
listCard,
|
|
||||||
ErrorMessage,
|
|
||||||
radio,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
.button-question-overflow {
|
|
||||||
height: calc(100vh - 274px);
|
|
||||||
|
|
||||||
.overflow-scroll {
|
|
||||||
// Height will be determined by overall height of content above list
|
|
||||||
height: calc(100% - 314px);
|
|
||||||
overflow-x: hidden !important;
|
|
||||||
-webkit-overflow-scrolling: touch;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.button-question {
|
|
||||||
color: $black;
|
|
||||||
|
|
||||||
.radio-button-container {
|
|
||||||
&:not(:last-child) {
|
|
||||||
padding-bottom: map-get($spacers, 2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.question-text {
|
|
||||||
margin-top: 1.5rem;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
font-size: 1rem;
|
|
||||||
line-height: 1.625rem;
|
|
||||||
|
|
||||||
& > span {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.vehicle-parts {
|
|
||||||
.question-text {
|
|
||||||
span {
|
|
||||||
font-size: 0.875rem;
|
|
||||||
text-align: left;
|
|
||||||
margin: 0 0 0.5rem 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.question-text {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
fieldset {
|
|
||||||
.ui-radio {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.welcome {
|
|
||||||
.question-text {
|
|
||||||
span {
|
|
||||||
text-align: left;
|
|
||||||
margin: 0 0 0.25rem 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.question-text {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
fieldset {
|
|
||||||
.ui-radio {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
@ -30,7 +30,7 @@ import {
|
||||||
handleButtonComponentFocus,
|
handleButtonComponentFocus,
|
||||||
handleInputComponentBlur,
|
handleInputComponentBlur,
|
||||||
} from "@/helpers/button-question-focus-helper";
|
} from "@/helpers/button-question-focus-helper";
|
||||||
import { inputButtonProps } from "@/common-components/base-input-button/button-functionality-props";
|
import { inputButtonProps } from "@/digital-components/base-input-button/button-functionality-props";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "base-input-button",
|
name: "base-input-button",
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { shallowMount } from "@vue/test-utils";
|
import { shallowMount } from "@vue/test-utils";
|
||||||
import buttonQuestion from "@/common-components/button-question/button-question";
|
import buttonQuestion from "@/digital-components/button-question/button-question";
|
||||||
import { getMountOptions } from "@/helpers/unit-test-helper.js";
|
import { getMountOptions } from "@/helpers/unit-test-helper.js";
|
||||||
|
|
||||||
describe("buttonQuestion.vue", () => {
|
describe("buttonQuestion.vue", () => {
|
||||||
292
src/digital-components/button-question/button-question.vue
Normal file
292
src/digital-components/button-question/button-question.vue
Normal file
|
|
@ -0,0 +1,292 @@
|
||||||
|
<!-- Documented in confluence https://safelite.atlassian.net/wiki/spaces/DC/pages/76644418/Button+Question+Component -->
|
||||||
|
<template>
|
||||||
|
<div
|
||||||
|
:class="
|
||||||
|
isOverflowScrollable ? 'button-question button-question-overflow' : 'button-question'
|
||||||
|
">
|
||||||
|
<div v-if="questionText && answers && answers.length > 0" class="question-text d-flex">
|
||||||
|
<span class="fw-bold w-100">{{ questionText }}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-100 d-flex justify-content-center">
|
||||||
|
<fieldset
|
||||||
|
class="w-100"
|
||||||
|
:aria-required="isRequired"
|
||||||
|
:class="getFieldSetClasses"
|
||||||
|
:role="isMultiSelect ? 'group' : 'radiogroup'"
|
||||||
|
:aria-labelledby="formatString(groupName)">
|
||||||
|
<legend
|
||||||
|
class="sr-only"
|
||||||
|
:data-focus-target="formatString(groupName)"
|
||||||
|
tabindex="-1"
|
||||||
|
:id="formatString(groupName)">
|
||||||
|
{{ questionText }}
|
||||||
|
{{
|
||||||
|
isMultiSelect && answers && answers.length > 1
|
||||||
|
? "Select one or more options below."
|
||||||
|
: "Select an option below."
|
||||||
|
}}
|
||||||
|
</legend>
|
||||||
|
<div :class="getComponentLoopWrapperClasses">
|
||||||
|
<div
|
||||||
|
:class="getComponentWrapperClasses"
|
||||||
|
v-for="answer in buttonsInfo"
|
||||||
|
:key="answer.value ? answer.value : answer">
|
||||||
|
<component
|
||||||
|
:is="buttonTypeString"
|
||||||
|
:buttonLabel="answer.buttonLabel"
|
||||||
|
:buttonLabelSubCopy="answer.buttonLabelSubCopy"
|
||||||
|
:buttonBodyCopy="answer.buttonBodyCopy"
|
||||||
|
:buttonAuxillaryCopy="answer.buttonAuxillaryCopy"
|
||||||
|
:buttonFooterCopy="answer.buttonFooterCopy"
|
||||||
|
:buttonImage="answer.buttonImage"
|
||||||
|
:buttonImageId="answer.buttonImageId"
|
||||||
|
:groupName="answer.groupName"
|
||||||
|
:isMultiSelect="isMultiSelect"
|
||||||
|
:value="answer.value"
|
||||||
|
:selectingInitiatesLoad="selectingInitiatesLoad"
|
||||||
|
:isWide="isWide"
|
||||||
|
:validationRules="validationRules"
|
||||||
|
:textPosition="textPosition"
|
||||||
|
:additionalButtonStyling="additionalButtonStyling"
|
||||||
|
:lastValuePushedToGa="lastValuePushedToGa"
|
||||||
|
:setLastValuePushedToGa="setLastValuePushedToGa"
|
||||||
|
:suppressError="suppressError"
|
||||||
|
v-model="selectedValues" />
|
||||||
|
<!-- For nested questions -->
|
||||||
|
<transition name="fade" mode="out-in">
|
||||||
|
<div
|
||||||
|
v-if="
|
||||||
|
typeof selectedValues == 'string' &&
|
||||||
|
selectedValues == answer.value
|
||||||
|
">
|
||||||
|
<slot></slot>
|
||||||
|
</div>
|
||||||
|
</transition>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
<div class="row form-test-error mt-1">
|
||||||
|
<error-message
|
||||||
|
class="small"
|
||||||
|
:name="formatString(groupName)"
|
||||||
|
v-if="!suppressError"></error-message>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import listButton from "@/ux-components/list-button/list-button";
|
||||||
|
import listButtonHorizontal from "@/ux-components/list-button-horizontal/list-button-horizontal";
|
||||||
|
import listCard from "@/ux-components/list-card/list-card";
|
||||||
|
import radio from "@/ux-components/radio/radio";
|
||||||
|
import { ErrorMessage } from "vee-validate";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "buttonQuestion",
|
||||||
|
props: {
|
||||||
|
buttonTypeString: {
|
||||||
|
type: String,
|
||||||
|
default: "listButton",
|
||||||
|
},
|
||||||
|
buttonTypeObject: {
|
||||||
|
type: Object,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
isMultiSelect: Boolean,
|
||||||
|
groupName: String,
|
||||||
|
questionText: String,
|
||||||
|
answers: Array,
|
||||||
|
textPosition: {
|
||||||
|
type: String,
|
||||||
|
default: "text-center",
|
||||||
|
},
|
||||||
|
selectingInitiatesLoad: Boolean,
|
||||||
|
loaderColor: {
|
||||||
|
type: String,
|
||||||
|
default: "blue",
|
||||||
|
},
|
||||||
|
loaderPosition: {
|
||||||
|
type: String,
|
||||||
|
default: "right",
|
||||||
|
},
|
||||||
|
isRequired: Boolean,
|
||||||
|
isOverflowScrollable: Boolean,
|
||||||
|
isWide: Boolean,
|
||||||
|
isCashOrInsurance: Boolean,
|
||||||
|
modelValue: [Array, Number, String],
|
||||||
|
value: [Number, String],
|
||||||
|
validationRules: String,
|
||||||
|
suppressError: Boolean,
|
||||||
|
useTextForValue: Boolean,
|
||||||
|
valueToLogType: String,
|
||||||
|
additionalButtonStyling: String,
|
||||||
|
},
|
||||||
|
beforeMount() {
|
||||||
|
if (this.buttonTypeObject) {
|
||||||
|
this.$options.components[this.buttonTypeString] = this.buttonTypeObject;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
lastValuePushedToGa: null,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
getFieldSetClasses() {
|
||||||
|
if (this.isOverflowScrollable) {
|
||||||
|
return "container-fluid overflow-scroll position-absolute px-5 pt-1 py-0";
|
||||||
|
} else if (this.buttonTypeString == "listCard") {
|
||||||
|
return "w-100";
|
||||||
|
} else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getComponentLoopWrapperClasses() {
|
||||||
|
let classes;
|
||||||
|
switch (this.buttonTypeString) {
|
||||||
|
case "listButton":
|
||||||
|
classes = "w-100";
|
||||||
|
break;
|
||||||
|
case "listButtonHorizontal":
|
||||||
|
classes = "d-flex flex-row p-0";
|
||||||
|
break;
|
||||||
|
case "listCard":
|
||||||
|
classes = "row g-2 justify-content-center";
|
||||||
|
if (this.isWide) {
|
||||||
|
classes += " flex-column";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "radio":
|
||||||
|
classes = "ui-radio d-flex";
|
||||||
|
break;
|
||||||
|
case "servicePackageRadio":
|
||||||
|
classes = "package-main";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return classes;
|
||||||
|
},
|
||||||
|
getComponentWrapperClasses() {
|
||||||
|
let classes = "";
|
||||||
|
|
||||||
|
classes += this.isWide ? "col-12" : "col";
|
||||||
|
|
||||||
|
if (this.buttonTypeString == "radio") {
|
||||||
|
classes += " radio-button-container";
|
||||||
|
} else if (this.buttonTypeString == "servicePackageRadio") {
|
||||||
|
classes = "package-wrapper";
|
||||||
|
}
|
||||||
|
|
||||||
|
return classes;
|
||||||
|
},
|
||||||
|
buttonsInfo() {
|
||||||
|
return (Array.isArray(this.answers) ? this.answers : [])?.map((answer) => ({
|
||||||
|
buttonLabel: answer.buttonLabel ?? answer.Text ?? answer,
|
||||||
|
altText: answer.altText ?? (answer.Name ? answer.Name : answer),
|
||||||
|
buttonLabelSubCopy: answer.buttonLabelSubCopy ?? answer.SubText,
|
||||||
|
buttonBodyCopy: answer.buttonBodyCopy ?? answer.buttonBodyCopy,
|
||||||
|
buttonAuxillaryCopy: answer.buttonAuxillaryCopy ?? answer.buttonAuxillaryCopy,
|
||||||
|
buttonFooterCopy: answer.buttonFooterCopy ?? answer.buttonFooterCopy,
|
||||||
|
buttonImage: answer.buttonImage ?? answer.AnswerImageUrl,
|
||||||
|
buttonImageId: answer.buttonImageId ?? answer.ImageId,
|
||||||
|
groupName: this.formatString(this.groupName),
|
||||||
|
value:
|
||||||
|
answer.value ??
|
||||||
|
(this.useTextForValue && answer.Text ? answer.Text : answer.Name) ??
|
||||||
|
(typeof answer !== "object" ? answer : null),
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
selectedValues: {
|
||||||
|
get() {
|
||||||
|
return this.modelValue;
|
||||||
|
},
|
||||||
|
set(selectedAnswers) {
|
||||||
|
this.$emit("update:modelValue", selectedAnswers);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
formatString(str) {
|
||||||
|
return str?.replaceAll(" ", "-");
|
||||||
|
},
|
||||||
|
setLastValuePushedToGa(lastValuePushedToGa) {
|
||||||
|
this.lastValuePushedToGa = lastValuePushedToGa;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
listButton,
|
||||||
|
listButtonHorizontal,
|
||||||
|
listCard,
|
||||||
|
ErrorMessage,
|
||||||
|
radio,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.button-question-overflow {
|
||||||
|
height: calc(100vh - 274px);
|
||||||
|
|
||||||
|
.overflow-scroll {
|
||||||
|
// Height will be determined by overall height of content above list
|
||||||
|
height: calc(100% - 314px);
|
||||||
|
overflow-x: hidden !important;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.button-question {
|
||||||
|
color: $black;
|
||||||
|
|
||||||
|
.radio-button-container {
|
||||||
|
&:not(:last-child) {
|
||||||
|
padding-bottom: map-get($spacers, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.question-text {
|
||||||
|
margin-top: 1.5rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: 1.625rem;
|
||||||
|
|
||||||
|
& > span {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.vehicle-parts {
|
||||||
|
.question-text {
|
||||||
|
span {
|
||||||
|
font-size: 0.875rem;
|
||||||
|
text-align: left;
|
||||||
|
margin: 0 0 0.5rem 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.question-text {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
fieldset {
|
||||||
|
.ui-radio {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome {
|
||||||
|
.question-text {
|
||||||
|
span {
|
||||||
|
text-align: left;
|
||||||
|
margin: 0 0 0.25rem 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.question-text {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
fieldset {
|
||||||
|
.ui-radio {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
<div
|
<div
|
||||||
class="modal fade modal-component"
|
class="modal fade modal-component"
|
||||||
v-on="{ 'hidden.bs.modal': resetButtonStyle }"
|
v-on="{ 'hidden.bs.modal': resetButtonStyle }"
|
||||||
:id="this.cmsWidgetName"
|
:id="cmsWidgetName"
|
||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
aria-labelledby="ModalComponentLabel"
|
aria-labelledby="ModalComponentLabel"
|
||||||
aria-hidden="true">
|
aria-hidden="true">
|
||||||
|
|
@ -17,13 +17,18 @@
|
||||||
aria-label="Close"></button>
|
aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body ps-4 pe-4 pt-5 pb-4">
|
<div class="modal-body ps-4 pe-4 pt-5 pb-4">
|
||||||
<img :src="this.ModalImage" class="mw-100 d-flex mx-auto mb-4" alt="" />
|
<img :src="ModalImage" class="mw-100 d-flex mx-auto mb-4" alt="" />
|
||||||
<h5 class="mb-4" v-html="this.ModalHeadline"></h5>
|
<h5 class="mb-4" v-html="ModalHeadline"></h5>
|
||||||
<p class="fw-bold mb-2 subheader-text" v-html="this.ModalSubheadertext"></p>
|
<p class="fw-bold mb-2 subheader-text" v-html="ModalSubheadertext"></p>
|
||||||
<p class="mb-0" v-html="this.ModalBodyText"></p>
|
<p class="mb-0" v-html="ModalBodyText"></p>
|
||||||
|
<p
|
||||||
|
class="my-4 caption modal-sub-body"
|
||||||
|
v-if="ModalSubBodyText"
|
||||||
|
v-html="ModalSubBodyText"></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer px-5 py-4">
|
<div class="modal-footer px-5 py-4">
|
||||||
<buttonMain
|
<buttonMain
|
||||||
|
isPrimary
|
||||||
class="w-100"
|
class="w-100"
|
||||||
ref="buttonMain"
|
ref="buttonMain"
|
||||||
suppressLoader
|
suppressLoader
|
||||||
|
|
@ -54,6 +59,9 @@ export default {
|
||||||
ModalBodyText() {
|
ModalBodyText() {
|
||||||
return this.getCmsContent(this.cmsWidgetName, "BodyText");
|
return this.getCmsContent(this.cmsWidgetName, "BodyText");
|
||||||
},
|
},
|
||||||
|
ModalSubBodyText() {
|
||||||
|
return this.getCmsContent(this.cmsWidgetName, "BodyText2");
|
||||||
|
},
|
||||||
ModalImage() {
|
ModalImage() {
|
||||||
return this.getCmsContent(this.cmsWidgetName, "Image");
|
return this.getCmsContent(this.cmsWidgetName, "Image");
|
||||||
},
|
},
|
||||||
|
|
@ -97,6 +105,9 @@ export default {
|
||||||
box-shadow: 0px 16px 48px -16px rgba(0, 0, 0, 0.25);
|
box-shadow: 0px 16px 48px -16px rgba(0, 0, 0, 0.25);
|
||||||
border-radius: 1.5rem 1.5rem 0 0;
|
border-radius: 1.5rem 1.5rem 0 0;
|
||||||
.modal-body {
|
.modal-body {
|
||||||
|
.modal-sub-body {
|
||||||
|
color: $gray-600;
|
||||||
|
}
|
||||||
ul {
|
ul {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
@ -130,4 +141,4 @@ body {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { shallowMount } from "@vue/test-utils";
|
import { shallowMount } from "@vue/test-utils";
|
||||||
import questionChain from "@/common-components/question-chain/question-chain.vue";
|
import questionChain from "@/digital-components/question-chain/question-chain.vue";
|
||||||
import { getMountOptions } from "@/helpers/unit-test-helper.js";
|
import { getMountOptions } from "@/helpers/unit-test-helper.js";
|
||||||
import { nextTick } from "vue";
|
import { nextTick } from "vue";
|
||||||
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import buttonQuestion from "@/common-components/button-question/button-question";
|
import buttonQuestion from "@/digital-components/button-question/button-question";
|
||||||
import { useValidateForm } from "vee-validate";
|
import { useValidateForm } from "vee-validate";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
class="text-block d-flex w-100 mt-2"
|
class="text-block w-100 mt-2"
|
||||||
:class="[justifyText, typeStyle, fontWeight]"
|
:class="[justifyText, typeStyle, fontWeight]"
|
||||||
v-html="this.TextBlockCopy"></div>
|
v-html="this.TextBlockCopy"></div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -44,8 +44,8 @@
|
||||||
<button v-if="includeSelectIcon" type="submit" data-bs-toggle="modal"
|
<button v-if="includeSelectIcon" type="submit" data-bs-toggle="modal"
|
||||||
:data-bs-target="'#' + this.cmsWidgetName" aria-label="Select button" />
|
:data-bs-target="'#' + this.cmsWidgetName" aria-label="Select button" />
|
||||||
</div>
|
</div>
|
||||||
<div v-show="errorMessage" class="row my-2 form-test-error mb-0">
|
<div v-show="errorMessage" class="row my-1 form-test-error">
|
||||||
<span class="d-inline-flex mt-0" role="alert">{{ errorMessage }}</span>
|
<span class="d-inline-flex small mt-0" role="alert">{{ errorMessage }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// Components
|
// Components
|
||||||
import addressQuestions from "@/common-components/address-questions/address-questions";
|
import addressQuestions from "@/iss-components/address-questions/address-questions";
|
||||||
|
|
||||||
// Supporting Files
|
// Supporting Files
|
||||||
import { mount, shallowMount } from "@vue/test-utils";
|
import { mount, shallowMount } from "@vue/test-utils";
|
||||||
|
|
@ -31,6 +31,17 @@
|
||||||
@keydown.enter.prevent />
|
@keydown.enter.prevent />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row mt-2 mb-4" v-if="includeStreetAddress2">
|
||||||
|
<div class="col">
|
||||||
|
<textboxQuestion
|
||||||
|
cmsWidgetName="StreetAddress2QuestionWidget"
|
||||||
|
v-model="addressModel.streetAddress2"
|
||||||
|
aria-haspopup=""
|
||||||
|
inputId="streetAddress2Field"
|
||||||
|
disableAutoFill
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<transition name="fade" mode="out-in">
|
<transition name="fade" mode="out-in">
|
||||||
<div class="row mb-4" aria-live="polite">
|
<div class="row mb-4" aria-live="polite">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
|
|
@ -73,8 +84,8 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import textboxQuestion from "@/common-components/textbox-question/textbox-question";
|
import textboxQuestion from "@/digital-components/textbox-question/textbox-question";
|
||||||
import dropdownQuestion from "@/common-components/dropdown-question/dropdown-question";
|
import dropdownQuestion from "@/digital-components/dropdown-question/dropdown-question";
|
||||||
import alert from "@/ux-components/alert/alert";
|
import alert from "@/ux-components/alert/alert";
|
||||||
import { applicationConfig } from "@/constants/application-config.js";
|
import { applicationConfig } from "@/constants/application-config.js";
|
||||||
import { defineRule } from "vee-validate";
|
import { defineRule } from "vee-validate";
|
||||||
|
|
@ -98,12 +109,14 @@ export default {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: () => ({
|
default: () => ({
|
||||||
streetAddress: "",
|
streetAddress: "",
|
||||||
|
streetAddress2: "",
|
||||||
city: "",
|
city: "",
|
||||||
state: "",
|
state: "",
|
||||||
zipCode: "",
|
zipCode: "",
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
validationRules: String,
|
validationRules: String,
|
||||||
|
includeStreetAddress2:false,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
@ -47,7 +47,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import buttonMain from "@/ux-components/button-main/button-main";
|
import buttonMain from "@/ux-components/button-main/button-main";
|
||||||
import buttonQuestion from "@/common-components/button-question/button-question";
|
import buttonQuestion from "@/digital-components/button-question/button-question";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "buttonQuestionModal",
|
name: "buttonQuestionModal",
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// Components
|
// Components
|
||||||
import questionsPageLayout from "@/common-components/questions-page-layout/questions-page-layout";
|
import questionsPageLayout from "@/iss-components/questions-page-layout/questions-page-layout";
|
||||||
|
|
||||||
// Supporting Files
|
// Supporting Files
|
||||||
import { shallowMount } from "@vue/test-utils";
|
import { shallowMount } from "@vue/test-utils";
|
||||||
|
|
@ -35,13 +35,13 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// Components
|
// Components
|
||||||
import siteHeader from "@/common-components/site-header/site-header";
|
import siteHeader from "@/iss-components/site-header/site-header";
|
||||||
import vehicleBanner from "@/common-components/vehicle-banner/vehicle-banner";
|
import vehicleBanner from "@/iss-components/vehicle-banner/vehicle-banner";
|
||||||
import alert from "@/ux-components/alert/alert";
|
import alert from "@/ux-components/alert/alert";
|
||||||
import questionChain from "@/common-components/question-chain/question-chain";
|
import questionChain from "@/digital-components/question-chain/question-chain";
|
||||||
import siteSubHeader from "@/common-components/site-sub-header/site-sub-header";
|
import siteSubHeader from "@/iss-components/site-sub-header/site-sub-header";
|
||||||
import siteFooter from "@/common-components/site-footer/site-footer";
|
import siteFooter from "@/iss-components/site-footer/site-footer";
|
||||||
import loadingModal from "@/common-components/loading-modal/loading-modal.vue";
|
import loadingModal from "@/iss-components/loading-modal/loading-modal.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "questions-page",
|
name: "questions-page",
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import siteHeader from "@/common-components/site-header/site-header";
|
import siteHeader from "@/iss-components/site-header/site-header";
|
||||||
import { shallowMount } from "@vue/test-utils";
|
import { shallowMount } from "@vue/test-utils";
|
||||||
import { getMountOptions } from "@/helpers/unit-test-helper.js";
|
import { getMountOptions } from "@/helpers/unit-test-helper.js";
|
||||||
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import menuModal from "@/common-components/site-header/menu-modal/menu-modal";
|
import menuModal from "@/iss-components/site-header/menu-modal/menu-modal";
|
||||||
import alert from "@/ux-components/alert/alert";
|
import alert from "@/ux-components/alert/alert";
|
||||||
import eventBus from "@/helpers/event-bus/event-bus";
|
import eventBus from "@/helpers/event-bus/event-bus";
|
||||||
import { globalEvents } from "@/constants/events";
|
import { globalEvents } from "@/constants/events";
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import siteSubHeader from '@/common-components/site-sub-header/site-sub-header';
|
import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header';
|
||||||
import { shallowMount } from "@vue/test-utils";
|
import { shallowMount } from "@vue/test-utils";
|
||||||
|
|
||||||
describe("site sub header", () => {
|
describe("site sub header", () => {
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import buttonBack from "@/common-components/site-sub-header/button-back/button-back";
|
import buttonBack from "@/iss-components/site-sub-header/button-back/button-back";
|
||||||
|
|
||||||
|
|
||||||
export default ({
|
export default ({
|
||||||
|
|
@ -53,13 +53,13 @@
|
||||||
<script>
|
<script>
|
||||||
// Components
|
// Components
|
||||||
import baseFormMixin from '@/mixins/base-form-mixin';
|
import baseFormMixin from '@/mixins/base-form-mixin';
|
||||||
import siteHeader from "@/common-components/site-header/site-header.vue";
|
import siteHeader from "@/iss-components/site-header/site-header.vue";
|
||||||
import siteFooter from "@/common-components/site-footer/site-footer";
|
import siteFooter from "@/iss-components/site-footer/site-footer";
|
||||||
import vehicleBanner from "@/common-components/vehicle-banner/vehicle-banner";
|
import vehicleBanner from "@/iss-components/vehicle-banner/vehicle-banner";
|
||||||
import siteSubHeader from "@/common-components/site-sub-header/site-sub-header";
|
import siteSubHeader from "@/iss-components/site-sub-header/site-sub-header";
|
||||||
import customerQuestions from "@/layouts/address-lookup/customer-questions/customer-questions";
|
import customerQuestions from "@/layouts/address-lookup/customer-questions/customer-questions";
|
||||||
import alert from "@/ux-components/alert/alert";
|
import alert from "@/ux-components/alert/alert";
|
||||||
import textboxQuestion from "@/common-components/textbox-question/textbox-question";
|
import textboxQuestion from "@/digital-components/textbox-question/textbox-question";
|
||||||
|
|
||||||
import { Form } from "vee-validate";
|
import { Form } from "vee-validate";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,8 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import addressQuestions from "@/common-components/address-questions/address-questions";
|
import addressQuestions from "@/iss-components/address-questions/address-questions";
|
||||||
import textboxQuestion from "@/common-components/textbox-question/textbox-question";
|
import textboxQuestion from "@/digital-components/textbox-question/textbox-question";
|
||||||
import { defineRule } from "vee-validate";
|
import { defineRule } from "vee-validate";
|
||||||
import { required } from "@/helpers/validation-rules";
|
import { required } from "@/helpers/validation-rules";
|
||||||
import { errorMessages } from "@/constants/error-messages";
|
import { errorMessages } from "@/constants/error-messages";
|
||||||
|
|
|
||||||
|
|
@ -37,10 +37,10 @@ import { settleAllPromises } from '@/helpers/layout-helper';
|
||||||
// Import Component
|
// Import Component
|
||||||
import baseFormMixin from '@/mixins/base-form-mixin';
|
import baseFormMixin from '@/mixins/base-form-mixin';
|
||||||
import { Form } from 'vee-validate';
|
import { Form } from 'vee-validate';
|
||||||
import siteFooter from '@/common-components/site-footer/site-footer.vue';
|
import siteFooter from '@/iss-components/site-footer/site-footer.vue';
|
||||||
import siteHeader from '@/common-components/site-header/site-header.vue';
|
import siteHeader from '@/iss-components/site-header/site-header.vue';
|
||||||
import siteSubHeader from '@/common-components/site-sub-header/site-sub-header.vue';
|
import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue';
|
||||||
import vehicleBanner from '@/common-components/vehicle-banner/vehicle-banner.vue';
|
import vehicleBanner from '@/iss-components/vehicle-banner/vehicle-banner.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'capability-questions',
|
name: 'capability-questions',
|
||||||
|
|
|
||||||
|
|
@ -37,10 +37,10 @@ import { settleAllPromises } from '@/helpers/layout-helper';
|
||||||
// Import Component
|
// Import Component
|
||||||
import baseFormMixin from '@/mixins/base-form-mixin';
|
import baseFormMixin from '@/mixins/base-form-mixin';
|
||||||
import { Form } from 'vee-validate';
|
import { Form } from 'vee-validate';
|
||||||
import siteFooter from '@/common-components/site-footer/site-footer.vue';
|
import siteFooter from '@/iss-components/site-footer/site-footer.vue';
|
||||||
import siteHeader from '@/common-components/site-header/site-header.vue';
|
import siteHeader from '@/iss-components/site-header/site-header.vue';
|
||||||
import siteSubHeader from '@/common-components/site-sub-header/site-sub-header.vue';
|
import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue';
|
||||||
import vehicleBanner from '@/common-components/vehicle-banner/vehicle-banner.vue';
|
import vehicleBanner from '@/iss-components/vehicle-banner/vehicle-banner.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'capability-questions',
|
name: 'capability-questions',
|
||||||
|
|
|
||||||
|
|
@ -37,10 +37,10 @@ import { settleAllPromises } from '@/helpers/layout-helper';
|
||||||
// Import Component
|
// Import Component
|
||||||
import baseFormMixin from '@/mixins/base-form-mixin';
|
import baseFormMixin from '@/mixins/base-form-mixin';
|
||||||
import { Form } from 'vee-validate';
|
import { Form } from 'vee-validate';
|
||||||
import siteFooter from '@/common-components/site-footer/site-footer.vue';
|
import siteFooter from '@/iss-components/site-footer/site-footer.vue';
|
||||||
import siteHeader from '@/common-components/site-header/site-header.vue';
|
import siteHeader from '@/iss-components/site-header/site-header.vue';
|
||||||
import siteSubHeader from '@/common-components/site-sub-header/site-sub-header.vue';
|
import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue';
|
||||||
import vehicleBanner from '@/common-components/vehicle-banner/vehicle-banner.vue';
|
import vehicleBanner from '@/iss-components/vehicle-banner/vehicle-banner.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'coverage-statement',
|
name: 'coverage-statement',
|
||||||
|
|
|
||||||
|
|
@ -69,12 +69,12 @@ import { states } from "@/constants/states";
|
||||||
import baseFormMixin from '@/mixins/base-form-mixin';
|
import baseFormMixin from '@/mixins/base-form-mixin';
|
||||||
import vinPagesMixin from '@/mixins/vin-pages-mixin';
|
import vinPagesMixin from '@/mixins/vin-pages-mixin';
|
||||||
import { Form } from 'vee-validate';
|
import { Form } from 'vee-validate';
|
||||||
import siteFooter from '@/common-components/site-footer/site-footer.vue';
|
import siteFooter from '@/iss-components/site-footer/site-footer.vue';
|
||||||
import siteHeader from '@/common-components/site-header/site-header.vue';
|
import siteHeader from '@/iss-components/site-header/site-header.vue';
|
||||||
import siteSubHeader from '@/common-components/site-sub-header/site-sub-header.vue';
|
import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue';
|
||||||
import vehicleBanner from '@/common-components/vehicle-banner/vehicle-banner.vue';
|
import vehicleBanner from '@/iss-components/vehicle-banner/vehicle-banner.vue';
|
||||||
import textboxQuestion from '@/common-components/textbox-question/textbox-question.vue';
|
import textboxQuestion from '@/digital-components/textbox-question/textbox-question.vue';
|
||||||
import dropdownQuestion from '@/common-components/dropdown-question/dropdown-question.vue';
|
import dropdownQuestion from '@/digital-components/dropdown-question/dropdown-question.vue';
|
||||||
import alert from "@/ux-components/alert/alert";
|
import alert from "@/ux-components/alert/alert";
|
||||||
|
|
||||||
// Define Validation Rules
|
// Define Validation Rules
|
||||||
|
|
|
||||||
|
|
@ -37,10 +37,10 @@ import { settleAllPromises } from '@/helpers/layout-helper';
|
||||||
// Import Component
|
// Import Component
|
||||||
import baseFormMixin from '@/mixins/base-form-mixin';
|
import baseFormMixin from '@/mixins/base-form-mixin';
|
||||||
import { Form } from 'vee-validate';
|
import { Form } from 'vee-validate';
|
||||||
import siteFooter from '@/common-components/site-footer/site-footer.vue';
|
import siteFooter from '@/iss-components/site-footer/site-footer.vue';
|
||||||
import siteHeader from '@/common-components/site-header/site-header.vue';
|
import siteHeader from '@/iss-components/site-header/site-header.vue';
|
||||||
import siteSubHeader from '@/common-components/site-sub-header/site-sub-header.vue';
|
import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue';
|
||||||
import vehicleBanner from '@/common-components/vehicle-banner/vehicle-banner.vue';
|
import vehicleBanner from '@/iss-components/vehicle-banner/vehicle-banner.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'molding-questions',
|
name: 'molding-questions',
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// Components
|
// Components
|
||||||
import questionsPageLayout from "@/common-components/questions-page-layout/questions-page-layout";
|
import questionsPageLayout from "@/iss-components/questions-page-layout/questions-page-layout";
|
||||||
|
|
||||||
// Supporting Files
|
// Supporting Files
|
||||||
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
validationRules="last-name-required" />
|
validationRules="last-name-required" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<addressQuestions ref="addressQuestions" v-model="customerQuestions.addressQuestions" />
|
<addressQuestions ref="addressQuestions" v-model="customerQuestions.addressQuestions" includeStreetAddress2="true" />
|
||||||
<siteFooter
|
<siteFooter
|
||||||
cmsWidgetName="SiteFooterWidget"
|
cmsWidgetName="SiteFooterWidget"
|
||||||
ref="siteFooter"
|
ref="siteFooter"
|
||||||
|
|
@ -42,11 +42,11 @@
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
// Components
|
// Components
|
||||||
import siteHeader from '@/common-components/site-header/site-header';
|
import siteHeader from '@/iss-components/site-header/site-header';
|
||||||
import siteSubHeader from '@/common-components/site-sub-header/site-sub-header';
|
import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header';
|
||||||
import textboxQuestion from "@/common-components/textbox-question/textbox-question";
|
import textboxQuestion from "@/digital-components/textbox-question/textbox-question";
|
||||||
import addressQuestions from "@/common-components/address-questions/address-questions";
|
import addressQuestions from "@/iss-components/address-questions/address-questions";
|
||||||
import siteFooter from "@/common-components/site-footer/site-footer";
|
import siteFooter from "@/iss-components/site-footer/site-footer";
|
||||||
|
|
||||||
// Supporting files
|
// Supporting files
|
||||||
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
||||||
|
|
@ -116,6 +116,7 @@ export default {
|
||||||
addressQuestions :
|
addressQuestions :
|
||||||
{
|
{
|
||||||
streetAddress: this.mainStore.order.customer.address.streetAddress,
|
streetAddress: this.mainStore.order.customer.address.streetAddress,
|
||||||
|
streetAddress2: this.mainStore.order.customer.address.streetAddress2,
|
||||||
city: this.mainStore.order.customer.address.city,
|
city: this.mainStore.order.customer.address.city,
|
||||||
state: this.mainStore.order.customer.address.state,
|
state: this.mainStore.order.customer.address.state,
|
||||||
zipCode: this.mainStore.order.customer.address.zipCode,
|
zipCode: this.mainStore.order.customer.address.zipCode,
|
||||||
|
|
@ -134,4 +135,10 @@ export default {
|
||||||
Form,
|
Form,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
.alert.alert-warning
|
||||||
|
{
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import buttonQuestion from "@/common-components/button-question/button-question";
|
import buttonQuestion from "@/digital-components/button-question/button-question";
|
||||||
import { defineRule } from "vee-validate";
|
import { defineRule } from "vee-validate";
|
||||||
import { required } from "@/helpers/validation-rules";
|
import { required } from "@/helpers/validation-rules";
|
||||||
import { errorMessages } from "@/constants/error-messages";
|
import { errorMessages } from "@/constants/error-messages";
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import buttonQuestion from "@/common-components/button-question/button-question";
|
import buttonQuestion from "@/digital-components/button-question/button-question";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "replaceOptionsQuestion",
|
name: "replaceOptionsQuestion",
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import buttonQuestion from "@/common-components/button-question/button-question";
|
import buttonQuestion from "@/digital-components/button-question/button-question";
|
||||||
import replaceOptionsQuestion from "@/layouts/vehicle-damage/replace-options-question/replace-options-question";
|
import replaceOptionsQuestion from "@/layouts/vehicle-damage/replace-options-question/replace-options-question";
|
||||||
import { defineRule } from "vee-validate";
|
import { defineRule } from "vee-validate";
|
||||||
import { required } from "@/helpers/validation-rules";
|
import { required } from "@/helpers/validation-rules";
|
||||||
|
|
|
||||||
|
|
@ -59,10 +59,10 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// Components
|
// Components
|
||||||
import siteHeader from "@/common-components/site-header/site-header";
|
import siteHeader from "@/iss-components/site-header/site-header";
|
||||||
import siteFooter from "@/common-components/site-footer/site-footer";
|
import siteFooter from "@/iss-components/site-footer/site-footer";
|
||||||
import vehicleBanner from "@/common-components/vehicle-banner/vehicle-banner";
|
import vehicleBanner from "@/iss-components/vehicle-banner/vehicle-banner";
|
||||||
import siteSubHeader from "@/common-components/site-sub-header/site-sub-header";
|
import siteSubHeader from "@/iss-components/site-sub-header/site-sub-header";
|
||||||
import sideDoorOptions from "@/layouts/vehicle-damage/side-door-options/side-door-options";
|
import sideDoorOptions from "@/layouts/vehicle-damage/side-door-options/side-door-options";
|
||||||
import damageLocationQuestion from "@/layouts/vehicle-damage/damage-location-question/damage-location-question";
|
import damageLocationQuestion from "@/layouts/vehicle-damage/damage-location-question/damage-location-question";
|
||||||
import windshieldOptions from "@/layouts/vehicle-damage/windshield-options/windshield-options";
|
import windshieldOptions from "@/layouts/vehicle-damage/windshield-options/windshield-options";
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import buttonQuestion from "@/common-components/button-question/button-question";
|
import buttonQuestion from "@/digital-components/button-question/button-question";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "windshieldOptions",
|
name: "windshieldOptions",
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import buttonQuestion from "@/common-components/button-question/button-question";
|
import buttonQuestion from "@/digital-components/button-question/button-question";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "windshieldDamageTypeQuestion",
|
name: "windshieldDamageTypeQuestion",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,9 @@
|
||||||
/* eslint-env jest */
|
/* eslint-env jest */
|
||||||
import { mount } from '@vue/test-utils';
|
import { mount } from '@vue/test-utils';
|
||||||
import { navigationScenarios } from '@/router/router-constants/navigation-scenarios';
|
import { navigationScenarios } from '@/router/router-constants/navigation-scenarios';
|
||||||
|
import { issPageValues } from '@/router/router-constants/issPage-values';
|
||||||
|
import { queryStrings } from '@/constants/query-strings';
|
||||||
|
import { GaActions } from "@/constants/analytics";
|
||||||
import VehicleLookup from './vehicle-lookup.vue';
|
import VehicleLookup from './vehicle-lookup.vue';
|
||||||
|
|
||||||
const vinLookupMethodsMockData = {
|
const vinLookupMethodsMockData = {
|
||||||
|
|
@ -55,6 +58,12 @@ function setupMocks() {
|
||||||
mixins: [
|
mixins: [
|
||||||
{
|
{
|
||||||
computed: {
|
computed: {
|
||||||
|
GaActions() {
|
||||||
|
return GaActions;
|
||||||
|
},
|
||||||
|
queryStrings() {
|
||||||
|
return queryStrings;
|
||||||
|
},
|
||||||
navigationScenarios() {
|
navigationScenarios() {
|
||||||
return navigationScenarios;
|
return navigationScenarios;
|
||||||
},
|
},
|
||||||
|
|
@ -80,6 +89,7 @@ function setupMocks() {
|
||||||
}),
|
}),
|
||||||
getFooterInfoBoxHeight: jest.fn(() => 80),
|
getFooterInfoBoxHeight: jest.fn(() => 80),
|
||||||
getPageNameByQueryString: jest.fn(() => "vehicle-lookup"),
|
getPageNameByQueryString: jest.fn(() => "vehicle-lookup"),
|
||||||
|
pushEventToGA: jest.fn(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -40,10 +40,10 @@ import BaseFormMixin from '@/mixins/base-form-mixin';
|
||||||
import VIN_LOOKUP_METHODS from '@/constants/vin-lookup-methods';
|
import VIN_LOOKUP_METHODS from '@/constants/vin-lookup-methods';
|
||||||
|
|
||||||
// Import Component
|
// Import Component
|
||||||
import SiteFooter from '@/common-components/site-footer/site-footer.vue';
|
import SiteFooter from '@/iss-components/site-footer/site-footer.vue';
|
||||||
import SiteHeader from '@/common-components/site-header/site-header.vue';
|
import SiteHeader from '@/iss-components/site-header/site-header.vue';
|
||||||
import SiteSubHeader from '@/common-components/site-sub-header/site-sub-header.vue';
|
import SiteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue';
|
||||||
import VehicleBanner from '@/common-components/vehicle-banner/vehicle-banner.vue';
|
import VehicleBanner from '@/iss-components/vehicle-banner/vehicle-banner.vue';
|
||||||
import VinLookupMethods from './vin-lookup-methods/vin-lookup-methods.vue';
|
import VinLookupMethods from './vin-lookup-methods/vin-lookup-methods.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ import { required } from '@/helpers/validation-rules';
|
||||||
import { errorMessages } from '@/constants/error-messages';
|
import { errorMessages } from '@/constants/error-messages';
|
||||||
|
|
||||||
// Import Component
|
// Import Component
|
||||||
import ButtonQuestion from '@/common-components/button-question/button-question.vue';
|
import ButtonQuestion from '@/digital-components/button-question/button-question.vue';
|
||||||
|
|
||||||
// Define Validation Rules
|
// Define Validation Rules
|
||||||
defineRule('option-required', required(errorMessages.OPTION_REQUIRED));
|
defineRule('option-required', required(errorMessages.OPTION_REQUIRED));
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import buttonQuestion from "@/common-components/button-question/button-question";
|
import buttonQuestion from "@/digital-components/button-question/button-question";
|
||||||
import { useMainStore } from '@/store';
|
import { useMainStore } from '@/store';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
|
||||||
|
|
@ -27,10 +27,10 @@
|
||||||
<script>
|
<script>
|
||||||
// Components
|
// Components
|
||||||
import makeQuestion from "@/layouts/vehicle-make/make-question/make-question";
|
import makeQuestion from "@/layouts/vehicle-make/make-question/make-question";
|
||||||
import siteHeader from "@/common-components/site-header/site-header";
|
import siteHeader from "@/iss-components/site-header/site-header";
|
||||||
import siteSubHeader from "@/common-components/site-sub-header/site-sub-header";
|
import siteSubHeader from "@/iss-components/site-sub-header/site-sub-header";
|
||||||
import vehicleBanner from "@/common-components/vehicle-banner/vehicle-banner";
|
import vehicleBanner from "@/iss-components/vehicle-banner/vehicle-banner";
|
||||||
import siteFooter from "@/common-components/site-footer/site-footer";
|
import siteFooter from "@/iss-components/site-footer/site-footer";
|
||||||
|
|
||||||
// Supporting files
|
// Supporting files
|
||||||
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import buttonQuestion from "@/common-components/button-question/button-question";
|
import buttonQuestion from "@/digital-components/button-question/button-question";
|
||||||
import { useMainStore } from '@/store';
|
import { useMainStore } from '@/store';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
|
||||||
|
|
@ -23,10 +23,10 @@
|
||||||
<script>
|
<script>
|
||||||
// Components
|
// Components
|
||||||
import modelQuestion from "@/layouts/vehicle-model/model-question/model-question";
|
import modelQuestion from "@/layouts/vehicle-model/model-question/model-question";
|
||||||
import siteHeader from "@/common-components/site-header/site-header";
|
import siteHeader from "@/iss-components/site-header/site-header";
|
||||||
import siteSubHeader from "@/common-components/site-sub-header/site-sub-header";
|
import siteSubHeader from "@/iss-components/site-sub-header/site-sub-header";
|
||||||
import vehicleBanner from "@/common-components/vehicle-banner/vehicle-banner";
|
import vehicleBanner from "@/iss-components/vehicle-banner/vehicle-banner";
|
||||||
import siteFooter from "@/common-components/site-footer/site-footer";
|
import siteFooter from "@/iss-components/site-footer/site-footer";
|
||||||
|
|
||||||
// Supporting files
|
// Supporting files
|
||||||
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// Components
|
// Components
|
||||||
import buttonQuestion from "@/common-components/button-question/button-question";
|
import buttonQuestion from "@/digital-components/button-question/button-question";
|
||||||
|
|
||||||
// Supporting files
|
// Supporting files
|
||||||
import { getTintImage } from "@/constants/tint-mapper";
|
import { getTintImage } from "@/constants/tint-mapper";
|
||||||
|
|
|
||||||
|
|
@ -45,10 +45,10 @@
|
||||||
<script>
|
<script>
|
||||||
// Components
|
// Components
|
||||||
import glassPartQuestion from "@/layouts/vehicle-parts/glass-part-question/glass-part-question";
|
import glassPartQuestion from "@/layouts/vehicle-parts/glass-part-question/glass-part-question";
|
||||||
import siteHeader from "@/common-components/site-header/site-header";
|
import siteHeader from "@/iss-components/site-header/site-header";
|
||||||
import vehicleBanner from "@/common-components/vehicle-banner/vehicle-banner";
|
import vehicleBanner from "@/iss-components/vehicle-banner/vehicle-banner";
|
||||||
import siteSubHeader from "@/common-components/site-sub-header/site-sub-header";
|
import siteSubHeader from "@/iss-components/site-sub-header/site-sub-header";
|
||||||
import siteFooter from "@/common-components/site-footer/site-footer";
|
import siteFooter from "@/iss-components/site-footer/site-footer";
|
||||||
import alert from "@/ux-components/alert/alert";
|
import alert from "@/ux-components/alert/alert";
|
||||||
|
|
||||||
// Supporting Files
|
// Supporting Files
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import buttonQuestion from "@/common-components/button-question/button-question";
|
import buttonQuestion from "@/digital-components/button-question/button-question";
|
||||||
import { useMainStore } from '@/store';
|
import { useMainStore } from '@/store';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
|
||||||
|
|
@ -25,10 +25,10 @@
|
||||||
<script>
|
<script>
|
||||||
// Components
|
// Components
|
||||||
import styleQuestion from "@/layouts/vehicle-style/style-question/style-question";
|
import styleQuestion from "@/layouts/vehicle-style/style-question/style-question";
|
||||||
import siteHeader from "@/common-components/site-header/site-header";
|
import siteHeader from "@/iss-components/site-header/site-header";
|
||||||
import siteSubHeader from "@/common-components/site-sub-header/site-sub-header";
|
import siteSubHeader from "@/iss-components/site-sub-header/site-sub-header";
|
||||||
import vehicleBanner from "@/common-components/vehicle-banner/vehicle-banner";
|
import vehicleBanner from "@/iss-components/vehicle-banner/vehicle-banner";
|
||||||
import siteFooter from "@/common-components/site-footer/site-footer";
|
import siteFooter from "@/iss-components/site-footer/site-footer";
|
||||||
|
|
||||||
// Supporting files
|
// Supporting files
|
||||||
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
||||||
|
|
|
||||||
|
|
@ -23,10 +23,10 @@
|
||||||
<script>
|
<script>
|
||||||
// Components
|
// Components
|
||||||
import yearQuestion from "@/layouts/vehicle-year/year-question/year-question";
|
import yearQuestion from "@/layouts/vehicle-year/year-question/year-question";
|
||||||
import siteHeader from "@/common-components/site-header/site-header";
|
import siteHeader from "@/iss-components/site-header/site-header";
|
||||||
import siteFooter from "@/common-components/site-footer/site-footer";
|
import siteFooter from "@/iss-components/site-footer/site-footer";
|
||||||
import siteSubHeader from "@/common-components/site-sub-header/site-sub-header";
|
import siteSubHeader from "@/iss-components/site-sub-header/site-sub-header";
|
||||||
import vehicleBanner from "@/common-components/vehicle-banner/vehicle-banner";
|
import vehicleBanner from "@/iss-components/vehicle-banner/vehicle-banner";
|
||||||
|
|
||||||
// Supporting files
|
// Supporting files
|
||||||
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import buttonQuestion from "@/common-components/button-question/button-question";
|
import buttonQuestion from "@/digital-components/button-question/button-question";
|
||||||
import { useMainStore } from '@/store';
|
import { useMainStore } from '@/store';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,23 @@
|
||||||
import { render } from '@testing-library/vue';
|
import { render } from '@testing-library/vue';
|
||||||
import userEvent from '@testing-library/user-event';
|
import userEvent from '@testing-library/user-event';
|
||||||
import '@testing-library/jest-dom';
|
import '@testing-library/jest-dom';
|
||||||
|
import { issPageValues } from '@/router/router-constants/issPage-values';
|
||||||
|
import { queryStrings } from '@/constants/query-strings';
|
||||||
|
import { GaActions } from "@/constants/analytics";
|
||||||
import VinLocationInformationComponent from './vin-location-information.vue';
|
import VinLocationInformationComponent from './vin-location-information.vue';
|
||||||
|
|
||||||
const mockText = Object.freeze({
|
const mockText = Object.freeze({
|
||||||
HEADER: 'Mock Header',
|
HEADER: 'Mock Header',
|
||||||
BODY: 'Mock Body',
|
BODY: 'Mock Body',
|
||||||
});
|
});
|
||||||
|
const mockRoute = {
|
||||||
|
query: {
|
||||||
|
issPage: issPageValues.VIN_LOOKUP,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const mockRouter = {
|
||||||
|
navigate: jest.fn(),
|
||||||
|
};
|
||||||
|
|
||||||
const mountOptions = {
|
const mountOptions = {
|
||||||
global: {
|
global: {
|
||||||
|
|
@ -27,9 +38,22 @@ const mountOptions = {
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
}),
|
}),
|
||||||
|
pushEventToGA: jest.fn()
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
GaActions() {
|
||||||
|
return GaActions;
|
||||||
|
},
|
||||||
|
queryStrings() {
|
||||||
|
return queryStrings;
|
||||||
|
},
|
||||||
|
}
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
mocks: {
|
||||||
|
$route: mockRoute,
|
||||||
|
$router: mockRouter,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,8 @@ import { createTestingPinia } from '@pinia/testing';
|
||||||
import userEvent from '@testing-library/user-event';
|
import userEvent from '@testing-library/user-event';
|
||||||
import { errorMessages } from '@/constants/error-messages';
|
import { errorMessages } from '@/constants/error-messages';
|
||||||
import { issPageValues } from '@/router/router-constants/issPage-values';
|
import { issPageValues } from '@/router/router-constants/issPage-values';
|
||||||
|
import { queryStrings } from '@/constants/query-strings';
|
||||||
|
import { GaActions } from "@/constants/analytics";
|
||||||
import { navigationScenarios } from '@/router/router-constants/navigation-scenarios';
|
import { navigationScenarios } from '@/router/router-constants/navigation-scenarios';
|
||||||
import { routerParams } from '@/router/router-params';
|
import { routerParams } from '@/router/router-params';
|
||||||
import { useMainStore } from '@/store';
|
import { useMainStore } from '@/store';
|
||||||
|
|
@ -134,11 +136,18 @@ const mountOptions = {
|
||||||
getFooterInfoBoxHeight: jest.fn(() => 80),
|
getFooterInfoBoxHeight: jest.fn(() => 80),
|
||||||
cssClassNameForCmsWidget: jest.fn(() => 'widget-name-mock-class'),
|
cssClassNameForCmsWidget: jest.fn(() => 'widget-name-mock-class'),
|
||||||
getPageNameByQueryString: jest.fn(() => ''),
|
getPageNameByQueryString: jest.fn(() => ''),
|
||||||
|
pushEventToGA: jest.fn(),
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
GaActions() {
|
||||||
|
return GaActions;
|
||||||
|
},
|
||||||
navigationScenarios() {
|
navigationScenarios() {
|
||||||
return navigationScenarios;
|
return navigationScenarios;
|
||||||
},
|
},
|
||||||
|
queryStrings() {
|
||||||
|
return queryStrings;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -51,10 +51,10 @@ import { useMainStore } from '@/store';
|
||||||
import baseFormMixin from '@/mixins/base-form-mixin';
|
import baseFormMixin from '@/mixins/base-form-mixin';
|
||||||
import vehicleQuestionsMixin from '@/mixins/vehicle-questions-mixin';
|
import vehicleQuestionsMixin from '@/mixins/vehicle-questions-mixin';
|
||||||
import { Form } from 'vee-validate';
|
import { Form } from 'vee-validate';
|
||||||
import siteFooter from '@/common-components/site-footer/site-footer.vue';
|
import siteFooter from '@/iss-components/site-footer/site-footer.vue';
|
||||||
import siteHeader from '@/common-components/site-header/site-header.vue';
|
import siteHeader from '@/iss-components/site-header/site-header.vue';
|
||||||
import siteSubHeader from '@/common-components/site-sub-header/site-sub-header.vue';
|
import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue';
|
||||||
import vehicleBanner from '@/common-components/vehicle-banner/vehicle-banner.vue';
|
import vehicleBanner from '@/iss-components/vehicle-banner/vehicle-banner.vue';
|
||||||
import vinLocationInformation from './vin-location-information/vin-location-information.vue';
|
import vinLocationInformation from './vin-location-information/vin-location-information.vue';
|
||||||
import vinLookupAlerts from './vin-lookup-alerts/vin-lookup-alerts.vue';
|
import vinLookupAlerts from './vin-lookup-alerts/vin-lookup-alerts.vue';
|
||||||
import vinQuestion from './vin-question/vin-question.vue';
|
import vinQuestion from './vin-question/vin-question.vue';
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ import { regex, required } from '@/helpers/validation-rules';
|
||||||
import { errorMessages } from '@/constants/error-messages';
|
import { errorMessages } from '@/constants/error-messages';
|
||||||
|
|
||||||
// Import Component(s)
|
// Import Component(s)
|
||||||
import textboxQuestion from '@/common-components/textbox-question/textbox-question.vue';
|
import textboxQuestion from '@/digital-components/textbox-question/textbox-question.vue';
|
||||||
|
|
||||||
defineRule('vin-required', required(errorMessages.VIN_REQUIRED));
|
defineRule('vin-required', required(errorMessages.VIN_REQUIRED));
|
||||||
defineRule('vin-format', regex(/^[a-hA-Hj-nJ-NpPr-zR-Z0-9]{17}$/, errorMessages.VIN_FORMAT));
|
defineRule('vin-format', regex(/^[a-hA-Hj-nJ-NpPr-zR-Z0-9]{17}$/, errorMessages.VIN_FORMAT));
|
||||||
|
|
|
||||||
|
|
@ -132,13 +132,13 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// Components
|
// Components
|
||||||
import siteHeader from '@/common-components/site-header/site-header';
|
import siteHeader from '@/iss-components/site-header/site-header';
|
||||||
import siteSubHeader from '@/common-components/site-sub-header/site-sub-header';
|
import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header';
|
||||||
import siteFooter from "@/common-components/site-footer/site-footer";
|
import siteFooter from "@/iss-components/site-footer/site-footer";
|
||||||
import textboxQuestion from "@/common-components/textbox-question/textbox-question";
|
import textboxQuestion from "@/digital-components/textbox-question/textbox-question";
|
||||||
import buttonQuestion from "@/common-components/button-question/button-question";
|
import buttonQuestion from "@/digital-components/button-question/button-question";
|
||||||
import dropdownQuestion from "@/common-components/dropdown-question/dropdown-question";
|
import dropdownQuestion from "@/digital-components/dropdown-question/dropdown-question";
|
||||||
import textBlock from "@/common-components/text-block/text-block";
|
import textBlock from "@/digital-components/text-block/text-block";
|
||||||
|
|
||||||
// Supporting files
|
// Supporting files
|
||||||
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { inputButtonProps } from "@/common-components/base-input-button/button-functionality-props";
|
import { inputButtonProps } from "@/digital-components/base-input-button/button-functionality-props";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
model: {
|
model: {
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ const getDefaultState = () => {
|
||||||
customer: {
|
customer: {
|
||||||
address: {
|
address: {
|
||||||
streetAddress: null,
|
streetAddress: null,
|
||||||
|
streetAddress2: null,
|
||||||
city: null,
|
city: null,
|
||||||
state: null,
|
state: null,
|
||||||
zipCode: null,
|
zipCode: null,
|
||||||
|
|
@ -668,6 +669,7 @@ export const useMainStore = defineStore({
|
||||||
updatePolicyHolderDetails(customerQuestions)
|
updatePolicyHolderDetails(customerQuestions)
|
||||||
{
|
{
|
||||||
this.order.customer.address.streetAddress = customerQuestions.addressQuestions.streetAddress;
|
this.order.customer.address.streetAddress = customerQuestions.addressQuestions.streetAddress;
|
||||||
|
this.order.customer.address.streetAddress2 = customerQuestions.addressQuestions.streetAddress2;
|
||||||
this.order.customer.address.city = customerQuestions.addressQuestions.city;
|
this.order.customer.address.city = customerQuestions.addressQuestions.city;
|
||||||
this.order.customer.address.state = customerQuestions.addressQuestions.state;
|
this.order.customer.address.state = customerQuestions.addressQuestions.state;
|
||||||
this.order.customer.address.zipCode = customerQuestions.addressQuestions.zipCode;
|
this.order.customer.address.zipCode = customerQuestions.addressQuestions.zipCode;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
&.list-card {
|
&.list-card {
|
||||||
&:not(.selected) {
|
&:not(.selected) {
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 4;
|
z-index: 5;
|
||||||
@include box-shadow-hover($blue-300);
|
@include box-shadow-hover($blue-300);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import baseInputButton from "@/common-components/base-input-button/base-input-button";
|
import baseInputButton from "@/digital-components/base-input-button/base-input-button";
|
||||||
import inputButtonWrapperMixin from "@/mixins/input-button-wrapper-mixin";
|
import inputButtonWrapperMixin from "@/mixins/input-button-wrapper-mixin";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import loader from "@/ux-components/loader/loader";
|
import loader from "@/ux-components/loader/loader";
|
||||||
import baseInputButton from "@/common-components/base-input-button/base-input-button";
|
import baseInputButton from "@/digital-components/base-input-button/base-input-button";
|
||||||
import inputButtonWrapperMixin from "@/mixins/input-button-wrapper-mixin";
|
import inputButtonWrapperMixin from "@/mixins/input-button-wrapper-mixin";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import baseInputButton from "@/common-components/base-input-button/base-input-button";
|
import baseInputButton from "@/digital-components/base-input-button/base-input-button";
|
||||||
import inputButtonWrapperMixin from "@/mixins/input-button-wrapper-mixin";
|
import inputButtonWrapperMixin from "@/mixins/input-button-wrapper-mixin";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,6 @@
|
||||||
{{text}}
|
{{text}}
|
||||||
<slot name="after-text"></slot>
|
<slot name="after-text"></slot>
|
||||||
</a>
|
</a>
|
||||||
<a v-else-if="linkType === 'dashedUnderline'" @click="handleClick" class="dashed-underline" :href="href">
|
|
||||||
{{text}}
|
|
||||||
<slot name="after-text"></slot>
|
|
||||||
</a>
|
|
||||||
<a v-else-if="linkType === 'text'" @click="handleClick" :href="href">
|
<a v-else-if="linkType === 'text'" @click="handleClick" :href="href">
|
||||||
{{text}}
|
{{text}}
|
||||||
<slot name="after-text"></slot>
|
<slot name="after-text"></slot>
|
||||||
|
|
@ -33,6 +29,12 @@
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleClick(event) {
|
handleClick(event) {
|
||||||
|
this.pushEventToGA(
|
||||||
|
this.$route.query[this.queryStrings.ISS_PAGE],
|
||||||
|
this.GaActions.CLICKED,
|
||||||
|
this.text,
|
||||||
|
true
|
||||||
|
);
|
||||||
this.$emit("click-event");
|
this.$emit("click-event");
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -41,10 +43,9 @@
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
a {
|
a {
|
||||||
display: inline-flex !important;
|
|
||||||
color: $blue;
|
color: $blue;
|
||||||
text-underline-offset: 0.5em;
|
text-underline-offset: 5px;
|
||||||
line-height: 26px;
|
line-height: 2;
|
||||||
padding: 0 0 4px 0;
|
padding: 0 0 4px 0;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
max-width: fit-content;
|
max-width: fit-content;
|
||||||
|
|
@ -75,9 +76,6 @@
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&.dashed-underline {
|
|
||||||
text-decoration: underline dashed 1px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
Loading…
Reference in a new issue