@roomstay/frontend 2.6.77 → 2.6.78
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/main.bundle.js +1 -1
- package/dist/src/api/HotelAPI.d.ts +2 -0
- package/dist/src/api/HotelAPI.js +7 -0
- package/dist/src/api/HotelAPI.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js +0 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.d.ts +13 -4
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +24 -10
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.d.ts +9 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +187 -22
- package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
- package/dist/src/components/generic/Select/Select.d.ts +2 -1
- package/dist/src/components/generic/Select/Select.js +2 -2
- package/dist/src/components/generic/Select/Select.js.map +1 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.d.ts +6 -0
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
- package/dist/src/models/BookingWizard/BookingWizardProperty.d.ts +13 -0
- package/dist/src/models/BookingWizard/BookingWizardProperty.js.map +1 -1
- package/dist/src/translations/Translation.d.ts +2 -0
- package/dist/src/translations/Translation.js +2 -0
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +2 -0
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +2 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import BaseAPI from './BaseAPI';
|
|
2
2
|
import { HotelDTO } from '../models/Api/HotelDTO';
|
|
3
3
|
import { HotelOverrideDTO } from '../models/Api/HotelOverrideDTO';
|
|
4
|
+
import { IBookingWizardSearchProperty } from '../models/BookingWizard/BookingWizardProperty';
|
|
4
5
|
import { Hotel } from '../models/Client/Hotel/Hotel';
|
|
5
6
|
import { Language } from '../providers/LanguageProvider';
|
|
6
7
|
export default class HotelAPI extends BaseAPI {
|
|
@@ -8,5 +9,6 @@ export default class HotelAPI extends BaseAPI {
|
|
|
8
9
|
private pendingQueries;
|
|
9
10
|
fetchData: (lang: Language, hotel: Pick<Hotel, 'hotelID'>) => Promise<HotelDTO>;
|
|
10
11
|
fetchOverrides: (frontendId: string, companyId?: string) => Promise<HotelOverrideDTO>;
|
|
12
|
+
fetchBookingWizardData: (companyId: number) => Promise<IBookingWizardSearchProperty[]>;
|
|
11
13
|
private getQueryID;
|
|
12
14
|
}
|
package/dist/src/api/HotelAPI.js
CHANGED
|
@@ -48,6 +48,13 @@ class HotelAPI extends BaseAPI_1.default {
|
|
|
48
48
|
const json = yield response.json();
|
|
49
49
|
return json;
|
|
50
50
|
});
|
|
51
|
+
this.fetchBookingWizardData = (companyId) => __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
const response = yield fetch(this.getApiPath() + `company/${companyId}/booking-wizard-data`, {
|
|
53
|
+
headers: yield BaseAPI_1.default.getBaseHeaders(),
|
|
54
|
+
});
|
|
55
|
+
const json = yield response.json();
|
|
56
|
+
return json;
|
|
57
|
+
});
|
|
51
58
|
this.getQueryID = (params) => {
|
|
52
59
|
return params.join('-');
|
|
53
60
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HotelAPI.js","sourceRoot":"/","sources":["src/api/HotelAPI.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4DAAoC;
|
|
1
|
+
{"version":3,"file":"HotelAPI.js","sourceRoot":"/","sources":["src/api/HotelAPI.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4DAAoC;AAOpC,MAAqB,QAAS,SAAQ,iBAAO;IAA7C;;QACY,oBAAe,GAA+B,EAAE,CAAC;QACjD,mBAAc,GAAwC,EAAE,CAAC;QAE1D,cAAS,GAAG,CAAO,IAAc,EAAE,KAA6B,EAAqB,EAAE;YAC1F,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAE9B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAEjD,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;gBAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;aACxC;YAED,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;gBAChC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aACvC;YAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;gBACjE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,OAAO,aAAa,IAAI,EAAE,EAAE;oBAClF,OAAO,EAAE,MAAM,iBAAO,CAAC,cAAc,EAAE;iBAC1C,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;oBACd,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;iBACvD;gBAED,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEtD,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3C,CAAC,CAAA,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC,CAAA,CAAC;QAEF,sBAAsB;QACf,mBAAc,GAAG,CAAO,UAAkB,EAAE,SAAkB,EAA6B,EAAE;YAChG,gEAAgE;YAChE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,UAAU,aAAa,SAAS,CAAC,CAAC,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC3H,OAAO,EAAE,MAAM,iBAAO,CAAC,cAAc,EAAE;aAC1C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QAChB,CAAC,CAAA,CAAC;QAEK,2BAAsB,GAAG,CAAO,SAAiB,EAA2C,EAAE;YACjG,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,WAAW,SAAS,sBAAsB,EAAE;gBACzF,OAAO,EAAE,MAAM,iBAAO,CAAC,cAAc,EAAE;aAC1C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QAChB,CAAC,CAAA,CAAC;QAEM,eAAU,GAAG,CAAC,MAAa,EAAE,EAAE;YACnC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC;IACN,CAAC;CAAA;AAvDD,2BAuDC","sourcesContent":["import BaseAPI from '@/api/BaseAPI';\nimport { HotelDTO } from '@/models/Api/HotelDTO';\nimport { HotelOverrideDTO } from '@/models/Api/HotelOverrideDTO';\nimport { IBookingWizardSearchProperty } from '@/models/BookingWizard/BookingWizardProperty';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\nimport { Language } from '@/providers/LanguageProvider';\n\nexport default class HotelAPI extends BaseAPI {\n private cachedResponses: { [id: string]: HotelDTO } = {};\n private pendingQueries: { [id: string]: Promise<HotelDTO> } = {};\n\n public fetchData = async (lang: Language, hotel: Pick<Hotel, 'hotelID'>): Promise<HotelDTO> => {\n const hotelID = hotel.hotelID;\n\n const queryID = this.getQueryID([lang, hotelID]);\n\n if (this.cachedResponses[queryID]) {\n return this.cachedResponses[queryID];\n }\n\n if (!!this.pendingQueries[queryID]) {\n return this.pendingQueries[queryID];\n }\n\n this.pendingQueries[queryID] = new Promise(async (resolve, reject) => {\n const response = await fetch(this.getApiPath() + `hotel/${hotelID}?language=${lang}`, {\n headers: await BaseAPI.getBaseHeaders(),\n });\n\n if (!response.ok) {\n reject(`${response.status} ${response.statusText}`);\n }\n\n this.cachedResponses[queryID] = await response.json();\n\n resolve(this.cachedResponses[queryID]);\n });\n\n return this.pendingQueries[queryID];\n };\n\n // TODO: Return typing\n public fetchOverrides = async (frontendId: string, companyId?: string): Promise<HotelOverrideDTO> => {\n // TODO: Fetch using hotelID + companyId, rather than frontendId\n const response = await fetch(this.getApiPath() + `hotel/${frontendId}/overrides${companyId ? `?companyId=${companyId}` : ''}`, {\n headers: await BaseAPI.getBaseHeaders(),\n });\n const json = await response.json();\n return json;\n };\n\n public fetchBookingWizardData = async (companyId: number): Promise<IBookingWizardSearchProperty[]> => {\n const response = await fetch(this.getApiPath() + `company/${companyId}/booking-wizard-data`, {\n headers: await BaseAPI.getBaseHeaders(),\n });\n const json = await response.json();\n return json;\n };\n\n private getQueryID = (params: any[]) => {\n return params.join('-');\n };\n}\n"]}
|
|
@@ -47,7 +47,6 @@ const BWBottomSheetHeader = ({ title, onClose }) => {
|
|
|
47
47
|
react_1.default.createElement("div", { className: (0, classnames_1.default)({
|
|
48
48
|
[BookingWizard_module_scss_1.default.title]: isImagesTheme,
|
|
49
49
|
}) }, title),
|
|
50
|
-
' ',
|
|
51
50
|
react_1.default.createElement(ui_1.Icon, { icon: ui_1.IconType.Close, onClick: onClose })));
|
|
52
51
|
};
|
|
53
52
|
exports.BWBottomSheetHeader = BWBottomSheetHeader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookingWizardBottomSheet.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qCAA8C;AAC9C,4DAAoC;AACpC,kDAAyC;AACzC,iDAA+C;AAC/C,yEAA0E;AAE1E,4DAAyD;AAEzD,8DAAsC;AACtC,oDAAuD;AACvD,6FAAkD;AAClD,kEAAiF;AACjF,MAAM,wBAAwB,GAA+B,CAAC,KAAK,EAAE,EAAE;IACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,KAA0B,KAAK,EAA1B,gBAAgB,UAAK,KAAK,EAApD,yBAA4C,CAAQ,CAAC;IAE3D,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,eAAK,CAAC,UAAU,CAAC,2CAAoB,CAAC,CAAC;IAEjF,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,4BAA4B,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAEjF,OAAO,CACH,8BAAC,uCAAW,kBAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,IAAM,gBAAgB,GAC9D,QAAQ,CACC,CACjB,CAAC;AACN,CAAC,CAAC;AAWK,MAAM,mBAAmB,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,GAAG,KAAK,EAA4B,EAAE,EAAE;IAC7I,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uCAAgB,GAAE,CAAC;IACrC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,IAAI,KAAK,KAAK,mCAAmB,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEtD,OAAO,CACH,uCAAK,SAAS,EAAE,mCAAM,CAAC,MAAM;QACxB,CAAC,QAAQ,CAAC,CAAC,CAAC,CACT,8BAAC,kBAAQ,IAAC,OAAO,QAAC,MAAM,QAAC,OAAO,QAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAE,IAAA,oBAAU,EAAC,mCAAM,CAAC,GAAG,EAAE,mCAAM,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,IACjH,QAAQ,IAAI,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CACpC,CACd,CAAC,CAAC,CAAC,CACA,0CAAW,CACd;QAED,8BAAC,kBAAQ,IAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,QAAC,OAAO,QAAC,MAAM,QAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAE,IAAA,oBAAU,EAAC,mCAAM,CAAC,GAAG,EAAE,mCAAM,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,IACvI,SAAS,IAAI,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CACrC,CACT,CACT,CAAC;AACN,CAAC,CAAC;AApBW,QAAA,mBAAmB,uBAoB9B;AAEK,MAAM,mBAAmB,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAA6C,EAAE,EAAE;IACjG,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,uCAAgB,GAAE,CAAC;IAC7C,OAAO,CACH,uCAAK,SAAS,EAAE,mCAAM,CAAC,MAAM;QACzB,uCACI,SAAS,EAAE,IAAA,oBAAU,EAAC;gBAClB,CAAC,mCAAM,CAAC,KAAK,CAAC,EAAE,aAAa;aAChC,CAAC,IAED,KAAK,CACJ;
|
|
1
|
+
{"version":3,"file":"BookingWizardBottomSheet.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qCAA8C;AAC9C,4DAAoC;AACpC,kDAAyC;AACzC,iDAA+C;AAC/C,yEAA0E;AAE1E,4DAAyD;AAEzD,8DAAsC;AACtC,oDAAuD;AACvD,6FAAkD;AAClD,kEAAiF;AACjF,MAAM,wBAAwB,GAA+B,CAAC,KAAK,EAAE,EAAE;IACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,KAA0B,KAAK,EAA1B,gBAAgB,UAAK,KAAK,EAApD,yBAA4C,CAAQ,CAAC;IAE3D,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,eAAK,CAAC,UAAU,CAAC,2CAAoB,CAAC,CAAC;IAEjF,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,4BAA4B,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAEjF,OAAO,CACH,8BAAC,uCAAW,kBAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,IAAM,gBAAgB,GAC9D,QAAQ,CACC,CACjB,CAAC;AACN,CAAC,CAAC;AAWK,MAAM,mBAAmB,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,GAAG,KAAK,EAA4B,EAAE,EAAE;IAC7I,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uCAAgB,GAAE,CAAC;IACrC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,IAAI,KAAK,KAAK,mCAAmB,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEtD,OAAO,CACH,uCAAK,SAAS,EAAE,mCAAM,CAAC,MAAM;QACxB,CAAC,QAAQ,CAAC,CAAC,CAAC,CACT,8BAAC,kBAAQ,IAAC,OAAO,QAAC,MAAM,QAAC,OAAO,QAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAE,IAAA,oBAAU,EAAC,mCAAM,CAAC,GAAG,EAAE,mCAAM,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,IACjH,QAAQ,IAAI,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CACpC,CACd,CAAC,CAAC,CAAC,CACA,0CAAW,CACd;QAED,8BAAC,kBAAQ,IAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,QAAC,OAAO,QAAC,MAAM,QAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAE,IAAA,oBAAU,EAAC,mCAAM,CAAC,GAAG,EAAE,mCAAM,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,IACvI,SAAS,IAAI,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CACrC,CACT,CACT,CAAC;AACN,CAAC,CAAC;AApBW,QAAA,mBAAmB,uBAoB9B;AAEK,MAAM,mBAAmB,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAA6C,EAAE,EAAE;IACjG,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,uCAAgB,GAAE,CAAC;IAC7C,OAAO,CACH,uCAAK,SAAS,EAAE,mCAAM,CAAC,MAAM;QACzB,uCACI,SAAS,EAAE,IAAA,oBAAU,EAAC;gBAClB,CAAC,mCAAM,CAAC,KAAK,CAAC,EAAE,aAAa;aAChC,CAAC,IAED,KAAK,CACJ;QACN,8BAAC,SAAI,IAAC,IAAI,EAAE,aAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAI,CAC9C,CACT,CAAC;AACN,CAAC,CAAC;AAdW,QAAA,mBAAmB,uBAc9B;AAEF,kBAAe,wBAAwB,CAAC","sourcesContent":["import { Icon, IconType } from '@roomstay/ui';\nimport classNames from 'classnames';\nimport React, { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { BottomSheet, BottomSheetProps } from 'react-spring-bottom-sheet';\n\nimport { Translation } from '@/translations/Translation';\n\nimport BEButton from '../../BEButton';\nimport { EBookingWizardTheme } from '../BookingWizard';\nimport styles from '../BookingWizard.module.scss';\nimport { BookingWizardContext, useBookingWizard } from '../BookingWizardContext';\nconst BookingWizardBottomSheet: React.FC<BottomSheetProps> = (props) => {\n const { children, className, ...bottomSheetProps } = props;\n\n const { style, className: bwClassname } = React.useContext(BookingWizardContext);\n\n const classes = classNames('roomstay-booking-container', bwClassname, className);\n\n return (\n <BottomSheet className={classes} style={style} {...bottomSheetProps}>\n {children}\n </BottomSheet>\n );\n};\n\ninterface BWBottomSheetFooterProps {\n onPrev?: () => void;\n onNext?: () => void;\n hidePrev?: boolean;\n preLabel?: string; // defaults to \"Back\"\n nextLabel?: string; // defaults to \"Next\"\n disabledNext?: boolean;\n}\n\nexport const BWBottomSheetFooter = ({ onPrev, onNext, hidePrev = false, preLabel, nextLabel, disabledNext = false }: BWBottomSheetFooterProps) => {\n const { theme } = useBookingWizard();\n const { t } = useTranslation();\n if (theme !== EBookingWizardTheme.Images) return null;\n\n return (\n <div className={styles.footer}>\n {!hidePrev ? (\n <BEButton rounded isText primary size=\"small\" className={classNames(styles.btn, styles['btn-cancel'])} onClick={onPrev}>\n {preLabel || t(Translation.Navigation.Back)}\n </BEButton>\n ) : (\n <div></div>\n )}\n\n <BEButton disabled={disabledNext} rounded primary filled size=\"small\" className={classNames(styles.btn, styles['btn-next'])} onClick={onNext}>\n {nextLabel || t(Translation.Navigation.Next)}\n </BEButton>\n </div>\n );\n};\n\nexport const BWBottomSheetHeader = ({ title, onClose }: { title: ReactNode; onClose: () => void }) => {\n const { isImagesTheme } = useBookingWizard();\n return (\n <div className={styles.header}>\n <div\n className={classNames({\n [styles.title]: isImagesTheme,\n })}\n >\n {title}\n </div>\n <Icon icon={IconType.Close} onClick={onClose} />\n </div>\n );\n};\n\nexport default BookingWizardBottomSheet;\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import 'react-spring-bottom-sheet/dist/style.css';
|
|
2
|
+
import { IconType } from '@roomstay/ui';
|
|
2
3
|
import React from 'react';
|
|
3
4
|
import { BookingWizardProperty } from '../../../models/BookingWizard/BookingWizardProperty';
|
|
4
5
|
import { TBookingWizardProperties } from '../../../models/BookingWizard/BookingWizardTypes';
|
|
@@ -23,10 +24,18 @@ export interface BookingWizardContentProps {
|
|
|
23
24
|
}
|
|
24
25
|
export declare const BookingWizardContent: React.FC<BookingWizardContentProps>;
|
|
25
26
|
export declare const BWPromoCodeSection: ({ inactive, hidden, setPromoCode, promoCode, onChange, valid, hideTooltip, t, isImagesTheme, divider, withLabel, }: BWPromoCodeSectionProps) => JSX.Element | null;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
onClick
|
|
29
|
-
|
|
27
|
+
type BWIconButtonProps = {
|
|
28
|
+
show: boolean;
|
|
29
|
+
onClick?: React.MouseEventHandler<HTMLDivElement>;
|
|
30
|
+
hasLabel?: boolean;
|
|
31
|
+
bottomSheet?: boolean;
|
|
32
|
+
hasSearchInput?: boolean;
|
|
33
|
+
icon: IconType;
|
|
34
|
+
name: string;
|
|
35
|
+
className: string;
|
|
36
|
+
};
|
|
37
|
+
export declare const BWClearButton: (props: Omit<BWIconButtonProps, 'icon' | 'name' | 'className'>) => JSX.Element;
|
|
38
|
+
export declare const BWSearchButton: (props: Omit<BWIconButtonProps, 'icon' | 'name' | 'className' | 'onClick'>) => JSX.Element;
|
|
30
39
|
interface BWPromoCodeSectionProps {
|
|
31
40
|
inactive: boolean;
|
|
32
41
|
hidden: boolean;
|
|
@@ -35,7 +35,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
35
35
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
36
|
};
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.BWClearButton = exports.BWPromoCodeSection = exports.BookingWizardContent = void 0;
|
|
38
|
+
exports.BWSearchButton = exports.BWClearButton = exports.BWPromoCodeSection = exports.BookingWizardContent = void 0;
|
|
39
39
|
require("react-spring-bottom-sheet/dist/style.css");
|
|
40
40
|
const contexts_1 = require("../../../contexts/index.js");
|
|
41
41
|
const ui_1 = require("@roomstay/ui");
|
|
@@ -157,7 +157,7 @@ const BookingWizardContent = ({ properties, selectedProperty: defaultProperty, d
|
|
|
157
157
|
[BookingWizard_module_scss_1.default['--vertical']]: bwContext.layout === 'button',
|
|
158
158
|
[BookingWizard_module_scss_1.default.inline]: bwContext.type === 'inline',
|
|
159
159
|
}, classname) },
|
|
160
|
-
react_1.default.createElement(BWPropertySelectorSection, { hidden: bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Property].hidden, inactive: bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Property].inactive, withLabel: !bwContext.isImagesThemeMobile, divider: !bwContext.isImagesThemeMobile, containerRef: hotelContainerRef, setContainerRef: setHotelContainerRef, properties: properties, selectedProperty: selectedProperty, setSelectedProperty: setSelectedProperty, classname: classname, t: t }),
|
|
160
|
+
react_1.default.createElement(BWPropertySelectorSection, { hidden: bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Property].hidden, inactive: bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Property].inactive, withLabel: !bwContext.isImagesThemeMobile, divider: !bwContext.isImagesThemeMobile, containerRef: hotelContainerRef, setContainerRef: setHotelContainerRef, properties: properties, selectedProperty: selectedProperty, setSelectedProperty: setSelectedProperty, classname: classname, t: t, searchConfig: engineConfig.searchConfig }),
|
|
161
161
|
react_1.default.createElement(BookingWizardDateSelector_1.BookingWizardDateSelector, { hidden: bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Date].hidden, inactive: bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Date].inactive, onChange: setDate, defaultStartDate: checkInDate ? (0, dayjs_1.default)(checkInDate) : undefined, defaultEndDate: checkOutDate ? (0, dayjs_1.default)(checkOutDate) : undefined, dateFormat: dateFormat, showYearOnCalendar: showYearOnCalendar, yearDisplayOption: yearDisplayOption, notes: bwContext.isImagesTheme ? (_j = engineConfig === null || engineConfig === void 0 ? void 0 : engineConfig.notes) === null || _j === void 0 ? void 0 : _j.date : undefined }),
|
|
162
162
|
react_1.default.createElement(BWGuestSelectorSection, { hidden: bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Guest].hidden, inactive: bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Guest].inactive, divider: !bwContext.isImagesThemeMobile, isImagesTheme: bwContext.isImagesTheme, containerRef: guestsContainerRef, setContainerRef: setGuestContainerRef, onChange: setGuest, maxAdults: maxAdults, disableChild: disableChild, showInfants: showInfants, disableRoom: disableRoom, config: guestAgeConfig, notes: bwContext.isImagesTheme ? (_k = engineConfig === null || engineConfig === void 0 ? void 0 : engineConfig.notes) === null || _k === void 0 ? void 0 : _k.guest : undefined, defaultValue: {
|
|
163
163
|
adults: adults,
|
|
@@ -187,18 +187,23 @@ const BookingWizardContent = ({ properties, selectedProperty: defaultProperty, d
|
|
|
187
187
|
react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizard_module_scss_1.default.action, BookingWizard_module_scss_1.default.centerItems, 'u-marg-top u-marg-top--light@l-') }, submitButton)))));
|
|
188
188
|
};
|
|
189
189
|
exports.BookingWizardContent = BookingWizardContent;
|
|
190
|
-
const BWPropertySelectorSection = ({ inactive, hidden, containerRef, setContainerRef, properties, selectedProperty, setSelectedProperty, classname, t, divider = true, withLabel = true, }) => {
|
|
190
|
+
const BWPropertySelectorSection = ({ inactive, hidden, containerRef, setContainerRef, properties, selectedProperty, setSelectedProperty, classname, t, divider = true, withLabel = true, searchConfig, }) => {
|
|
191
191
|
if (hidden)
|
|
192
192
|
return null;
|
|
193
|
+
const [focused, setFocused] = react_1.default.useState(false);
|
|
194
|
+
const [searchQuery, setSearchQuery] = (0, react_1.useState)('');
|
|
193
195
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
194
196
|
react_1.default.createElement("div", { ref: setContainerRef, className: (0, classnames_1.default)(BookingWizard_module_scss_1.default.item, BookingWizard_module_scss_1.default['item-hotel'], {
|
|
195
197
|
[BookingWizard_module_scss_1.default['inactive']]: inactive,
|
|
196
198
|
}) },
|
|
197
|
-
react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizard_module_scss_1.default['item-ellipsis-wrapper']) },
|
|
199
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizard_module_scss_1.default['item-ellipsis-wrapper']), onFocus: () => setFocused(true), onBlur: () => setFocused(false) },
|
|
198
200
|
withLabel && react_1.default.createElement("label", { className: BookingWizard_module_scss_1.default.label }, t(Translation_1.Translation.Misc.ChooseHotel)),
|
|
199
201
|
react_1.default.createElement(BookingWizardHotelSelector_1.BookingWizardHotelSelector, { followElement: containerRef, onChange: (value) => {
|
|
200
202
|
setSelectedProperty(value || undefined);
|
|
201
|
-
}, properties: properties, selectedProperty: selectedProperty, contentClassName: (0, classnames_1.default)(classname)
|
|
203
|
+
}, properties: properties, selectedProperty: selectedProperty, contentClassName: (0, classnames_1.default)(classname), searchConfig: searchConfig
|
|
204
|
+
? Object.assign(Object.assign({}, searchConfig), { searchQuery,
|
|
205
|
+
setSearchQuery,
|
|
206
|
+
focused }) : undefined }))),
|
|
202
207
|
divider ? (react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizard_module_scss_1.default.divider, {
|
|
203
208
|
[BookingWizard_module_scss_1.default['inactive']]: inactive,
|
|
204
209
|
}) })) : null));
|
|
@@ -233,7 +238,7 @@ const BWGuestSelectorSection = ({ inactive, hidden, containerRef, setContainerRe
|
|
|
233
238
|
react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizard_module_scss_1.default['item-fullwidth'], BookingWizard_module_scss_1.default['item-ellipsis-wrapper']) },
|
|
234
239
|
react_1.default.createElement("label", { className: BookingWizard_module_scss_1.default.label }, t(Translation_1.Translation.Misc.Guests)),
|
|
235
240
|
react_1.default.createElement(BookingWizardGuestSelector_1.BookingWizardGuestSelector, Object.assign({ defaultValue: defaultValue, onChange: onChange, maxAdults: maxAdults, disableChild: disableChild, showInfants: showInfants, disableRoom: disableRoom, followElement: containerRef }, config, { notes: isImagesTheme ? notes : undefined, onOverlayOpenChange: onOverlayOpenChange, promoCodeConfig: promoCodeConfig, submitConfig: submitConfig }))),
|
|
236
|
-
isImagesTheme && react_1.default.createElement(exports.BWClearButton, {
|
|
241
|
+
isImagesTheme && react_1.default.createElement(exports.BWClearButton, { show: isOverlayOpen, onClick: onClearHandler })))));
|
|
237
242
|
};
|
|
238
243
|
const BWPromoCodeSection = ({ inactive, hidden, setPromoCode, promoCode, onChange, valid, hideTooltip, t, isImagesTheme, divider = true, withLabel = true, }) => {
|
|
239
244
|
if (hidden)
|
|
@@ -255,13 +260,22 @@ const BWPromoCodeSection = ({ inactive, hidden, setPromoCode, promoCode, onChang
|
|
|
255
260
|
react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizard_module_scss_1.default['item-fullwidth'], BookingWizard_module_scss_1.default['item-ellipsis-wrapper']) },
|
|
256
261
|
withLabel && react_1.default.createElement("label", { className: BookingWizard_module_scss_1.default.label }, t(Translation_1.Translation.Misc.Promocode)),
|
|
257
262
|
react_1.default.createElement(BookingWizardPromoCode_1.BookingWizardPromoCode, { promoCode: promoCode, onChange: onChange, valid: valid, hideTooltip: hideTooltip })),
|
|
258
|
-
isImagesTheme && react_1.default.createElement(exports.BWClearButton, {
|
|
263
|
+
isImagesTheme && react_1.default.createElement(exports.BWClearButton, { show: focused, onClick: onClearHandler })))));
|
|
259
264
|
};
|
|
260
265
|
exports.BWPromoCodeSection = BWPromoCodeSection;
|
|
261
266
|
const SubmitButtonSection = ({ button }) => react_1.default.createElement("div", { className: BookingWizard_module_scss_1.default.action }, button);
|
|
262
|
-
const
|
|
263
|
-
|
|
264
|
-
|
|
267
|
+
const BWIconButton = ({ show, onClick, hasLabel = false, bottomSheet = false, hasSearchInput = false, icon, name, className }) => {
|
|
268
|
+
if (!show)
|
|
269
|
+
return null;
|
|
270
|
+
return (react_1.default.createElement("div", { onMouseDown: (e) => e.preventDefault(), onClick: onClick, className: (0, classnames_1.default)(className, {
|
|
271
|
+
[BookingWizard_module_scss_1.default['--has-label']]: hasLabel,
|
|
272
|
+
[BookingWizard_module_scss_1.default['--bottom-sheet']]: bottomSheet,
|
|
273
|
+
[BookingWizard_module_scss_1.default['--has-search-input']]: hasSearchInput,
|
|
274
|
+
}) },
|
|
275
|
+
react_1.default.createElement(ui_1.Icon, { icon: icon, name: name })));
|
|
265
276
|
};
|
|
277
|
+
const BWClearButton = (props) => (react_1.default.createElement(BWIconButton, Object.assign({}, props, { icon: ui_1.IconType.Close, name: "Clear", className: BookingWizard_module_scss_1.default['clear-button'] })));
|
|
266
278
|
exports.BWClearButton = BWClearButton;
|
|
279
|
+
const BWSearchButton = (props) => (react_1.default.createElement(BWIconButton, Object.assign({}, props, { icon: ui_1.IconType.Search, name: "Search", className: BookingWizard_module_scss_1.default['search-button'] })));
|
|
280
|
+
exports.BWSearchButton = BWSearchButton;
|
|
267
281
|
//# sourceMappingURL=BookingWizardContent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookingWizardContent.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardContent.tsx"],"names":[],"mappings":"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","sourcesContent":["import 'react-spring-bottom-sheet/dist/style.css';\n\nimport { BookingEngineContext } from '@frontend/contexts';\nimport { Icon, IconType } from '@roomstay/ui';\nimport classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport AvailabilityAPI from '@/api/AvailabilityAPI';\nimport { BookingWizardEngineConfig } from '@/engines/BookingWizardEngine/BookingWizardEngine';\nimport { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nimport { TBookingWizardProperties } from '@/models/BookingWizard/BookingWizardTypes';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { Translation } from '@/translations/Translation';\n\nimport BEButton from '../BEButton';\nimport { EBookingWizardSection } from './BookingWizard';\nimport styles from './BookingWizard.module.scss';\nimport { BookingWizardContext, BookingWizardOnBooking } from './BookingWizardContext';\nimport { BookingWizardDateSelector } from './BookingWizardDateSelector/BookingWizardDateSelector';\nimport { BookingWizardGuestSelector, BookingWizardGuestSelectorProps } from './BookingWizardGuestSelector/BookingWizardGuestSelector';\nimport { BookingWizardHotelSelector } from './BookingWizardHotelSelector/BookingWizardHotelSelector';\nimport { BookingWizardPromoCode } from './BookingWizardPromoCode/BookingWizardPromoCode';\n\nexport interface BookingWizardContentProps {\n defaultColors: BookingWizardProperty['colors'];\n properties: TBookingWizardProperties;\n selectedProperty?: BookingWizardProperty;\n classname?: string;\n maxAdults?: number;\n disableChild?: boolean;\n showInfants?: boolean;\n disableRoom?: boolean;\n hideGuestSelect?: boolean;\n hidePromocode?: boolean;\n hideProperty?: boolean;\n defaultValues?: Partial<Omit<BookingWizardOnBooking, 'id' | 'checkIn' | 'checkout'>> & { checkIn?: string; checkout?: string };\n dateFormat?: string;\n}\n\nexport const BookingWizardContent: React.FC<BookingWizardContentProps> = ({\n properties,\n selectedProperty: defaultProperty,\n defaultColors,\n classname,\n maxAdults,\n disableChild,\n showInfants,\n disableRoom,\n defaultValues,\n dateFormat,\n}) => {\n const bwContext = useContext(BookingWizardContext);\n const beContext = useContext(BookingEngineContext);\n\n const { t } = useTranslation();\n\n const [checkInDate, setCheckInDate] = useState<Dayjs | null>(defaultValues?.checkIn ? dayjs(defaultValues?.checkIn) : dayjs());\n const [checkOutDate, setCheckOutDate] = useState<Dayjs | null>(defaultValues?.checkout ? dayjs(defaultValues?.checkout) : dayjs().add(1, 'days'));\n const [adults, setAdults] = useState<number>(defaultValues?.guests?.adults ?? 1);\n const [children, setChildren] = useState<number>(defaultValues?.guests?.children ?? 0);\n const [infants, setInfants] = useState<number>(defaultValues?.guests?.infants ?? 0);\n const [room, setRoom] = useState<number>(defaultValues?.guests?.room ?? 1);\n const [promoCode, setPromoCode] = useState<string>(defaultValues?.promoCode || '');\n const [promoCodeValid, setPromoCodeValid] = useState<boolean>();\n const [selectedProperty, setSelectedProperty] = useState<BookingWizardProperty | undefined>(defaultProperty);\n const [hotelContainerRef, setHotelContainerRef] = useState<HTMLDivElement | null>(null);\n const [guestsContainerRef, setGuestContainerRef] = useState<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (selectedProperty?.colors) {\n RoomstayThemeEngine.changeTheme(selectedProperty.colors);\n } else if (defaultColors) {\n RoomstayThemeEngine.changeTheme(defaultColors);\n }\n }, [selectedProperty]);\n\n const engineConfig = beContext.engine.getConfig() as BookingWizardEngineConfig;\n const guestAgeConfig = engineConfig.guestAgeConfig;\n\n const yearDisplayOption = useMemo(() => {\n return selectedProperty?.yearDisplayOption ?? engineConfig.yearDisplayOption ?? '';\n }, [selectedProperty]);\n\n const showYearOnCalendar = useMemo(() => {\n return !!(selectedProperty?.showYearOnCalendar ?? engineConfig.showYearOnCalendar ?? '');\n }, [selectedProperty]);\n\n const setGuest = (guests: BookingWizardOnBooking['guests']) => {\n setAdults(guests.adults);\n setChildren(guests.children);\n setInfants(guests.infants);\n setRoom(guests.room);\n };\n\n const setDate = (startDate: dayjs.Dayjs | null, endDate: dayjs.Dayjs | null) => {\n setCheckInDate(startDate);\n setCheckOutDate(endDate);\n };\n\n const isValid = () => {\n const isPropertyHidden = bwContext.stateSections[EBookingWizardSection.Property].hidden;\n const isGuestSelectHidden = bwContext.stateSections[EBookingWizardSection.Guest].hidden;\n\n if (!isPropertyHidden && !selectedProperty) return false;\n if (!checkInDate) return false;\n if (!checkOutDate) return false;\n if (!isGuestSelectHidden && adults + children <= 0) return false;\n\n return true;\n };\n\n const _onSubmit = () => {\n if (!isValid()) return false;\n\n // After passing validation, we pass the function up the chain for the engine\n // Implementor to decide where the user should be redirected to\n // This is to give the hotel team a chance to add tracking, or modify the request on their end.\n bwContext.onSubmit?.({\n id: selectedProperty?.id as string,\n checkIn: checkInDate as Dayjs,\n checkout: checkOutDate as Dayjs,\n promoCode,\n guests: {\n adults,\n children,\n infants,\n room,\n },\n });\n };\n\n const _onPromoCodeChange = async (value?: string) => {\n setPromoCode?.(value || '');\n if (!value) {\n setPromoCodeValid(undefined);\n } else if (isValid() && selectedProperty && selectedProperty?.id !== 'All' && checkInDate && checkOutDate) {\n const result = await new AvailabilityAPI().fetchAvailability({\n fromDate: checkInDate,\n toDate: checkOutDate,\n adults,\n children,\n infants,\n promoCode: value,\n hotelId: selectedProperty?.id,\n promoOnly: true,\n });\n\n const rate = Object.values(result.ratePlans).find((rate: any) => rate.promoCode === value);\n setPromoCodeValid(!!rate);\n }\n };\n\n const submitButton = (\n <BEButton disabled={!isValid()} className={styles.bookNowBtn} onClick={_onSubmit}>\n {t(Translation.Misc.BookNow)}\n </BEButton>\n );\n\n return (\n <>\n <div\n className={classNames(\n styles.content,\n styles[`--${bwContext.layout}`],\n {\n [styles['--vertical']]: bwContext.layout === 'button',\n [styles.inline]: bwContext.type === 'inline',\n },\n classname\n )}\n >\n <BWPropertySelectorSection\n hidden={bwContext.stateSections[EBookingWizardSection.Property].hidden}\n inactive={bwContext.stateSections[EBookingWizardSection.Property].inactive}\n withLabel={!bwContext.isImagesThemeMobile}\n divider={!bwContext.isImagesThemeMobile}\n containerRef={hotelContainerRef}\n setContainerRef={setHotelContainerRef}\n properties={properties}\n selectedProperty={selectedProperty}\n setSelectedProperty={setSelectedProperty}\n classname={classname}\n t={t}\n />\n\n <BookingWizardDateSelector\n hidden={bwContext.stateSections[EBookingWizardSection.Date].hidden}\n inactive={bwContext.stateSections[EBookingWizardSection.Date].inactive}\n onChange={setDate}\n defaultStartDate={checkInDate ? dayjs(checkInDate) : undefined}\n defaultEndDate={checkOutDate ? dayjs(checkOutDate) : undefined}\n dateFormat={dateFormat}\n showYearOnCalendar={showYearOnCalendar}\n yearDisplayOption={yearDisplayOption}\n notes={bwContext.isImagesTheme ? engineConfig?.notes?.date : undefined}\n />\n\n <BWGuestSelectorSection\n hidden={bwContext.stateSections[EBookingWizardSection.Guest].hidden}\n inactive={bwContext.stateSections[EBookingWizardSection.Guest].inactive}\n divider={!bwContext.isImagesThemeMobile}\n isImagesTheme={bwContext.isImagesTheme}\n containerRef={guestsContainerRef}\n setContainerRef={setGuestContainerRef}\n onChange={setGuest}\n maxAdults={maxAdults}\n disableChild={disableChild}\n showInfants={showInfants}\n disableRoom={disableRoom}\n config={guestAgeConfig}\n notes={bwContext.isImagesTheme ? engineConfig?.notes?.guest : undefined}\n defaultValue={{\n adults: adults,\n children: children,\n room: room,\n infants: infants,\n }}\n defaultGuestConfig={{\n adults: defaultValues?.guests?.adults,\n children: defaultValues?.guests?.children,\n room: defaultValues?.guests?.room,\n infants: defaultValues?.guests?.infants,\n }}\n promoCodeConfig={{\n divider: false,\n withLabel: true,\n promoCode,\n setPromoCode,\n onChange: _onPromoCodeChange,\n valid: promoCodeValid,\n hideTooltip: engineConfig.hideTooltips,\n }}\n submitConfig={{\n onSubmit: _onSubmit,\n disabledNext: !isValid(),\n }}\n />\n\n <BWPromoCodeSection\n hidden={bwContext.stateSections[EBookingWizardSection.Promo].hidden}\n inactive={bwContext.stateSections[EBookingWizardSection.Promo].inactive}\n isImagesTheme={bwContext.isImagesTheme}\n setPromoCode={setPromoCode}\n promoCode={promoCode}\n onChange={_onPromoCodeChange}\n valid={promoCodeValid}\n hideTooltip={engineConfig.hideTooltips}\n t={t}\n divider\n withLabel\n />\n\n {bwContext.layout !== 'horizontal-condensed' && !bwContext.isImagesThemeMobile && <SubmitButtonSection button={submitButton} />}\n </div>\n\n {bwContext.layout === 'horizontal-condensed' && !bwContext.isImagesThemeMobile && (\n <div className={classNames(styles.content, classname)}>\n <div className={classNames(styles.action, styles.centerItems, 'u-marg-top u-marg-top--light@l-')}>{submitButton}</div>\n </div>\n )}\n </>\n );\n};\n\nconst BWPropertySelectorSection = ({\n inactive,\n hidden,\n containerRef,\n setContainerRef,\n properties,\n selectedProperty,\n setSelectedProperty,\n classname,\n t,\n divider = true,\n withLabel = true,\n}: BWPropertySelectorSectionProps) => {\n if (hidden) return null;\n return (\n <>\n <div\n ref={setContainerRef}\n className={classNames(styles.item, styles['item-hotel'], {\n [styles['inactive']]: inactive,\n })}\n >\n <div className={classNames(styles['item-ellipsis-wrapper'])}>\n {withLabel && <label className={styles.label}>{t(Translation.Misc.ChooseHotel)}</label>}\n <BookingWizardHotelSelector\n followElement={containerRef}\n onChange={(value) => {\n setSelectedProperty(value || undefined);\n }}\n properties={properties}\n selectedProperty={selectedProperty}\n contentClassName={classNames(classname)}\n />\n </div>\n </div>\n {divider ? (\n <div\n className={classNames(styles.divider, {\n [styles['inactive']]: inactive,\n })}\n />\n ) : null}\n </>\n );\n};\n\nconst BWGuestSelectorSection = ({\n inactive,\n hidden,\n containerRef,\n setContainerRef,\n defaultValue: _defaultValue,\n onChange,\n maxAdults,\n disableChild,\n showInfants,\n disableRoom,\n config,\n notes,\n defaultGuestConfig,\n divider,\n promoCodeConfig,\n submitConfig,\n isImagesTheme,\n}: BWGuestSelectorSectionProps) => {\n if (hidden) return null;\n const { t } = useTranslation();\n const [isOverlayOpen, setIsOverlayOpen] = useState<boolean>(false);\n const [defaultValue, setDefaultValue] = useState<BookingWizardGuestSelectorProps['defaultValue']>(_defaultValue);\n\n const onOverlayOpenChange = (isOpen: boolean) => {\n setIsOverlayOpen(isOpen);\n };\n const onClearHandler = () => {\n const emptyValues: BookingWizardOnBooking['guests'] = {\n adults: 0,\n children: 0,\n room: 0,\n infants: 0,\n };\n onChange({ ...emptyValues });\n setDefaultValue({ ...emptyValues });\n };\n\n return (\n <>\n {divider ? (\n <div\n className={classNames(styles.divider, {\n [styles['inactive']]: inactive,\n })}\n />\n ) : null}\n <div\n ref={setContainerRef}\n className={classNames(styles.item, {\n [styles['inactive']]: inactive,\n })}\n >\n <div className={styles['item-with-icon']}>\n <div className={classNames(styles['item-fullwidth'], styles['item-ellipsis-wrapper'])}>\n <label className={styles.label}>{t(Translation.Misc.Guests)}</label>\n <BookingWizardGuestSelector\n defaultValue={defaultValue}\n onChange={onChange}\n maxAdults={maxAdults}\n disableChild={disableChild}\n showInfants={showInfants}\n disableRoom={disableRoom}\n followElement={containerRef}\n {...config}\n notes={isImagesTheme ? notes : undefined}\n onOverlayOpenChange={onOverlayOpenChange}\n promoCodeConfig={promoCodeConfig}\n submitConfig={submitConfig}\n />\n </div>\n {isImagesTheme && <BWClearButton hidden={isOverlayOpen} onClick={onClearHandler} />}\n </div>\n </div>\n </>\n );\n};\n\nexport const BWPromoCodeSection = ({\n inactive,\n hidden,\n setPromoCode,\n promoCode,\n onChange,\n valid,\n hideTooltip,\n t,\n isImagesTheme,\n divider = true,\n withLabel = true,\n}: BWPromoCodeSectionProps) => {\n if (hidden) return null;\n const onClearHandler = (event: MouseEvent) => {\n setPromoCode('');\n event.preventDefault();\n event.stopPropagation();\n };\n const [focused, setFocused] = React.useState<boolean>(false);\n return (\n <>\n {divider ? (\n <div\n className={classNames(styles.divider, {\n [styles['inactive']]: inactive,\n })}\n />\n ) : null}\n <div\n className={classNames(styles.item, styles['item-promo-code-wrapper'], {\n [styles['inactive']]: inactive,\n })}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n >\n <div className={styles['item-with-icon']}>\n <div className={classNames(styles['item-fullwidth'], styles['item-ellipsis-wrapper'])}>\n {withLabel && <label className={styles.label}>{t(Translation.Misc.Promocode)}</label>}\n <BookingWizardPromoCode promoCode={promoCode} onChange={onChange} valid={valid} hideTooltip={hideTooltip} />\n </div>\n\n {isImagesTheme && <BWClearButton hidden={focused} onClick={onClearHandler} />}\n </div>\n </div>\n </>\n );\n};\n\nconst SubmitButtonSection = ({ button }: { button: React.ReactNode }) => <div className={styles.action}>{button}</div>;\n\nexport const BWClearButton = ({ hidden, onClick }: { hidden: boolean; onClick: any }) => {\n return hidden ? (\n <div onMouseDown={(e) => e.preventDefault()} className={styles['clear-button']} onClick={onClick}>\n {/* Add onMouseDown to Prevent blur when clicking this button */}\n <Icon icon={IconType.Close} name=\"Clear\" />\n </div>\n ) : (\n <></>\n );\n};\n\n// Interface\ninterface GuestValue {\n adults?: number;\n children?: number;\n infants?: number;\n room?: number;\n}\n\ninterface GuestAgeConfig {\n minAdultAge?: number;\n maxAdultAge?: number;\n ageRange?: {\n child?: { min?: number; max?: number };\n infant?: { min?: number; max?: number };\n };\n}\ninterface BWGuestSelectorSectionProps {\n hidden?: boolean;\n inactive?: boolean;\n isImagesTheme?: boolean;\n containerRef?: HTMLDivElement | null;\n setContainerRef?: React.Dispatch<React.SetStateAction<HTMLDivElement | null>>;\n onChange: (guests: BookingWizardOnBooking['guests']) => void;\n maxAdults?: number | undefined;\n disableChild?: boolean;\n showInfants?: boolean;\n disableRoom?: boolean;\n config?: GuestAgeConfig;\n notes?: React.ReactNode | undefined;\n defaultValue?: GuestValue;\n defaultGuestConfig?: GuestValue;\n divider: boolean;\n promoCodeConfig?: BookingWizardGuestSelectorProps['promoCodeConfig'];\n submitConfig?: BookingWizardGuestSelectorProps['submitConfig'];\n}\ninterface BWPromoCodeSectionProps {\n inactive: boolean;\n hidden: boolean;\n setPromoCode: React.Dispatch<React.SetStateAction<string>>;\n promoCode: string;\n onChange: (value?: string) => Promise<void>;\n valid?: boolean;\n hideTooltip?: boolean;\n t: (key: string) => string;\n isImagesTheme: boolean;\n divider: boolean;\n withLabel: boolean;\n}\ninterface BWPropertySelectorSectionProps {\n inactive?: boolean;\n hidden?: boolean;\n containerRef?: HTMLDivElement | null;\n setContainerRef?: React.Dispatch<React.SetStateAction<HTMLDivElement | null>>;\n properties: TBookingWizardProperties;\n selectedProperty?: BookingWizardProperty | undefined;\n setSelectedProperty: React.Dispatch<React.SetStateAction<BookingWizardProperty | undefined>>;\n classname?: string;\n t: (key: string) => string;\n divider?: boolean;\n withLabel?: boolean;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BookingWizardContent.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardContent.tsx"],"names":[],"mappings":"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","sourcesContent":["import 'react-spring-bottom-sheet/dist/style.css';\n\nimport { BookingEngineContext } from '@frontend/contexts';\nimport { Icon, IconType } from '@roomstay/ui';\nimport classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport AvailabilityAPI from '@/api/AvailabilityAPI';\nimport { BookingWizardEngineConfig } from '@/engines/BookingWizardEngine/BookingWizardEngine';\nimport { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nimport { TBookingWizardProperties } from '@/models/BookingWizard/BookingWizardTypes';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { Translation } from '@/translations/Translation';\n\nimport BEButton from '../BEButton';\nimport { EBookingWizardSection } from './BookingWizard';\nimport styles from './BookingWizard.module.scss';\nimport { BookingWizardContext, BookingWizardOnBooking } from './BookingWizardContext';\nimport { BookingWizardDateSelector } from './BookingWizardDateSelector/BookingWizardDateSelector';\nimport { BookingWizardGuestSelector, BookingWizardGuestSelectorProps } from './BookingWizardGuestSelector/BookingWizardGuestSelector';\nimport { BookingWizardHotelSelector } from './BookingWizardHotelSelector/BookingWizardHotelSelector';\nimport { BookingWizardPromoCode } from './BookingWizardPromoCode/BookingWizardPromoCode';\n\nexport interface BookingWizardContentProps {\n defaultColors: BookingWizardProperty['colors'];\n properties: TBookingWizardProperties;\n selectedProperty?: BookingWizardProperty;\n classname?: string;\n maxAdults?: number;\n disableChild?: boolean;\n showInfants?: boolean;\n disableRoom?: boolean;\n hideGuestSelect?: boolean;\n hidePromocode?: boolean;\n hideProperty?: boolean;\n defaultValues?: Partial<Omit<BookingWizardOnBooking, 'id' | 'checkIn' | 'checkout'>> & { checkIn?: string; checkout?: string };\n dateFormat?: string;\n}\n\nexport const BookingWizardContent: React.FC<BookingWizardContentProps> = ({\n properties,\n selectedProperty: defaultProperty,\n defaultColors,\n classname,\n maxAdults,\n disableChild,\n showInfants,\n disableRoom,\n defaultValues,\n dateFormat,\n}) => {\n const bwContext = useContext(BookingWizardContext);\n const beContext = useContext(BookingEngineContext);\n\n const { t } = useTranslation();\n\n const [checkInDate, setCheckInDate] = useState<Dayjs | null>(defaultValues?.checkIn ? dayjs(defaultValues?.checkIn) : dayjs());\n const [checkOutDate, setCheckOutDate] = useState<Dayjs | null>(defaultValues?.checkout ? dayjs(defaultValues?.checkout) : dayjs().add(1, 'days'));\n const [adults, setAdults] = useState<number>(defaultValues?.guests?.adults ?? 1);\n const [children, setChildren] = useState<number>(defaultValues?.guests?.children ?? 0);\n const [infants, setInfants] = useState<number>(defaultValues?.guests?.infants ?? 0);\n const [room, setRoom] = useState<number>(defaultValues?.guests?.room ?? 1);\n const [promoCode, setPromoCode] = useState<string>(defaultValues?.promoCode || '');\n const [promoCodeValid, setPromoCodeValid] = useState<boolean>();\n const [selectedProperty, setSelectedProperty] = useState<BookingWizardProperty | undefined>(defaultProperty);\n const [hotelContainerRef, setHotelContainerRef] = useState<HTMLDivElement | null>(null);\n const [guestsContainerRef, setGuestContainerRef] = useState<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (selectedProperty?.colors) {\n RoomstayThemeEngine.changeTheme(selectedProperty.colors);\n } else if (defaultColors) {\n RoomstayThemeEngine.changeTheme(defaultColors);\n }\n }, [selectedProperty]);\n\n const engineConfig = beContext.engine.getConfig() as BookingWizardEngineConfig;\n const guestAgeConfig = engineConfig.guestAgeConfig;\n\n const yearDisplayOption = useMemo(() => {\n return selectedProperty?.yearDisplayOption ?? engineConfig.yearDisplayOption ?? '';\n }, [selectedProperty]);\n\n const showYearOnCalendar = useMemo(() => {\n return !!(selectedProperty?.showYearOnCalendar ?? engineConfig.showYearOnCalendar ?? '');\n }, [selectedProperty]);\n\n const setGuest = (guests: BookingWizardOnBooking['guests']) => {\n setAdults(guests.adults);\n setChildren(guests.children);\n setInfants(guests.infants);\n setRoom(guests.room);\n };\n\n const setDate = (startDate: dayjs.Dayjs | null, endDate: dayjs.Dayjs | null) => {\n setCheckInDate(startDate);\n setCheckOutDate(endDate);\n };\n\n const isValid = () => {\n const isPropertyHidden = bwContext.stateSections[EBookingWizardSection.Property].hidden;\n const isGuestSelectHidden = bwContext.stateSections[EBookingWizardSection.Guest].hidden;\n\n if (!isPropertyHidden && !selectedProperty) return false;\n if (!checkInDate) return false;\n if (!checkOutDate) return false;\n if (!isGuestSelectHidden && adults + children <= 0) return false;\n\n return true;\n };\n\n const _onSubmit = () => {\n if (!isValid()) return false;\n\n // After passing validation, we pass the function up the chain for the engine\n // Implementor to decide where the user should be redirected to\n // This is to give the hotel team a chance to add tracking, or modify the request on their end.\n bwContext.onSubmit?.({\n id: selectedProperty?.id as string,\n checkIn: checkInDate as Dayjs,\n checkout: checkOutDate as Dayjs,\n promoCode,\n guests: {\n adults,\n children,\n infants,\n room,\n },\n });\n };\n\n const _onPromoCodeChange = async (value?: string) => {\n setPromoCode?.(value || '');\n if (!value) {\n setPromoCodeValid(undefined);\n } else if (isValid() && selectedProperty && selectedProperty?.id !== 'All' && checkInDate && checkOutDate) {\n const result = await new AvailabilityAPI().fetchAvailability({\n fromDate: checkInDate,\n toDate: checkOutDate,\n adults,\n children,\n infants,\n promoCode: value,\n hotelId: selectedProperty?.id,\n promoOnly: true,\n });\n\n const rate = Object.values(result.ratePlans).find((rate: any) => rate.promoCode === value);\n setPromoCodeValid(!!rate);\n }\n };\n\n const submitButton = (\n <BEButton disabled={!isValid()} className={styles.bookNowBtn} onClick={_onSubmit}>\n {t(Translation.Misc.BookNow)}\n </BEButton>\n );\n\n return (\n <>\n <div\n className={classNames(\n styles.content,\n styles[`--${bwContext.layout}`],\n {\n [styles['--vertical']]: bwContext.layout === 'button',\n [styles.inline]: bwContext.type === 'inline',\n },\n classname\n )}\n >\n <BWPropertySelectorSection\n hidden={bwContext.stateSections[EBookingWizardSection.Property].hidden}\n inactive={bwContext.stateSections[EBookingWizardSection.Property].inactive}\n withLabel={!bwContext.isImagesThemeMobile}\n divider={!bwContext.isImagesThemeMobile}\n containerRef={hotelContainerRef}\n setContainerRef={setHotelContainerRef}\n properties={properties}\n selectedProperty={selectedProperty}\n setSelectedProperty={setSelectedProperty}\n classname={classname}\n t={t}\n searchConfig={engineConfig.searchConfig}\n />\n\n <BookingWizardDateSelector\n hidden={bwContext.stateSections[EBookingWizardSection.Date].hidden}\n inactive={bwContext.stateSections[EBookingWizardSection.Date].inactive}\n onChange={setDate}\n defaultStartDate={checkInDate ? dayjs(checkInDate) : undefined}\n defaultEndDate={checkOutDate ? dayjs(checkOutDate) : undefined}\n dateFormat={dateFormat}\n showYearOnCalendar={showYearOnCalendar}\n yearDisplayOption={yearDisplayOption}\n notes={bwContext.isImagesTheme ? engineConfig?.notes?.date : undefined}\n />\n\n <BWGuestSelectorSection\n hidden={bwContext.stateSections[EBookingWizardSection.Guest].hidden}\n inactive={bwContext.stateSections[EBookingWizardSection.Guest].inactive}\n divider={!bwContext.isImagesThemeMobile}\n isImagesTheme={bwContext.isImagesTheme}\n containerRef={guestsContainerRef}\n setContainerRef={setGuestContainerRef}\n onChange={setGuest}\n maxAdults={maxAdults}\n disableChild={disableChild}\n showInfants={showInfants}\n disableRoom={disableRoom}\n config={guestAgeConfig}\n notes={bwContext.isImagesTheme ? engineConfig?.notes?.guest : undefined}\n defaultValue={{\n adults: adults,\n children: children,\n room: room,\n infants: infants,\n }}\n defaultGuestConfig={{\n adults: defaultValues?.guests?.adults,\n children: defaultValues?.guests?.children,\n room: defaultValues?.guests?.room,\n infants: defaultValues?.guests?.infants,\n }}\n promoCodeConfig={{\n divider: false,\n withLabel: true,\n promoCode,\n setPromoCode,\n onChange: _onPromoCodeChange,\n valid: promoCodeValid,\n hideTooltip: engineConfig.hideTooltips,\n }}\n submitConfig={{\n onSubmit: _onSubmit,\n disabledNext: !isValid(),\n }}\n />\n\n <BWPromoCodeSection\n hidden={bwContext.stateSections[EBookingWizardSection.Promo].hidden}\n inactive={bwContext.stateSections[EBookingWizardSection.Promo].inactive}\n isImagesTheme={bwContext.isImagesTheme}\n setPromoCode={setPromoCode}\n promoCode={promoCode}\n onChange={_onPromoCodeChange}\n valid={promoCodeValid}\n hideTooltip={engineConfig.hideTooltips}\n t={t}\n divider\n withLabel\n />\n\n {bwContext.layout !== 'horizontal-condensed' && !bwContext.isImagesThemeMobile && <SubmitButtonSection button={submitButton} />}\n </div>\n\n {bwContext.layout === 'horizontal-condensed' && !bwContext.isImagesThemeMobile && (\n <div className={classNames(styles.content, classname)}>\n <div className={classNames(styles.action, styles.centerItems, 'u-marg-top u-marg-top--light@l-')}>{submitButton}</div>\n </div>\n )}\n </>\n );\n};\n\nconst BWPropertySelectorSection = ({\n inactive,\n hidden,\n containerRef,\n setContainerRef,\n properties,\n selectedProperty,\n setSelectedProperty,\n classname,\n t,\n divider = true,\n withLabel = true,\n searchConfig,\n}: BWPropertySelectorSectionProps) => {\n if (hidden) return null;\n\n const [focused, setFocused] = React.useState<boolean>(false);\n const [searchQuery, setSearchQuery] = useState<string>('');\n\n return (\n <>\n <div\n ref={setContainerRef}\n className={classNames(styles.item, styles['item-hotel'], {\n [styles['inactive']]: inactive,\n })}\n >\n <div className={classNames(styles['item-ellipsis-wrapper'])} onFocus={() => setFocused(true)} onBlur={() => setFocused(false)}>\n {withLabel && <label className={styles.label}>{t(Translation.Misc.ChooseHotel)}</label>}\n <BookingWizardHotelSelector\n followElement={containerRef}\n onChange={(value) => {\n setSelectedProperty(value || undefined);\n }}\n properties={properties}\n selectedProperty={selectedProperty}\n contentClassName={classNames(classname)}\n searchConfig={\n searchConfig\n ? {\n ...searchConfig,\n searchQuery,\n setSearchQuery,\n focused,\n }\n : undefined\n }\n />\n </div>\n </div>\n {divider ? (\n <div\n className={classNames(styles.divider, {\n [styles['inactive']]: inactive,\n })}\n />\n ) : null}\n </>\n );\n};\n\nconst BWGuestSelectorSection = ({\n inactive,\n hidden,\n containerRef,\n setContainerRef,\n defaultValue: _defaultValue,\n onChange,\n maxAdults,\n disableChild,\n showInfants,\n disableRoom,\n config,\n notes,\n defaultGuestConfig,\n divider,\n promoCodeConfig,\n submitConfig,\n isImagesTheme,\n}: BWGuestSelectorSectionProps) => {\n if (hidden) return null;\n const { t } = useTranslation();\n const [isOverlayOpen, setIsOverlayOpen] = useState<boolean>(false);\n const [defaultValue, setDefaultValue] = useState<BookingWizardGuestSelectorProps['defaultValue']>(_defaultValue);\n\n const onOverlayOpenChange = (isOpen: boolean) => {\n setIsOverlayOpen(isOpen);\n };\n const onClearHandler = () => {\n const emptyValues: BookingWizardOnBooking['guests'] = {\n adults: 0,\n children: 0,\n room: 0,\n infants: 0,\n };\n onChange({ ...emptyValues });\n setDefaultValue({ ...emptyValues });\n };\n\n return (\n <>\n {divider ? (\n <div\n className={classNames(styles.divider, {\n [styles['inactive']]: inactive,\n })}\n />\n ) : null}\n <div\n ref={setContainerRef}\n className={classNames(styles.item, {\n [styles['inactive']]: inactive,\n })}\n >\n <div className={styles['item-with-icon']}>\n <div className={classNames(styles['item-fullwidth'], styles['item-ellipsis-wrapper'])}>\n <label className={styles.label}>{t(Translation.Misc.Guests)}</label>\n <BookingWizardGuestSelector\n defaultValue={defaultValue}\n onChange={onChange}\n maxAdults={maxAdults}\n disableChild={disableChild}\n showInfants={showInfants}\n disableRoom={disableRoom}\n followElement={containerRef}\n {...config}\n notes={isImagesTheme ? notes : undefined}\n onOverlayOpenChange={onOverlayOpenChange}\n promoCodeConfig={promoCodeConfig}\n submitConfig={submitConfig}\n />\n </div>\n {isImagesTheme && <BWClearButton show={isOverlayOpen} onClick={onClearHandler} />}\n </div>\n </div>\n </>\n );\n};\n\nexport const BWPromoCodeSection = ({\n inactive,\n hidden,\n setPromoCode,\n promoCode,\n onChange,\n valid,\n hideTooltip,\n t,\n isImagesTheme,\n divider = true,\n withLabel = true,\n}: BWPromoCodeSectionProps) => {\n if (hidden) return null;\n const onClearHandler: React.MouseEventHandler<HTMLDivElement> = (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n setPromoCode('');\n event.preventDefault();\n event.stopPropagation();\n };\n const [focused, setFocused] = React.useState<boolean>(false);\n return (\n <>\n {divider ? (\n <div\n className={classNames(styles.divider, {\n [styles['inactive']]: inactive,\n })}\n />\n ) : null}\n <div\n className={classNames(styles.item, styles['item-promo-code-wrapper'], {\n [styles['inactive']]: inactive,\n })}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n >\n <div className={styles['item-with-icon']}>\n <div className={classNames(styles['item-fullwidth'], styles['item-ellipsis-wrapper'])}>\n {withLabel && <label className={styles.label}>{t(Translation.Misc.Promocode)}</label>}\n <BookingWizardPromoCode promoCode={promoCode} onChange={onChange} valid={valid} hideTooltip={hideTooltip} />\n </div>\n\n {isImagesTheme && <BWClearButton show={focused} onClick={onClearHandler} />}\n </div>\n </div>\n </>\n );\n};\n\nconst SubmitButtonSection = ({ button }: { button: React.ReactNode }) => <div className={styles.action}>{button}</div>;\n\ntype BWIconButtonProps = {\n show: boolean;\n onClick?: React.MouseEventHandler<HTMLDivElement>;\n hasLabel?: boolean;\n bottomSheet?: boolean;\n hasSearchInput?: boolean;\n icon: IconType;\n name: string;\n className: string;\n};\n\nconst BWIconButton = ({ show, onClick, hasLabel = false, bottomSheet = false, hasSearchInput = false, icon, name, className }: BWIconButtonProps) => {\n if (!show) return null;\n\n return (\n <div\n onMouseDown={(e) => e.preventDefault()} // Prevent blur\n onClick={onClick}\n className={classNames(className, {\n [styles['--has-label']]: hasLabel,\n [styles['--bottom-sheet']]: bottomSheet,\n [styles['--has-search-input']]: hasSearchInput,\n })}\n >\n <Icon icon={icon} name={name} />\n </div>\n );\n};\n\nexport const BWClearButton = (props: Omit<BWIconButtonProps, 'icon' | 'name' | 'className'>) => (\n <BWIconButton {...props} icon={IconType.Close} name=\"Clear\" className={styles['clear-button']} />\n);\n\nexport const BWSearchButton = (props: Omit<BWIconButtonProps, 'icon' | 'name' | 'className' | 'onClick'>) => (\n <BWIconButton {...props} icon={IconType.Search} name=\"Search\" className={styles['search-button']} />\n);\n\n// Interface\ninterface GuestValue {\n adults?: number;\n children?: number;\n infants?: number;\n room?: number;\n}\n\ninterface GuestAgeConfig {\n minAdultAge?: number;\n maxAdultAge?: number;\n ageRange?: {\n child?: { min?: number; max?: number };\n infant?: { min?: number; max?: number };\n };\n}\ninterface BWGuestSelectorSectionProps {\n hidden?: boolean;\n inactive?: boolean;\n isImagesTheme?: boolean;\n containerRef?: HTMLDivElement | null;\n setContainerRef?: React.Dispatch<React.SetStateAction<HTMLDivElement | null>>;\n onChange: (guests: BookingWizardOnBooking['guests']) => void;\n maxAdults?: number | undefined;\n disableChild?: boolean;\n showInfants?: boolean;\n disableRoom?: boolean;\n config?: GuestAgeConfig;\n notes?: React.ReactNode | undefined;\n defaultValue?: GuestValue;\n defaultGuestConfig?: GuestValue;\n divider: boolean;\n promoCodeConfig?: BookingWizardGuestSelectorProps['promoCodeConfig'];\n submitConfig?: BookingWizardGuestSelectorProps['submitConfig'];\n}\ninterface BWPromoCodeSectionProps {\n inactive: boolean;\n hidden: boolean;\n setPromoCode: React.Dispatch<React.SetStateAction<string>>;\n promoCode: string;\n onChange: (value?: string) => Promise<void>;\n valid?: boolean;\n hideTooltip?: boolean;\n t: (key: string) => string;\n isImagesTheme: boolean;\n divider: boolean;\n withLabel: boolean;\n}\ninterface BWPropertySelectorSectionProps extends Pick<BookingWizardEngineConfig, 'searchConfig'> {\n inactive?: boolean;\n hidden?: boolean;\n containerRef?: HTMLDivElement | null;\n setContainerRef?: React.Dispatch<React.SetStateAction<HTMLDivElement | null>>;\n properties: TBookingWizardProperties;\n selectedProperty?: BookingWizardProperty | undefined;\n setSelectedProperty: React.Dispatch<React.SetStateAction<BookingWizardProperty | undefined>>;\n classname?: string;\n t: (key: string) => string;\n divider?: boolean;\n withLabel?: boolean;\n}\n"]}
|
|
@@ -104,7 +104,7 @@ const BookingWizardDateSelector = (props) => {
|
|
|
104
104
|
setIsOverlayOpen(isOpen);
|
|
105
105
|
};
|
|
106
106
|
const ClearButton = ({ date, onClick }) => {
|
|
107
|
-
return isImagesTheme ? react_1.default.createElement(BookingWizardContent_1.BWClearButton, {
|
|
107
|
+
return isImagesTheme ? react_1.default.createElement(BookingWizardContent_1.BWClearButton, { show: isOverlayOpen && !!date, onClick: onClick }) : react_1.default.createElement(react_1.default.Fragment, null);
|
|
108
108
|
};
|
|
109
109
|
const onApply = () => {
|
|
110
110
|
setDate(selectingStartDate, selectingEndDate);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookingWizardDateSelector.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React, { ReactNode, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport BEButton from '@/components/generic/BEButton';\nimport DateRangePicker from '@/components/generic/DateRangePicker/DateRangePicker';\nimport Text from '@/components/generic/Text';\nimport { ShowYearOnCalendarProps } from '@/models/Api/HotelOverrideDTO';\nimport { Translation } from '@/translations/Translation';\n\nimport FloatingDateRangePicker, { FloatingDateRangePickerHandle } from '../../DateRangePicker/FloatingDateRangePicker';\nimport { EBookingWizardSection, EBookingWizardTheme } from '../BookingWizard';\nimport bookingWizardStyles from '../BookingWizard.module.scss';\nimport BookingWizardBottomSheet, { BWBottomSheetFooter, BWBottomSheetHeader } from '../BookingWizardBottomSheet/BookingWizardBottomSheet';\nimport { BWClearButton } from '../BookingWizardContent';\nimport { useBookingWizard } from '../BookingWizardContext';\nimport styles from './BookingWizardDateSelector.module.scss';\n\nexport interface BookingWizardDateSelectorProps extends ShowYearOnCalendarProps {\n open?: boolean;\n defaultStartDate?: dayjs.Dayjs;\n defaultEndDate?: dayjs.Dayjs;\n dateFormat?: string;\n onChange?: (startDate: dayjs.Dayjs | null, endDate: dayjs.Dayjs | null) => void;\n notes?: ReactNode;\n divider?: boolean;\n hidden?: boolean;\n inactive?: boolean;\n}\n\nexport const BookingWizardDateSelector: React.FC<BookingWizardDateSelectorProps> = (props) => {\n const { defaultStartDate, defaultEndDate, dateFormat = 'MMM DD', showYearOnCalendar, yearDisplayOption, divider = true, hidden, inactive } = props;\n if (hidden) return null;\n const {\n overlay,\n theme,\n layout,\n type: overlayType,\n isMobile,\n isSmallContainer,\n stateSections,\n onPrevHandler,\n onNextHandler,\n isImagesTheme,\n isImagesThemeMobile,\n } = useBookingWizard();\n const { t } = useTranslation();\n\n const checkOutDatePickerRef = React.useRef<FloatingDateRangePickerHandle>(null);\n\n //With isImagesTheme, default both startDate and endDate are null\n const [startDate, setStartDate] = useState<dayjs.Dayjs | null>(defaultStartDate ?? (isImagesTheme ? null : dayjs()));\n const [endDate, setEndDate] = useState<dayjs.Dayjs | null>(defaultEndDate ?? (isImagesTheme ? null : dayjs().add(1, 'days')));\n const [selectingStartDate, setSelectingStartDate] = useState<dayjs.Dayjs | null>(startDate);\n const [selectingEndDate, setSelectingEndDate] = useState<dayjs.Dayjs | null>(endDate);\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [isOverlayOpen, setIsOverlayOpen] = useState<boolean>(false);\n const [checkInWrapperRef, setCheckInWrapperRef] = React.useState<HTMLElement | undefined>();\n const [monthCount, setMonthCount] = useState<number>(2);\n\n useEffect(() => {\n const opening = stateSections[EBookingWizardSection.Date].opening;\n setIsOpen(opening);\n }, [stateSections]);\n\n let RowWrapper: any = React.Fragment;\n const rowWrapperProps = {} as any;\n if (layout === 'button' || isMobile || isSmallContainer) {\n RowWrapper = 'div';\n rowWrapperProps.className = classNames(bookingWizardStyles.itemGroup, {\n [bookingWizardStyles['inactive']]: inactive,\n });\n rowWrapperProps.ref = (ref: any) => {\n if (layout === 'button') {\n setCheckInWrapperRef(ref);\n }\n };\n }\n\n const setDate = (startDate: dayjs.Dayjs | null, endDate: dayjs.Dayjs | null) => {\n setStartDate(startDate);\n setEndDate(endDate);\n\n if (!isImagesThemeMobile) {\n setIsOpen(false);\n }\n\n props.onChange?.(startDate, endDate);\n };\n\n const _onCheckoutDateChange = (newEndDate: dayjs.Dayjs) => {\n props?.onChange?.(startDate as Dayjs, newEndDate);\n\n setEndDate(newEndDate);\n if (newEndDate) {\n if (!isImagesThemeMobile) {\n setIsOpen(false);\n }\n }\n };\n\n const _toggleInlineDatePicker = () => {\n checkOutDatePickerRef?.current?.toggle();\n setIsOpen(!isOpen);\n };\n\n const onOverlayOpenChange = (isOpen: boolean) => {\n setIsOverlayOpen(isOpen);\n };\n\n const ClearButton = ({ date, onClick }: { date?: dayjs.Dayjs; onClick: any }) => {\n return isImagesTheme ? <BWClearButton hidden={isOverlayOpen && !!date} onClick={onClick} /> : <></>;\n };\n\n const onApply = () => {\n setDate(selectingStartDate as Dayjs, selectingEndDate as Dayjs);\n };\n\n const _checkInDate = (date?: dayjs.Dayjs, disabledClass?: boolean) => {\n const defaultPlaceHolder = isImagesTheme ? t(Translation.Misc.CheckInPlaceHolder) : '-';\n return (\n <div\n className={classNames({\n [bookingWizardStyles.item]: !disabledClass,\n [bookingWizardStyles['item-fullwidth']]: isImagesTheme,\n })}\n onClick={_toggleInlineDatePicker}\n >\n <div className={bookingWizardStyles['item-with-icon']}>\n <div>\n <label className={bookingWizardStyles.label}>{t(Translation.Misc.CheckIn)}</label>\n {layout === 'horizontal-condensed' ? (\n <>\n <Text className={classNames(styles.date, styles['line-1'], bookingWizardStyles.value)} bold>\n {date?.format('DD') || defaultPlaceHolder}\n </Text>\n <Text className={classNames(styles.date, styles['line-2'], bookingWizardStyles.value)} bold>\n {date?.format('MMM') || defaultPlaceHolder}\n </Text>\n </>\n ) : (\n <Text className={classNames(styles.date, bookingWizardStyles.value)} bold>\n {date?.format(dateFormat) || defaultPlaceHolder}\n </Text>\n )}\n </div>\n <ClearButton\n date={date}\n onClick={() => {\n setDate(null, endDate);\n }}\n />\n </div>\n </div>\n );\n };\n\n const _checkOutDate = (date?: dayjs.Dayjs) => {\n const defaultPlaceHolder = isImagesTheme ? t(Translation.Misc.CheckOutPlaceHolder) : '-';\n return (\n <div\n className={classNames(bookingWizardStyles.item, {\n [bookingWizardStyles['active']]: isOverlayOpen && !!startDate && !endDate,\n })}\n onClick={_toggleInlineDatePicker}\n >\n <div className={classNames(bookingWizardStyles['item-with-icon'])}>\n <div>\n <label className={bookingWizardStyles.label}>{t(Translation.Misc.CheckOut)}</label>\n {layout === 'horizontal-condensed' ? (\n <>\n <Text className={classNames(styles.date, styles['line-1'], bookingWizardStyles.value)} bold>\n {date?.format('DD') || defaultPlaceHolder}\n </Text>\n <Text className={classNames(styles.date, styles['line-2'], bookingWizardStyles.value)} bold>\n {date?.format('MMM') || defaultPlaceHolder}\n </Text>\n </>\n ) : (\n <Text className={classNames(styles.date, bookingWizardStyles.value)} bold>\n {date?.format(dateFormat) || defaultPlaceHolder}\n </Text>\n )}\n </div>\n <ClearButton\n date={date}\n onClick={() => {\n setDate(startDate, null);\n }}\n />\n </div>\n </div>\n );\n };\n\n const _combineDates = (checkIn?: dayjs.Dayjs, checkOut?: dayjs.Dayjs) => {\n return (\n <div onClick={_toggleInlineDatePicker}>\n <label className={bookingWizardStyles.label}>{t(Translation.Misc.Dates)}</label>\n <Text className={styles.date} bold>{`${checkIn?.format(dateFormat) || ''} - ${checkOut?.format(dateFormat) || ''}`}</Text>\n </div>\n );\n };\n\n const showMultipleMonths = layout === 'horizontal' && !isMobile;\n\n if (overlayType === 'inline') {\n return (\n <div className={classNames(styles.container, { [styles['--open']]: isOpen })}>\n <RowWrapper {...rowWrapperProps}>\n {_checkInDate(startDate as Dayjs)}\n <div className={bookingWizardStyles.divider} />\n {_checkOutDate(endDate as Dayjs)}\n </RowWrapper>\n <div className={styles['inline-container']}>\n <AutoAutoHeight open={isOpen}>\n <div className={styles['inline-box']}>\n <DateRangePicker\n selectedStartDate={startDate as Dayjs}\n selectedEndDate={endDate as Dayjs}\n onStartDateChanged={setStartDate}\n onEndDateChanged={_onCheckoutDateChange}\n theme={layout === 'horizontal-condensed' ? EBookingWizardTheme.Specific : theme}\n showYearOnCalendar={showYearOnCalendar}\n yearDisplayOption={yearDisplayOption}\n />\n </div>\n </AutoAutoHeight>\n </div>\n </div>\n );\n }\n\n if (overlayType === 'bottom-sheet') {\n const DateRangePickerFooter = () => {\n if (isImagesTheme) {\n return (\n <BEButton\n stopIconAnimation\n outline\n rounded\n wide\n onClick={() => {\n setMonthCount((prev) => prev + 4);\n }}\n >\n {t(Translation.Misc.LoadMoreDates)}\n </BEButton>\n );\n } else {\n return (\n <BEButton wide primary filled onClick={onApply}>\n {t(Translation.Misc.Apply)}\n </BEButton>\n );\n }\n };\n\n return (\n <>\n <RowWrapper {...rowWrapperProps}>\n {!isMobile && layout === 'horizontal' ? (\n <div className={bookingWizardStyles.item}>{_combineDates(startDate as Dayjs, endDate as Dayjs)}</div>\n ) : (\n <>\n {_checkInDate(startDate as Dayjs)}\n <div className={bookingWizardStyles.divider} />\n {_checkOutDate(endDate as Dayjs)}\n </>\n )}\n </RowWrapper>\n <BookingWizardBottomSheet\n className={classNames(styles.container, styles['bottom-sheet-container'], {\n [styles['custom-overlay-images-theme']]: isImagesTheme,\n })}\n open={isOpen}\n onDismiss={() => {\n if (!isImagesThemeMobile) {\n setIsOpen(false);\n }\n }}\n header={<BWBottomSheetHeader title={t(Translation.Misc.ChooseDates)} onClose={() => setIsOpen(false)} />}\n footer={\n <BWBottomSheetFooter\n hidePrev={stateSections[EBookingWizardSection.Date].isFirst}\n onPrev={() => onPrevHandler(EBookingWizardSection.Date)}\n onNext={() => onNextHandler(EBookingWizardSection.Date)}\n disabledNext={!startDate || !endDate}\n />\n }\n >\n <div className={styles['bottom-sheet-container-box']}>\n <DateRangePicker\n selectedStartDate={startDate as Dayjs}\n selectedEndDate={endDate as Dayjs}\n onStartDateChanged={(date: dayjs.Dayjs) => {\n setSelectingStartDate(date);\n if (isImagesThemeMobile) {\n setStartDate(date);\n }\n }}\n onEndDateChanged={(date: dayjs.Dayjs) => {\n setSelectingEndDate(date);\n if (isImagesThemeMobile) {\n _onCheckoutDateChange(date);\n }\n }}\n theme={theme}\n showYearOnCalendar={showYearOnCalendar}\n yearDisplayOption={yearDisplayOption}\n className={styles['bottom-sheet-container-box-calendar']}\n showMultipleMonths={isImagesTheme}\n showArrows={theme !== EBookingWizardTheme.Images}\n monthCount={monthCount}\n />\n <DateRangePickerFooter />\n </div>\n </BookingWizardBottomSheet>\n </>\n );\n }\n\n if (layout === 'horizontal' && theme === EBookingWizardTheme.Specific && !isMobile && !isSmallContainer) {\n return (\n <RowWrapper {...rowWrapperProps}>\n <FloatingDateRangePicker\n ref={checkOutDatePickerRef}\n container={checkInWrapperRef}\n startDate={startDate as Dayjs}\n endDate={endDate as Dayjs}\n selectedDateChanged={setDate}\n overlayOffset={overlay?.dateOffset}\n className={bookingWizardStyles.item}\n theme={theme}\n showMultipleMonths={showMultipleMonths}\n overlay={{\n placement: overlay?.placement,\n fallbackPlacements: overlay?.fallbackPlacements,\n }}\n showYearOnCalendar={showYearOnCalendar}\n yearDisplayOption={yearDisplayOption}\n >\n {_combineDates(startDate as Dayjs, endDate as Dayjs)}\n </FloatingDateRangePicker>\n </RowWrapper>\n );\n }\n\n const DateNotes = () => {\n return props?.notes && isImagesTheme ? <div className={bookingWizardStyles.notes}>{props?.notes}</div> : null;\n };\n\n return (\n <RowWrapper {...rowWrapperProps}>\n <FloatingDateRangePicker\n ref={checkOutDatePickerRef}\n container={checkInWrapperRef}\n startDate={startDate as Dayjs}\n endDate={endDate as Dayjs}\n selectedDateChanged={setDate}\n overlayOffset={overlay?.dateOffset}\n theme={layout === 'horizontal-condensed' ? EBookingWizardTheme.Specific : theme}\n showMultipleMonths={showMultipleMonths}\n className={classNames(bookingWizardStyles.item, {\n [bookingWizardStyles['active']]: isOverlayOpen && !!endDate,\n })}\n overlay={{\n placement: overlay?.placement,\n fallbackPlacements: overlay?.fallbackPlacements,\n }}\n showYearOnCalendar={showYearOnCalendar}\n yearDisplayOption={yearDisplayOption}\n notes={<DateNotes />}\n onOverlayOpenChange={onOverlayOpenChange}\n >\n {_checkInDate(startDate as Dayjs, true)}\n </FloatingDateRangePicker>\n <div className={layout !== 'button' && !isMobile ? bookingWizardStyles.divider : ''} />\n {_checkOutDate(endDate as Dayjs)}\n </RowWrapper>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"BookingWizardDateSelector.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React, { ReactNode, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport BEButton from '@/components/generic/BEButton';\nimport DateRangePicker from '@/components/generic/DateRangePicker/DateRangePicker';\nimport Text from '@/components/generic/Text';\nimport { ShowYearOnCalendarProps } from '@/models/Api/HotelOverrideDTO';\nimport { Translation } from '@/translations/Translation';\n\nimport FloatingDateRangePicker, { FloatingDateRangePickerHandle } from '../../DateRangePicker/FloatingDateRangePicker';\nimport { EBookingWizardSection, EBookingWizardTheme } from '../BookingWizard';\nimport bookingWizardStyles from '../BookingWizard.module.scss';\nimport BookingWizardBottomSheet, { BWBottomSheetFooter, BWBottomSheetHeader } from '../BookingWizardBottomSheet/BookingWizardBottomSheet';\nimport { BWClearButton } from '../BookingWizardContent';\nimport { useBookingWizard } from '../BookingWizardContext';\nimport styles from './BookingWizardDateSelector.module.scss';\n\nexport interface BookingWizardDateSelectorProps extends ShowYearOnCalendarProps {\n open?: boolean;\n defaultStartDate?: dayjs.Dayjs;\n defaultEndDate?: dayjs.Dayjs;\n dateFormat?: string;\n onChange?: (startDate: dayjs.Dayjs | null, endDate: dayjs.Dayjs | null) => void;\n notes?: ReactNode;\n divider?: boolean;\n hidden?: boolean;\n inactive?: boolean;\n}\n\nexport const BookingWizardDateSelector: React.FC<BookingWizardDateSelectorProps> = (props) => {\n const { defaultStartDate, defaultEndDate, dateFormat = 'MMM DD', showYearOnCalendar, yearDisplayOption, divider = true, hidden, inactive } = props;\n if (hidden) return null;\n const {\n overlay,\n theme,\n layout,\n type: overlayType,\n isMobile,\n isSmallContainer,\n stateSections,\n onPrevHandler,\n onNextHandler,\n isImagesTheme,\n isImagesThemeMobile,\n } = useBookingWizard();\n const { t } = useTranslation();\n\n const checkOutDatePickerRef = React.useRef<FloatingDateRangePickerHandle>(null);\n\n //With isImagesTheme, default both startDate and endDate are null\n const [startDate, setStartDate] = useState<dayjs.Dayjs | null>(defaultStartDate ?? (isImagesTheme ? null : dayjs()));\n const [endDate, setEndDate] = useState<dayjs.Dayjs | null>(defaultEndDate ?? (isImagesTheme ? null : dayjs().add(1, 'days')));\n const [selectingStartDate, setSelectingStartDate] = useState<dayjs.Dayjs | null>(startDate);\n const [selectingEndDate, setSelectingEndDate] = useState<dayjs.Dayjs | null>(endDate);\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [isOverlayOpen, setIsOverlayOpen] = useState<boolean>(false);\n const [checkInWrapperRef, setCheckInWrapperRef] = React.useState<HTMLElement | undefined>();\n const [monthCount, setMonthCount] = useState<number>(2);\n\n useEffect(() => {\n const opening = stateSections[EBookingWizardSection.Date].opening;\n setIsOpen(opening);\n }, [stateSections]);\n\n let RowWrapper: any = React.Fragment;\n const rowWrapperProps = {} as any;\n if (layout === 'button' || isMobile || isSmallContainer) {\n RowWrapper = 'div';\n rowWrapperProps.className = classNames(bookingWizardStyles.itemGroup, {\n [bookingWizardStyles['inactive']]: inactive,\n });\n rowWrapperProps.ref = (ref: any) => {\n if (layout === 'button') {\n setCheckInWrapperRef(ref);\n }\n };\n }\n\n const setDate = (startDate: dayjs.Dayjs | null, endDate: dayjs.Dayjs | null) => {\n setStartDate(startDate);\n setEndDate(endDate);\n\n if (!isImagesThemeMobile) {\n setIsOpen(false);\n }\n\n props.onChange?.(startDate, endDate);\n };\n\n const _onCheckoutDateChange = (newEndDate: dayjs.Dayjs) => {\n props?.onChange?.(startDate as Dayjs, newEndDate);\n\n setEndDate(newEndDate);\n if (newEndDate) {\n if (!isImagesThemeMobile) {\n setIsOpen(false);\n }\n }\n };\n\n const _toggleInlineDatePicker = () => {\n checkOutDatePickerRef?.current?.toggle();\n setIsOpen(!isOpen);\n };\n\n const onOverlayOpenChange = (isOpen: boolean) => {\n setIsOverlayOpen(isOpen);\n };\n\n const ClearButton = ({ date, onClick }: { date?: dayjs.Dayjs; onClick: any }) => {\n return isImagesTheme ? <BWClearButton show={isOverlayOpen && !!date} onClick={onClick} /> : <></>;\n };\n\n const onApply = () => {\n setDate(selectingStartDate as Dayjs, selectingEndDate as Dayjs);\n };\n\n const _checkInDate = (date?: dayjs.Dayjs, disabledClass?: boolean) => {\n const defaultPlaceHolder = isImagesTheme ? t(Translation.Misc.CheckInPlaceHolder) : '-';\n return (\n <div\n className={classNames({\n [bookingWizardStyles.item]: !disabledClass,\n [bookingWizardStyles['item-fullwidth']]: isImagesTheme,\n })}\n onClick={_toggleInlineDatePicker}\n >\n <div className={bookingWizardStyles['item-with-icon']}>\n <div>\n <label className={bookingWizardStyles.label}>{t(Translation.Misc.CheckIn)}</label>\n {layout === 'horizontal-condensed' ? (\n <>\n <Text className={classNames(styles.date, styles['line-1'], bookingWizardStyles.value)} bold>\n {date?.format('DD') || defaultPlaceHolder}\n </Text>\n <Text className={classNames(styles.date, styles['line-2'], bookingWizardStyles.value)} bold>\n {date?.format('MMM') || defaultPlaceHolder}\n </Text>\n </>\n ) : (\n <Text className={classNames(styles.date, bookingWizardStyles.value)} bold>\n {date?.format(dateFormat) || defaultPlaceHolder}\n </Text>\n )}\n </div>\n <ClearButton\n date={date}\n onClick={() => {\n setDate(null, endDate);\n }}\n />\n </div>\n </div>\n );\n };\n\n const _checkOutDate = (date?: dayjs.Dayjs) => {\n const defaultPlaceHolder = isImagesTheme ? t(Translation.Misc.CheckOutPlaceHolder) : '-';\n return (\n <div\n className={classNames(bookingWizardStyles.item, {\n [bookingWizardStyles['active']]: isOverlayOpen && !!startDate && !endDate,\n })}\n onClick={_toggleInlineDatePicker}\n >\n <div className={classNames(bookingWizardStyles['item-with-icon'])}>\n <div>\n <label className={bookingWizardStyles.label}>{t(Translation.Misc.CheckOut)}</label>\n {layout === 'horizontal-condensed' ? (\n <>\n <Text className={classNames(styles.date, styles['line-1'], bookingWizardStyles.value)} bold>\n {date?.format('DD') || defaultPlaceHolder}\n </Text>\n <Text className={classNames(styles.date, styles['line-2'], bookingWizardStyles.value)} bold>\n {date?.format('MMM') || defaultPlaceHolder}\n </Text>\n </>\n ) : (\n <Text className={classNames(styles.date, bookingWizardStyles.value)} bold>\n {date?.format(dateFormat) || defaultPlaceHolder}\n </Text>\n )}\n </div>\n <ClearButton\n date={date}\n onClick={() => {\n setDate(startDate, null);\n }}\n />\n </div>\n </div>\n );\n };\n\n const _combineDates = (checkIn?: dayjs.Dayjs, checkOut?: dayjs.Dayjs) => {\n return (\n <div onClick={_toggleInlineDatePicker}>\n <label className={bookingWizardStyles.label}>{t(Translation.Misc.Dates)}</label>\n <Text className={styles.date} bold>{`${checkIn?.format(dateFormat) || ''} - ${checkOut?.format(dateFormat) || ''}`}</Text>\n </div>\n );\n };\n\n const showMultipleMonths = layout === 'horizontal' && !isMobile;\n\n if (overlayType === 'inline') {\n return (\n <div className={classNames(styles.container, { [styles['--open']]: isOpen })}>\n <RowWrapper {...rowWrapperProps}>\n {_checkInDate(startDate as Dayjs)}\n <div className={bookingWizardStyles.divider} />\n {_checkOutDate(endDate as Dayjs)}\n </RowWrapper>\n <div className={styles['inline-container']}>\n <AutoAutoHeight open={isOpen}>\n <div className={styles['inline-box']}>\n <DateRangePicker\n selectedStartDate={startDate as Dayjs}\n selectedEndDate={endDate as Dayjs}\n onStartDateChanged={setStartDate}\n onEndDateChanged={_onCheckoutDateChange}\n theme={layout === 'horizontal-condensed' ? EBookingWizardTheme.Specific : theme}\n showYearOnCalendar={showYearOnCalendar}\n yearDisplayOption={yearDisplayOption}\n />\n </div>\n </AutoAutoHeight>\n </div>\n </div>\n );\n }\n\n if (overlayType === 'bottom-sheet') {\n const DateRangePickerFooter = () => {\n if (isImagesTheme) {\n return (\n <BEButton\n stopIconAnimation\n outline\n rounded\n wide\n onClick={() => {\n setMonthCount((prev) => prev + 4);\n }}\n >\n {t(Translation.Misc.LoadMoreDates)}\n </BEButton>\n );\n } else {\n return (\n <BEButton wide primary filled onClick={onApply}>\n {t(Translation.Misc.Apply)}\n </BEButton>\n );\n }\n };\n\n return (\n <>\n <RowWrapper {...rowWrapperProps}>\n {!isMobile && layout === 'horizontal' ? (\n <div className={bookingWizardStyles.item}>{_combineDates(startDate as Dayjs, endDate as Dayjs)}</div>\n ) : (\n <>\n {_checkInDate(startDate as Dayjs)}\n <div className={bookingWizardStyles.divider} />\n {_checkOutDate(endDate as Dayjs)}\n </>\n )}\n </RowWrapper>\n <BookingWizardBottomSheet\n className={classNames(styles.container, styles['bottom-sheet-container'], {\n [styles['custom-overlay-images-theme']]: isImagesTheme,\n })}\n open={isOpen}\n onDismiss={() => {\n if (!isImagesThemeMobile) {\n setIsOpen(false);\n }\n }}\n header={<BWBottomSheetHeader title={t(Translation.Misc.ChooseDates)} onClose={() => setIsOpen(false)} />}\n footer={\n <BWBottomSheetFooter\n hidePrev={stateSections[EBookingWizardSection.Date].isFirst}\n onPrev={() => onPrevHandler(EBookingWizardSection.Date)}\n onNext={() => onNextHandler(EBookingWizardSection.Date)}\n disabledNext={!startDate || !endDate}\n />\n }\n >\n <div className={styles['bottom-sheet-container-box']}>\n <DateRangePicker\n selectedStartDate={startDate as Dayjs}\n selectedEndDate={endDate as Dayjs}\n onStartDateChanged={(date: dayjs.Dayjs) => {\n setSelectingStartDate(date);\n if (isImagesThemeMobile) {\n setStartDate(date);\n }\n }}\n onEndDateChanged={(date: dayjs.Dayjs) => {\n setSelectingEndDate(date);\n if (isImagesThemeMobile) {\n _onCheckoutDateChange(date);\n }\n }}\n theme={theme}\n showYearOnCalendar={showYearOnCalendar}\n yearDisplayOption={yearDisplayOption}\n className={styles['bottom-sheet-container-box-calendar']}\n showMultipleMonths={isImagesTheme}\n showArrows={theme !== EBookingWizardTheme.Images}\n monthCount={monthCount}\n />\n <DateRangePickerFooter />\n </div>\n </BookingWizardBottomSheet>\n </>\n );\n }\n\n if (layout === 'horizontal' && theme === EBookingWizardTheme.Specific && !isMobile && !isSmallContainer) {\n return (\n <RowWrapper {...rowWrapperProps}>\n <FloatingDateRangePicker\n ref={checkOutDatePickerRef}\n container={checkInWrapperRef}\n startDate={startDate as Dayjs}\n endDate={endDate as Dayjs}\n selectedDateChanged={setDate}\n overlayOffset={overlay?.dateOffset}\n className={bookingWizardStyles.item}\n theme={theme}\n showMultipleMonths={showMultipleMonths}\n overlay={{\n placement: overlay?.placement,\n fallbackPlacements: overlay?.fallbackPlacements,\n }}\n showYearOnCalendar={showYearOnCalendar}\n yearDisplayOption={yearDisplayOption}\n >\n {_combineDates(startDate as Dayjs, endDate as Dayjs)}\n </FloatingDateRangePicker>\n </RowWrapper>\n );\n }\n\n const DateNotes = () => {\n return props?.notes && isImagesTheme ? <div className={bookingWizardStyles.notes}>{props?.notes}</div> : null;\n };\n\n return (\n <RowWrapper {...rowWrapperProps}>\n <FloatingDateRangePicker\n ref={checkOutDatePickerRef}\n container={checkInWrapperRef}\n startDate={startDate as Dayjs}\n endDate={endDate as Dayjs}\n selectedDateChanged={setDate}\n overlayOffset={overlay?.dateOffset}\n theme={layout === 'horizontal-condensed' ? EBookingWizardTheme.Specific : theme}\n showMultipleMonths={showMultipleMonths}\n className={classNames(bookingWizardStyles.item, {\n [bookingWizardStyles['active']]: isOverlayOpen && !!endDate,\n })}\n overlay={{\n placement: overlay?.placement,\n fallbackPlacements: overlay?.fallbackPlacements,\n }}\n showYearOnCalendar={showYearOnCalendar}\n yearDisplayOption={yearDisplayOption}\n notes={<DateNotes />}\n onOverlayOpenChange={onOverlayOpenChange}\n >\n {_checkInDate(startDate as Dayjs, true)}\n </FloatingDateRangePicker>\n <div className={layout !== 'button' && !isMobile ? bookingWizardStyles.divider : ''} />\n {_checkOutDate(endDate as Dayjs)}\n </RowWrapper>\n );\n};\n"]}
|
|
@@ -1,12 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { BookingWizardEngineConfig } from '../../../../engines/BookingWizardEngine/BookingWizardEngine';
|
|
1
3
|
import { BookingWizardProperty } from '../../../../models/BookingWizard/BookingWizardProperty';
|
|
2
4
|
import { TBookingWizardProperties } from '../../../../models/BookingWizard/BookingWizardTypes';
|
|
3
5
|
interface BookingWizardHotelSelectorProps {
|
|
4
6
|
disabled?: boolean;
|
|
7
|
+
searchable?: boolean;
|
|
5
8
|
selectedProperty?: BookingWizardProperty;
|
|
6
9
|
properties: TBookingWizardProperties;
|
|
7
10
|
contentClassName?: string;
|
|
8
11
|
followElement?: HTMLElement | null;
|
|
9
|
-
onChange?: (hotel
|
|
12
|
+
onChange?: (hotel?: BookingWizardProperty) => void;
|
|
13
|
+
searchConfig?: BookingWizardEngineConfig['searchConfig'] & {
|
|
14
|
+
searchQuery: string;
|
|
15
|
+
setSearchQuery: React.Dispatch<React.SetStateAction<string>>;
|
|
16
|
+
focused: boolean;
|
|
17
|
+
};
|
|
10
18
|
}
|
|
11
19
|
export declare const BookingWizardHotelSelector: (props: BookingWizardHotelSelectorProps) => JSX.Element;
|
|
12
20
|
export {};
|