diff --git a/.gitignore b/.gitignore
index b01672f1a..3018f2938 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,6 +31,9 @@ ortoni-report/
*.sln
*.sw?
+# Cursor
+.cursor/
+
# Misc
coverage/*
junit.xml
\ No newline at end of file
diff --git a/src/assets/img/icons/chevron-no-background.svg b/src/assets/img/icons/chevron-no-background.svg
new file mode 100644
index 000000000..a5c669c0f
--- /dev/null
+++ b/src/assets/img/icons/chevron-no-background.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/img/shop.svg b/src/assets/img/shop.svg
new file mode 100644
index 000000000..34dfea893
--- /dev/null
+++ b/src/assets/img/shop.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/constants/header-keys.js b/src/constants/header-keys.js
index 4341d416b..c91e4aca8 100644
--- a/src/constants/header-keys.js
+++ b/src/constants/header-keys.js
@@ -7,4 +7,5 @@ export const headerKeys = {
EON: "X-Enterprise-Order-Number",
LOG_ENABLED: "log-enabled",
PAGE_NAME_TO_LOG: "X-Page-Name-To-Log",
+ DEVICE_ID: "X-Device-Id",
};
diff --git a/src/global-methods.js b/src/global-methods.js
index 584743b2d..240c80d82 100644
--- a/src/global-methods.js
+++ b/src/global-methods.js
@@ -10,6 +10,7 @@ import { getSessionKeyValue } from "@/helpers/heritage-integration/cookie-helper
import { headerKeys } from "@/constants/header-keys";
import axiosResponseInterceptorMessages from "@/constants/axios-response-interceptor-messages.js";
import { endpoints } from "@/constants/endpoints";
+import { getDeviceIdValue } from "@/helpers/heritage-integration/cookie-helper";
// Add a response interceptor for global axios error handing.
axios.interceptors.response.use(
@@ -73,6 +74,7 @@ export default {
[headerKeys.TRANSACTION_ID]: crypto.randomUUID(),
[headerKeys.EON]: order?.eon,
[headerKeys.LOG_ENABLED]: store.getters.applicationUser?.loggingOption ?? false,
+ [headerKeys.DEVICE_ID]: getDeviceIdValue(),
};
axios({
diff --git a/src/layouts/coverage-statement/coverage-statement.vue b/src/layouts/coverage-statement/coverage-statement.vue
index a3c93f0ea..6dda6fdd2 100644
--- a/src/layouts/coverage-statement/coverage-statement.vue
+++ b/src/layouts/coverage-statement/coverage-statement.vue
@@ -8,13 +8,14 @@
-
+
-
+
-
-
+
diff --git a/src/layouts/scheduling/mobile-scheduling-card/mobile-scheduling-card.spec.js b/src/layouts/scheduling/mobile-scheduling-card/mobile-scheduling-card.spec.js
index 3a44b0e34..6200deea3 100644
--- a/src/layouts/scheduling/mobile-scheduling-card/mobile-scheduling-card.spec.js
+++ b/src/layouts/scheduling/mobile-scheduling-card/mobile-scheduling-card.spec.js
@@ -1,6 +1,6 @@
import { shallowMount } from "@vue/test-utils";
import mobileSchedulingCard from "./mobile-scheduling-card";
-import { PREMIUM_TIME_SLOT_ID_FLAG } from "@/constants/schedule-constants";
+import { PREMIUM_TIME_SLOT_ID_FLAG, AppointmentTypeStrings } from "@/constants/schedule-constants";
import { getMountOptions } from "@/helpers/unit-test-helper.js";
const MOCK_TIME_SLOTS = [
@@ -54,6 +54,7 @@ function mountComponent(props = {}, cmsContent = {}) {
return shallowMount(mobileSchedulingCard, {
props: {
zipCode: "43235",
+ providerNumber: "03357",
timeSlots: MOCK_TIME_SLOTS,
premiumTimeSlotPrice: 29.99,
...props,
@@ -102,10 +103,10 @@ describe("mobile-scheduling-card.vue", () => {
);
await premiumInput.setValue(true);
expect(wrapper.emitted("update:modelValue")[0][0]).toEqual({
- selectedMobileTimeSlot: {
- routeCodeId: MOCK_TIME_SLOTS[0].id,
- isPremiumAppointment: true,
- },
+ appointmentType: AppointmentTypeStrings.MOBILE,
+ providerNumber: "03357",
+ routeCodeId: MOCK_TIME_SLOTS[0].id,
+ isPremiumAppointment: true,
});
wrapper.unmount();
});
@@ -120,10 +121,10 @@ describe("mobile-scheduling-card.vue", () => {
await premiumInput.setValue(true);
await wrapper.setProps({
modelValue: {
- selectedMobileTimeSlot: {
- routeCodeId: MOCK_TIME_SLOTS[0].id,
- isPremiumAppointment: true,
- },
+ appointmentType: AppointmentTypeStrings.MOBILE,
+ providerNumber: "03357",
+ routeCodeId: MOCK_TIME_SLOTS[0].id,
+ isPremiumAppointment: true,
},
});
@@ -136,11 +137,23 @@ describe("mobile-scheduling-card.vue", () => {
const pmInput = wrapper.find(`input[value="${MOCK_TIME_SLOTS[1].id}"]`);
await pmInput.setValue(true);
expect(wrapper.emitted("update:modelValue")[0][0]).toEqual({
- selectedMobileTimeSlot: {
- routeCodeId: MOCK_TIME_SLOTS[1].id,
- isPremiumAppointment: false,
+ appointmentType: AppointmentTypeStrings.MOBILE,
+ providerNumber: "03357",
+ routeCodeId: MOCK_TIME_SLOTS[1].id,
+ isPremiumAppointment: false,
+ });
+ wrapper.unmount();
+ });
+
+ test("does not highlight selection from in-shop appointment", async () => {
+ const wrapper = mountComponent({
+ modelValue: {
+ appointmentType: AppointmentTypeStrings.IN_SHOP,
+ providerNumber: "001820",
+ routeCodeId: MOCK_TIME_SLOTS[0].id,
},
});
+ expect(wrapper.find(".mobile-scheduling-card__slot--selected").exists()).toBe(false);
wrapper.unmount();
});
diff --git a/src/layouts/scheduling/mobile-scheduling-card/mobile-scheduling-card.vue b/src/layouts/scheduling/mobile-scheduling-card/mobile-scheduling-card.vue
index 578faaa39..757d4dfb2 100644
--- a/src/layouts/scheduling/mobile-scheduling-card/mobile-scheduling-card.vue
+++ b/src/layouts/scheduling/mobile-scheduling-card/mobile-scheduling-card.vue
@@ -32,7 +32,7 @@
@@ -59,7 +59,7 @@
@@ -84,7 +84,7 @@