From ec3323cf08cf514cb1f99576135dca4daca5a585 Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Thu, 30 Apr 2026 11:30:14 -0400 Subject: [PATCH 01/14] CASH-2571 | Scheduling Page Created new page Added routing data Added experiment flag (doesn't exist in framework yet) - hardcoded to true Header, Footer, Subheader, H5 added --- src/constants/experiments.js | 1 + src/constants/progress-bar-mapper.js | 4 + src/layouts/scheduling/scheduling.vue | 128 +++++++++++++++++++++ src/router/constants/routes.js | 4 + src/router/constants/routing-table.js | 21 ++++ src/router/methods/route-logic/schedule.js | 17 +++ src/router/methods/routes.js | 4 +- 7 files changed, 178 insertions(+), 1 deletion(-) create mode 100644 src/layouts/scheduling/scheduling.vue create mode 100644 src/router/methods/route-logic/schedule.js diff --git a/src/constants/experiments.js b/src/constants/experiments.js index 97e049df0..940e2656c 100644 --- a/src/constants/experiments.js +++ b/src/constants/experiments.js @@ -47,6 +47,7 @@ const experimentSettings = { USE_ADYEN_PAYMENT: "UseAdyenPayment", SHOW_UNVERIFIED_DEDUCT_ENTRY: "ShowUnverifiedDeducEntry", SERVICE_PACKAGE_ORDER: "ServicePackageOrder", + USE_SCHEDULING_PAGE: "UseSchedulingPage", }; const experimentTriggers = { diff --git a/src/constants/progress-bar-mapper.js b/src/constants/progress-bar-mapper.js index b21c6c9c7..88bb4d7cf 100644 --- a/src/constants/progress-bar-mapper.js +++ b/src/constants/progress-bar-mapper.js @@ -68,6 +68,10 @@ export const pageProgressMapper = { percent: 76, step: 3, }, + scheduling: { + percent: 76, + step: 3, + }, "mobile-details": { percent: 76, step: 3, diff --git a/src/layouts/scheduling/scheduling.vue b/src/layouts/scheduling/scheduling.vue new file mode 100644 index 000000000..e59ba4d24 --- /dev/null +++ b/src/layouts/scheduling/scheduling.vue @@ -0,0 +1,128 @@ + + + diff --git a/src/router/constants/routes.js b/src/router/constants/routes.js index 47c37bb55..4501c8a92 100644 --- a/src/router/constants/routes.js +++ b/src/router/constants/routes.js @@ -73,6 +73,10 @@ export const routeData = { name: "schedule", path: "/schedule", }, + SCHEDULING: { + name: "scheduling", + path: "/scheduling", + }, MOBILE_DETAILS: { name: "mobile-details", path: "/mobile-details", diff --git a/src/router/constants/routing-table.js b/src/router/constants/routing-table.js index a7be5f387..0165766d9 100644 --- a/src/router/constants/routing-table.js +++ b/src/router/constants/routing-table.js @@ -496,6 +496,27 @@ const routingTable = function () { }, ], }, + { + pageName: routeData.SCHEDULING.name, + maps: [ + { + scenario: navigationScenarios.CLICKED_BACK, + destinationPageData: routeData.QUOTE, + }, + { + scenario: navigationScenarios.CLICKED_FORWARD, + destinationPageData: routeData.CUSTOMER_DETAILS, + }, + { + scenario: navigationScenarios.CLICKED_FORWARD_WITH_MOBILE_SERVICE, + destinationPageData: routeData.MOBILE_DETAILS, + }, + { + scenario: navigationScenarios.ZIP_CODE_CHANGED_RECAL_ACK, + destinationPageData: routeData.SERVICE_ZIP, + }, + ], + }, { pageName: routeData.MOBILE_DETAILS.name, maps: [ diff --git a/src/router/methods/route-logic/schedule.js b/src/router/methods/route-logic/schedule.js new file mode 100644 index 000000000..78ebe0628 --- /dev/null +++ b/src/router/methods/route-logic/schedule.js @@ -0,0 +1,17 @@ +import experimentMixin from "@/mixins/experiment-mixin.js"; +import { experimentSettings } from "@/constants/experiments"; +import { routeData } from "@/router/constants/routes"; + +export async function scheduleBeforeEnter(to, from) { + const isSchedulingEnabled = true; + // experimentMixin.methods + // .getSettingValue(experimentSettings.USE_SCHEDULING_PAGE) + // ?.toLowerCase() === "true"; + + if (isSchedulingEnabled) { + return { + name: routeData.SCHEDULING.name, + replace: true, + }; + } +} diff --git a/src/router/methods/routes.js b/src/router/methods/routes.js index 521ba43a1..a69870077 100644 --- a/src/router/methods/routes.js +++ b/src/router/methods/routes.js @@ -14,6 +14,7 @@ import { paymentMethodBeforeEnter } from "@/router/methods/route-logic/payment-m import { paymentBeforeEnter } from "@/router/methods/route-logic/payment"; import { serviceLocationBeforeEnter } from "@/router/methods/route-logic/service-location"; import { adyenReturnBeforeEnter } from "@/router/methods/route-logic/adyen-return"; +import { scheduleBeforeEnter } from "@/router/methods/route-logic/schedule"; export const routes = [ // Non-virtual pages. @@ -32,7 +33,8 @@ export const routes = [ createRoute(routeData.QUOTE, quoteBeforeEnter), createRoute(routeData.INSURANCE_COMPANY, insuranceCompanyBeforeEnter), createRoute(routeData.SERVICE_LOCATION, serviceLocationBeforeEnter), - createRoute(routeData.SCHEDULE), + createRoute(routeData.SCHEDULE, scheduleBeforeEnter), + createRoute(routeData.SCHEDULING), createRoute(routeData.CUSTOMER_DETAILS), createRoute(routeData.PAYMENT_METHOD, paymentMethodBeforeEnter), createRoute(routeData.PAYMENT, paymentBeforeEnter), From fec5db0c9f9cdc065c8fcc99835a1cd4ced1d82f Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Thu, 30 Apr 2026 12:08:23 -0400 Subject: [PATCH 02/14] CASH-2572 | Date-Picker for new schedule page Full functionality Haven't checked styling Includes mocking data inside scheduling.vue --- src/layouts/scheduling/scheduling.vue | 48 ++++ .../date-picker/date-picker.spec.js | 224 +++++++++++++++ src/ux-components/date-picker/date-picker.vue | 270 ++++++++++++++++++ 3 files changed, 542 insertions(+) create mode 100644 src/ux-components/date-picker/date-picker.spec.js create mode 100644 src/ux-components/date-picker/date-picker.vue diff --git a/src/layouts/scheduling/scheduling.vue b/src/layouts/scheduling/scheduling.vue index e59ba4d24..f982ac70d 100644 --- a/src/layouts/scheduling/scheduling.vue +++ b/src/layouts/scheduling/scheduling.vue @@ -1,5 +1,6 @@