= {
...getDefaultTestData().customerDetails!,
address: {
...getDefaultTestData().customerDetails!.address,
- postalCode: '43085'
+ postalCode: '43235'
}
},
diff --git a/playwright-tests/tests/InsuranceAcuityPaypal.ts b/playwright-tests/tests/InsuranceAcuityPaypal.ts
index 0a97fc794..5cd3c0a40 100644
--- a/playwright-tests/tests/InsuranceAcuityPaypal.ts
+++ b/playwright-tests/tests/InsuranceAcuityPaypal.ts
@@ -90,7 +90,7 @@ const insuranceAcuityPaypalTests: ITestCase[] = [];
const tc = {
name: `InsuranceAcuityPaypal`,
- tags: ['@E2E','@InsuranceAcuityPaypal', '@test_report', '@Insurance', '@CASH-1187'],
+ tags: ['@E2E','@InsuranceAcuityPaypal', '@test_report', '@Insurance', '@CASH-1187', '@CASH-848'],
testData: insuranceAcuityPaypalData
};
insuranceAcuityPaypalTests.push(tc);
diff --git a/public/css/hop-styling.css b/public/css/hop-styling.css
index 0318d52ff..da2f3ef22 100644
--- a/public/css/hop-styling.css
+++ b/public/css/hop-styling.css
@@ -18,7 +18,7 @@ body .validation-info {
display: none;
}
body .italicSmall {
- font-style: normal;
+ font-style: italic;
font-size: 14px;
}
body span {
@@ -37,7 +37,7 @@ body .headerlinecontainer .headerline1 {
line-height: 32px;
font-weight: 400;
margin: 24px 0;
- text-align: center;
+ text-align: left;
}
body input,
body select {
@@ -137,9 +137,9 @@ body .buttonContainer {
}
body .buttonContainer button {
position: relative;
- background: linear-gradient(270deg, #1574a1 0%, #003d58 100%);
+ background: #db0020;
border: none;
- border-radius: 8px;
+ border-radius: 50rem;
color: #fff;
justify-content: center;
font-family: Urbanist, Arial, Helvetica, sans-serif;
@@ -149,18 +149,17 @@ body .buttonContainer button {
}
@media (hover: hover) {
body .buttonContainer button {
- background: linear-gradient(270deg, #1574a1 0%, #003d58 100%);
cursor: pointer;
}
}
body .buttonContainer button:focus {
- box-shadow: 0 0 0 3px, 0 0 0 5.5px #06577c;
+ box-shadow: 0 0 0 3px, 0 0 0 5.5px #db0020;
}
body .buttonContainer button:focus, body .buttonContainer button:focus-visible {
outline: none;
- box-shadow: 0 0 0 3px, 0 0 0 5.5px #06577c;
+ box-shadow: 0 0 0 3px, 0 0 0 5.5px #db0020;
color: #fff;
- background: linear-gradient(270deg, rgb(6, 87, 124) 0%, rgb(6, 87, 124) 100%);
+ background: #db0020;
}
body .buttonContainer button:disabled {
background: #e3e4e4 !important;
@@ -275,7 +274,7 @@ body .cc-error-container #alert-message {
#fmg-checkout-shared #other-payments-container label span.paymentOptionText {
margin: auto 0;
padding-left: 0;
- font-weight: 400;
+ font-weight: 600;
}
#fmg-checkout-shared #other-payments-container #afterpayParentLink label > span:first-of-type {
width: 100%;
@@ -298,7 +297,7 @@ body .cc-error-container #alert-message {
text-align: right;
}
#fmg-checkout-shared #other-payments-container #creditCardParentDiv .paymentSelection #creditCardImages > img {
- width: 20%;
+ width: 12%;
}
#fmg-checkout-shared #other-payments-container #creditCardParentDiv .creditCardSpecific {
padding: 0 2%;
@@ -310,11 +309,13 @@ body .cc-error-container #alert-message {
margin-top: 24px;
margin-bottom: 24px;
font-size: 14px;
+ font-weight: 600;
color: #525656;
}
#fmg-checkout-shared #other-payments-container .disclaimerContainerv2 {
margin-bottom: 24px;
font-size: 14px;
+ font-weight: 600;
color: #525656;
}
@media only screen and (max-device-width: 767px) {
diff --git a/public/scss/hop-styling.scss b/public/scss/hop-styling.scss
index aae9913e2..d3afaf985 100644
--- a/public/scss/hop-styling.scss
+++ b/public/scss/hop-styling.scss
@@ -20,7 +20,7 @@ body {
}
.italicSmall {
- font-style: normal;
+ font-style: italic;
font-size: 14px;
}
@@ -44,7 +44,7 @@ body {
line-height: 32px;
font-weight: 400;
margin: 24px 0;
- text-align: center;
+ text-align: left;
}
}
@@ -148,9 +148,9 @@ body {
height: 48px;
button {
position: relative;
- background: linear-gradient(270deg, #1574a1 0%, #003d58 100%);
+ background: #db0020;
border: none;
- border-radius: 8px;
+ border-radius: 50rem;
color: #fff;
justify-content: center;
font-family: Urbanist, Arial, Helvetica, sans-serif;
@@ -158,19 +158,18 @@ body {
font-size: 16px;
height: 48px;
@media (hover: hover) {
- background: linear-gradient(270deg, #1574a1 0%, #003d58 100%);
cursor: pointer;
}
&:focus {
- box-shadow: 0 0 0 3px, 0 0 0 5.5px #06577c;
+ box-shadow: 0 0 0 3px, 0 0 0 5.5px #db0020;
}
&:focus, // Mouse, touch, stylus focus
&:focus-visible {
// Keyboard focus for accessibility
outline: none;
- box-shadow: 0 0 0 3px, 0 0 0 5.5px #06577c;
+ box-shadow: 0 0 0 3px, 0 0 0 5.5px #db0020;
color: #fff;
- background: linear-gradient(270deg, rgba(6, 87, 124, 1) 0%, rgba(6, 87, 124, 1) 100%);
+ background: #db0020;
}
&:disabled {
background: #e3e4e4 !important;
@@ -333,7 +332,7 @@ body {
&.paymentOptionText {
margin: auto 0;
padding-left: 0;
- font-weight: 400;
+ font-weight: 600;
}
}
}
@@ -373,7 +372,7 @@ body {
text-align: right;
> img {
- width: 20%;
+ width: 12%;
}
}
}
@@ -391,12 +390,14 @@ body {
margin-top: 24px;
margin-bottom: 24px;
font-size: 14px;
+ font-weight: 600;
color: #525656;
}
.disclaimerContainerv2 {
margin-bottom: 24px;
font-size: 14px;
+ font-weight: 600;
color: #525656;
}
}
diff --git a/src/constants/error-messages.js b/src/constants/error-messages.js
index 45841f21f..8b8c98881 100644
--- a/src/constants/error-messages.js
+++ b/src/constants/error-messages.js
@@ -26,7 +26,7 @@ const errorMessages = {
VIN_FORMAT:
"Invalid VIN. Please make sure that you entered the correct 17-digit, alpha-numeric number. VINs do not contain the letters I, O, or Q",
OPTION_REQUIRED: "Please select an option",
- RECAL_ACK_REQUIRED: "Please acknowledge recalibration alert",
+ RECAL_ACK_REQUIRED: "You must agree to the terms to submit",
VEHICLE_REQUIRED: "Please select a vehicle",
MOBILE_LOCATION_REQUIRED: "Please enter your service address",
DATE_REQUIRED: "Please select a date",
@@ -37,6 +37,7 @@ const errorMessages = {
MODEL_REQUIRED: "Please select your vehicle model",
STYLE_REQUIRED: "Please select your vehicle style",
PROMO_REQUIRED: "Please enter a promo code",
+ INSURANCE_COMPANY_REQUIRED: "Please select an insurance company",
};
export { errorMessages };
diff --git a/src/constants/progress-bar-mapper.js b/src/constants/progress-bar-mapper.js
index 7947f6817..a6e41d31b 100644
--- a/src/constants/progress-bar-mapper.js
+++ b/src/constants/progress-bar-mapper.js
@@ -1,31 +1,31 @@
export const pageProgressMapper = {
//Combine progress bar slide percent and button steps
vehicle: {
- percent: 10,
+ percent: 5,
step: 1,
},
"vehicle-damage": {
- percent: 14,
+ percent: 9,
step: 1,
},
estimate: {
- percent: 18,
+ percent: 12,
step: 1,
},
"service-zip": {
- percent: 22,
+ percent: 20,
step: 1,
},
"vin-lookup": {
- percent: 22,
+ percent: 15,
step: 1,
},
"license-plate-lookup": {
- percent: 22,
+ percent: 20,
step: 1,
},
"address-lookup": {
- percent: 22,
+ percent: 20,
step: 1,
},
"address-vehicles": {
@@ -33,15 +33,15 @@ export const pageProgressMapper = {
step: 1,
},
"part-questions": {
- percent: 30,
+ percent: 15,
step: 1,
},
"molding-questions": {
- percent: 30,
+ percent: 26,
step: 1,
},
"vehicle-parts": {
- percent: 30,
+ percent: 20,
step: 1,
},
"capability-questions": {
@@ -49,11 +49,11 @@ export const pageProgressMapper = {
step: 1,
},
quote: {
- percent: 39, //The first Step 2 must be 39 so the animated bar lines up with the dot
+ percent: 60,
step: 2,
},
"insurance-company": {
- percent: 52,
+ percent: 60,
step: 2,
},
"service-location": {
@@ -61,7 +61,7 @@ export const pageProgressMapper = {
step: 2,
},
schedule: {
- percent: 70.5, //The first Step 3 must be 70.5 so the animated bar lines up with the dot
+ percent: 76,
step: 3,
},
"mobile-details": {
@@ -69,15 +69,15 @@ export const pageProgressMapper = {
step: 3,
},
"customer-details": {
- percent: 84,
+ percent: 85,
step: 3,
},
"payment-method": {
- percent: 92, //The first Step 4 must be 92 so the animated bar lines up with the dot
- step: 3,
+ percent: 98.5,
+ step: 4,
},
payment: {
- percent: 96,
+ percent: 98.5,
step: 4,
},
confirmation: {
diff --git a/src/digital-components/button-question/button-question.vue b/src/digital-components/button-question/button-question.vue
index 82fbf424c..9862633ad 100644
--- a/src/digital-components/button-question/button-question.vue
+++ b/src/digital-components/button-question/button-question.vue
@@ -12,6 +12,10 @@ https://safelite.atlassian.net/wiki/spaces/DC/pages/76644418/Button+Question+Com
{{ questionText }}
+
@@ -60,6 +64,7 @@ https://safelite.atlassian.net/wiki/spaces/DC/pages/76644418/Button+Question+Com
:isInsuranceSelected="isInsuranceSelected"
:suppressError="suppressError"
:labelBold="labelBold"
+ :isHidden="setIsHidden(index)"
@buttonEvent="handleButtonEvent"
v-model="selectedValues" />
@@ -92,6 +97,11 @@ https://safelite.atlassian.net/wiki/spaces/DC/pages/76644418/Button+Question+Com
:name="formatString(groupName)"
v-if="!suppressError">
+
+
+
@@ -118,6 +128,7 @@ export default {
isMultiSelect: Boolean,
groupName: String,
questionText: String,
+ questionTextDescription: String,
answers: Array,
textPosition: {
type: String,
@@ -158,6 +169,13 @@ export default {
required: false,
default: false,
},
+ lazyLoad: {
+ type: Object,
+ default: () => ({
+ isLazyLoad: false,
+ amountToLoad: null,
+ }),
+ },
},
setup(props) {
const propsClone = Object.assign({}, props);
@@ -189,6 +207,7 @@ export default {
data() {
return {
lastValuePushedToGa: null,
+ showAllButtons: false,
};
},
computed: {
@@ -284,6 +303,15 @@ export default {
this.$emit("update:modelValue", selectedAnswers);
},
},
+ setIsHidden() {
+ return (index) => {
+ return (
+ this.lazyLoad.isLazyLoad &&
+ index >= this.lazyLoad.amountToLoad &&
+ !this.showAllButtons
+ );
+ };
+ },
},
methods: {
formatString(str) {
@@ -296,6 +324,9 @@ export default {
const eventName = event.eventName;
this.$emit(`buttonEvent.${eventName}`, event.args);
},
+ toggleShowAllButtons() {
+ this.showAllButtons = true;
+ },
},
watch: {
modelValue(newValue, oldValue) {
@@ -357,6 +388,28 @@ export default {
font-family: UrbanistSemibold;
color: $black;
+ &.timeslots {
+ .col {
+ & > label[isHidden="true"] {
+ display: none;
+ }
+ }
+ #show-more-button {
+ width: 100%;
+ text-align: center;
+ margin-top: 0.5rem;
+
+ button {
+ color: $blue;
+ text-underline-offset: 4px;
+
+ &:active {
+ background: unset;
+ }
+ }
+ }
+ }
+
.radio-button-container {
&:not(:last-child) {
padding-bottom: map-get($spacers, 2);
@@ -376,6 +429,13 @@ export default {
font-weight: 600;
}
}
+.question-text-description {
+ font-family: UrbanistRegular;
+ & > sup {
+ font-size: 0.5rem;
+ top: -0.4rem;
+ }
+}
.small-question-text {
&.question-text {
span {
diff --git a/src/digital-components/date-picker/date-picker.vue b/src/digital-components/date-picker/date-picker.vue
index 1e9d88d48..bfaeac476 100644
--- a/src/digital-components/date-picker/date-picker.vue
+++ b/src/digital-components/date-picker/date-picker.vue
@@ -883,6 +883,12 @@ export default {
flex-grow: 0;
display: flex;
flex-direction: column;
+ align-items: flex-start;
+ text-align: left;
+
+ .duration-text-block {
+ text-align: left;
+ }
.date-picker-header {
margin-bottom: 1.5rem;
@@ -891,9 +897,11 @@ export default {
fieldset {
flex-grow: 1;
position: relative;
+ width: 100%;
.view-more-dates {
color: $blue;
+ font-family: UrbanistSemiBold;
}
}
.loader {
@@ -907,7 +915,6 @@ export default {
}
.calendar-grid-container {
margin: 0 auto 1rem auto;
- max-width: 360px;
position: relative;
transition:
height ease 2s,
@@ -961,10 +968,11 @@ export default {
.month-year {
grid-area: 1 / 1 / 2 / 5;
- font-family: UrbanistBold;
+ font-family: UrbanistRegular;
color: $black;
- justify-content: center;
+ justify-content: left;
margin-bottom: 0.5rem;
+ font-weight: 600;
}
.legend {
grid-area: 1 / 5 / 2 / 8;
@@ -1045,8 +1053,6 @@ export default {
display: flex;
justify-content: center;
align-items: center;
- min-width: 2.5rem;
- width: 2.5rem;
height: 2.5rem;
border: 2px solid transparent;
@@ -1084,14 +1090,8 @@ export default {
&.selectable-day {
label {
background-color: $blue-100;
- min-width: 2.75rem;
- width: 2.75rem;
border-radius: 50%;
cursor: pointer;
- @include media-breakpoint-up(md) {
- min-width: 3rem;
- width: 3rem;
- }
&:hover {
border: 2px solid $blue;
}
@@ -1270,18 +1270,13 @@ export default {
line-height: 1.2;
justify-content: center;
padding: 0.25rem;
+ margin: 0.15rem;
}
&.selectable-day {
label {
color: $black;
background-color: $blue-100;
- min-width: 2.75rem;
- width: 2.75rem;
border-radius: 0.25rem;
- @include media-breakpoint-up(md) {
- min-width: 3rem;
- width: 3rem;
- }
}
}
&.current-day {
@@ -1289,7 +1284,6 @@ export default {
font-weight: 600;
font-family: "UrbanistSemibold";
color: $black;
- font-size-adjust: 0.5; // needed for Averta fonts baseline alignment
}
}
}
@@ -1300,7 +1294,6 @@ export default {
color: $black;
font-weight: 400;
font-family: "UrbanistSemibold";
- font-size-adjust: 0.5; // needed for Averta fonts baseline alignment
&.price {
font-weight: 400;
@@ -1338,19 +1331,8 @@ export default {
display: flex;
max-width: 100%;
flex-wrap: wrap;
- gap: 0 0.5rem;
& > div {
- flex: 0 0 calc(50% - 0.25rem);
- }
- }
- :deep(.button-question.is-mobile-appointment) {
- .button-inner-wrapper > div {
- flex: 0 0 100%;
- }
- }
- :deep(.button-question.is-drop-off-appointment) {
- .button-inner-wrapper > div {
flex: 0 0 100%;
}
}
@@ -1360,6 +1342,8 @@ export default {
display: block;
position: relative;
height: 2rem;
+ font-size: 0.875rem;
+ padding-top: 0;
width: 100%;
justify-content: center;
background: transparent;
diff --git a/src/digital-components/dropdown-question/dropdown-question.vue b/src/digital-components/dropdown-question/dropdown-question.vue
index bb55e61ec..49f6cdfce 100644
--- a/src/digital-components/dropdown-question/dropdown-question.vue
+++ b/src/digital-components/dropdown-question/dropdown-question.vue
@@ -19,7 +19,9 @@
:validationRules="validationRules"
:placeHolderText="placeHolderText"
:valueAsKey="valueAsKey">
-
+