@roomstay/frontend 2.3.0-1 → 2.3.0
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/213.bundle.js +1 -1
- package/dist/370.bundle.js +1 -1
- package/dist/446.bundle.js +1 -1
- package/dist/449.bundle.js +1 -1
- package/dist/572.bundle.js +1 -1
- package/dist/903.bundle.js +1 -1
- package/dist/975.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/components/generic/ScrollToTop.js +5 -1
- package/dist/src/components/generic/ScrollToTop.js.map +1 -1
- package/dist/src/components/generic/Select/Select.d.ts +3 -1
- package/dist/src/components/generic/Select/Select.js +6 -2
- package/dist/src/components/generic/Select/Select.js.map +1 -1
- package/dist/src/components/generic/Tabs/Tab.d.ts +1 -0
- package/dist/src/components/generic/Tabs/Tab.js.map +1 -1
- package/dist/src/components/generic/Tabs/TabLink.js +2 -2
- package/dist/src/components/generic/Tabs/TabLink.js.map +1 -1
- package/dist/src/components/generic/Tooltip/Tooltip.js +4 -1
- package/dist/src/components/generic/Tooltip/Tooltip.js.map +1 -1
- package/dist/src/components/steps/confirmation/StepConfirmationForm.js +3 -3
- package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelCard.js +2 -2
- package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
- package/dist/src/components/steps/room/InactivityWindow.js +9 -11
- package/dist/src/components/steps/room/InactivityWindow.js.map +1 -1
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js +1 -1
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -1
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js +2 -2
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js.map +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.d.ts +4 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js +6 -4
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js.map +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +20 -18
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.d.ts +2 -0
- package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.js +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.js.map +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.d.ts +2 -0
- package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.js +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetails.js +2 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.d.ts +1 -0
- package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js +2 -2
- package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +11 -8
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
- package/dist/src/components/summary/BEMobileSummaryModal.js +73 -60
- package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
- package/dist/src/components/summary/BESummaryRoomRow.js +32 -26
- package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +41 -19
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +16 -17
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js +3 -3
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js.map +1 -1
- package/dist/src/hooks/CurrentHotelHook.d.ts +2 -0
- package/dist/src/hooks/CurrentHotelHook.js +19 -3
- package/dist/src/hooks/CurrentHotelHook.js.map +1 -1
- package/dist/src/hooks/HistoryConsistentPush.d.ts +1 -1
- package/dist/src/hooks/HistoryConsistentPush.js +6 -2
- package/dist/src/hooks/HistoryConsistentPush.js.map +1 -1
- package/dist/src/pages/hotel/HotelInfo.js +4 -4
- package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
- package/dist/src/pages/steps/Step.d.ts +1 -1
- package/dist/src/pages/steps/Step.js.map +1 -1
- package/dist/src/routes/NaturallyProgressedStepRoute.js +2 -2
- package/dist/src/routes/NaturallyProgressedStepRoute.js.map +1 -1
- package/dist/src/stories/BookingWizard.stories.js +2 -2
- package/dist/src/stories/BookingWizard.stories.js.map +1 -1
- package/dist/src/translations/Translation.d.ts +4 -0
- package/dist/src/translations/Translation.js +4 -0
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +4 -0
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/src/util/Color.js +3 -0
- package/dist/src/util/Color.js.map +1 -1
- package/dist/src/util/GetStepRoom.d.ts +3 -0
- package/dist/src/util/GetStepRoom.js +11 -0
- package/dist/src/util/GetStepRoom.js.map +1 -0
- package/dist/test.bundle.js +1 -1
- package/dist/tests/offline/entry/{RSCompany.js → OfflineEngineDefaults.js} +6 -52
- package/dist/tests/offline/entry/OfflineEngineDefaults.js.map +1 -0
- package/dist/tests/offline/entry/OfflineEngineWrapper.d.ts +1 -0
- package/dist/tests/offline/entry/{ReactWrapper.js → OfflineEngineWrapper.js} +14 -21
- package/dist/tests/offline/entry/OfflineEngineWrapper.js.map +1 -0
- package/dist/tests/offline/entry/components/TestPicker.js +61 -2
- package/dist/tests/offline/entry/components/TestPicker.js.map +1 -1
- package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.js +2 -2
- package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.js.map +1 -1
- package/dist/tests/offline/entry/{allEngines.js → offline-entry.js} +3 -3
- package/dist/tests/offline/entry/offline-entry.js.map +1 -0
- package/dist/tests/offline/entry/pages/Inline/index.d.ts +4 -0
- package/dist/tests/offline/entry/pages/Inline/index.js +96 -0
- package/dist/tests/offline/entry/pages/Inline/index.js.map +1 -0
- package/package.json +1 -1
- package/dist/tests/offline/entry/RSCompany.js.map +0 -1
- package/dist/tests/offline/entry/ReactWrapper.d.ts +0 -1
- package/dist/tests/offline/entry/ReactWrapper.js.map +0 -1
- package/dist/tests/offline/entry/allEngines.js.map +0 -1
- /package/dist/tests/offline/entry/{RSCompany.d.ts → OfflineEngineDefaults.d.ts} +0 -0
- /package/dist/tests/offline/entry/{allEngines.d.ts → offline-entry.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InactivityWindow.js","sourceRoot":"/","sources":["src/components/steps/room/InactivityWindow.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"InactivityWindow.js","sourceRoot":"/","sources":["src/components/steps/room/InactivityWindow.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA+D;AAC/D,iDAA+C;AAC/C,kEAAmC;AACnC,iDAAgG;AAEhG,2CAAkD;AAElD,kFAA0D;AAC1D,uGAA+E;AAC/E,qEAA6C;AAC7C,0DAAuD;AACvD,iEAAyC;AACzC,mEAA2C;AAC3C,6EAAqD;AACrD,6EAAqD;AACrD,sFAAsF;AACtF,qEAA6C;AAC7C,yEAAyE;AAEzE,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC1B,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IAC1D,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,kBAAU,EAAC,+BAAoB,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAChD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,qBAAqB,GAAG,IAAA,gDAAwB,GAAE,CAAC;IAEzD,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAElD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,iBAAsB,CAAC;QAE3B,MAAM,YAAY,GAAG,GAAG,EAAE;YACtB,YAAY,CAAC,iBAAiB,CAAC,CAAC;YAEhC,IAAI,CAAC,UAAU,EAAE;gBACb,iBAAiB,GAAG,UAAU,CAAC,GAAG,EAAE;oBAChC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACtB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY;aAC3B;QACL,CAAC,CAAC;QAEF,YAAY,EAAE,CAAC;QAEf,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC1D,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAEzD,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACzD,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAC7D,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YAE5D,YAAY,CAAC,iBAAiB,CAAC,CAAC;QACpC,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,UAAU,EAAE;YACZ,mBAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;SAC3C;IACL,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,MAAM,OAAO,GAAG,GAAG,EAAE;QACjB,WAAW,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;;QACjB,WAAW,CAAC,KAAK,CAAC,CAAC;QAEnB,QAAQ,WAAW,EAAE;YACjB,KAAK,mBAAS,CAAC;YACf,KAAK,0BAAgB;gBACjB,qBAAqB,CAAC,IAAA,qBAAW,GAAE,CAAC,UAAU,EAAE,CAAC,CAAC;gBAClD,MAAM;SACb;QAED,IAAI,aAAa,CAAC,iBAAiB,EAAE;YACjC,oBAAG,CAAC,YAAY,CAAC,sBAAsB,CAAC,aAAa,CAAC,iBAAiB,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAiB,CAAC,CAAC;YACnG,MAAA,aAAa,CAAC,iBAAiB,0CAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAChD,aAAa,CAAC,eAAe,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;SAClE;IACL,CAAC,CAAC;IAEF,OAAO,CACH,8BAAC,qBAAW,IAAC,IAAI,EAAE,6BAAe,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW;QAC1F,uCAAK,SAAS,EAAC,gCAAgC;YAC3C,uCAAK,SAAS,EAAC,sBAAsB;gBACjC,8BAAC,kBAAQ,IAAC,IAAI,UAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAY,CAClE;YACN,uCAAK,SAAS,EAAC,sBAAsB;gBACjC,8BAAC,cAAI,QAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAQ,CACtD;YACN,uCAAK,SAAS,EAAC,2BAA2B;gBACtC,uCAAK,SAAS,EAAE,UAAU,UAAU,GAAG,oBAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,iBAAiB;oBAC1F,8BAAC,kBAAQ,IAAC,OAAO,EAAE,OAAO,EAAE,IAAI,UAC3B,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC3B,CACT;gBACN,uCAAK,SAAS,EAAC,SAAS;oBACpB,8BAAC,kBAAQ,IAAC,OAAO,EAAE,OAAO,EAAE,IAAI,QAAC,MAAM,QAAC,OAAO,UAC1C,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CACzB,CACT,CACJ,CACJ,CACI,CACjB,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,gBAAgB,CAAC","sourcesContent":["import React, { useContext, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport API from '@/api/BookingAPI';\nimport { BasketContext, BookingEngineContext, FullPageEngineContext } from '@frontend/contexts';\n\nimport { useCurrentHotel } from '@frontend/hooks';\n\nimport StepAddon from '@/pages/steps/StepAddon/StepAddon';\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport getStepRoom from '@/util/GetStepRoom';\nimport { Translation } from 'translations/Translation';\nimport DataLayer from '@/util/DataLayer';\nimport ScreenSize from '@/util/ScreenSize';\nimport BEButton from '@/components/generic/BEButton';\nimport Headline from '@/components/generic/Headline';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport Text from '@/components/generic/Text';\nimport { useHistoryConsistentPush } from '@/hooks/HistoryConsistentPush';\n\nconst InactivityWindow = () => {\n const { t } = useTranslation();\n\n const { currentStep } = useContext(FullPageEngineContext);\n const { screenSize } = useContext(BookingEngineContext);\n const basketContext = useContext(BasketContext);\n const { hotel } = useCurrentHotel();\n const historyConsistentPush = useHistoryConsistentPush();\n\n const [isInactive, setInactive] = useState(false);\n\n useEffect(() => {\n let inactivityTimeout: any;\n\n const resetTimeout = () => {\n clearTimeout(inactivityTimeout);\n\n if (!isInactive) {\n inactivityTimeout = setTimeout(() => {\n setInactive(true);\n }, 300000); // 5 minutes\n }\n };\n\n resetTimeout();\n\n document.body.addEventListener('click', resetTimeout);\n document.body.addEventListener('mouseover', resetTimeout);\n document.body.addEventListener('keypress', resetTimeout);\n\n return () => {\n document.body.removeEventListener('click', resetTimeout);\n document.body.removeEventListener('mouseover', resetTimeout);\n document.body.removeEventListener('keypress', resetTimeout);\n\n clearTimeout(inactivityTimeout);\n };\n }, []);\n\n useEffect(() => {\n if (isInactive) {\n DataLayer.instance.sendAwayWindowOpen();\n }\n }, [isInactive]);\n\n const onClose = () => {\n setInactive(false);\n };\n\n const onReset = () => {\n setInactive(false);\n\n switch (currentStep) {\n case StepAddon:\n case StepConfirmation:\n historyConsistentPush(getStepRoom().getStepUrl());\n break;\n }\n\n if (basketContext.selectedBasketRow) {\n API.Availability.invalidateAvailability(basketContext.selectedBasketRow, hotel?.hotelID as string);\n basketContext.selectedBasketRow?.setStale(true);\n basketContext.updateBasketRow(basketContext.selectedBasketRow);\n }\n };\n\n return (\n <SimpleModal size={SimpleModalSize.ExtraSmall} open={isInactive} onClose={onClose} alignCenter>\n <div className=\"u-pad--heavy inactivity-window\">\n <div className=\"u-marg-bottom--heavy\">\n <Headline bold>{t(Translation.Step.Room.YouHaveBeenAway)}</Headline>\n </div>\n <div className=\"u-marg-bottom--heavy\">\n <Text>{t(Translation.Step.Room.UpdateYourSearch)}</Text>\n </div>\n <div className=\"u-flex inactivity-buttons\">\n <div className={`u-marg-${screenSize > ScreenSize.Medium ? 'right' : 'bottom'}--light u-w-100`}>\n <BEButton onClick={onClose} wide>\n {t(Translation.Step.Room.NoThanks)}\n </BEButton>\n </div>\n <div className=\"u-w-100\">\n <BEButton onClick={onReset} wide filled primary>\n {t(Translation.Step.Room.Update)}\n </BEButton>\n </div>\n </div>\n </div>\n </SimpleModal>\n );\n};\n\nexport default InactivityWindow;\n"]}
|
|
@@ -75,7 +75,7 @@ const TabGroupedRoomList = (props) => {
|
|
|
75
75
|
return (react_1.default.createElement("div", { className: TabGroupedRoomList_module_scss_1.default.groupedRoomList },
|
|
76
76
|
react_1.default.createElement("div", { className: TabGroupedRoomList_module_scss_1.default.groupedRoomListHeader },
|
|
77
77
|
react_1.default.createElement(Headline_1.default, { bold: true }, group.groupName)),
|
|
78
|
-
!!(filterKeys === null || filterKeys === void 0 ? void 0 : filterKeys.length) && (react_1.default.createElement("div", { className: TabGroupedRoomList_module_scss_1.default.filterContainer }, filterKeys.map((filterKey) => {
|
|
78
|
+
!!(filterKeys === null || filterKeys === void 0 ? void 0 : filterKeys.length) && rooms.length > 1 && (react_1.default.createElement("div", { className: TabGroupedRoomList_module_scss_1.default.filterContainer }, filterKeys.map((filterKey) => {
|
|
79
79
|
var _a, _b, _c;
|
|
80
80
|
const filter = (_a = group.filters) === null || _a === void 0 ? void 0 : _a[filterKey];
|
|
81
81
|
if (filter.type === 'select') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabGroupedRoomList.js","sourceRoot":"/","sources":["src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiD;AAEjD,6EAAqD;AAGrD,sGAAsD;AACtD,6EAAqD;AACrD,+DAA4D;AAQrD,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,EAAE;IACjE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAC/B,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAwB,EAAE,CAAC,CAAC;IAEhF,MAAM,UAAU,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpB,MAAM,QAAQ,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC1B,OAAO,KAAK;aACP,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;;YACb,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;gBAC9C,IAAI,cAAc,GAAU,EAAE,CAAC;gBAE/B,MAAM,SAAS,GAAG,MAAA,KAAK,CAAC,OAAO,0CAAG,MAAM,CAAC,CAAC;gBAE1C,IAAI,SAAS,CAAC,eAAe,EAAE;oBAC3B,IAAI,QAAQ,GAAG,KAAK,CAAC;oBACrB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;wBACpD,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;wBAC1C,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;wBAExC,IAAI,cAAc,CAAC,MAAM,CAAC,KAAK,YAAY,CAAC,KAAK,EAAE;4BAC/C,QAAQ,GAAG,IAAI,CAAC;4BAChB,MAAM;yBACT;qBACJ;oBAED,IAAI,CAAC,QAAQ,EAAE;wBACX,cAAc,GAAG,EAAE,CAAC;qBACvB;iBACJ;qBAAM;oBACH,cAAc,GAAG,MAAA,cAAc,CAAC,MAAM,CAAC,mCAAI,EAAE,CAAC;iBACjD;gBAED,IAAI,CAAA,MAAA,IAAI,CAAC,eAAe,0CAAG,MAAM,CAAC,KAAI,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE;oBACpH,OAAO,KAAK,CAAC;iBAChB;aACJ;YAED,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACjB,OAAO,8BAAC,qBAAW,IAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,GAAI,CAAC;QACxG,CAAC,CAAC,CAAC;IACX,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;IAE5B,OAAO,CACH,uCAAK,SAAS,EAAE,wCAAM,CAAC,eAAe;QAClC,uCAAK,SAAS,EAAE,wCAAM,CAAC,qBAAqB;YACxC,8BAAC,kBAAQ,IAAC,IAAI,UAAE,KAAK,CAAC,SAAS,CAAY,CACzC;QACL,CAAC,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAA,IAAI,
|
|
1
|
+
{"version":3,"file":"TabGroupedRoomList.js","sourceRoot":"/","sources":["src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useMemo, useState } from 'react';\nimport { Room } from '@/models/Room/Room';\nimport RoomDetails from '../roomDetails/RoomDetails';\nimport { HotelRoomGroupsDTO } from '@/models/Api/HotelDTO';\n\nimport styles from './TabGroupedRoomList.module.scss';\nimport Headline from '@/components/generic/Headline';\nimport { Select } from '@/components/generic/Select/Select';\nimport DataLayer from '@/util/DataLayer';\n\ntype TabGroupedRoomListProps = {\n rooms: Room[];\n group: HotelRoomGroupsDTO[number];\n};\n\nexport const TabGroupedRoomList = (props: TabGroupedRoomListProps) => {\n const { rooms, group } = props;\n const [appliedFilters, setAppliedFilters] = useState<{ [id: string]: any }>({});\n\n const filterKeys = useMemo(() => {\n return Object.keys(group.filters || {});\n }, [group.filters]);\n\n const roomList = useMemo(() => {\n return rooms\n .filter((room) => {\n for (const filter of Object.keys(appliedFilters)) {\n let possibleValues: any[] = [];\n\n const auxFilter = group.filters?.[filter];\n\n if (auxFilter.includeAllAbove) {\n let foundKey = false;\n for (let i = auxFilter.options.length - 1; i >= 0; i--) {\n const currentValue = auxFilter.options[i];\n possibleValues.push(currentValue.value);\n\n if (appliedFilters[filter] === currentValue.value) {\n foundKey = true;\n break;\n }\n }\n\n if (!foundKey) {\n possibleValues = [];\n }\n } else {\n possibleValues = appliedFilters[filter] ?? [];\n }\n\n if (room.auxiliaryValues?.[filter] && appliedFilters[filter] && !possibleValues.includes(room.auxiliaryValues[filter])) {\n return false;\n }\n }\n\n return room;\n })\n .map((room, index) => {\n return <RoomDetails key={room.code} room={room} disableMarginBottom={index === rooms.length - 1} />;\n });\n }, [rooms, appliedFilters]);\n\n return (\n <div className={styles.groupedRoomList}>\n <div className={styles.groupedRoomListHeader}>\n <Headline bold>{group.groupName}</Headline>\n </div>\n {!!filterKeys?.length && rooms.length > 1 && (\n <div className={styles.filterContainer}>\n {filterKeys.map((filterKey) => {\n const filter = group.filters?.[filterKey];\n\n if (filter.type === 'select') {\n const options = [{ label: 'All', value: null }, ...filter.options];\n const currentValue = appliedFilters?.[filterKey] ?? options[0]?.value;\n\n const localOnFilterChange = (value: string) => {\n setAppliedFilters((prev) => ({ ...prev, [filterKey]: value }));\n };\n\n return (\n <div key={filterKey} className={styles.filterItem}>\n <div className={styles['filterItem-label']}>{filter.name}:</div>\n <Select keyName=\"value\" labelName=\"label\" options={options} value={currentValue} onChange={localOnFilterChange}></Select>\n </div>\n );\n }\n })}\n </div>\n )}\n {roomList}\n </div>\n );\n};\n"]}
|
|
@@ -92,10 +92,10 @@ const TabGroupedRooms = () => {
|
|
|
92
92
|
onlyGroups.splice(0, 1);
|
|
93
93
|
return (react_1.default.createElement("div", { style: { maxWidth: '100%', overflow: 'hidden' } },
|
|
94
94
|
react_1.default.createElement(Tabs_1.default, { fullBleedOnLineBreak: false, activeKey: defaultTab },
|
|
95
|
-
react_1.default.createElement(Tab_1.Tab, { title: "All Accomodation", navPath: StepGroupedRoom_1.default.getStepUrl() + 'list-all', key: "list-all" }, groupedRooms === null || groupedRooms === void 0 ? void 0 : groupedRooms.filter((item) => item.rooms.length).map((group) => {
|
|
95
|
+
react_1.default.createElement(Tab_1.Tab, { title: "All Accomodation", navPath: StepGroupedRoom_1.default.getStepUrl() + 'list-all', key: "list-all", preventScrollTop: true }, groupedRooms === null || groupedRooms === void 0 ? void 0 : groupedRooms.filter((item) => item.rooms.length).map((group) => {
|
|
96
96
|
return react_1.default.createElement(TabGroupedRoomList_1.TabGroupedRoomList, { group: group, rooms: group.rooms, key: group.id });
|
|
97
97
|
})),
|
|
98
|
-
onlyGroups.map((group) => (react_1.default.createElement(Tab_1.Tab, { title: group.groupName, navPath: StepGroupedRoom_1.default.getStepUrl() + group.groupName, key: group.id },
|
|
98
|
+
onlyGroups.map((group) => (react_1.default.createElement(Tab_1.Tab, { title: group.groupName, navPath: StepGroupedRoom_1.default.getStepUrl() + group.groupName, key: group.id, preventScrollTop: true },
|
|
99
99
|
react_1.default.createElement(TabGroupedRoomList_1.TabGroupedRoomList, { group: group, rooms: group.rooms })))))));
|
|
100
100
|
}
|
|
101
101
|
// No rooms found, so let's display the crossell block, or no rooms found
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabGroupedRooms.js","sourceRoot":"/","sources":["src/components/steps/room/TabGroupedRooms/TabGroupedRooms.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAoD;AACpD,0EAAkD;AAClD,6FAA6F;AAC7F,oGAA4E;AAC5E,2CAAkD;AAClD,+CAAuC;AACvC,mGAAgG;AAGhG,0FAAkE;AAClE,yCAA6C;AAC7C,iEAAyC;AACzC,kGAA0E;AAC1E,4GAAoF;AACpF,iFAA8E;AAEvE,MAAM,eAAe,GAAG,GAAG,EAAE;;IAChC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAA,oEAAkC,GAAE,CAAC;IACzF,MAAM,MAAM,GAAG,IAAA,oBAAY,GAAE,CAAC;IAE9B,MAAM,YAAY,GAAuD,IAAA,eAAO,EAAC,GAAG,EAAE;QAClF,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,CAAA,EAAE;YACpB,OAAO,EAAE,CAAC;SACb;QAED,MAAM,YAAY,GAAqE;YACnF,UAAU,EAAE;gBACR,EAAE,EAAE,UAAU;gBACd,SAAS,EAAE,mBAAmB;gBAC9B,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,EAAE;aACZ;SACJ,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;YAEjE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;gBACxB,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;gBAE1E,IAAI,UAAU,EAAE;oBACZ,YAAY,CAAC,OAAO,CAAC,mCACd,UAAU,KACb,KAAK,EAAE,EAAE,GACZ,CAAC;iBACL;qBAAM;oBACH,+DAA+D;oBAC/D,OAAO,GAAG,UAAU,CAAC;iBACxB;aACJ;YAED,4DAA4D;YAC5D,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC1C;QAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAEvD,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7E,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACnC;QAED,mBAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QAEzC,OAAO,kBAAkB,CAAC;IAC9B,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,CAAC,CAAC,CAAC;IAE/B,MAAM,UAAU,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;;QAC5B,OAAO,MAAA,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,mCAAI,SAAS,CAAC;IACjD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,SAAS,EAAE;QACX,OAAO,8BAAC,qBAAW,OAAG,CAAC;KAC1B;IAED,IAAI,YAAY,CAAC,MAAM,EAAE;QACrB,MAAM,UAAU,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;QACrC,kFAAkF;QAClF,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAExB,OAAO,CACH,uCAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;YAChD,8BAAC,cAAI,IAAC,oBAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU;gBACpD,8BAAC,SAAG,IAAC,KAAK,EAAC,kBAAkB,EAAC,OAAO,EAAE,yBAAe,CAAC,UAAU,EAAE,GAAG,UAAU,EAAE,GAAG,EAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"TabGroupedRooms.js","sourceRoot":"/","sources":["src/components/steps/room/TabGroupedRooms/TabGroupedRooms.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAoD;AACpD,0EAAkD;AAClD,6FAA6F;AAC7F,oGAA4E;AAC5E,2CAAkD;AAClD,+CAAuC;AACvC,mGAAgG;AAGhG,0FAAkE;AAClE,yCAA6C;AAC7C,iEAAyC;AACzC,kGAA0E;AAC1E,4GAAoF;AACpF,iFAA8E;AAEvE,MAAM,eAAe,GAAG,GAAG,EAAE;;IAChC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAA,oEAAkC,GAAE,CAAC;IACzF,MAAM,MAAM,GAAG,IAAA,oBAAY,GAAE,CAAC;IAE9B,MAAM,YAAY,GAAuD,IAAA,eAAO,EAAC,GAAG,EAAE;QAClF,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,CAAA,EAAE;YACpB,OAAO,EAAE,CAAC;SACb;QAED,MAAM,YAAY,GAAqE;YACnF,UAAU,EAAE;gBACR,EAAE,EAAE,UAAU;gBACd,SAAS,EAAE,mBAAmB;gBAC9B,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,EAAE;aACZ;SACJ,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;YAEjE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;gBACxB,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;gBAE1E,IAAI,UAAU,EAAE;oBACZ,YAAY,CAAC,OAAO,CAAC,mCACd,UAAU,KACb,KAAK,EAAE,EAAE,GACZ,CAAC;iBACL;qBAAM;oBACH,+DAA+D;oBAC/D,OAAO,GAAG,UAAU,CAAC;iBACxB;aACJ;YAED,4DAA4D;YAC5D,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC1C;QAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAEvD,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7E,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACnC;QAED,mBAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QAEzC,OAAO,kBAAkB,CAAC;IAC9B,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,CAAC,CAAC,CAAC;IAE/B,MAAM,UAAU,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;;QAC5B,OAAO,MAAA,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,mCAAI,SAAS,CAAC;IACjD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,SAAS,EAAE;QACX,OAAO,8BAAC,qBAAW,OAAG,CAAC;KAC1B;IAED,IAAI,YAAY,CAAC,MAAM,EAAE;QACrB,MAAM,UAAU,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;QACrC,kFAAkF;QAClF,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAExB,OAAO,CACH,uCAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;YAChD,8BAAC,cAAI,IAAC,oBAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU;gBACpD,8BAAC,SAAG,IAAC,KAAK,EAAC,kBAAkB,EAAC,OAAO,EAAE,yBAAe,CAAC,UAAU,EAAE,GAAG,UAAU,EAAE,GAAG,EAAC,UAAU,EAAC,gBAAgB,UAE5G,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CACP,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EACnC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oBACX,OAAO,8BAAC,uCAAkB,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,GAAI,CAAC;gBACnF,CAAC,CAAC,CACJ;gBAEL,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACvB,8BAAC,SAAG,IAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,yBAAe,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,gBAAgB;oBACjH,8BAAC,uCAAkB,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAI,CACtD,CACT,CAAC,CACC,CACL,CACT,CAAC;KACL;IAED,yEAAyE;IACzE,OAAO,CACH;QACK,WAAW,CAAC,CAAC,CAAC,8BAAC,qCAAiB,OAAG,CAAC,CAAC,CAAC,8BAAC,2BAAiB,OAAG,EAC3D,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,iBAAiB;WAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CACxC,8BAAC,gCAAsB,IAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAI,CAC7D,CAAC,CACH,CACN,CAAC;AACN,CAAC,CAAC;AAhGW,QAAA,eAAe,mBAgG1B","sourcesContent":["import { Tab } from '@/components/generic/Tabs/Tab';\nimport Tabs from '@/components/generic/Tabs/Tabs';\nimport { useRoomRateAvailabilityListFromApi } from '@/hooks/RoomRateAvailabilityListFromApi';\nimport StepGroupedRoom from '@/pages/steps/StepGroupedRoom/StepGroupedRoom';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { useMemo } from 'react';\nimport { TabGroupedRoomList } from '@/components/steps/room/TabGroupedRooms/TabGroupedRoomList';\nimport { HotelRoomGroupsDTO } from '@/models/Api/HotelDTO';\nimport { Room } from '@/models/Room/Room';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport { useHashQuery } from '@/hooks/Query';\nimport DataLayer from '@/util/DataLayer';\nimport NoRoomsFoundBlock from '@/components/steps/room/NoRoomsFoundBlock';\nimport RoomListCrossSellBlock from '@/components/steps/room/RoomListCrossSellBlock';\nimport { StepRoomErrorForm } from '@/components/steps/room/StepRoomErrorForm';\n\nexport const TabGroupedRooms = () => {\n const { hotel } = useCurrentHotel();\n\n const { rooms, isLoading, openRoom, apiHasError } = useRoomRateAvailabilityListFromApi();\n const params = useHashQuery();\n\n const groupedRooms: (HotelRoomGroupsDTO[number] & { rooms: Room[] })[] = useMemo(() => {\n if (!hotel?.roomGroups) {\n return [];\n }\n\n const sortingGroup: { [id: string]: HotelRoomGroupsDTO[number] & { rooms: Room[] } } = {\n 'list-all': {\n id: 'list-all',\n groupName: 'All Accomodations',\n filters: {},\n rooms: [],\n },\n };\n\n for (const room of rooms) {\n let groupId = !!room.roomGroupId ? room.roomGroupId : 'list-all';\n\n if (!sortingGroup[groupId]) {\n const foundGroup = hotel.roomGroups.find((group) => group.id === groupId);\n\n if (foundGroup) {\n sortingGroup[groupId] = {\n ...foundGroup,\n rooms: [],\n };\n } else {\n // Can't find the specific room, defaulting to \"unsorted\" rooms\n groupId = 'list-all';\n }\n }\n\n // Actual bit that puts the right room in the right location\n sortingGroup[groupId].rooms.push(room);\n }\n\n const valuedSortedGroups = Object.values(sortingGroup);\n\n if (valuedSortedGroups.length === 1 && valuedSortedGroups[0].rooms.length === 0) {\n valuedSortedGroups.splice(0, 1);\n }\n\n DataLayer.instance.sendRoomImpressions();\n\n return valuedSortedGroups;\n }, [rooms, hotel?.roomGroups]);\n\n const defaultTab = useMemo(() => {\n return params.get('defaultTab') ?? undefined;\n }, []);\n\n if (isLoading) {\n return <LargeLoader />;\n }\n\n if (groupedRooms.length) {\n const onlyGroups = [...groupedRooms];\n // Update onlyGroups to be the same as groupedRooms, but without the first element\n onlyGroups.splice(0, 1);\n\n return (\n <div style={{ maxWidth: '100%', overflow: 'hidden' }}>\n <Tabs fullBleedOnLineBreak={false} activeKey={defaultTab}>\n <Tab title=\"All Accomodation\" navPath={StepGroupedRoom.getStepUrl() + 'list-all'} key=\"list-all\" preventScrollTop>\n {/* We're not starting at 1 here as we want to display these rooms, even if they're not ordered */}\n {groupedRooms\n ?.filter((item) => item.rooms.length)\n .map((group) => {\n return <TabGroupedRoomList group={group} rooms={group.rooms} key={group.id} />;\n })}\n </Tab>\n {/* Reason we've got to splice here is 0 index will always be unsorted rooms */}\n {onlyGroups.map((group) => (\n <Tab title={group.groupName} navPath={StepGroupedRoom.getStepUrl() + group.groupName} key={group.id} preventScrollTop>\n <TabGroupedRoomList group={group} rooms={group.rooms} />\n </Tab>\n ))}\n </Tabs>\n </div>\n );\n }\n\n // No rooms found, so let's display the crossell block, or no rooms found\n return (\n <>\n {apiHasError ? <StepRoomErrorForm /> : <NoRoomsFoundBlock />}\n {hotel?.crossSellHotelIds?.map((hotelId) => (\n <RoomListCrossSellBlock key={hotelId} hotelId={hotelId} />\n ))}\n </>\n );\n};\n"]}
|
package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import BasketRow from '../../../../models/BasketRow';
|
|
2
|
+
import { Color } from '../../../../util/Color';
|
|
2
3
|
type UserSearchSummaryPromocodeInputProps = {
|
|
3
4
|
row: BasketRow;
|
|
4
5
|
onChange: (code: string) => void;
|
|
5
6
|
disabled?: boolean;
|
|
7
|
+
promocodeTextColor?: Color;
|
|
8
|
+
useUpdatedDesign?: boolean;
|
|
6
9
|
};
|
|
7
|
-
export declare const UserSearchSummaryPromocdeInput: ({ row, disabled, onChange }: UserSearchSummaryPromocodeInputProps) => JSX.Element;
|
|
10
|
+
export declare const UserSearchSummaryPromocdeInput: ({ row, disabled, onChange, promocodeTextColor, useUpdatedDesign, }: UserSearchSummaryPromocodeInputProps) => JSX.Element;
|
|
8
11
|
export {};
|
|
@@ -38,7 +38,8 @@ const Color_1 = require("../../../../util/Color");
|
|
|
38
38
|
const DataLayer_1 = __importStar(require("../../../../util/DataLayer"));
|
|
39
39
|
const react_1 = __importStar(require("react"));
|
|
40
40
|
const react_i18next_1 = require("react-i18next");
|
|
41
|
-
const
|
|
41
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
42
|
+
const UserSearchSummaryPromocdeInput = ({ row, disabled = false, onChange, promocodeTextColor = Color_1.Color.Navy, useUpdatedDesign = false, }) => {
|
|
42
43
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
43
44
|
const [isPromoModalOpen, setIsPromoModalOpen] = (0, react_1.useState)(false);
|
|
44
45
|
let promoCodeTooltip = '';
|
|
@@ -73,11 +74,12 @@ const UserSearchSummaryPromocdeInput = ({ row, disabled = false, onChange }) =>
|
|
|
73
74
|
setIsPromoModalOpen(false);
|
|
74
75
|
}
|
|
75
76
|
};
|
|
77
|
+
promocodeTextColor = row.getPromoCode() ? row.getPromoCodeColour() : promocodeTextColor;
|
|
76
78
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
77
79
|
react_1.default.createElement(Tooltip_1.default, { title: promoCodeTooltip, wrapperClasses: "u-w-100@xl- d-flex", disabled: disabled },
|
|
78
|
-
react_1.default.createElement("div", { className:
|
|
79
|
-
react_1.default.createElement("div", { className: "u-flex align-items-center justify-content-center u-w-100@xl-" },
|
|
80
|
-
react_1.default.createElement(Text_1.default, { className: "u-pad-right--light", type: Text_1.TextType.Body, color:
|
|
80
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)('room-builder-progress--value u-cursor-pointer', { '--updated': useUpdatedDesign }), ref: thisElement, onClick: openPromoModalOnClick },
|
|
81
|
+
react_1.default.createElement("div", { className: "u-flex align-items-center justify-content-center u-w-100@xl- room-builder-progress--promo" },
|
|
82
|
+
react_1.default.createElement(Text_1.default, { className: "u-pad-right--light", type: Text_1.TextType.Body, color: promocodeTextColor }, row.getPromoCode() ? row.getPromoCode() : t(Translation_1.Translation.Step.Date.PromoCode)),
|
|
81
83
|
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.Dropdown, color: Color_1.Color.DarkGrey })))),
|
|
82
84
|
react_1.default.createElement(Overlay_1.Overlay, { open: isPromoModalOpen, followElement: thisElement.current, onClose: setPromoCodeOnClose },
|
|
83
85
|
react_1.default.createElement("div", { className: "u-pad--heavy" },
|
package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserSearchSummaryPromocodeInput.js","sourceRoot":"/","sources":["src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6EAAqD;AACrD,uEAAgE;AAChE,kEAA+D;AAC/D,yFAAiE;AACjE,kEAA2D;AAC3D,mFAA2D;AAE3D,4DAAyD;AACzD,wCAAqC;AACrC,8DAA+E;AAC/E,+CAAgD;AAChD,iDAA+C;
|
|
1
|
+
{"version":3,"file":"UserSearchSummaryPromocodeInput.js","sourceRoot":"/","sources":["src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import BEButton from '@/components/generic/BEButton';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { Overlay } from '@/components/generic/Overlay/Overlay';\nimport PromoCodeInput from '@/components/generic/PromoCodeInput';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport BasketRow from '@/models/BasketRow';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport React, { useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { default as cx } from 'classnames';\n\ntype UserSearchSummaryPromocodeInputProps = {\n row: BasketRow;\n onChange: (code: string) => void;\n\n disabled?: boolean;\n promocodeTextColor?: Color;\n useUpdatedDesign?: boolean;\n};\n\nexport const UserSearchSummaryPromocdeInput = ({\n row,\n disabled = false,\n onChange,\n promocodeTextColor = Color.Navy,\n useUpdatedDesign = false,\n}: UserSearchSummaryPromocodeInputProps) => {\n const { t } = useTranslation();\n const [isPromoModalOpen, setIsPromoModalOpen] = useState(false);\n\n let promoCodeTooltip = '';\n\n if (row.getPromoCodeStatus() === 'new') {\n promoCodeTooltip = row.getPromoCode() ? t(Translation.Step.Date.PromoCodeTooltip.Checking) : t(Translation.Step.Date.PromoCodeTooltip.NoValue);\n } else {\n if (row.getPromoCodeStatus() === 'valid') {\n promoCodeTooltip = t(Translation.Step.Date.PromoCodeTooltip.Valid);\n } else {\n promoCodeTooltip = t(Translation.Step.Date.PromoCodeTooltip.Invalid);\n }\n }\n\n const thisElement = useRef<HTMLDivElement | null>(null);\n\n const openPromoModalOnClick = () => {\n if (disabled) {\n return;\n }\n\n setIsPromoModalOpen(true);\n };\n const setPromoCodeOnClose = () => {\n setIsPromoModalOpen(false);\n };\n\n const cancelPromoPopupOnClick = () => {\n DataLayer.instance.sendInteraction('Cancel Promo Popup', InteractionType.BUTTON, InteractionStep.ROOMS);\n setIsPromoModalOpen(false);\n };\n\n const _onChangePromoCode = (code: string) => {\n onChange(code);\n if (code) {\n setIsPromoModalOpen(false);\n }\n };\n\n promocodeTextColor = row.getPromoCode() ? row.getPromoCodeColour() : promocodeTextColor;\n\n return (\n <>\n <Tooltip title={promoCodeTooltip} wrapperClasses=\"u-w-100@xl- d-flex\" disabled={disabled}>\n <div className={cx('room-builder-progress--value u-cursor-pointer', { '--updated': useUpdatedDesign })} ref={thisElement} onClick={openPromoModalOnClick}>\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl- room-builder-progress--promo\">\n <Text className=\"u-pad-right--light\" type={TextType.Body} color={promocodeTextColor}>\n {row.getPromoCode() ? row.getPromoCode() : t(Translation.Step.Date.PromoCode)}\n </Text>\n <Icon icon={IconType.Dropdown} color={Color.DarkGrey} />\n </div>\n </div>\n </Tooltip>\n <Overlay open={isPromoModalOpen} followElement={thisElement.current} onClose={setPromoCodeOnClose}>\n <div className=\"u-pad--heavy\">\n <div>\n <PromoCodeInput\n value={row?.getPromoCode()}\n onChange={_onChangePromoCode}\n valid={row?.getPromoCodeStatus() !== 'new' ? row?.getPromoCodeStatus() === 'valid' : undefined}\n />\n </div>\n\n <div className=\"u-flex justify-content-end align-items-center u-marg-top\">\n <BEButton isText size=\"small\" onClick={cancelPromoPopupOnClick}>\n {t(Translation.Misc.Cancel)}\n </BEButton>\n </div>\n </div>\n </Overlay>\n </>\n );\n};\n"]}
|
|
@@ -50,7 +50,7 @@ const hooks_1 = require("../../../../hooks/index.js");
|
|
|
50
50
|
const UserSearchSummaryRow = ({ row, index }) => {
|
|
51
51
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
52
52
|
const removeButtonRef = (0, react_1.useRef)();
|
|
53
|
-
const {
|
|
53
|
+
const { isAccentColorDark } = (0, hooks_1.useCurrentHotel)();
|
|
54
54
|
const { selectedBasketRow, currentBasketRows, updateBasketRow, removeBasketRow, selectBasketRow } = (0, react_1.useContext)(contexts_1.BasketContext);
|
|
55
55
|
const engineContext = (0, react_1.useContext)(contexts_1.BookingEngineContext);
|
|
56
56
|
const isSelectedRow = (0, react_1.useMemo)(() => {
|
|
@@ -61,9 +61,6 @@ const UserSearchSummaryRow = ({ row, index }) => {
|
|
|
61
61
|
DataLayer_1.default.instance.sendInteraction('Remove Room', DataLayer_1.InteractionType.BUTTON, DataLayer_1.InteractionStep.ROOMS);
|
|
62
62
|
removeBasketRow(row);
|
|
63
63
|
};
|
|
64
|
-
const removeButton = (react_1.default.createElement(Tooltip_1.default, { title: canRemove ? 'Remove this room' : 'Cannot remove this room as at least one must be selected.', followElement: removeButtonRef === null || removeButtonRef === void 0 ? void 0 : removeButtonRef.current, wrapperClasses: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__remove-tooltip'] },
|
|
65
|
-
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__remove'], onClick: removeRoomOnClick, ref: removeButtonRef },
|
|
66
|
-
react_1.default.createElement(BEButton_1.default, { isText: true, icon: Icon_1.IconType.Close, iconPosition: "right", stopIconAnimation: true, disabled: !canRemove, onClick: removeRoomOnClick }))));
|
|
67
64
|
const updatePeopleValues = ({ adults, children, updatedPromoCode }) => {
|
|
68
65
|
if (adults && adults !== row.getAdults()) {
|
|
69
66
|
DataLayer_1.default.instance.sendInteraction('Guests', DataLayer_1.InteractionType.NUMBER_INPUT, DataLayer_1.InteractionStep.ROOMS);
|
|
@@ -114,6 +111,12 @@ const UserSearchSummaryRow = ({ row, index }) => {
|
|
|
114
111
|
};
|
|
115
112
|
const isValid = row.isValid();
|
|
116
113
|
const isLargerThanLarge = engineContext.screenSize > ScreenSize_1.default.ExtraLarge;
|
|
114
|
+
const sizeMediumDown = engineContext.screenSize <= ScreenSize_1.default.Medium;
|
|
115
|
+
const shouldTextBeWhite = isAccentColorDark && isSelectedRow && isValid;
|
|
116
|
+
const textColor = shouldTextBeWhite ? Color_1.Color.White : undefined;
|
|
117
|
+
const removeButton = (react_1.default.createElement(Tooltip_1.default, { title: canRemove ? 'Remove this room' : 'Cannot remove this room as at least one must be selected.', followElement: removeButtonRef === null || removeButtonRef === void 0 ? void 0 : removeButtonRef.current, wrapperClasses: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__remove-tooltip'] },
|
|
118
|
+
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__remove'], onClick: removeRoomOnClick, ref: removeButtonRef },
|
|
119
|
+
react_1.default.createElement(BEButton_1.default, { textColor: textColor, isText: true, icon: Icon_1.IconType.Close, iconPosition: "right", stopIconAnimation: true, disabled: !canRemove, onClick: removeRoomOnClick }))));
|
|
117
120
|
if (isValid && !isSelectedRow) {
|
|
118
121
|
return (react_1.default.createElement("div", { className: `${UserSearchSummaryRow_module_scss_1.default['user-completed-summary-row']} u-flex w-100` },
|
|
119
122
|
react_1.default.createElement("div", { className: "u-flex justify-content-start" },
|
|
@@ -137,36 +140,35 @@ const UserSearchSummaryRow = ({ row, index }) => {
|
|
|
137
140
|
react_1.default.createElement(BEButton_1.default, { isText: true, size: "tiny", onClick: onClickEditRoom }, t(Translation_1.Translation.Misc.Edit).toUpperCase())))),
|
|
138
141
|
removeButton)));
|
|
139
142
|
}
|
|
140
|
-
// Commented out for now - need to figure out if all text should go the same colour
|
|
141
|
-
// const shouldTextBeWhite = hotel?.colors && lightOrDark(hotel?.colors.accent) === 'dark' && isValid;
|
|
142
143
|
return (react_1.default.createElement("div", { className: (0, classnames_1.default)(UserSearchSummaryRow_module_scss_1.default['user-search-summary-row'], {
|
|
143
144
|
[UserSearchSummaryRow_module_scss_1.default['--selected']]: isSelectedRow,
|
|
144
145
|
[UserSearchSummaryRow_module_scss_1.default['--valid']]: isValid,
|
|
146
|
+
[UserSearchSummaryRow_module_scss_1.default['--has-dark-bg']]: shouldTextBeWhite,
|
|
145
147
|
}) },
|
|
146
148
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row--inner'] },
|
|
147
149
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__group'] },
|
|
148
|
-
react_1.default.createElement(Text_1.default, { inline: true, bold: true, className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__group-label'] }, "Dates:"),
|
|
150
|
+
react_1.default.createElement(Text_1.default, { inline: true, bold: true, className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__group-label'], color: textColor }, "Dates:"),
|
|
149
151
|
react_1.default.createElement(FloatingDatePicker_1.default, { startDate: row.getStartDate(), endDate: row.getEndDate(), selectedDateChanged: updateDateValues, isAboveNav: true, className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__input'] },
|
|
150
152
|
react_1.default.createElement(Tooltip_1.default, { disabled: !isSelectedRow, title: t(Translation_1.Translation.Step.Date.SelectArrivalAndDepartureDatesByClickingHere) },
|
|
151
153
|
react_1.default.createElement("div", { className: "u-flex align-items-center justify-content-center u-w-100@xl- u-cursor-pointer" },
|
|
152
|
-
react_1.default.createElement(Text_1.default, { color: Color_1.Color.Accent, bold: true, className: "u-nowrap" }, row.getArrivalDate()),
|
|
153
|
-
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowRight2 }),
|
|
154
|
-
react_1.default.createElement(Text_1.default, { color: Color_1.Color.Accent, bold: true, className: "u-nowrap" }, row.getDepartureDate()))))),
|
|
154
|
+
react_1.default.createElement(Text_1.default, { color: shouldTextBeWhite ? Color_1.Color.White : Color_1.Color.Accent, bold: true, className: "u-nowrap" }, row.getArrivalDate()),
|
|
155
|
+
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowRight2, color: shouldTextBeWhite ? Color_1.Color.White : undefined }),
|
|
156
|
+
react_1.default.createElement(Text_1.default, { color: shouldTextBeWhite ? Color_1.Color.White : Color_1.Color.Accent, bold: true, className: "u-nowrap" }, row.getDepartureDate()))))),
|
|
155
157
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__divider'] }),
|
|
156
158
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__group'] },
|
|
157
|
-
react_1.default.createElement(Text_1.default, { inline: true, bold: true, className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__group-label'] }, "Who:"),
|
|
159
|
+
react_1.default.createElement(Text_1.default, { inline: true, bold: true, className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__group-label'], color: textColor }, "Who:"),
|
|
158
160
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__input'] },
|
|
159
|
-
react_1.default.createElement(NumberOfAdultsPicker_1.default, { row: row, onChange: updateNumberOfAdultsOnChange })),
|
|
161
|
+
react_1.default.createElement(NumberOfAdultsPicker_1.default, { row: row, onChange: updateNumberOfAdultsOnChange, labelColor: textColor })),
|
|
160
162
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__input'] },
|
|
161
|
-
react_1.default.createElement(NumberOfChildrenPicker_1.default, { row: row, onChange: updateNumberOfChildrenOnChange }))),
|
|
163
|
+
react_1.default.createElement(NumberOfChildrenPicker_1.default, { row: row, onChange: updateNumberOfChildrenOnChange, labelColor: textColor }))),
|
|
162
164
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__divider'] }),
|
|
163
165
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__group'] },
|
|
164
166
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__input'] },
|
|
165
|
-
react_1.default.createElement(UserSearchSummaryPromocodeInput_1.UserSearchSummaryPromocdeInput, { row: row, onChange: changePromoCode, disabled: !isSelectedRow })))),
|
|
166
|
-
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row--buttons'] },
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
167
|
+
react_1.default.createElement(UserSearchSummaryPromocodeInput_1.UserSearchSummaryPromocdeInput, { row: row, onChange: changePromoCode, disabled: !isSelectedRow, promocodeTextColor: textColor, useUpdatedDesign: true })))),
|
|
168
|
+
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row--buttons'] }, isSelectedRow && isValid ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
169
|
+
react_1.default.createElement(BEButton_1.default, { isText: true, size: "tiny", onClick: onClickCancelRoomChanges, textColor: textColor }, t(Translation_1.Translation.Misc.Cancel)))) : (removeButton)),
|
|
170
|
+
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row--mobile-select-label'] },
|
|
171
|
+
react_1.default.createElement(Text_1.default, { type: sizeMediumDown ? Text_1.TextType.Small : Text_1.TextType.Body, color: textColor, bold: true }, "Select room for"))));
|
|
170
172
|
};
|
|
171
173
|
exports.UserSearchSummaryRow = UserSearchSummaryRow;
|
|
172
174
|
//# sourceMappingURL=UserSearchSummaryRow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserSearchSummaryRow.js","sourceRoot":"/","sources":["src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useMemo, useRef } from 'react';\nimport BasketRow from '@/models/BasketRow';\n\nimport styles from './UserSearchSummaryRow.module.scss';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\n\nimport { default as cx } from 'classnames';\nimport { BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport FloatingDatePicker from '@/components/generic/date/FloatingDatePicker';\nimport { Color, lightOrDark } from '@/util/Color';\nimport { Translation } from '@/translations/Translation';\nimport { useTranslation } from 'react-i18next';\nimport dayjs from 'dayjs';\nimport NumberOfAdultsPicker from '../roomBuilderProgress/NumberOfAdultsPicker';\nimport DataLayer, { InteractionType, InteractionStep } from '@/util/DataLayer';\nimport NumberOfChildrenPicker from '../roomBuilderProgress/NumberOfChildrenPicker';\nimport { UserSearchSummaryPromocdeInput } from './UserSearchSummaryPromocodeInput';\nimport BEButton from '@/components/generic/BEButton';\nimport ScreenSize from '@/util/ScreenSize';\nimport StringHelper from '@/util/StringHelper';\nimport Pill, { PillType } from '@/components/generic/Pill';\nimport { useCurrentHotel } from '@frontend/hooks';\n\ntype UserSearchSummaryRowProps = {\n row: BasketRow;\n index: number;\n};\n\nexport const UserSearchSummaryRow = ({ row, index }: UserSearchSummaryRowProps) => {\n const { t } = useTranslation();\n const removeButtonRef = useRef<any>();\n const { hotel } = useCurrentHotel();\n\n const { selectedBasketRow, currentBasketRows, updateBasketRow, removeBasketRow, selectBasketRow } = useContext(BasketContext);\n const engineContext = useContext(BookingEngineContext);\n\n const isSelectedRow = useMemo(() => {\n return selectedBasketRow?.getID() === row?.getID();\n }, [selectedBasketRow]);\n\n const canRemove = currentBasketRows.length > 1;\n const removeRoomOnClick = () => {\n DataLayer.instance.sendInteraction('Remove Room', InteractionType.BUTTON, InteractionStep.ROOMS);\n removeBasketRow(row);\n };\n\n const removeButton = (\n <Tooltip\n title={canRemove ? 'Remove this room' : 'Cannot remove this room as at least one must be selected.'}\n followElement={removeButtonRef?.current}\n wrapperClasses={styles['user-search-summary-row__remove-tooltip']}\n >\n <div className={styles['user-search-summary-row__remove']} onClick={removeRoomOnClick} ref={removeButtonRef}>\n <BEButton isText icon={IconType.Close} iconPosition=\"right\" stopIconAnimation disabled={!canRemove} onClick={removeRoomOnClick} />\n </div>\n </Tooltip>\n );\n\n const updatePeopleValues = ({ adults, children, updatedPromoCode }: { adults?: number; children?: number; updatedPromoCode?: string }) => {\n if (adults && adults !== row.getAdults()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setAdults(adults);\n }\n\n if ((children || children === 0) && children !== row.getChildren()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setChildren(children);\n }\n\n if ((updatedPromoCode || updatedPromoCode === '') && updatedPromoCode !== row.getPromoCode()) {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n row.setPromoCode(updatedPromoCode);\n }\n\n updateBasketRow(row);\n };\n\n const updatePromoCode = (code: string) => {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n\n if (selectedBasketRow) {\n selectedBasketRow.setPromoCode(code);\n updateBasketRow(selectedBasketRow);\n }\n };\n\n const updateDateValues = (startDate: dayjs.Dayjs, endDate: dayjs.Dayjs) => {\n if (startDate) {\n row.setStartDate(startDate);\n }\n\n if (endDate) {\n row.setEndDate(endDate);\n }\n\n updateBasketRow(row);\n };\n\n const updateNumberOfAdultsOnChange = (value: string) => {\n updatePeopleValues({ adults: +value });\n };\n const updateNumberOfChildrenOnChange = (value: string) => {\n updatePeopleValues({ children: +value });\n };\n const changePromoCode = (val: any) => {\n updatePromoCode(val);\n };\n\n const onClickCancelRoomChanges = () => {\n DataLayer.instance.sendInteraction('Cancel Room Changes', InteractionType.LINK, InteractionStep.ROOMS);\n selectBasketRow(null);\n };\n const onClickEditRoom = () => {\n DataLayer.instance.sendInteraction('Edit Room', InteractionType.LINK, InteractionStep.ROOMS);\n selectBasketRow(row);\n };\n\n const isValid = row.isValid();\n const isLargerThanLarge = engineContext.screenSize > ScreenSize.ExtraLarge;\n\n if (isValid && !isSelectedRow) {\n return (\n <div className={`${styles['user-completed-summary-row']} u-flex w-100`}>\n <div className=\"u-flex justify-content-start\">\n <div className=\"u-flex flex-column\">\n <span>\n <Text inline={isLargerThanLarge}>\n <strong>{row.getRoom().name}</strong>\n </Text>\n <Text inline={isLargerThanLarge} type={isLargerThanLarge ? TextType.Body : TextType.Small}>\n <span className=\"u-marg-left--light@xl\">\n {StringHelper.pluralWithDictAndCount(row.getAdults(), Translation.Step.Date.Adult, t)}\n , \n {StringHelper.pluralWithDictAndCount(row.getChildren(), Translation.Step.Date.Child, t)}\n </span>\n </Text>\n </span>\n <Text type={TextType.Caption} color={Color.DarkGrey}>\n <strong>{row.getStayDateRange('ddd, MMM D, YYYY', ' -')}</strong>\n </Text>\n </div>\n {row.isPromoCodeValid() && (\n <div className=\"u-marg-left d-flex align-items-center\">\n <Pill type={PillType.Success} icon={IconType.Money}>\n {row.getPromoCode()}\n </Pill>\n </div>\n )}\n </div>\n <div className=\"u-flex align-items-center\">\n <div className=\"u-flex align-items-center room-builder-progress--edit\">\n <Tooltip title={t(Translation.Step.Room.EditThisRoom)}>\n <div className=\"u-flex align-items-center\">\n <BEButton isText size=\"tiny\" onClick={onClickEditRoom}>\n {t(Translation.Misc.Edit).toUpperCase()}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n {removeButton}\n </div>\n </div>\n );\n }\n\n // Commented out for now - need to figure out if all text should go the same colour\n // const shouldTextBeWhite = hotel?.colors && lightOrDark(hotel?.colors.accent) === 'dark' && isValid;\n\n return (\n <div\n className={cx(styles['user-search-summary-row'], {\n [styles['--selected']]: isSelectedRow,\n [styles['--valid']]: isValid,\n })}\n >\n <div className={styles['user-search-summary-row--inner']}>\n <div className={styles['user-search-summary-row__group']}>\n <Text inline bold className={styles['user-search-summary-row__group-label']}>\n Dates:\n </Text>\n <FloatingDatePicker\n startDate={row.getStartDate()}\n endDate={row.getEndDate()}\n selectedDateChanged={updateDateValues}\n isAboveNav\n className={styles['user-search-summary-row__input']}\n >\n <Tooltip disabled={!isSelectedRow} title={t(Translation.Step.Date.SelectArrivalAndDepartureDatesByClickingHere)}>\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl- u-cursor-pointer\">\n <Text color={Color.Accent} bold className=\"u-nowrap\">\n {row.getArrivalDate()}\n </Text>\n <Icon icon={IconType.ArrowRight2} />\n <Text color={Color.Accent} bold className=\"u-nowrap\">\n {row.getDepartureDate()}\n </Text>\n </div>\n </Tooltip>\n </FloatingDatePicker>\n </div>\n <div className={styles['user-search-summary-row__divider']} />\n <div className={styles['user-search-summary-row__group']}>\n <Text inline bold className={styles['user-search-summary-row__group-label']}>\n Who:\n </Text>\n <div className={styles['user-search-summary-row__input']}>\n <NumberOfAdultsPicker row={row} onChange={updateNumberOfAdultsOnChange} />\n </div>\n <div className={styles['user-search-summary-row__input']}>\n <NumberOfChildrenPicker row={row} onChange={updateNumberOfChildrenOnChange} />\n </div>\n </div>\n <div className={styles['user-search-summary-row__divider']} />\n <div className={styles['user-search-summary-row__group']}>\n <div className={styles['user-search-summary-row__input']}>\n <UserSearchSummaryPromocdeInput row={row} onChange={changePromoCode} disabled={!isSelectedRow} />\n </div>\n </div>\n </div>\n\n <div className={styles['user-search-summary-row--buttons']}>\n {isSelectedRow && isValid && (\n <>\n <BEButton isText size=\"tiny\" onClick={onClickCancelRoomChanges}>\n {t(Translation.Misc.Cancel)}\n </BEButton>\n </>\n )}\n {removeButton}\n </div>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"UserSearchSummaryRow.js","sourceRoot":"/","sources":["src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useMemo, useRef } from 'react';\nimport BasketRow from '@/models/BasketRow';\n\nimport styles from './UserSearchSummaryRow.module.scss';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\n\nimport { default as cx } from 'classnames';\nimport { BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport FloatingDatePicker from '@/components/generic/date/FloatingDatePicker';\nimport { Color } from '@/util/Color';\nimport { Translation } from '@/translations/Translation';\nimport { useTranslation } from 'react-i18next';\nimport dayjs from 'dayjs';\nimport NumberOfAdultsPicker from '../roomBuilderProgress/NumberOfAdultsPicker';\nimport DataLayer, { InteractionType, InteractionStep } from '@/util/DataLayer';\nimport NumberOfChildrenPicker from '../roomBuilderProgress/NumberOfChildrenPicker';\nimport { UserSearchSummaryPromocdeInput } from './UserSearchSummaryPromocodeInput';\nimport BEButton from '@/components/generic/BEButton';\nimport ScreenSize from '@/util/ScreenSize';\nimport StringHelper from '@/util/StringHelper';\nimport Pill, { PillType } from '@/components/generic/Pill';\nimport { useCurrentHotel } from '@frontend/hooks';\n\ntype UserSearchSummaryRowProps = {\n row: BasketRow;\n index: number;\n};\n\nexport const UserSearchSummaryRow = ({ row, index }: UserSearchSummaryRowProps) => {\n const { t } = useTranslation();\n const removeButtonRef = useRef<any>();\n const { isAccentColorDark } = useCurrentHotel();\n\n const { selectedBasketRow, currentBasketRows, updateBasketRow, removeBasketRow, selectBasketRow } = useContext(BasketContext);\n const engineContext = useContext(BookingEngineContext);\n\n const isSelectedRow = useMemo(() => {\n return selectedBasketRow?.getID() === row?.getID();\n }, [selectedBasketRow]);\n\n const canRemove = currentBasketRows.length > 1;\n const removeRoomOnClick = () => {\n DataLayer.instance.sendInteraction('Remove Room', InteractionType.BUTTON, InteractionStep.ROOMS);\n removeBasketRow(row);\n };\n\n const updatePeopleValues = ({ adults, children, updatedPromoCode }: { adults?: number; children?: number; updatedPromoCode?: string }) => {\n if (adults && adults !== row.getAdults()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setAdults(adults);\n }\n\n if ((children || children === 0) && children !== row.getChildren()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setChildren(children);\n }\n\n if ((updatedPromoCode || updatedPromoCode === '') && updatedPromoCode !== row.getPromoCode()) {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n row.setPromoCode(updatedPromoCode);\n }\n\n updateBasketRow(row);\n };\n\n const updatePromoCode = (code: string) => {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n\n if (selectedBasketRow) {\n selectedBasketRow.setPromoCode(code);\n updateBasketRow(selectedBasketRow);\n }\n };\n\n const updateDateValues = (startDate: dayjs.Dayjs, endDate: dayjs.Dayjs) => {\n if (startDate) {\n row.setStartDate(startDate);\n }\n\n if (endDate) {\n row.setEndDate(endDate);\n }\n\n updateBasketRow(row);\n };\n\n const updateNumberOfAdultsOnChange = (value: string) => {\n updatePeopleValues({ adults: +value });\n };\n const updateNumberOfChildrenOnChange = (value: string) => {\n updatePeopleValues({ children: +value });\n };\n const changePromoCode = (val: any) => {\n updatePromoCode(val);\n };\n\n const onClickCancelRoomChanges = () => {\n DataLayer.instance.sendInteraction('Cancel Room Changes', InteractionType.LINK, InteractionStep.ROOMS);\n selectBasketRow(null);\n };\n const onClickEditRoom = () => {\n DataLayer.instance.sendInteraction('Edit Room', InteractionType.LINK, InteractionStep.ROOMS);\n selectBasketRow(row);\n };\n\n const isValid = row.isValid();\n const isLargerThanLarge = engineContext.screenSize > ScreenSize.ExtraLarge;\n\n const sizeMediumDown = engineContext.screenSize <= ScreenSize.Medium;\n\n const shouldTextBeWhite = isAccentColorDark && isSelectedRow && isValid;\n\n const textColor = shouldTextBeWhite ? Color.White : undefined;\n\n const removeButton = (\n <Tooltip\n title={canRemove ? 'Remove this room' : 'Cannot remove this room as at least one must be selected.'}\n followElement={removeButtonRef?.current}\n wrapperClasses={styles['user-search-summary-row__remove-tooltip']}\n >\n <div className={styles['user-search-summary-row__remove']} onClick={removeRoomOnClick} ref={removeButtonRef}>\n <BEButton textColor={textColor} isText icon={IconType.Close} iconPosition=\"right\" stopIconAnimation disabled={!canRemove} onClick={removeRoomOnClick} />\n </div>\n </Tooltip>\n );\n\n if (isValid && !isSelectedRow) {\n return (\n <div className={`${styles['user-completed-summary-row']} u-flex w-100`}>\n <div className=\"u-flex justify-content-start\">\n <div className=\"u-flex flex-column\">\n <span>\n <Text inline={isLargerThanLarge}>\n <strong>{row.getRoom().name}</strong>\n </Text>\n <Text inline={isLargerThanLarge} type={isLargerThanLarge ? TextType.Body : TextType.Small}>\n <span className=\"u-marg-left--light@xl\">\n {StringHelper.pluralWithDictAndCount(row.getAdults(), Translation.Step.Date.Adult, t)}\n , \n {StringHelper.pluralWithDictAndCount(row.getChildren(), Translation.Step.Date.Child, t)}\n </span>\n </Text>\n </span>\n <Text type={TextType.Caption} color={Color.DarkGrey}>\n <strong>{row.getStayDateRange('ddd, MMM D, YYYY', ' -')}</strong>\n </Text>\n </div>\n {row.isPromoCodeValid() && (\n <div className=\"u-marg-left d-flex align-items-center\">\n <Pill type={PillType.Success} icon={IconType.Money}>\n {row.getPromoCode()}\n </Pill>\n </div>\n )}\n </div>\n <div className=\"u-flex align-items-center\">\n <div className=\"u-flex align-items-center room-builder-progress--edit\">\n <Tooltip title={t(Translation.Step.Room.EditThisRoom)}>\n <div className=\"u-flex align-items-center\">\n <BEButton isText size=\"tiny\" onClick={onClickEditRoom}>\n {t(Translation.Misc.Edit).toUpperCase()}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n {removeButton}\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={cx(styles['user-search-summary-row'], {\n [styles['--selected']]: isSelectedRow,\n [styles['--valid']]: isValid,\n [styles['--has-dark-bg']]: shouldTextBeWhite,\n })}\n >\n <div className={styles['user-search-summary-row--inner']}>\n <div className={styles['user-search-summary-row__group']}>\n <Text inline bold className={styles['user-search-summary-row__group-label']} color={textColor}>\n Dates:\n </Text>\n <FloatingDatePicker\n startDate={row.getStartDate()}\n endDate={row.getEndDate()}\n selectedDateChanged={updateDateValues}\n isAboveNav\n className={styles['user-search-summary-row__input']}\n >\n <Tooltip disabled={!isSelectedRow} title={t(Translation.Step.Date.SelectArrivalAndDepartureDatesByClickingHere)}>\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl- u-cursor-pointer\">\n <Text color={shouldTextBeWhite ? Color.White : Color.Accent} bold className=\"u-nowrap\">\n {row.getArrivalDate()}\n </Text>\n <Icon icon={IconType.ArrowRight2} color={shouldTextBeWhite ? Color.White : undefined} />\n <Text color={shouldTextBeWhite ? Color.White : Color.Accent} bold className=\"u-nowrap\">\n {row.getDepartureDate()}\n </Text>\n </div>\n </Tooltip>\n </FloatingDatePicker>\n </div>\n <div className={styles['user-search-summary-row__divider']} />\n <div className={styles['user-search-summary-row__group']}>\n <Text inline bold className={styles['user-search-summary-row__group-label']} color={textColor}>\n Who:\n </Text>\n <div className={styles['user-search-summary-row__input']}>\n <NumberOfAdultsPicker row={row} onChange={updateNumberOfAdultsOnChange} labelColor={textColor} />\n </div>\n <div className={styles['user-search-summary-row__input']}>\n <NumberOfChildrenPicker row={row} onChange={updateNumberOfChildrenOnChange} labelColor={textColor} />\n </div>\n </div>\n <div className={styles['user-search-summary-row__divider']} />\n <div className={styles['user-search-summary-row__group']}>\n <div className={styles['user-search-summary-row__input']}>\n <UserSearchSummaryPromocdeInput row={row} onChange={changePromoCode} disabled={!isSelectedRow} promocodeTextColor={textColor} useUpdatedDesign />\n </div>\n </div>\n </div>\n\n <div className={styles['user-search-summary-row--buttons']}>\n {isSelectedRow && isValid ? (\n <>\n <BEButton isText size=\"tiny\" onClick={onClickCancelRoomChanges} textColor={textColor}>\n {t(Translation.Misc.Cancel)}\n </BEButton>\n </>\n ) : (\n removeButton\n )}\n </div>\n <div className={styles['user-search-summary-row--mobile-select-label']}>\n <Text type={sizeMediumDown ? TextType.Small : TextType.Body} color={textColor} bold>\n Select room for\n </Text>\n </div>\n </div>\n );\n};\n"]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import BasketRow from '../../../../models/BasketRow';
|
|
2
|
+
import { Color } from '../../../../util/Color';
|
|
2
3
|
interface NumberOfAdultsPickerProps {
|
|
3
4
|
row: BasketRow;
|
|
4
5
|
onChange: (value: string) => void;
|
|
6
|
+
labelColor?: Color;
|
|
5
7
|
}
|
|
6
8
|
export default function NumberOfAdultsPicker(props: NumberOfAdultsPickerProps): JSX.Element;
|
|
7
9
|
export {};
|
|
@@ -25,7 +25,7 @@ function NumberOfAdultsPicker(props) {
|
|
|
25
25
|
text: StringHelper_1.default.pluralWithDictAndCount(value, Translation_1.Translation.Step.Date.Adult, t),
|
|
26
26
|
value: value.toString(),
|
|
27
27
|
};
|
|
28
|
-
}), value: selectedValue === null || selectedValue === void 0 ? void 0 : selectedValue.toString(), onChange: props.onChange, keyName: "value", labelName: "text" }));
|
|
28
|
+
}), value: selectedValue === null || selectedValue === void 0 ? void 0 : selectedValue.toString(), onChange: props.onChange, keyName: "value", labelName: "text", inputLabelColor: props.labelColor }));
|
|
29
29
|
}
|
|
30
30
|
exports.default = NumberOfAdultsPicker;
|
|
31
31
|
//# sourceMappingURL=NumberOfAdultsPicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberOfAdultsPicker.js","sourceRoot":"/","sources":["src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.tsx"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,iDAA+C;AAE/C,2CAAkD;AAElD,0DAAuD;AACvD,uEAA+C;AAC/C,+DAAkF;
|
|
1
|
+
{"version":3,"file":"NumberOfAdultsPicker.js","sourceRoot":"/","sources":["src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.tsx"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,iDAA+C;AAE/C,2CAAkD;AAElD,0DAAuD;AACvD,uEAA+C;AAC/C,+DAAkF;AAUlF,SAAwB,oBAAoB,CAAC,KAAgC;;IACzE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,aAAa,GAAG,MAAA,MAAA,KAAK,CAAC,GAAG,0CAAE,SAAS,EAAE,mCAAI,CAAC,CAAC;IAClD,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAuB,KAAG,MAAA,KAAK,CAAC,GAAG,0CAAE,WAAW,EAAE,CAAA,EAAE,aAAa,CAAC,CAAC;IACvG,eAAe;IACf,IAAI,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE;QACzC,YAAY,GAAG,CAAC,CAAC;KACpB;IAED,OAAO,CACH,8BAAC,eAAM,IACH,cAAc,QACd,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,KAAa,EAAE,EAAE;YAC5D,KAAK,IAAI,CAAC,CAAC;YACX,OAAO;gBACH,IAAI,EAAE,sBAAY,CAAC,sBAAsB,CAAC,KAAK,EAAE,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAChF,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;aAC1B,CAAC;QACN,CAAC,CAAC,EACF,KAAK,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,EAAE,EAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,MAAM,EAChB,eAAe,EAAE,KAAK,CAAC,UAAU,GACnC,CACL,CAAC;AACN,CAAC;AA7BD,uCA6BC","sourcesContent":["import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { useCurrentHotel } from '@frontend/hooks';\nimport BasketRow from '@/models/BasketRow';\nimport { Translation } from 'translations/Translation';\nimport StringHelper from '@/util/StringHelper';\nimport { IDefaultSelectOption, Select } from '@/components/generic/Select/Select';\nimport { Color } from '@/util/Color';\n\ninterface NumberOfAdultsPickerProps {\n row: BasketRow;\n onChange: (value: string) => void;\n\n labelColor?: Color;\n}\n\nexport default function NumberOfAdultsPicker(props: NumberOfAdultsPickerProps) {\n const { hotel } = useCurrentHotel();\n\n const { t } = useTranslation();\n\n const selectedValue = props.row?.getAdults() ?? 1;\n let maxOccupancy = Math.max((hotel?.maxOccupancy as number) - props.row?.getChildren(), selectedValue);\n // Just in Case\n if (maxOccupancy < 1 || isNaN(maxOccupancy)) {\n maxOccupancy = 1;\n }\n\n return (\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={[...Array(maxOccupancy)].map((v: any, value: number) => {\n value += 1;\n return {\n text: StringHelper.pluralWithDictAndCount(value, Translation.Step.Date.Adult, t),\n value: value.toString(),\n };\n })}\n value={selectedValue?.toString()}\n onChange={props.onChange}\n keyName=\"value\"\n labelName=\"text\"\n inputLabelColor={props.labelColor}\n />\n );\n}\n"]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import BasketRow from '../../../../models/BasketRow';
|
|
2
|
+
import { Color } from '../../../../util/Color';
|
|
2
3
|
interface NumberOfChildrenPickerProps {
|
|
3
4
|
row: BasketRow;
|
|
4
5
|
onChange: (value: string) => void;
|
|
6
|
+
labelColor?: Color;
|
|
5
7
|
}
|
|
6
8
|
export default function NumberOfChildrenPicker(props: NumberOfChildrenPickerProps): JSX.Element;
|
|
7
9
|
export {};
|
|
@@ -24,7 +24,7 @@ function NumberOfChildrenPicker(props) {
|
|
|
24
24
|
text: StringHelper_1.default.pluralWithDictAndCount(value, Translation_1.Translation.Step.Date.Child, t),
|
|
25
25
|
value: value.toString(),
|
|
26
26
|
};
|
|
27
|
-
}), value: selectedValue === null || selectedValue === void 0 ? void 0 : selectedValue.toString(), onChange: props.onChange, keyName: "value", labelName: "text" }));
|
|
27
|
+
}), value: selectedValue === null || selectedValue === void 0 ? void 0 : selectedValue.toString(), onChange: props.onChange, keyName: "value", labelName: "text", inputLabelColor: props.labelColor }));
|
|
28
28
|
}
|
|
29
29
|
exports.default = NumberOfChildrenPicker;
|
|
30
30
|
//# sourceMappingURL=NumberOfChildrenPicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberOfChildrenPicker.js","sourceRoot":"/","sources":["src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.tsx"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,iDAA+C;AAE/C,2CAAkD;AAElD,0DAAuD;AACvD,uEAA+C;AAC/C,+DAAkF;
|
|
1
|
+
{"version":3,"file":"NumberOfChildrenPicker.js","sourceRoot":"/","sources":["src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.tsx"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,iDAA+C;AAE/C,2CAAkD;AAElD,0DAAuD;AACvD,uEAA+C;AAC/C,+DAAkF;AAUlF,SAAwB,sBAAsB,CAAC,KAAkC;;IAC7E,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,aAAa,GAAG,MAAA,MAAA,KAAK,CAAC,GAAG,0CAAE,WAAW,EAAE,mCAAI,CAAC,CAAC;IACpD,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAuB,IAAG,CAAC,IAAG,MAAA,KAAK,CAAC,GAAG,0CAAE,SAAS,EAAE,CAAA,CAAC,CAAC;IAC1F,eAAe;IACf,IAAI,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE;QACzC,YAAY,GAAG,CAAC,CAAC;KACpB;IAED,OAAO,CACH,8BAAC,eAAM,IACH,cAAc,QACd,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,KAAa,EAAE,EAAE;YAC5D,OAAO;gBACH,IAAI,EAAE,sBAAY,CAAC,sBAAsB,CAAC,KAAK,EAAE,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAChF,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;aAC1B,CAAC;QACN,CAAC,CAAC,EACF,KAAK,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,EAAE,EAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,MAAM,EAChB,eAAe,EAAE,KAAK,CAAC,UAAU,GACnC,CACL,CAAC;AACN,CAAC;AA5BD,yCA4BC","sourcesContent":["import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { useCurrentHotel } from '@frontend/hooks';\nimport BasketRow from '@/models/BasketRow';\nimport { Translation } from 'translations/Translation';\nimport StringHelper from '@/util/StringHelper';\nimport { IDefaultSelectOption, Select } from '@/components/generic/Select/Select';\nimport { Color } from '@/util/Color';\n\ninterface NumberOfChildrenPickerProps {\n row: BasketRow;\n onChange: (value: string) => void;\n\n labelColor?: Color;\n}\n\nexport default function NumberOfChildrenPicker(props: NumberOfChildrenPickerProps) {\n const { hotel } = useCurrentHotel();\n\n const { t } = useTranslation();\n\n const selectedValue = props.row?.getChildren() ?? 1;\n let maxOccupancy = Math.max((hotel?.maxOccupancy as number) + 1 - props.row?.getAdults());\n // Just in Case\n if (maxOccupancy < 1 || isNaN(maxOccupancy)) {\n maxOccupancy = 1;\n }\n\n return (\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={[...Array(maxOccupancy)].map((v: any, value: number) => {\n return {\n text: StringHelper.pluralWithDictAndCount(value, Translation.Step.Date.Child, t),\n value: value.toString(),\n };\n })}\n value={selectedValue?.toString()}\n onChange={props.onChange}\n keyName=\"value\"\n labelName=\"text\"\n inputLabelColor={props.labelColor}\n />\n );\n}\n"]}
|
|
@@ -167,8 +167,9 @@ function RoomDetails(props) {
|
|
|
167
167
|
identifier: rate.code,
|
|
168
168
|
priceSpecification: {
|
|
169
169
|
'@type': 'UnitPriceSpecification',
|
|
170
|
+
price: convertCurrencyPrice(rate.getAveragePrice(true)),
|
|
170
171
|
basePrice: convertCurrencyPrice(rate.getTotalPrice(true)),
|
|
171
|
-
totalPrice: convertCurrencyPrice(rate.
|
|
172
|
+
totalPrice: convertCurrencyPrice(rate.getAveragePrice()),
|
|
172
173
|
priceCurrency: ccx.currentCurrency,
|
|
173
174
|
unitText: 'Nightly',
|
|
174
175
|
},
|