Merge branch 'release/2025.01.23' into feature/CASH-109

This commit is contained in:
CarlNation 2025-01-22 06:26:44 -05:00
commit f0ac77680e
6 changed files with 152 additions and 14 deletions

View file

@ -226,7 +226,7 @@ export default {
if (this.buttonTypeString == "radio") { if (this.buttonTypeString == "radio") {
classes += " radio-button-container"; classes += " radio-button-container";
} else if (this.buttonTypeString == "servicePackageRadio") { } else if (this.buttonTypeString == "servicePackageRadio") {
classes = "package-wrapper col-md-4"; classes = "package-wrapper col";
} }
if (this.buttonTypeString == "listCard" && this.buttonsInfo.length > 2) { if (this.buttonTypeString == "listCard" && this.buttonsInfo.length > 2) {

View file

@ -20,7 +20,7 @@
</div> </div>
</div> </div>
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-md-12 col-xl-8 mb-5"> <div class="col-md-12 mb-5" :class="getColCount()">
<servicePackageQuestion <servicePackageQuestion
ref="servicePackage" ref="servicePackage"
cashCmsWidgetName="CashServicePackageQuestionWidget" cashCmsWidgetName="CashServicePackageQuestionWidget"
@ -32,6 +32,7 @@
:shouldHideRecalibration="shouldHideRecalibration" :shouldHideRecalibration="shouldHideRecalibration"
@vapsItemsSelected="vapsItemsSelectedAction" @vapsItemsSelected="vapsItemsSelectedAction"
@servicePackageDiscountSelected="servicePackageDiscountSelectedAction" @servicePackageDiscountSelected="servicePackageDiscountSelectedAction"
@currentNumberOfPackages="currentNumberOfPackagesAction"
:servicePackage="servicePackage" :servicePackage="servicePackage"
:activePromos="lineItems.promos" :activePromos="lineItems.promos"
v-on="{ 'buttonEvent.openModal': openModalAction }" v-on="{ 'buttonEvent.openModal': openModalAction }"
@ -40,7 +41,7 @@
</div> </div>
</div> </div>
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-md-12 col-xl-8 p-md-0"> <div class="col-md-12" :class="getColCount()">
<!-- If Cash AND vehicle does not require recal OR if Cash AND State requires showing recal, then show Afterpay banner --> <!-- If Cash AND vehicle does not require recal OR if Cash AND State requires showing recal, then show Afterpay banner -->
<afterpayModalBanner <afterpayModalBanner
v-if="showAfterpayBanner" v-if="showAfterpayBanner"
@ -443,6 +444,7 @@ export default {
showSaveProgressPopup: null, showSaveProgressPopup: null,
showSaveProgressModal: null, showSaveProgressModal: null,
isSaveProgressComplete: null, isSaveProgressComplete: null,
packageNumber: null,
}; };
}, },
mounted() { mounted() {
@ -492,6 +494,16 @@ export default {
}, },
}, },
methods: { methods: {
getColCount() {
if (this.packageNumber > 2) {
return "col-xl-8";
} else {
return "col-xl-6";
}
},
currentNumberOfPackagesAction(packageNumber) {
this.packageNumber = packageNumber;
},
openModalAction(modalName) { openModalAction(modalName) {
this.$refs[modalName].openModal(); this.$refs[modalName].openModal();
}, },

View file

@ -150,6 +150,7 @@ export default {
: "Special: Save $" + this.getServicePackageDiscountPrice(), : "Special: Save $" + this.getServicePackageDiscountPrice(),
}, },
})); }));
this.$emit("currentNumberOfPackages", modifiedAnswers.length);
return modifiedAnswers; return modifiedAnswers;
}, },
isServicePackageDiscountOnOrder() { isServicePackageDiscountOnOrder() {

View file

@ -141,6 +141,9 @@ export default {
.package-main { .package-main {
.package-wrapper { .package-wrapper {
margin: 1rem 0; margin: 1rem 0;
&:first-child {
margin: 1rem 0 0 0;
}
&:last-child { &:last-child {
margin: 1rem 0 0 0; margin: 1rem 0 0 0;
} }
@ -148,6 +151,12 @@ export default {
margin: 1rem 0.5rem 0 0.5rem; margin: 1rem 0.5rem 0 0.5rem;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
&:first-child {
margin: 1rem 0.5rem 0 0;
}
&:last-child {
margin: 1rem 0 0 0.5rem;
}
} }
label { label {

View file

@ -80,8 +80,9 @@ const routes = [
return; return;
} }
const fromHeritage = getQuerystringParameter(queryStrings.FROM_HERITAGE) === "true";
const fromReturnUser = from?.name === fmgPageValues.RETURN_USER; const fromReturnUser = from?.name === fmgPageValues.RETURN_USER;
const fromContentSite = getQuerystringParameter(queryStrings.START_TYPE) === "fmg";
const toReturnUserPage = to.query?.fmgPage === fmgPageValues.RETURN_USER;
// Intercept all navigation if a submitted order exists in storage // Intercept all navigation if a submitted order exists in storage
if (window.sessionStorage.getItem("submittedOrder") !== null) { if (window.sessionStorage.getItem("submittedOrder") !== null) {
@ -92,17 +93,16 @@ const routes = [
} }
// On entering the funnel "fresh", read cookie information, decide what to do next. // On entering the funnel "fresh", read cookie information, decide what to do next.
else if (from.redirectedFrom === undefined || fromReturnUser) { else if (from.redirectedFrom === undefined || fromReturnUser) {
// if entering the funnel from non-funnel check and see if there is already a funnel cookie. // if entering the funnel from the content site, check and see if there is already a funnel cookie.
// if so, send them to return-user page // if so, send them to return-user page.
const funnelCookieLastTouched = getFunnelCookie()?.LastTouched; const funnelCookieLastTouched = getFunnelCookie()?.LastTouched;
if ( if (
to?.query?.fmgPage !== fmgPageValues.RETURN_USER && fromContentSite &&
!fromReturnUser &&
!fromHeritage &&
funnelCookieLastTouched !== null && funnelCookieLastTouched !== null &&
funnelCookieLastTouched !== undefined funnelCookieLastTouched !== undefined &&
!toReturnUserPage
) { ) {
log(" --navigate to return user"); log(" --from content site navigate to return user");
router.push({ router.push({
path: "/", path: "/",
query: { fmgPage: fmgPageValues.RETURN_USER }, query: { fmgPage: fmgPageValues.RETURN_USER },

View file

@ -83,7 +83,6 @@ export default {
.list-button-horizontal-content { .list-button-horizontal-content {
outline: none; outline: none;
position: relative; position: relative;
background: $white;
transition: all 150ms linear; transition: all 150ms linear;
border: 1px solid $gray-500; border: 1px solid $gray-500;
border-radius: 0; border-radius: 0;
@ -110,8 +109,8 @@ export default {
} }
.list-button-horizontal-content:hover { .list-button-horizontal-content:hover {
background-color: $blue-700; background-color: transparent;
color: $white; color: $blue;
box-shadow: none; box-shadow: none;
} }
@ -220,4 +219,121 @@ export default {
} }
} }
} }
// Special styles when there are multiple list-button-horizontal buttons
// (number of chips, pay w/cash/insurance)
.windshield-chip-count-question {
fieldset {
.d-flex {
.col {
&:first-child {
label {
&.list-group.list-button-horizontal {
z-index: 2;
&:hover {
background-color: $white;
border-top-left-radius: 0.5rem;
border-bottom-left-radius: 0.5rem;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
}
}
}
}
}
}
fieldset {
.d-flex {
.col {
label {
&.list-group.list-button-horizontal {
&:hover {
background-color: $white;
border-radius: 0;
}
}
}
}
}
}
fieldset {
.d-flex {
.col {
&:last-child {
label {
&.list-group.list-button-horizontal {
z-index: 2;
&:hover {
background-color: $white;
border-top-right-radius: 0.5rem;
border-bottom-right-radius: 0.5rem;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
}
}
}
}
}
}
}
//NOT Windshiled Chip Count
fieldset {
.d-flex {
.col {
&:first-child {
label {
&.list-group.list-button-horizontal {
z-index: 6;
&:hover {
background-color: $white;
border-top-left-radius: 0.5rem;
border-bottom-left-radius: 0.5rem;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
}
}
}
}
}
}
fieldset {
.d-flex {
.col {
label {
&.list-group.list-button-horizontal {
&:hover {
background-color: $white;
border-radius: 0;
}
}
}
}
}
}
fieldset {
.d-flex {
.col {
&:last-child {
label {
&.list-group.list-button-horizontal {
z-index: 6;
&:hover {
background-color: $white;
border-top-right-radius: 0.5rem;
border-bottom-right-radius: 0.5rem;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
}
}
}
}
}
}
</style> </style>