@roomstay/frontend 2.1.7 → 2.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/201.bundle.js +1 -1
- package/dist/449.bundle.js +1 -1
- package/dist/760.bundle.js +1 -1
- package/dist/882.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/components/generic/Icon/Icon.d.ts +1 -0
- package/dist/src/components/generic/Icon/Icon.js +2 -1
- package/dist/src/components/generic/Icon/Icon.js.map +1 -1
- package/dist/src/components/generic/Layout/StepLayout/StepLayoutContainer.d.ts +3 -0
- package/dist/src/components/generic/Layout/StepLayout/StepLayoutContainer.js +28 -0
- package/dist/src/components/generic/Layout/StepLayout/StepLayoutContainer.js.map +1 -0
- package/dist/src/components/generic/Layout/StepLayout/StepLayoutLeftContent.d.ts +3 -0
- package/dist/src/components/generic/Layout/StepLayout/StepLayoutLeftContent.js +25 -0
- package/dist/src/components/generic/Layout/StepLayout/StepLayoutLeftContent.js.map +1 -0
- package/dist/src/components/generic/Layout/StepLayout/StepLayoutRightContent.d.ts +3 -0
- package/dist/src/components/generic/Layout/StepLayout/StepLayoutRightContent.js +25 -0
- package/dist/src/components/generic/Layout/StepLayout/StepLayoutRightContent.js.map +1 -0
- package/dist/src/components/generic/Layout/StepLayout/index.d.ts +3 -0
- package/dist/src/components/generic/Layout/StepLayout/index.js +13 -0
- package/dist/src/components/generic/Layout/StepLayout/index.js.map +1 -0
- package/dist/src/components/generic/date/DatePicker.js +10 -11
- package/dist/src/components/generic/date/DatePicker.js.map +1 -1
- package/dist/src/components/steps/addons/AddonList.js +32 -12
- package/dist/src/components/steps/addons/AddonList.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelCard.js +24 -11
- package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
- package/dist/src/components/summary/BESummaryAddonRow.js +4 -3
- package/dist/src/components/summary/BESummaryAddonRow.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextType.d.ts +1 -0
- package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +38 -8
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +1 -0
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/Addon/Addon.d.ts +1 -0
- package/dist/src/models/Addon/Addon.js +10 -1
- package/dist/src/models/Addon/Addon.js.map +1 -1
- package/dist/src/models/BasketAddonRow.js +26 -19
- package/dist/src/models/BasketAddonRow.js.map +1 -1
- package/dist/src/pages/steps/StepAddon/StepAddonComponent.js +32 -9
- package/dist/src/pages/steps/StepAddon/StepAddonComponent.js.map +1 -1
- package/dist/src/pages/steps/StepAddon/StepAddonLoader.js +45 -44
- package/dist/src/pages/steps/StepAddon/StepAddonLoader.js.map +1 -1
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js +35 -12
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js.map +1 -1
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.js +10 -10
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.js.map +1 -1
- package/dist/src/pages/steps/StepRoom/StepRoomComponent.js +33 -33
- package/dist/src/pages/steps/StepRoom/StepRoomComponent.js.map +1 -1
- package/dist/src/pages/steps/StepRoom/StepRoomLoader.js +10 -10
- package/dist/src/pages/steps/StepRoom/StepRoomLoader.js.map +1 -1
- package/dist/src/providers/FeatureProvider.js +2 -0
- package/dist/src/providers/FeatureProvider.js.map +1 -1
- package/dist/src/providers/feature/FullPageEngineSmallSpacingFeature.d.ts +6 -0
- package/dist/src/providers/feature/FullPageEngineSmallSpacingFeature.js +10 -0
- package/dist/src/providers/feature/FullPageEngineSmallSpacingFeature.js.map +1 -0
- package/dist/src/reducers/BasketReducer.d.ts +2 -1
- package/dist/src/reducers/BasketReducer.js +7 -0
- package/dist/src/reducers/BasketReducer.js.map +1 -1
- package/dist/src/util/TotalCalculator.js +7 -1
- package/dist/src/util/TotalCalculator.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/package.json +1 -1
- package/dist/tests/jest/engines/RoomstayThemeEngine.test.d.ts +0 -1
- package/dist/tests/jest/engines/RoomstayThemeEngine.test.js +0 -41
- package/dist/tests/jest/engines/RoomstayThemeEngine.test.js.map +0 -1
- package/dist/tests/jest/events/EventManager.test.d.ts +0 -1
- package/dist/tests/jest/events/EventManager.test.js +0 -101
- package/dist/tests/jest/events/EventManager.test.js.map +0 -1
- package/dist/tests/jest/helpers/ObjectHelper.test.d.ts +0 -1
- package/dist/tests/jest/helpers/ObjectHelper.test.js +0 -72
- package/dist/tests/jest/helpers/ObjectHelper.test.js.map +0 -1
- package/dist/tests/jest/models/RoomRate.test.d.ts +0 -1
- package/dist/tests/jest/models/RoomRate.test.js +0 -133
- package/dist/tests/jest/models/RoomRate.test.js.map +0 -1
- package/dist/tests/jest/providers/LanguageProvider.test.d.ts +0 -1
- package/dist/tests/jest/providers/LanguageProvider.test.js +0 -32
- package/dist/tests/jest/providers/LanguageProvider.test.js.map +0 -1
- package/dist/tests/jest/providers/SessionProvider.test.d.ts +0 -1
- package/dist/tests/jest/providers/SessionProvider.test.js +0 -230
- package/dist/tests/jest/providers/SessionProvider.test.js.map +0 -1
- package/dist/tests/jest/providers/storage/LocalStorageProvider.test.d.ts +0 -1
- package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js +0 -126
- package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js.map +0 -1
- package/dist/tests/jest/reducers/BasketReducer.test.d.ts +0 -1
- package/dist/tests/jest/reducers/BasketReducer.test.js +0 -103
- package/dist/tests/jest/reducers/BasketReducer.test.js.map +0 -1
- package/dist/tests/offline/RoomstayBestRateAlert.d.ts +0 -1
- package/dist/tests/offline/RoomstayBestRateAlert.js +0 -48
- package/dist/tests/offline/RoomstayBestRateAlert.js.map +0 -1
- package/dist/tests/offline/entry/ReactWrapper.d.ts +0 -1
- package/dist/tests/offline/entry/ReactWrapper.js +0 -136
- package/dist/tests/offline/entry/ReactWrapper.js.map +0 -1
- package/dist/tests/offline/entry/allEngines.d.ts +0 -1
- package/dist/tests/offline/entry/allEngines.js +0 -50
- package/dist/tests/offline/entry/allEngines.js.map +0 -1
- package/dist/tests/offline/entry/components/TestPicker.d.ts +0 -1
- package/dist/tests/offline/entry/components/TestPicker.js +0 -156
- package/dist/tests/offline/entry/components/TestPicker.js.map +0 -1
- package/dist/tests/setupTests.d.ts +0 -0
- package/dist/tests/setupTests.js +0 -12
- package/dist/tests/setupTests.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasketReducer.js","sourceRoot":"/","sources":["src/reducers/BasketReducer.ts"],"names":[],"mappings":";;;;;;AACA,kDAA0B;AAC1B,8EAA2E;AAC3E,yFAAiE;AAEjE,6CAAkD;
|
|
1
|
+
{"version":3,"file":"BasketReducer.js","sourceRoot":"/","sources":["src/reducers/BasketReducer.ts"],"names":[],"mappings":"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","sourcesContent":["import BasketRow from '@/models/BasketRow';\nimport dayjs from 'dayjs';\nimport { RemoveFromCartEvent } from '@/events/actions/RemoveFromCartEvent';\nimport RoomstayEventManager from '@/events/RoomstayEventManager';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport { AddToCartEvent } from '@frontend/events';\n\nexport type BasketReducerType = {\n method: 'Add' | 'Remove' | 'Update' | 'Clear' | 'AddRate' | 'Init';\n row?: BasketRow;\n rate?: RoomRate;\n rows?: BasketRow[];\n};\n\nexport const BasketReducer = (rows: BasketRow[], action: BasketReducerType): BasketRow[] => {\n const checkAndSetRowDates = (row: BasketRow) => {\n if (!row.getStartDate()) {\n row.setStartDate(dayjs('now'));\n }\n\n if (!row.getEndDate()) {\n row.setEndDate(dayjs('now').add(1, 'day'));\n }\n };\n\n switch (action.method) {\n case 'Add':\n if (action.row) {\n const { row } = action;\n\n checkAndSetRowDates(row);\n\n return [...rows, row];\n }\n return rows;\n case 'AddRate':\n if (action.row && action.rate) {\n const { row } = action;\n\n checkAndSetRowDates(row);\n\n row.setRate(action.rate);\n\n let hasRowIncluded = false;\n // Let us loop through all of our rows and see if it's in array\n // if target row isn't included, we'll add it to the end.\n const newRows = rows.map((mappedRow) => {\n if (mappedRow.getID() === action.row?.getID()) {\n hasRowIncluded = true;\n return action.row;\n } else {\n return mappedRow;\n }\n });\n\n if (!hasRowIncluded) {\n newRows.push(row);\n }\n\n // Reason we raise this event here, and not in the reducer for example is\n // this is the only sure way we can trust a room is being added to the cart\n const addToCartEvent = new AddToCartEvent(row, newRows);\n RoomstayEventManager.raise(addToCartEvent);\n\n return [...newRows];\n }\n\n return rows;\n case 'Remove':\n if (action.row) {\n const newRows = rows.filter((item) => item.getID() !== action.row?.getID());\n\n const removeFromCartEvent = new RemoveFromCartEvent(action.row, newRows);\n RoomstayEventManager.raise(removeFromCartEvent);\n\n return newRows;\n }\n\n return rows;\n case 'Clear':\n return [];\n case 'Update':\n if (action.row) {\n return rows.map((row) => {\n if (row.getID() === (action.row as BasketRow).getID()) {\n return action.row as BasketRow;\n } else {\n return row;\n }\n });\n }\n\n return rows;\n case 'Init': {\n if (action.rows?.length) {\n action.rows.forEach((row) => checkAndSetRowDates(row));\n }\n return action.rows || [];\n }\n }\n};\n"]}
|
|
@@ -15,6 +15,12 @@ const calculateReservationAddonTotal = (addons) => {
|
|
|
15
15
|
if (addon.price && addon.quantity) {
|
|
16
16
|
indPrice += addon.quantity * Number(addon.price);
|
|
17
17
|
}
|
|
18
|
+
if (addon.pricingType === Addon_1.AddonPricingType.PER_ADULT_OCCUPANCY_PER_NIGHT) {
|
|
19
|
+
indPrice *= addon.adultQuantity;
|
|
20
|
+
}
|
|
21
|
+
else if (addon.pricingType === Addon_1.AddonPricingType.PER_CHILD_OCCUPANCY_PER_NIGHT && addon.childQuantity) {
|
|
22
|
+
indPrice *= addon.childQuantity;
|
|
23
|
+
}
|
|
18
24
|
let indAdultPrice = 0;
|
|
19
25
|
if (addon.adultPrice && addon.adultQuantity) {
|
|
20
26
|
indAdultPrice += addon.adultQuantity * Number(addon.adultPrice);
|
|
@@ -24,7 +30,7 @@ const calculateReservationAddonTotal = (addons) => {
|
|
|
24
30
|
indChildPrice += addon.childQuantity * Number(addon.childPrice);
|
|
25
31
|
}
|
|
26
32
|
let addonTotal = indPrice + indAdultPrice + indChildPrice;
|
|
27
|
-
if (
|
|
33
|
+
if (Addon_1.ADDON_PER_NIGHT_TYPES.includes(addon.pricingType) && addon.nights) {
|
|
28
34
|
addonTotal *= addon.nights;
|
|
29
35
|
}
|
|
30
36
|
price += indPrice;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TotalCalculator.js","sourceRoot":"/","sources":["src/util/TotalCalculator.ts"],"names":[],"mappings":";;;AAGA,
|
|
1
|
+
{"version":3,"file":"TotalCalculator.js","sourceRoot":"/","sources":["src/util/TotalCalculator.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReservationAddonDTO } from '@/models/Api/ReservationsDTO';\nimport type ReservationsDTO from '@/models/Api/ReservationsDTO';\n\nimport { ADDON_PER_NIGHT_TYPES, AddonPricingType } from '@/models/Addon/Addon';\n\nexport const calculateReservationAddonTotal = (addons: ReservationAddonDTO | ReservationAddonDTO[]) => {\n let price = 0;\n let adultPrice = 0;\n let childPrice = 0;\n\n let total = 0;\n\n if (!Array.isArray(addons)) {\n addons = [addons];\n }\n\n addons.forEach((addon) => {\n let indPrice = 0;\n if (addon.price && addon.quantity) {\n indPrice += addon.quantity * Number(addon.price);\n }\n\n if (addon.pricingType === AddonPricingType.PER_ADULT_OCCUPANCY_PER_NIGHT) {\n indPrice *= addon.adultQuantity;\n } else if (addon.pricingType === AddonPricingType.PER_CHILD_OCCUPANCY_PER_NIGHT && addon.childQuantity) {\n indPrice *= addon.childQuantity;\n }\n\n let indAdultPrice = 0;\n if (addon.adultPrice && addon.adultQuantity) {\n indAdultPrice += addon.adultQuantity * Number(addon.adultPrice);\n }\n\n let indChildPrice = 0;\n if (addon.childPrice && addon.childQuantity) {\n indChildPrice += addon.childQuantity * Number(addon.childPrice);\n }\n\n let addonTotal = indPrice + indAdultPrice + indChildPrice;\n if (ADDON_PER_NIGHT_TYPES.includes(addon.pricingType as AddonPricingType) && addon.nights) {\n addonTotal *= addon.nights;\n }\n\n price += indPrice;\n adultPrice += indAdultPrice;\n childPrice += indChildPrice;\n\n total += addonTotal;\n });\n\n return {\n price,\n adultPrice,\n childPrice,\n total,\n };\n};\n\nexport const calculateTotalForReservation = (reservation: ReservationsDTO) => {\n let total = 0;\n\n reservation.reservations.forEach((individualRes) => {\n total += individualRes.total.afterTax;\n const resNights = Object.keys(individualRes.nights)?.length ?? 0;\n\n if (individualRes.addons?.length) {\n const addons = (individualRes.addons ?? []).map((addon) => {\n return { ...addon, nights: resNights };\n });\n\n total += calculateReservationAddonTotal(addons)?.total;\n }\n });\n\n return total;\n};\n"]}
|