@roomstay/frontend 2.6.48 → 2.6.49

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.
Files changed (79) hide show
  1. package/dist/src/components/generic/AgedBetweenLabel/AgedBetweenLabel.js +18 -6
  2. package/dist/src/components/generic/AgedBetweenLabel/AgedBetweenLabel.js.map +1 -1
  3. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.d.ts +2 -0
  4. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +6 -4
  5. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
  6. package/dist/src/components/generic/Currency.d.ts +3 -1
  7. package/dist/src/components/generic/Currency.js +28 -2
  8. package/dist/src/components/generic/Currency.js.map +1 -1
  9. package/dist/src/components/generic/date/DatePickerDay.js +1 -1
  10. package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
  11. package/dist/src/components/steps/date/PeoplePickerRow.js +5 -3
  12. package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
  13. package/dist/src/components/steps/room/RatesNotFoundBlock.d.ts +2 -0
  14. package/dist/src/components/steps/room/{RatesNotFound.js → RatesNotFoundBlock.js} +9 -3
  15. package/dist/src/components/steps/room/RatesNotFoundBlock.js.map +1 -0
  16. package/dist/src/components/steps/room/roomDetails/RoomDetails.js +6 -4
  17. package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
  18. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +1 -0
  19. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
  20. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +2 -0
  21. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  22. package/dist/src/contexts/FullPageEngineContext/EngineBodyLayout.js.map +1 -1
  23. package/dist/src/contexts/HotelOverridesContext.js +4 -0
  24. package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
  25. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.d.ts +1 -1
  26. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
  27. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +2 -2
  28. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  29. package/dist/src/hooks/Planpay.d.ts +1 -1
  30. package/dist/src/hooks/useSignedInMember.d.ts +1 -1
  31. package/dist/src/index.d.ts +1 -0
  32. package/dist/src/index.js +5 -2
  33. package/dist/src/index.js.map +1 -1
  34. package/dist/src/models/Api/HotelDTO.d.ts +1 -1
  35. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  36. package/dist/src/models/Api/HotelOverrideDTO.d.ts +1 -0
  37. package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
  38. package/dist/src/models/Client/Hotel/Hotel.d.ts +2 -0
  39. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  40. package/dist/src/pages/findReservation/FindReservationResults.js +2 -2
  41. package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
  42. package/dist/src/pages/steps/Step.js.map +1 -1
  43. package/dist/src/stories/Icon.stories.d.ts +2 -3
  44. package/dist/src/stories/IconNavCard.stories.d.ts +0 -1
  45. package/dist/src/stories/IconText.stories.d.ts +2 -3
  46. package/dist/src/translations/Translation.d.ts +3 -0
  47. package/dist/src/translations/Translation.js +3 -0
  48. package/dist/src/translations/Translation.js.map +1 -1
  49. package/dist/src/translations/languages/en-gb.js +3 -0
  50. package/dist/src/translations/languages/en-gb.js.map +1 -1
  51. package/dist/src/util/Analytics/GoogleAnalytics4.d.ts +1 -1
  52. package/dist/src/util/Analytics/UniversalAnalytics.d.ts +1 -1
  53. package/package.json +1 -1
  54. package/dist/151.bundle.js +0 -1
  55. package/dist/279.bundle.js +0 -1
  56. package/dist/288.bundle.js +0 -1
  57. package/dist/370.bundle.js +0 -1
  58. package/dist/446.bundle.js +0 -1
  59. package/dist/449.bundle.js +0 -1
  60. package/dist/493.bundle.js +0 -1
  61. package/dist/535.bundle.js +0 -2
  62. package/dist/535.bundle.js.LICENSE.txt +0 -30
  63. package/dist/586.bundle.js +0 -1
  64. package/dist/619.bundle.js +0 -1
  65. package/dist/625.bundle.js +0 -1
  66. package/dist/686.bundle.js +0 -1
  67. package/dist/839.bundle.js +0 -1
  68. package/dist/850.bundle.js +0 -1
  69. package/dist/873.bundle.js +0 -1
  70. package/dist/903.bundle.js +0 -1
  71. package/dist/972.bundle.js +0 -1
  72. package/dist/978.bundle.js +0 -1
  73. package/dist/984.bundle.js +0 -1
  74. package/dist/main.bundle.js +0 -1
  75. package/dist/src/components/steps/room/RatesNotFound.d.ts +0 -1
  76. package/dist/src/components/steps/room/RatesNotFound.js.map +0 -1
  77. package/dist/test.bundle.js +0 -1
  78. package/dist/vendors.bundle.js +0 -2
  79. package/dist/vendors.bundle.js.LICENSE.txt +0 -114
@@ -28,17 +28,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.AgedBetweenLabel = void 0;
30
30
  const react_1 = __importDefault(require("react"));
31
+ const react_i18next_1 = require("react-i18next");
31
32
  const Text_1 = __importStar(require("../Text"));
32
33
  const Color_1 = require("../../../util/Color");
34
+ // Normalize values: If null/undefined, convert to `null` explicitly
35
+ const parseAge = (val) => (val === null || val === undefined ? null : val);
33
36
  const AgedBetweenLabel = ({ min, max }) => {
34
- if (min === undefined || min === null || max === undefined || max === null) {
37
+ // Parse the input values
38
+ const parsedMin = parseAge(min);
39
+ const parsedMax = parseAge(max);
40
+ const { t } = (0, react_i18next_1.useTranslation)();
41
+ // Return null if no values are provided
42
+ if (parsedMin === null && parsedMax === null) {
35
43
  return null;
36
44
  }
37
- return (react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.DarkGrey },
38
- "Aged between ",
39
- min,
40
- " - ",
41
- max));
45
+ // Handle cases where only min or max is provided
46
+ if (parsedMin !== null && parsedMax === null) {
47
+ return (react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.DarkGrey }, t('Step.Date.AgedAtLeast', { min: parsedMin })));
48
+ }
49
+ if (parsedMax !== null && parsedMin === null) {
50
+ return (react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.DarkGrey }, t('Step.Date.AgedUpTo', { max: parsedMax })));
51
+ }
52
+ // Handle case where both min and max are provided
53
+ return (react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.DarkGrey }, t('Step.Date.AgedBetween', { min: parsedMin, max: parsedMax })));
42
54
  };
43
55
  exports.AgedBetweenLabel = AgedBetweenLabel;
44
56
  //# sourceMappingURL=AgedBetweenLabel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgedBetweenLabel.js","sourceRoot":"/","sources":["src/components/generic/AgedBetweenLabel/AgedBetweenLabel.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAE1B,kEAA2D;AAC3D,wCAAqC;AAM9B,MAAM,gBAAgB,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAyB,EAAE,EAAE;IACpE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;QACxE,OAAO,IAAI,CAAC;KACf;IAED,OAAO,CACH,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ;;QAC/B,GAAG;;QAAK,GAAG,CACtB,CACV,CAAC;AACN,CAAC,CAAC;AAVW,QAAA,gBAAgB,oBAU3B","sourcesContent":["import React from 'react';\n\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\n\ntype AgedBetweenLabelProps = {\n min?: number;\n max?: number;\n};\nexport const AgedBetweenLabel = ({ min, max }: AgedBetweenLabelProps) => {\n if (min === undefined || min === null || max === undefined || max === null) {\n return null;\n }\n\n return (\n <Text type={TextType.Label} color={Color.DarkGrey}>\n Aged between {min} - {max}\n </Text>\n );\n};\n"]}
1
+ {"version":3,"file":"AgedBetweenLabel.js","sourceRoot":"/","sources":["src/components/generic/AgedBetweenLabel/AgedBetweenLabel.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAA+C;AAE/C,kEAA2D;AAC3D,wCAAqC;AAOrC,oEAAoE;AACpE,MAAM,QAAQ,GAAG,CAAC,GAAY,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAE7E,MAAM,gBAAgB,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAyB,EAAE,EAAE;IACpE,yBAAyB;IACzB,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAEhC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,wCAAwC;IACxC,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,EAAE;QAC1C,OAAO,IAAI,CAAC;KACf;IAED,iDAAiD;IACjD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,EAAE;QAC1C,OAAO,CACH,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ,IAC5C,CAAC,CAAC,uBAAuB,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAC5C,CACV,CAAC;KACL;IACD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,EAAE;QAC1C,OAAO,CACH,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ,IAC5C,CAAC,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CACzC,CACV,CAAC;KACL;IAED,kDAAkD;IAClD,OAAO,CACH,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ,IAC5C,CAAC,CAAC,uBAAuB,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAC5D,CACV,CAAC;AACN,CAAC,CAAC;AAlCW,QAAA,gBAAgB,oBAkC3B","sourcesContent":["import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\n\ntype AgedBetweenLabelProps = {\n min?: number;\n max?: number;\n};\n\n// Normalize values: If null/undefined, convert to `null` explicitly\nconst parseAge = (val?: number) => (val === null || val === undefined ? null : val);\n\nexport const AgedBetweenLabel = ({ min, max }: AgedBetweenLabelProps) => {\n // Parse the input values\n const parsedMin = parseAge(min);\n const parsedMax = parseAge(max);\n\n const { t } = useTranslation();\n\n // Return null if no values are provided\n if (parsedMin === null && parsedMax === null) {\n return null;\n }\n\n // Handle cases where only min or max is provided\n if (parsedMin !== null && parsedMax === null) {\n return (\n <Text type={TextType.Label} color={Color.DarkGrey}>\n {t('Step.Date.AgedAtLeast', { min: parsedMin })}\n </Text>\n );\n }\n if (parsedMax !== null && parsedMin === null) {\n return (\n <Text type={TextType.Label} color={Color.DarkGrey}>\n {t('Step.Date.AgedUpTo', { max: parsedMax })}\n </Text>\n );\n }\n\n // Handle case where both min and max are provided\n return (\n <Text type={TextType.Label} color={Color.DarkGrey}>\n {t('Step.Date.AgedBetween', { min: parsedMin, max: parsedMax })}\n </Text>\n );\n};\n"]}
@@ -2,6 +2,8 @@ import { FC } from 'react';
2
2
  export interface BookingWizardGuestSelectorProps {
3
3
  disableChild?: boolean;
4
4
  showInfants?: boolean;
5
+ minAdultAge?: number;
6
+ maxAdultAge?: number;
5
7
  maxAdults?: number;
6
8
  maxChildren?: number;
7
9
  maxInfants?: number;
@@ -42,7 +42,7 @@ const AgedBetweenLabel_1 = require("../../AgedBetweenLabel/AgedBetweenLabel");
42
42
  const BookingWizardBottomSheet_1 = __importDefault(require("../BookingWizardBottomSheet/BookingWizardBottomSheet"));
43
43
  const BookingWizardContext_1 = require("../BookingWizardContext");
44
44
  const BookingWizardGuestSelector_module_scss_1 = __importDefault(require("./BookingWizardGuestSelector.module.scss"));
45
- const BookingWizardGuestSelector = ({ disableChild, showInfants, maxAdults = 10, maxChildren = 10, maxInfants = 10, disableRoom, defaultValue, followElement, hideTooltip, onChange, onEditingChange, ageRange, }) => {
45
+ const BookingWizardGuestSelector = ({ disableChild, showInfants, minAdultAge, maxAdultAge, maxAdults = 10, maxChildren = 10, maxInfants = 10, disableRoom, defaultValue, followElement, hideTooltip, onChange, onEditingChange, ageRange, }) => {
46
46
  var _a, _b, _c, _d;
47
47
  const { overlay, type: overlayType, layout, isSmallContainer } = (0, BookingWizardContext_1.useBookingWizard)();
48
48
  const { t } = (0, react_i18next_1.useTranslation)();
@@ -103,9 +103,11 @@ const BookingWizardGuestSelector = ({ disableChild, showInfants, maxAdults = 10,
103
103
  var _a, _b, _c, _d;
104
104
  return (react_1.default.createElement("div", { className: BookingWizardGuestSelector_module_scss_1.default['popper--box'] },
105
105
  react_1.default.createElement("div", { className: BookingWizardGuestSelector_module_scss_1.default['popper--content'], ref: ref },
106
- react_1.default.createElement("div", { className: BookingWizardGuestSelector_module_scss_1.default.row },
107
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, StringHelper_1.default.plural(editingAdults, 'Adult', t)),
108
- react_1.default.createElement(NumberIncrement_1.default, { number: editingAdults, min: 1, max: maxAdults, onChange: applyButton ? setEditingAdults : setAdults, textSize: Text_1.TextType.Small, hideTooltips: hideTooltip })),
106
+ react_1.default.createElement("div", null,
107
+ react_1.default.createElement("div", { className: BookingWizardGuestSelector_module_scss_1.default.row },
108
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, StringHelper_1.default.plural(editingAdults, 'Adult', t)),
109
+ react_1.default.createElement(NumberIncrement_1.default, { number: editingAdults, min: 1, max: maxAdults, onChange: applyButton ? setEditingAdults : setAdults, textSize: Text_1.TextType.Small, hideTooltips: hideTooltip })),
110
+ react_1.default.createElement(AgedBetweenLabel_1.AgedBetweenLabel, { min: minAdultAge, max: maxAdultAge })),
109
111
  disableChild ? null : (react_1.default.createElement("div", null,
110
112
  react_1.default.createElement("div", { className: BookingWizardGuestSelector_module_scss_1.default.row },
111
113
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, StringHelper_1.default.plural(editingChildren, 'Child', t)),
@@ -1 +1 @@
1
- {"version":3,"file":"BookingWizardGuestSelector.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import classNames from 'classnames';\nimport React, { FC, useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport BEButton from '@/components/generic/BEButton';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport NumberIncrement from '@/components/generic/NumberIncrement';\nimport { Overlay } from '@/components/generic/Overlay/Overlay';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Translation } from '@/translations/Translation';\nimport StringHelper from '@/util/StringHelper';\n\nimport { AgedBetweenLabel } from '../../AgedBetweenLabel/AgedBetweenLabel';\nimport BookingWizardBottomSheet from '../BookingWizardBottomSheet/BookingWizardBottomSheet';\nimport { useBookingWizard } from '../BookingWizardContext';\nimport styles from './BookingWizardGuestSelector.module.scss';\n\nexport interface BookingWizardGuestSelectorProps {\n disableChild?: boolean;\n showInfants?: boolean;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n\n disableRoom?: boolean;\n defaultValue?: { adults?: number; children?: number; infants?: number; room?: number };\n /**\n * The official values after apply\n * @param adults\n * @param children\n * @param room\n */\n onChange?: ({ adults, children, room }: { adults: number; children: number; infants: number; room: number }) => void;\n /**\n * Real-time values changing once user selects value\n * @param adults\n * @param children\n * @param room\n */\n onEditingChange?: ({ adults, children, room }: { adults: number; children: number; infants: number; room: number }) => void;\n followElement?: HTMLElement | null;\n hideTooltip?: boolean;\n ageRange?: {\n [people in 'child' | 'infant']?: {\n min?: number;\n max?: number;\n };\n };\n}\n\nexport const BookingWizardGuestSelector: FC<BookingWizardGuestSelectorProps> = ({\n disableChild,\n showInfants,\n maxAdults = 10,\n maxChildren = 10,\n maxInfants = 10,\n disableRoom,\n defaultValue,\n followElement,\n hideTooltip,\n onChange,\n onEditingChange,\n ageRange,\n}) => {\n const { overlay, type: overlayType, layout, isSmallContainer } = useBookingWizard();\n const { t } = useTranslation();\n\n const ref = useRef(null);\n const targetRef = useRef(null);\n\n const [adults, setAdults] = useState(defaultValue?.adults ?? 1);\n const [children, setChildren] = useState(defaultValue?.children ?? 0);\n const [infants, setInfants] = useState(defaultValue?.infants ?? 0);\n const [room, setRoom] = useState(defaultValue?.room ?? 1);\n const [editingAdults, setEditingAdults] = useState(adults);\n const [editingChildren, setEditingChildren] = useState(children);\n const [editingInfants, setEditingInfants] = useState(infants);\n const [editingRoom, setEditingRoom] = useState(room);\n\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n setAdults(defaultValue?.adults ?? 1);\n setChildren(defaultValue?.children ?? 0);\n setInfants(defaultValue?.infants ?? 0);\n }, [defaultValue]);\n\n useEffect(() => {\n setEditingAdults(adults);\n }, [adults]);\n\n useEffect(() => {\n setEditingChildren(children);\n }, [children]);\n\n useEffect(() => {\n setEditingInfants(infants);\n }, [infants]);\n\n const onApply = () => {\n setAdults(editingAdults);\n setChildren(editingChildren);\n setInfants(editingInfants);\n setRoom(editingRoom);\n setOpen(false);\n onChange?.({ adults: editingAdults, children: editingChildren, infants: editingInfants, room: editingRoom });\n };\n\n useEffect(() => {\n onEditingChange?.({ adults: editingAdults, children: editingChildren, infants: editingInfants, room: editingRoom });\n }, [editingAdults, editingChildren, editingAdults, editingRoom]);\n\n const getValueAsText = () => {\n if (layout === 'horizontal-condensed') {\n return adults + children;\n }\n\n if (layout === 'booking-summary') {\n return StringHelper.pluralWithCount(adults + children + infants, 'Guest', t);\n }\n\n const parts = [StringHelper.pluralWithCount(adults, 'Adult', t)];\n\n if (children > 0) {\n parts.push(StringHelper.pluralWithCount(children, 'Child', t));\n }\n\n if (infants > 0) {\n parts.push(StringHelper.pluralWithCount(infants, 'Infant', t));\n }\n\n return parts.join(' - ');\n };\n\n const inner = (applyButton = true) => {\n return (\n <div className={styles['popper--box']}>\n <div className={styles['popper--content']} ref={ref}>\n <div className={styles.row}>\n <Text type={TextType.Small}>{StringHelper.plural(editingAdults, 'Adult', t)}</Text>\n <NumberIncrement\n number={editingAdults}\n min={1}\n max={maxAdults}\n onChange={applyButton ? setEditingAdults : setAdults}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n {disableChild ? null : (\n <div>\n <div className={styles.row}>\n <Text type={TextType.Small}>{StringHelper.plural(editingChildren, 'Child', t)}</Text>\n <NumberIncrement\n number={editingChildren}\n min={0}\n max={maxChildren}\n onChange={applyButton ? setEditingChildren : setChildren}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n <AgedBetweenLabel min={ageRange?.child?.min} max={ageRange?.child?.max} />\n </div>\n )}\n {showInfants ? (\n <div>\n <div className={styles.row}>\n <Text type={TextType.Small}>{StringHelper.plural(editingInfants, 'Infant', t)}</Text>\n <NumberIncrement\n number={editingInfants}\n min={0}\n max={maxInfants}\n onChange={applyButton ? setEditingInfants : setInfants}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n <AgedBetweenLabel min={ageRange?.infant?.min} max={ageRange?.infant?.max} />\n </div>\n ) : null}\n {disableRoom ? null : (\n <div className={styles.row}>\n <Text type={TextType.Small}>{StringHelper.plural(editingRoom, 'Room', t)}</Text>\n <NumberIncrement\n number={editingRoom}\n min={1}\n max={10}\n onChange={applyButton ? setEditingRoom : setRoom}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n )}\n {applyButton ? (\n <div className={styles['popper--action']}>\n <BEButton\n wide={overlayType === 'bottom-sheet'}\n className={classNames(styles.applyBtn, {\n [styles['--booking-summary']]: layout === 'booking-summary',\n })}\n onClick={onApply}\n >\n {t(Translation.Misc.Apply)}\n </BEButton>\n </div>\n ) : null}\n </div>\n </div>\n );\n };\n\n const content = () => {\n if (overlayType === 'inline') {\n return (\n <div className={styles.popper}>\n <AutoAutoHeight open={open}>{inner(false)}</AutoAutoHeight>\n </div>\n );\n }\n\n if (['bottom-sheet', 'top-sheet'].includes(overlayType)) {\n return (\n <BookingWizardBottomSheet\n className={classNames(styles.container, styles['--bottom-sheet'])}\n open={open}\n onDismiss={() => setOpen(false)}\n header={\n <div className={styles.header}>\n <Text>{t(Translation.Misc.HowManyGuests)}</Text> <Icon icon={IconType.Close} onClick={() => setOpen(false)} />\n </div>\n }\n {...('top-sheet' === overlayType && {\n snapPoints: ({ maxHeight }) => [maxHeight],\n })}\n >\n <div className={styles.popper}>{inner()} </div>\n </BookingWizardBottomSheet>\n );\n }\n\n return (\n <Overlay\n offset={overlay?.offset}\n usePortal={false}\n followElement={followElement || targetRef.current}\n placement={overlay?.placement}\n fallbackPlacements={overlay?.fallbackPlacements}\n strategy=\"absolute\"\n open={open}\n onClose={() => setOpen?.(!open)}\n className={styles.popper}\n containerClassName={classNames(styles['custom-overlay'], { [styles['small-container']]: isSmallContainer })}\n hideStyles\n >\n {inner()}\n </Overlay>\n );\n };\n\n return (\n <div\n ref={targetRef}\n className={classNames(styles.container, {\n [styles['--inline']]: overlayType === 'inline',\n [styles['--open']]: open,\n })}\n >\n <div className={classNames(styles['container--search'])} onClick={() => setOpen?.(!open)}>\n <Text\n className={classNames(styles['text-display'], {\n [styles['--line-1']]: layout === 'horizontal-condensed',\n [styles['--line-booking-summary']]: layout === 'booking-summary',\n })}\n bold\n >\n {getValueAsText()}\n </Text>\n\n {['horizontal-condensed', 'booking-summary'].includes(layout) ? null : <Icon icon={IconType.Dropdown} />}\n </div>\n\n {content()}\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"BookingWizardGuestSelector.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAAoC;AACpC,+CAA+D;AAC/D,iDAA+C;AAE/C,iFAAyD;AACzD,6EAAqD;AACrD,uEAAgE;AAChE,2FAAmE;AACnE,kEAA+D;AAC/D,kEAA2D;AAC3D,4DAAyD;AACzD,uEAA+C;AAE/C,8EAA2E;AAC3E,oHAA4F;AAC5F,kEAA2D;AAC3D,sHAA8D;AAqCvD,MAAM,0BAA0B,GAAwC,CAAC,EAC5E,YAAY,EACZ,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,GAAG,EAAE,EACd,WAAW,GAAG,EAAE,EAChB,UAAU,GAAG,EAAE,EACf,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,QAAQ,EACR,eAAe,EACf,QAAQ,GACX,EAAE,EAAE;;IACD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAA,uCAAgB,GAAE,CAAC;IACpF,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,GAAG,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IACzB,MAAM,SAAS,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IAE/B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,mCAAI,CAAC,CAAC,CAAC;IAChE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,mCAAI,CAAC,CAAC,CAAC;IACtE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,mCAAI,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,mCAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAC,QAAQ,CAAC,CAAC;IACjE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAErD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAExC,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACX,SAAS,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,mCAAI,CAAC,CAAC,CAAC;QACrC,WAAW,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,mCAAI,CAAC,CAAC,CAAC;QACzC,UAAU,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,mCAAI,CAAC,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,OAAO,GAAG,GAAG,EAAE;QACjB,SAAS,CAAC,aAAa,CAAC,CAAC;QACzB,WAAW,CAAC,eAAe,CAAC,CAAC;QAC7B,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3B,OAAO,CAAC,WAAW,CAAC,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACjH,CAAC,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACxH,CAAC,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;IAEjE,MAAM,cAAc,GAAG,GAAG,EAAE;QACxB,IAAI,MAAM,KAAK,sBAAsB,EAAE;YACnC,OAAO,MAAM,GAAG,QAAQ,CAAC;SAC5B;QAED,IAAI,MAAM,KAAK,iBAAiB,EAAE;YAC9B,OAAO,sBAAY,CAAC,eAAe,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;SAChF;QAED,MAAM,KAAK,GAAG,CAAC,sBAAY,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjE,IAAI,QAAQ,GAAG,CAAC,EAAE;YACd,KAAK,CAAC,IAAI,CAAC,sBAAY,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;SAClE;QAED,IAAI,OAAO,GAAG,CAAC,EAAE;YACb,KAAK,CAAC,IAAI,CAAC,sBAAY,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;SAClE;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,WAAW,GAAG,IAAI,EAAE,EAAE;;QACjC,OAAO,CACH,uCAAK,SAAS,EAAE,gDAAM,CAAC,aAAa,CAAC;YACjC,uCAAK,SAAS,EAAE,gDAAM,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,GAAG;gBAC/C;oBACI,uCAAK,SAAS,EAAE,gDAAM,CAAC,GAAG;wBACtB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,sBAAY,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC,CAAQ;wBACnF,8BAAC,yBAAe,IACZ,MAAM,EAAE,aAAa,EACrB,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,EACpD,QAAQ,EAAE,eAAQ,CAAC,KAAK,EACxB,YAAY,EAAE,WAAW,GAC3B,CACA;oBACN,8BAAC,mCAAgB,IAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAI,CACtD;gBACL,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACnB;oBACI,uCAAK,SAAS,EAAE,gDAAM,CAAC,GAAG;wBACtB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,sBAAY,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC,CAAQ;wBACrF,8BAAC,yBAAe,IACZ,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,EACxD,QAAQ,EAAE,eAAQ,CAAC,KAAK,EACxB,YAAY,EAAE,WAAW,GAC3B,CACA;oBACN,8BAAC,mCAAgB,IAAC,GAAG,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,0CAAE,GAAG,EAAE,GAAG,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,0CAAE,GAAG,GAAI,CACxE,CACT;gBACA,WAAW,CAAC,CAAC,CAAC,CACX;oBACI,uCAAK,SAAS,EAAE,gDAAM,CAAC,GAAG;wBACtB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,sBAAY,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAQ;wBACrF,8BAAC,yBAAe,IACZ,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,EACtD,QAAQ,EAAE,eAAQ,CAAC,KAAK,EACxB,YAAY,EAAE,WAAW,GAC3B,CACA;oBACN,8BAAC,mCAAgB,IAAC,GAAG,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,0CAAE,GAAG,EAAE,GAAG,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,0CAAE,GAAG,GAAI,CAC1E,CACT,CAAC,CAAC,CAAC,IAAI;gBACP,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAClB,uCAAK,SAAS,EAAE,gDAAM,CAAC,GAAG;oBACtB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,sBAAY,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAQ;oBAChF,8BAAC,yBAAe,IACZ,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,EAAE,EACP,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,EAChD,QAAQ,EAAE,eAAQ,CAAC,KAAK,EACxB,YAAY,EAAE,WAAW,GAC3B,CACA,CACT;gBACA,WAAW,CAAC,CAAC,CAAC,CACX,uCAAK,SAAS,EAAE,gDAAM,CAAC,gBAAgB,CAAC;oBACpC,8BAAC,kBAAQ,IACL,IAAI,EAAE,WAAW,KAAK,cAAc,EACpC,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,QAAQ,EAAE;4BACnC,CAAC,gDAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,MAAM,KAAK,iBAAiB;yBAC9D,CAAC,EACF,OAAO,EAAE,OAAO,IAEf,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CACnB,CACT,CACT,CAAC,CAAC,CAAC,IAAI,CACN,CACJ,CACT,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACjB,IAAI,WAAW,KAAK,QAAQ,EAAE;YAC1B,OAAO,CACH,uCAAK,SAAS,EAAE,gDAAM,CAAC,MAAM;gBACzB,8BAAC,wBAAc,IAAC,IAAI,EAAE,IAAI,IAAG,KAAK,CAAC,KAAK,CAAC,CAAkB,CACzD,CACT,CAAC;SACL;QAED,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACrD,OAAO,CACH,8BAAC,kCAAwB,kBACrB,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,SAAS,EAAE,gDAAM,CAAC,gBAAgB,CAAC,CAAC,EACjE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAC/B,MAAM,EACF,uCAAK,SAAS,EAAE,gDAAM,CAAC,MAAM;oBACzB,8BAAC,cAAI,QAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAQ;;oBAAC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAI,CAC5G,IAEN,CAAC,WAAW,KAAK,WAAW,IAAI;gBAChC,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC;aAC7C,CAAC;gBAEF,uCAAK,SAAS,EAAE,gDAAM,CAAC,MAAM;oBAAG,KAAK,EAAE;wBAAQ,CACxB,CAC9B,CAAC;SACL;QAED,OAAO,CACH,8BAAC,iBAAO,IACJ,MAAM,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EACvB,SAAS,EAAE,KAAK,EAChB,aAAa,EAAE,aAAa,IAAI,SAAS,CAAC,OAAO,EACjD,SAAS,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAC7B,kBAAkB,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,kBAAkB,EAC/C,QAAQ,EAAC,UAAU,EACnB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,IAAI,CAAC,EAC/B,SAAS,EAAE,gDAAM,CAAC,MAAM,EACxB,kBAAkB,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,gDAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAC3G,UAAU,UAET,KAAK,EAAE,CACF,CACb,CAAC;IACN,CAAC,CAAC;IAEF,OAAO,CACH,uCACI,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,SAAS,EAAE;YACpC,CAAC,gDAAM,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,KAAK,QAAQ;YAC9C,CAAC,gDAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI;SAC3B,CAAC;QAEF,uCAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,IAAI,CAAC;YACpF,8BAAC,cAAI,IACD,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,cAAc,CAAC,EAAE;oBAC1C,CAAC,gDAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,KAAK,sBAAsB;oBACvD,CAAC,gDAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,KAAK,iBAAiB;iBACnE,CAAC,EACF,IAAI,UAEH,cAAc,EAAE,CACd;YAEN,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,QAAQ,GAAI,CACtG;QAEL,OAAO,EAAE,CACR,CACT,CAAC;AACN,CAAC,CAAC;AAhPW,QAAA,0BAA0B,8BAgPrC","sourcesContent":["import classNames from 'classnames';\nimport React, { FC, useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport BEButton from '@/components/generic/BEButton';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport NumberIncrement from '@/components/generic/NumberIncrement';\nimport { Overlay } from '@/components/generic/Overlay/Overlay';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Translation } from '@/translations/Translation';\nimport StringHelper from '@/util/StringHelper';\n\nimport { AgedBetweenLabel } from '../../AgedBetweenLabel/AgedBetweenLabel';\nimport BookingWizardBottomSheet from '../BookingWizardBottomSheet/BookingWizardBottomSheet';\nimport { useBookingWizard } from '../BookingWizardContext';\nimport styles from './BookingWizardGuestSelector.module.scss';\n\nexport interface BookingWizardGuestSelectorProps {\n disableChild?: boolean;\n showInfants?: boolean;\n minAdultAge?: number;\n maxAdultAge?: number;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n\n disableRoom?: boolean;\n defaultValue?: { adults?: number; children?: number; infants?: number; room?: number };\n /**\n * The official values after apply\n * @param adults\n * @param children\n * @param room\n */\n onChange?: ({ adults, children, room }: { adults: number; children: number; infants: number; room: number }) => void;\n /**\n * Real-time values changing once user selects value\n * @param adults\n * @param children\n * @param room\n */\n onEditingChange?: ({ adults, children, room }: { adults: number; children: number; infants: number; room: number }) => void;\n followElement?: HTMLElement | null;\n hideTooltip?: boolean;\n ageRange?: {\n [people in 'child' | 'infant']?: {\n min?: number;\n max?: number;\n };\n };\n}\n\nexport const BookingWizardGuestSelector: FC<BookingWizardGuestSelectorProps> = ({\n disableChild,\n showInfants,\n minAdultAge,\n maxAdultAge,\n maxAdults = 10,\n maxChildren = 10,\n maxInfants = 10,\n disableRoom,\n defaultValue,\n followElement,\n hideTooltip,\n onChange,\n onEditingChange,\n ageRange,\n}) => {\n const { overlay, type: overlayType, layout, isSmallContainer } = useBookingWizard();\n const { t } = useTranslation();\n\n const ref = useRef(null);\n const targetRef = useRef(null);\n\n const [adults, setAdults] = useState(defaultValue?.adults ?? 1);\n const [children, setChildren] = useState(defaultValue?.children ?? 0);\n const [infants, setInfants] = useState(defaultValue?.infants ?? 0);\n const [room, setRoom] = useState(defaultValue?.room ?? 1);\n const [editingAdults, setEditingAdults] = useState(adults);\n const [editingChildren, setEditingChildren] = useState(children);\n const [editingInfants, setEditingInfants] = useState(infants);\n const [editingRoom, setEditingRoom] = useState(room);\n\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n setAdults(defaultValue?.adults ?? 1);\n setChildren(defaultValue?.children ?? 0);\n setInfants(defaultValue?.infants ?? 0);\n }, [defaultValue]);\n\n useEffect(() => {\n setEditingAdults(adults);\n }, [adults]);\n\n useEffect(() => {\n setEditingChildren(children);\n }, [children]);\n\n useEffect(() => {\n setEditingInfants(infants);\n }, [infants]);\n\n const onApply = () => {\n setAdults(editingAdults);\n setChildren(editingChildren);\n setInfants(editingInfants);\n setRoom(editingRoom);\n setOpen(false);\n onChange?.({ adults: editingAdults, children: editingChildren, infants: editingInfants, room: editingRoom });\n };\n\n useEffect(() => {\n onEditingChange?.({ adults: editingAdults, children: editingChildren, infants: editingInfants, room: editingRoom });\n }, [editingAdults, editingChildren, editingAdults, editingRoom]);\n\n const getValueAsText = () => {\n if (layout === 'horizontal-condensed') {\n return adults + children;\n }\n\n if (layout === 'booking-summary') {\n return StringHelper.pluralWithCount(adults + children + infants, 'Guest', t);\n }\n\n const parts = [StringHelper.pluralWithCount(adults, 'Adult', t)];\n\n if (children > 0) {\n parts.push(StringHelper.pluralWithCount(children, 'Child', t));\n }\n\n if (infants > 0) {\n parts.push(StringHelper.pluralWithCount(infants, 'Infant', t));\n }\n\n return parts.join(' - ');\n };\n\n const inner = (applyButton = true) => {\n return (\n <div className={styles['popper--box']}>\n <div className={styles['popper--content']} ref={ref}>\n <div>\n <div className={styles.row}>\n <Text type={TextType.Small}>{StringHelper.plural(editingAdults, 'Adult', t)}</Text>\n <NumberIncrement\n number={editingAdults}\n min={1}\n max={maxAdults}\n onChange={applyButton ? setEditingAdults : setAdults}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n <AgedBetweenLabel min={minAdultAge} max={maxAdultAge} />\n </div>\n {disableChild ? null : (\n <div>\n <div className={styles.row}>\n <Text type={TextType.Small}>{StringHelper.plural(editingChildren, 'Child', t)}</Text>\n <NumberIncrement\n number={editingChildren}\n min={0}\n max={maxChildren}\n onChange={applyButton ? setEditingChildren : setChildren}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n <AgedBetweenLabel min={ageRange?.child?.min} max={ageRange?.child?.max} />\n </div>\n )}\n {showInfants ? (\n <div>\n <div className={styles.row}>\n <Text type={TextType.Small}>{StringHelper.plural(editingInfants, 'Infant', t)}</Text>\n <NumberIncrement\n number={editingInfants}\n min={0}\n max={maxInfants}\n onChange={applyButton ? setEditingInfants : setInfants}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n <AgedBetweenLabel min={ageRange?.infant?.min} max={ageRange?.infant?.max} />\n </div>\n ) : null}\n {disableRoom ? null : (\n <div className={styles.row}>\n <Text type={TextType.Small}>{StringHelper.plural(editingRoom, 'Room', t)}</Text>\n <NumberIncrement\n number={editingRoom}\n min={1}\n max={10}\n onChange={applyButton ? setEditingRoom : setRoom}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n )}\n {applyButton ? (\n <div className={styles['popper--action']}>\n <BEButton\n wide={overlayType === 'bottom-sheet'}\n className={classNames(styles.applyBtn, {\n [styles['--booking-summary']]: layout === 'booking-summary',\n })}\n onClick={onApply}\n >\n {t(Translation.Misc.Apply)}\n </BEButton>\n </div>\n ) : null}\n </div>\n </div>\n );\n };\n\n const content = () => {\n if (overlayType === 'inline') {\n return (\n <div className={styles.popper}>\n <AutoAutoHeight open={open}>{inner(false)}</AutoAutoHeight>\n </div>\n );\n }\n\n if (['bottom-sheet', 'top-sheet'].includes(overlayType)) {\n return (\n <BookingWizardBottomSheet\n className={classNames(styles.container, styles['--bottom-sheet'])}\n open={open}\n onDismiss={() => setOpen(false)}\n header={\n <div className={styles.header}>\n <Text>{t(Translation.Misc.HowManyGuests)}</Text> <Icon icon={IconType.Close} onClick={() => setOpen(false)} />\n </div>\n }\n {...('top-sheet' === overlayType && {\n snapPoints: ({ maxHeight }) => [maxHeight],\n })}\n >\n <div className={styles.popper}>{inner()} </div>\n </BookingWizardBottomSheet>\n );\n }\n\n return (\n <Overlay\n offset={overlay?.offset}\n usePortal={false}\n followElement={followElement || targetRef.current}\n placement={overlay?.placement}\n fallbackPlacements={overlay?.fallbackPlacements}\n strategy=\"absolute\"\n open={open}\n onClose={() => setOpen?.(!open)}\n className={styles.popper}\n containerClassName={classNames(styles['custom-overlay'], { [styles['small-container']]: isSmallContainer })}\n hideStyles\n >\n {inner()}\n </Overlay>\n );\n };\n\n return (\n <div\n ref={targetRef}\n className={classNames(styles.container, {\n [styles['--inline']]: overlayType === 'inline',\n [styles['--open']]: open,\n })}\n >\n <div className={classNames(styles['container--search'])} onClick={() => setOpen?.(!open)}>\n <Text\n className={classNames(styles['text-display'], {\n [styles['--line-1']]: layout === 'horizontal-condensed',\n [styles['--line-booking-summary']]: layout === 'booking-summary',\n })}\n bold\n >\n {getValueAsText()}\n </Text>\n\n {['horizontal-condensed', 'booking-summary'].includes(layout) ? null : <Icon icon={IconType.Dropdown} />}\n </div>\n\n {content()}\n </div>\n );\n};\n"]}
@@ -1,2 +1,4 @@
1
1
  import { UseCurrencyProps } from '../../hooks/Currency';
2
- export default function Currency(props: UseCurrencyProps): JSX.Element;
2
+ export default function Currency(props: UseCurrencyProps & {
3
+ forceHideDecimals?: boolean;
4
+ }): JSX.Element;
@@ -22,16 +22,42 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
+ var __rest = (this && this.__rest) || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
+ t[p] = s[p];
29
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
+ t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
25
36
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
38
  };
28
39
  Object.defineProperty(exports, "__esModule", { value: true });
29
- const react_1 = __importDefault(require("react"));
40
+ const react_1 = __importStar(require("react"));
30
41
  const Icon_1 = __importStar(require("./Icon/Icon"));
42
+ const HotelOverridesContext_1 = require("../../contexts/HotelOverridesContext");
31
43
  const Currency_1 = __importDefault(require("../../hooks/Currency"));
32
44
  const Color_1 = require("../../util/Color");
33
45
  function Currency(props) {
34
- const { symbol, isLoading, prettyValue } = (0, Currency_1.default)(props);
46
+ const { hideDecimals } = props, rest = __rest(props, ["hideDecimals"]);
47
+ const hotelOverridesContext = (0, react_1.useContext)(HotelOverridesContext_1.HotelOverridesContext);
48
+ const hideEntryDecimals = (0, react_1.useMemo)(() => {
49
+ // First we check if decimals must absolutely not be displayed
50
+ if (props.forceHideDecimals === true) {
51
+ return true;
52
+ }
53
+ // Then we check if the API overrides the default currency display state
54
+ if (hotelOverridesContext.alwaysShowDecimals === true) {
55
+ return false;
56
+ }
57
+ // Then we rely on how developers origally intened the UI to funciton.
58
+ return hideDecimals;
59
+ }, [hideDecimals, hotelOverridesContext]);
60
+ const { symbol, isLoading, prettyValue } = (0, Currency_1.default)(Object.assign(Object.assign({}, rest), { hideDecimals: hideEntryDecimals }));
35
61
  return isLoading && !props.disableLoading ? (react_1.default.createElement("span", { className: "u-inline-flex a-spin" },
36
62
  react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.Spinner, size: "1em", color: Color_1.Color.Accent }))) : (react_1.default.createElement("span", { className: "u-ellip-overflow u-nowrap" },
37
63
  symbol && react_1.default.createElement("span", null, symbol),
@@ -1 +1 @@
1
- {"version":3,"file":"Currency.js","sourceRoot":"/","sources":["src/components/generic/Currency.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAE1B,uEAAgE;AAChE,gEAAiE;AACjE,wCAAqC;AAErC,SAAwB,QAAQ,CAAC,KAAuB;IACpD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAW,EAAC,KAAK,CAAC,CAAC;IAC9D,OAAO,SAAS,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CACxC,wCAAM,SAAS,EAAC,sBAAsB;QAClC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,OAAO,EAAE,IAAI,EAAC,KAAK,EAAC,KAAK,EAAE,aAAK,CAAC,MAAM,GAAI,CAC7D,CACV,CAAC,CAAC,CAAC,CACA,wCAAM,SAAS,EAAC,2BAA2B;QACtC,MAAM,IAAI,4CAAO,MAAM,CAAQ;QAC/B,WAAW,CACT,CACV,CAAC;AACN,CAAC;AAZD,2BAYC","sourcesContent":["import React from 'react';\n\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport useCurrency, { UseCurrencyProps } from '@/hooks/Currency';\nimport { Color } from '@/util/Color';\n\nexport default function Currency(props: UseCurrencyProps) {\n const { symbol, isLoading, prettyValue } = useCurrency(props);\n return isLoading && !props.disableLoading ? (\n <span className=\"u-inline-flex a-spin\">\n <Icon icon={IconType.Spinner} size=\"1em\" color={Color.Accent} />\n </span>\n ) : (\n <span className=\"u-ellip-overflow u-nowrap\">\n {symbol && <span>{symbol}</span>}\n {prettyValue}\n </span>\n );\n}\n"]}
1
+ {"version":3,"file":"Currency.js","sourceRoot":"/","sources":["src/components/generic/Currency.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAmD;AAEnD,uEAAgE;AAChE,4EAAyE;AACzE,gEAAiE;AACjE,wCAAqC;AAErC,SAAwB,QAAQ,CAAC,KAAyD;IACtF,MAAM,EAAE,YAAY,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAAjC,gBAAyB,CAAQ,CAAC;IACxC,MAAM,qBAAqB,GAAG,IAAA,kBAAU,EAAC,6CAAqB,CAAC,CAAC;IAEhE,MAAM,iBAAiB,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QACnC,8DAA8D;QAC9D,IAAI,KAAK,CAAC,iBAAiB,KAAK,IAAI,EAAE;YAClC,OAAO,IAAI,CAAC;SACf;QAED,wEAAwE;QACxE,IAAI,qBAAqB,CAAC,kBAAkB,KAAK,IAAI,EAAE;YACnD,OAAO,KAAK,CAAC;SAChB;QAED,sEAAsE;QACtE,OAAO,YAAY,CAAC;IACxB,CAAC,EAAE,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAE1C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAW,kCAAM,IAAI,KAAE,YAAY,EAAE,iBAAiB,IAAG,CAAC;IACrG,OAAO,SAAS,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CACxC,wCAAM,SAAS,EAAC,sBAAsB;QAClC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,OAAO,EAAE,IAAI,EAAC,KAAK,EAAC,KAAK,EAAE,aAAK,CAAC,MAAM,GAAI,CAC7D,CACV,CAAC,CAAC,CAAC,CACA,wCAAM,SAAS,EAAC,2BAA2B;QACtC,MAAM,IAAI,4CAAO,MAAM,CAAQ;QAC/B,WAAW,CACT,CACV,CAAC;AACN,CAAC;AA9BD,2BA8BC","sourcesContent":["import React, { useContext, useMemo } from 'react';\n\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { HotelOverridesContext } from '@/contexts/HotelOverridesContext';\nimport useCurrency, { UseCurrencyProps } from '@/hooks/Currency';\nimport { Color } from '@/util/Color';\n\nexport default function Currency(props: UseCurrencyProps & { forceHideDecimals?: boolean }) {\n const { hideDecimals, ...rest } = props;\n const hotelOverridesContext = useContext(HotelOverridesContext);\n\n const hideEntryDecimals = useMemo(() => {\n // First we check if decimals must absolutely not be displayed\n if (props.forceHideDecimals === true) {\n return true;\n }\n\n // Then we check if the API overrides the default currency display state\n if (hotelOverridesContext.alwaysShowDecimals === true) {\n return false;\n }\n\n // Then we rely on how developers origally intened the UI to funciton.\n return hideDecimals;\n }, [hideDecimals, hotelOverridesContext]);\n\n const { symbol, isLoading, prettyValue } = useCurrency({ ...rest, hideDecimals: hideEntryDecimals });\n return isLoading && !props.disableLoading ? (\n <span className=\"u-inline-flex a-spin\">\n <Icon icon={IconType.Spinner} size=\"1em\" color={Color.Accent} />\n </span>\n ) : (\n <span className=\"u-ellip-overflow u-nowrap\">\n {symbol && <span>{symbol}</span>}\n {prettyValue}\n </span>\n );\n}\n"]}
@@ -267,7 +267,7 @@ function DatePickerDay(props) {
267
267
  };
268
268
  const priceBlock = props.day && props.selectable && !isPast && (price || (isLoading && !price)) && price >= 0 ? (react_1.default.createElement("div", { className: `diji-calendar-${(_d = props.displayType) !== null && _d !== void 0 ? _d : 'month'}--item-cost` }, isLoading ? (react_1.default.createElement("div", { className: "u-inline-flex a-spin" },
269
269
  react_1.default.createElement(Icon_1.default, { color: Color_1.Color.Accent, icon: Icon_1.IconType.Spinner, size: "14px" }))) : (react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label },
270
- react_1.default.createElement(Currency_1.default, { shortenThousandsAfter: 6, removeCurrencyAfterChar: 5, hideDecimals: true, disableLocalization: true }, price))))) : (react_1.default.createElement(react_1.default.Fragment, null));
270
+ react_1.default.createElement(Currency_1.default, { shortenThousandsAfter: 6, removeCurrencyAfterChar: 5, forceHideDecimals: true, disableLocalization: true }, price))))) : (react_1.default.createElement(react_1.default.Fragment, null));
271
271
  if (props.displayType === 'week') {
272
272
  let height = 0;
273
273
  const range = (price / AvailabilityAPI_1.default.maxNightPrice) * 100;
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerDay.js","sourceRoot":"/","sources":["src/components/generic/date/DatePickerDay.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAsE;AACtE,2CAA6F;AAC7F,4DAAoC;AAEpC,+CAAwE;AACxE,iDAA+C;AAC/C,0DAAuD;AAEvD,4EAAoD;AACpD,kEAAmC;AACnC,6EAAqD;AACrD,uEAAgE;AAChE,kEAA2D;AAC3D,mFAA2D;AAC3D,iEAA8D;AAC9D,wCAAqC;AAarC,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC3B,qEAAY,CAAA;IACZ,gDAAyB,CAAA;IACzB,4CAAqB,CAAA;IACrB,8CAAuB,CAAA;AAC3B,CAAC,EALW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAK9B;AAED,SAAwB,aAAa,CAAC,KAAyB;IAC3D,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAA,qCAAiB,GAAE,CAAC;IAC7C,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,iBAAiB,GAAG,IAAA,kBAAU,EAAC,4BAAiB,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAChD,MAAM,EAAE,uBAAuB,EAAE,GAAG,IAAA,4BAAoB,EAAC,EAAE,aAAa,EAAE,CAAC,CAAC;IAE5E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,GAAU,CAAC;IAE7C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAEtD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,IAAK,iBAAiB,CAAC,KAAe,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC5F,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,GAAG,iBAAiB,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC;IAExE,MAAM,EAAE,iBAAiB,EAAE,GAAG,aAAa,CAAC;IAE5C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1E,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;YACtB,IAAI,KAAK,EAAE;gBACP,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAEZ,YAAY,CAAC,IAAI,CAAC,CAAC;gBAEnB,oBAAG,CAAC,YAAY,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;oBAClJ,IAAI,CAAC,SAAS,EAAE;wBACZ,IAAI,YAAY,EAAE;4BACd,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;4BAE7B,IAAI,iBAAiB,CAAC,QAAQ,GAAG,yBAAe,CAAC,aAAa,EAAE;gCAC5D,iBAAiB,CAAC,WAAW,CAAC,yBAAe,CAAC,aAAa,CAAC,CAAC;6BAChE;yBACJ;wBAED,YAAY,CAAC,KAAK,CAAC,CAAC;qBACvB;gBACL,CAAC,CAAC,CAAC;aACN;iBAAM;gBACH,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACb,YAAY,CAAC,KAAK,CAAC,CAAC;aACvB;SACJ;QAED,OAAO,GAAG,EAAE;YACR,SAAS,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,SAAS,EAAE,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,WAAW,EAAE,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,UAAU,EAAE,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,YAAY,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;IAEpK,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,iBAAiB,CAAC,YAAY,EAAE;YAChC,IAAI,KAAK,CAAC,IAAI,IAAK,iBAAiB,CAAC,SAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,iBAAiB,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;gBACrJ,cAAc,CAAC,IAAI,CAAC,CAAC;gBAErB,IAAI,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;oBACxI,SAAS,CAAC,IAAI,CAAC,CAAC;iBACnB;qBAAM;oBACH,SAAS,CAAC,KAAK,CAAC,CAAC;iBACpB;gBACD,OAAO;aACV;SACJ;QAED,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,SAAS,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAEhD,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACX,IAAI,KAAK,CAAC,IAAI,IAAI,iBAAiB,CAAC,SAAS,EAAE;YAC3C,IAAI,CAAA,MAAA,iBAAiB,CAAC,SAAS,0CAAE,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,MAAI,MAAA,iBAAiB,CAAC,OAAO,0CAAE,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA,EAAE;gBAC/H,aAAa,CAAC,IAAI,CAAC,CAAC;gBAEpB,IAAI,MAAA,iBAAiB,CAAC,OAAO,0CAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;oBACtD,SAAS,CAAC,IAAI,CAAC,CAAC;iBACnB;gBAED,OAAO;aACV;YAED,IAAI,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;gBACvD,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjB,aAAa,CAAC,IAAI,CAAC,CAAC;gBAEpB,OAAO;aACV;SACJ;QAED,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,SAAS,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAExE,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;;QACtB,MAAM,SAAS,GAAG,CAAC,CAAmB,EAAE,EAAE;YACtC,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzC,aAAa,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,CAAC,CAAmB,EAAE,EAAE;YACvC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG,GAAY,EAAE;YAC/B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3F,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,CAAmB,EAAE,EAAE;YACpC,iBAAiB,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,MAAM,kBAAkB,GAAwB,uBAAuB,CAAC;YACpE,gBAAgB,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,gBAAgB;YACrD,SAAS,EAAE,iBAAiB,CAAC,SAAS;YACtC,WAAW,EAAE,KAAK,CAAC,GAAG;SACzB,CAAC,CAAC;QAEH,MAAM,qBAAqB,GAAG,GAAY,EAAE;YACxC,IAAI,KAAK,CAAC,GAAG,IAAI,iBAAiB,CAAC,SAAS,IAAI,iBAAiB,CAAC,OAAO,EAAE;gBACvE,IAAI,KAAK,CAAC,GAAG,IAAI,iBAAiB,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,IAAI,iBAAiB,CAAC,SAAS,EAAE;oBACpF,OAAO,IAAI,CAAC;iBACf;aACJ;YACD,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;QACF,MAAM,uBAAuB,GAAY,KAAK,CAAC,GAAG,IAAI,iBAAiB,CAAC,SAAS,IAAI,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpI,MAAM,oBAAoB,GAAG,GAAY,EAAE;YACvC,IAAI,iBAAiB,CAAC,OAAO,IAAI,iBAAiB,CAAC,SAAS,EAAE;gBAC1D,sCAAsC;gBACtC,OAAO,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aAC1G;iBAAM,IAAI,iBAAiB,CAAC,SAAS,EAAE;gBACpC,4BAA4B;gBAC5B,OAAO,kBAAkB,CAAC,SAAS,IAAI,CAAC,uBAAuB,CAAC;aACnE;iBAAM;gBACH,kBAAkB;gBAClB,OAAO,IAAI,CAAC;aACf;QACL,CAAC,CAAC;QAEF,wCAAwC;QACxC,MAAM,OAAO,GAAG,UAAU,IAAI,YAAY,EAAE,IAAI,CAAC,qBAAqB,EAAE,KAAI,MAAA,MAAA,iBAAiB,CAAC,YAAY,0CAAE,MAAM,mDAAG,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA,CAAC;QAExI,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,iBAAiB,MAAA,KAAK,CAAC,WAAW,mCAAI,OAAO,QAAQ,EAAE;YAC9E,cAAc,EAAE,YAAY,EAAE;YAC9B,WAAW,EAAE,OAAO;YACpB,QAAQ,EAAE,CAAC,YAAY,EAAE;YACzB,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE,OAAO;YAClB,QAAQ,EAAE,MAAM;YAChB,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,UAAU;YACxB,aAAa,EAAE,WAAW,IAAI,CAAC,UAAU;YACzC,0BAA0B,EAAE,CAAC,oBAAoB,EAAE;SACtD,CAAC,CAAC;QAEH,MAAM,MAAM,GAAQ,EAAE,CAAC;QAEvB,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,MAAM,CAAC,YAAY,GAAG,UAAU,CAAC;QACjC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QAEzB,MAAM,sBAAsB,GAAG,GAAG,EAAE;YAChC,IAAI,YAAY,GAAG;gBACf,WAAW,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC;gBACtE,qBAAqB,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC;gBAC1F,WAAW,EAAE,EAAE;gBACf,kCAAkC,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,kCAAkC,CAAC;gBACpH,aAAa,EAAE,EAAE;gBACjB,mBAAmB,EAAE,EAAE;gBACvB,yBAAyB,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,yBAAyB,CAAC;aACrG,CAAC;YACF,IAAI,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,OAAO,EAAE;gBAC5B,MAAM,iBAAiB,GAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;gBAC1F,YAAY,GAAG;oBACX,WAAW,EAAE,EAAE;oBACf,qBAAqB,EAAE,iBAAiB;oBACxC,WAAW,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC;oBACpE,kCAAkC,EAAE,iBAAiB;oBACrD,aAAa,EAAE,iBAAiB;oBAChC,mBAAmB,EAAE,iBAAiB;oBACtC,yBAAyB,EAAE,iBAAiB;iBAC/C,CAAC;aACL;YACD,OAAO,YAAY,CAAC;QACxB,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,GAAG,EAAE;;YACzB,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,EAAE;gBACR,eAAe;gBACf,OAAO,OAAO,CAAC,WAAW,CAAC;aAC9B;YAED,IAAI,kBAAkB,CAAC,OAAO,EAAE;gBAC5B,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAI,MAAA,kBAAkB,CAAC,OAAO,0CAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,EAAE;oBACnG,mDAAmD;oBACnD,OAAO,OAAO,CAAC,kCAAkC,CAAC;iBACrD;aACJ;YAED,IAAI,kBAAkB,CAAC,SAAS,EAAE;gBAC9B,iBAAiB;gBACjB,IAAI,uBAAuB,EAAE;oBACzB,0EAA0E;oBAC1E,OAAO,OAAO,CAAC,qBAAqB,CAAC;iBACxC;gBACD,OAAO,OAAO,CAAC,aAAa,CAAC;aAChC;iBAAM;gBACH,mBAAmB;gBACnB,IAAI,MAAA,iBAAiB,CAAC,SAAS,0CAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACjD,0BAA0B;oBAC1B,OAAO,OAAO,CAAC,qBAAqB,CAAC;iBACxC;gBACD,IAAI,MAAA,iBAAiB,CAAC,SAAS,0CAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBAChD,sBAAsB;oBACtB,OAAO,OAAO,CAAC,WAAW,CAAC;iBAC9B;gBACD,IAAI,kBAAkB,CAAC,OAAO,EAAE;oBAC5B,IAAI,MAAA,kBAAkB,CAAC,OAAO,0CAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBAChD,iCAAiC;wBACjC,OAAO,OAAO,CAAC,kCAAkC,CAAC;qBACrD;iBACJ;gBAED,IAAI,kBAAkB,CAAC,OAAO,EAAE;oBAC5B,IAAI,MAAA,kBAAkB,CAAC,OAAO,0CAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACjD,mCAAmC;wBACnC,OAAO,OAAO,CAAC,yBAAyB,CAAC;qBAC5C;iBACJ;gBACD,OAAO,IAAI,CAAC;aACf;QACL,CAAC,CAAC;QAEF,MAAM,UAAU,GACZ,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,IAAK,KAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CACrG,uCAAK,SAAS,EAAE,iBAAiB,MAAA,KAAK,CAAC,WAAW,mCAAI,OAAO,aAAa,IACrE,SAAS,CAAC,CAAC,CAAC,CACT,uCAAK,SAAS,EAAC,sBAAsB;YACjC,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,MAAM,EAAE,IAAI,EAAE,eAAQ,CAAC,OAAO,EAAE,IAAI,EAAC,MAAM,GAAG,CAC/D,CACT,CAAC,CAAC,CAAC,CACA,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;YACtB,8BAAC,kBAAQ,IAAC,qBAAqB,EAAE,CAAC,EAAE,uBAAuB,EAAE,CAAC,EAAE,YAAY,QAAC,mBAAmB,UAC3F,KAAK,CACC,CACR,CACV,CACC,CACT,CAAC,CAAC,CAAC,CACA,6DAAK,CACR,CAAC;QAEN,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,EAAE;YAC9B,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,GAAG,CAAE,KAAgB,GAAG,yBAAe,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;YAExE,IAAI,YAAY,EAAE,EAAE;gBAChB,IAAI,KAAK,GAAG,EAAE,EAAE;oBACZ,MAAM,GAAG,EAAE,CAAC;iBACf;qBAAM,IAAI,KAAK,GAAG,EAAE,EAAE;oBACnB,MAAM,GAAG,EAAE,CAAC;iBACf;qBAAM;oBACH,MAAM,GAAG,KAAK,CAAC;iBAClB;aACJ;iBAAM;gBACH,IAAI,CAAC,SAAS,EAAE;oBACZ,MAAM,GAAG,EAAE,CAAC;iBACf;aACJ;YAED,OAAO,CACH,qDAAK,SAAS,EAAE,OAAO,IAAM,MAAM;gBAC9B,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,uCAAK,SAAS,EAAC,qCAAqC,IAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAO;gBAC5G,uCAAK,SAAS,EAAC,+BAA+B,IAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAO;gBAC7E,uCAAK,SAAS,EAAC,+BAA+B;oBAC1C,8BAAC,cAAI,QAAE,KAAK,CAAC,IAAI,CAAQ,CACvB;gBACN,uCAAK,SAAS,EAAC,qCAAqC;oBAChD,uCAAK,SAAS,EAAC,2CAA2C,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,MAAM,GAAG,EAAE,GAAI,CAC/F;gBACL,UAAU,CACT,CACT,CAAC;SACL;aAAM;YACH,IAAI,iBAAiB,CAAC,SAAS,EAAE;gBAC7B,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;gBACvC,IAAI,YAAY,EAAE;oBACd,OAAO,CACH,qDAAK,SAAS,EAAE,OAAO,IAAM,MAAM;wBAE/B,8BAAC,iBAAO,IAAC,KAAK,EAAE,YAAY,EAAE,SAAS,QAAC,IAAI,EAAE,OAAO,EAAE,uBAAuB;4BAC1E,8BAAC,cAAI,QAAE,KAAK,CAAC,IAAI,CAAQ;4BACxB,UAAU,CACL,CACR,CACT,CAAC;iBACL;aACJ;YAED,OAAO,CACH,qDAAK,SAAS,EAAE,OAAO,IAAM,MAAM;gBAC/B;oBACI,8BAAC,cAAI,QAAE,KAAK,CAAC,IAAI,CAAQ;oBACxB,UAAU,CACT,CACJ,CACT,CAAC;SACL;IACL,CAAC,EAAE;QACC,OAAO;QACP,MAAM;QACN,WAAW;QACX,UAAU;QACV,UAAU;QACV,SAAS;QACT,KAAK,CAAC,IAAI;QACV,iBAAiB,CAAC,YAAY;QAC9B,iBAAiB,CAAC,SAAS;QAC3B,iBAAiB,CAAC,OAAO;QACzB,aAAa;QACb,iBAAiB,CAAC,QAAQ;QAC1B,KAAK;QACL,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,gBAAgB;QACnC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,mBAAmB;QACtC,KAAK,CAAC,GAAG;KACZ,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AAChB,CAAC;AAvVD,gCAuVC","sourcesContent":["import { BasketContext, DatePickerContext } from '@frontend/contexts';\nimport { IAvailableNightStay, useCalendarNightStay, useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport AvailabilityAPI from '@/api/AvailabilityAPI';\nimport API from '@/api/BookingAPI';\nimport Currency from '@/components/generic/Currency';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport { useSignedInMember } from '@/hooks/useSignedInMember';\nimport { Color } from '@/util/Color';\ninterface DatePickerDayProps {\n text: any;\n day?: dayjs.Dayjs | any;\n unix: number;\n price?: Promise<number>;\n statuses?: DatePickerDayStatus[];\n selectable?: boolean;\n onClick?: (day: string) => void;\n onHover?: (day: string, status: boolean) => void;\n displayType?: 'month' | 'week';\n}\n\nexport enum DatePickerDayStatus {\n Inactive = 0,\n Selecting = '--selecting',\n Loading = '--loading',\n Selected = '--selected',\n}\n\nexport default function DatePickerDay(props: DatePickerDayProps) {\n const { hotel } = useCurrentHotel();\n const { memberNumber } = useSignedInMember();\n const { t } = useTranslation();\n\n const datePickerContext = useContext(DatePickerContext);\n const basketContext = useContext(BasketContext);\n const { checkAvailableNightStay } = useCalendarNightStay({ basketContext });\n\n const [price, setPrice] = useState<number>();\n\n const [isLoading, setIsLoading] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [isSelected, setIsSelected] = useState(false);\n const [isSelecting, setIsSelecting] = useState(false);\n\n const [isFirst, setIsFirst] = useState(false);\n const [isLast, setIsLast] = useState(false);\n\n const isCurrent = props.day && (datePickerContext.today as Dayjs).isSame(props.day, 'date');\n const isPast = props.unix < datePickerContext.todayInUnix && !isCurrent;\n\n const { selectedBasketRow } = basketContext;\n\n useEffect(() => {\n let cancelled = false;\n\n const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 1;\n const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;\n const infants = selectedBasketRow ? selectedBasketRow.getInfants() : 0;\n const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';\n const roomCode = selectedBasketRow ? selectedBasketRow.getRoomCode() : '';\n\n if (props.day && !isPast) {\n if (hotel) {\n setPrice(0);\n\n setIsLoading(true);\n\n API.Availability.getCheapestPriceForDay(props.day, adults, children, infants, promoCode, roomCode, hotel.hotelID, memberNumber).then((foundedPrice) => {\n if (!cancelled) {\n if (foundedPrice) {\n setPrice(foundedPrice.price);\n\n if (datePickerContext.maxPrice < AvailabilityAPI.maxNightPrice) {\n datePickerContext.setMaxPrice(AvailabilityAPI.maxNightPrice);\n }\n }\n\n setIsLoading(false);\n }\n });\n } else {\n datePickerContext.setMaxPrice(-1);\n setPrice(-1);\n setIsLoading(false);\n }\n }\n\n return () => {\n cancelled = true;\n };\n }, [props.day, selectedBasketRow?.getAdults(), selectedBasketRow?.getChildren(), selectedBasketRow?.getInfants(), selectedBasketRow?.getPromoCode(), memberNumber]);\n\n useEffect(() => {\n if (datePickerContext.hoveredMonth) {\n if (props.unix && (datePickerContext.startDate as Dayjs).isBefore(props.day, 'date') && datePickerContext.hoveredMonth.isSameOrAfter(props.day, 'date')) {\n setIsSelecting(true);\n\n if (datePickerContext.hoveredMonth.isSame(props.day, 'date') || (datePickerContext.endDate && datePickerContext.endDate.isSame(props.day))) {\n setIsLast(true);\n } else {\n setIsLast(false);\n }\n return;\n }\n }\n\n setIsSelecting(false);\n setIsLast(false);\n }, [datePickerContext.hoveredMonth, props.day]);\n\n useEffect(() => {\n if (props.unix && datePickerContext.startDate) {\n if (datePickerContext.startDate?.isSameOrBefore(props.day, 'date') && datePickerContext.endDate?.isSameOrAfter(props.day, 'date')) {\n setIsSelected(true);\n\n if (datePickerContext.endDate?.isSame(props.day, 'date')) {\n setIsLast(true);\n }\n\n return;\n }\n\n if (datePickerContext.startDate.isSame(props.day, 'date')) {\n setIsFirst(true);\n setIsSelected(true);\n\n return;\n }\n }\n\n setIsSelected(false);\n setIsFirst(false);\n setIsLast(false);\n }, [datePickerContext.startDate, datePickerContext.endDate, props.day]);\n\n const memo = useMemo(() => {\n const onHoverIn = (e: React.MouseEvent) => {\n datePickerContext.onHoverOver(props.day);\n setIsHovering(true);\n };\n\n const onHoverOut = (e: React.MouseEvent) => {\n setIsHovering(false);\n };\n\n const isSelectable = (): boolean => {\n return !!(props.day && props.selectable && !isLoading && !isPast && (price || !hotel));\n };\n\n const onClick = (e: React.MouseEvent) => {\n datePickerContext.onDayClicked(props.day);\n };\n\n const availableNightStay: IAvailableNightStay = checkAvailableNightStay({\n arrivalNightStay: datePickerContext?.arrivalNightStay,\n startDate: datePickerContext.startDate,\n dateToCheck: props.day,\n });\n\n const isDateInSelectedRange = (): boolean => {\n if (props.day && datePickerContext.startDate && datePickerContext.endDate) {\n if (props.day <= datePickerContext.endDate && props.day >= datePickerContext.startDate) {\n return true;\n }\n }\n return false;\n };\n const isDateBeforeArrivalDate: boolean = props.day && datePickerContext.startDate && datePickerContext.startDate.isAfter(props.day);\n const isNightStayAvailable = (): boolean => {\n if (datePickerContext.endDate && datePickerContext.startDate) {\n //selected both Arrival/Departure date\n return datePickerContext.startDate.isAfter(props.day) || datePickerContext.endDate.isBefore(props.day);\n } else if (datePickerContext.startDate) {\n //selected Arrival date only\n return availableNightStay.available && !isDateBeforeArrivalDate;\n } else {\n //no selected date\n return true;\n }\n };\n\n // This is insane, needs to be re-worked\n const hovered = isHovering && isSelectable() && !isDateInSelectedRange() && datePickerContext.hoveredMonth?.isSame?.(props.day, 'date');\n\n const classes = classNames(`diji-calendar-${props.displayType ?? 'month'}--item`, {\n '--selectable': isSelectable(),\n '--hovered': hovered,\n '--past': !isSelectable(),\n '--current': isCurrent,\n '--first': isFirst,\n '--last': isLast,\n '--loading': isLoading,\n '--selected': isSelected,\n '--selecting': isSelecting && !isSelected,\n '--night-stay-unavailable': !isNightStayAvailable(),\n });\n\n const events: any = {};\n\n events.onMouseEnter = onHoverIn;\n events.onMouseLeave = onHoverOut;\n events.onClick = onClick;\n\n const getTooltipTitleSetting = () => {\n let titleTooltip = {\n BlockedDate: t(Translation.Step.Date.NightStayRequirement.BlockedDate),\n DateBeforeArrivalDate: t(Translation.Step.Date.NightStayRequirement.DateBeforeArrivalDate),\n ArrivalDate: '',\n BetweenArrivalDateMinDepartureDate: t(Translation.Step.Date.NightStayRequirement.BetweenArrivalDateMinDepartureDate),\n AvailableDate: '',\n DateInSelectedRange: '',\n DateAfterMaxDepartureDate: t(Translation.Step.Date.NightStayRequirement.DateAfterMaxDepartureDate),\n };\n if (datePickerContext?.endDate) {\n const ChangeArrivalDate = t(Translation.Step.Date.NightStayRequirement.ChangeArrivalDate);\n titleTooltip = {\n BlockedDate: '',\n DateBeforeArrivalDate: ChangeArrivalDate,\n ArrivalDate: t(Translation.Step.Date.NightStayRequirement.PickAgain),\n BetweenArrivalDateMinDepartureDate: ChangeArrivalDate,\n AvailableDate: ChangeArrivalDate,\n DateInSelectedRange: ChangeArrivalDate,\n DateAfterMaxDepartureDate: ChangeArrivalDate,\n };\n }\n return titleTooltip;\n };\n\n const getTooltipTitle = () => {\n const setting = getTooltipTitleSetting();\n if (!price) {\n //Blocked dates\n return setting.BlockedDate;\n }\n\n if (availableNightStay.minDate) {\n if (props?.day.isAfter(datePickerContext.startDate) && availableNightStay.minDate?.isAfter(props.day)) {\n //Dates between Arrival date and Min Departure Date\n return setting.BetweenArrivalDateMinDepartureDate;\n }\n }\n\n if (availableNightStay.available) {\n //Available dates\n if (isDateBeforeArrivalDate) {\n //Date before Arrival date (case when hotel have no min./max. nights stay)\n return setting.DateBeforeArrivalDate;\n }\n return setting.AvailableDate;\n } else {\n //unavailable dates\n if (datePickerContext.startDate?.isAfter(props.day)) {\n //Date before Arrival date\n return setting.DateBeforeArrivalDate;\n }\n if (datePickerContext.startDate?.isSame(props.day)) {\n //Date is Arrival date\n return setting.ArrivalDate;\n }\n if (availableNightStay.minDate) {\n if (availableNightStay.minDate?.isAfter(props.day)) {\n //Dates before Min Departure Date\n return setting.BetweenArrivalDateMinDepartureDate;\n }\n }\n\n if (availableNightStay.maxDate) {\n if (availableNightStay.maxDate?.isBefore(props.day)) {\n // //Dates after Max Departure Date\n return setting.DateAfterMaxDepartureDate;\n }\n }\n return null;\n }\n };\n\n const priceBlock =\n props.day && props.selectable && !isPast && (price || (isLoading && !price)) && (price as number) >= 0 ? (\n <div className={`diji-calendar-${props.displayType ?? 'month'}--item-cost`}>\n {isLoading ? (\n <div className=\"u-inline-flex a-spin\">\n <Icon color={Color.Accent} icon={IconType.Spinner} size=\"14px\" />\n </div>\n ) : (\n <Text type={TextType.Label}>\n <Currency shortenThousandsAfter={6} removeCurrencyAfterChar={5} hideDecimals disableLocalization>\n {price}\n </Currency>\n </Text>\n )}\n </div>\n ) : (\n <></>\n );\n\n if (props.displayType === 'week') {\n let height = 0;\n const range = ((price as number) / AvailabilityAPI.maxNightPrice) * 100;\n\n if (isSelectable()) {\n if (range < 10) {\n height = 10;\n } else if (range > 90) {\n height = 90;\n } else {\n height = range;\n }\n } else {\n if (!isLoading) {\n height = 95;\n }\n }\n\n return (\n <div className={classes} {...events}>\n {props.text === '1' && <div className=\"diji-calendar-week--month-indicator\">{props.day.format('MMMM')}</div>}\n <div className=\"diji-calendar-week--day-label\">{props.day.format('dd')}</div>\n <div className=\"diji-calendar-week--day-digit\">\n <Text>{props.text}</Text>\n </div>\n <div className=\"diji-calendar-week--price-indicator\">\n <div className=\"diji-calendar-week--price-indicator-block\" style={{ maxHeight: `${height}%` }} />\n </div>\n {priceBlock}\n </div>\n );\n } else {\n if (datePickerContext.startDate) {\n const tooltipTitle = getTooltipTitle();\n if (tooltipTitle) {\n return (\n <div className={classes} {...events}>\n {/* Use hovered to fix the confict events's onMouseLeave/onMouseLeave with (Tooltip) */}\n <Tooltip title={tooltipTitle} usePortal open={hovered} preventMouseInteraction>\n <Text>{props.text}</Text>\n {priceBlock}\n </Tooltip>\n </div>\n );\n }\n }\n\n return (\n <div className={classes} {...events}>\n <div>\n <Text>{props.text}</Text>\n {priceBlock}\n </div>\n </div>\n );\n }\n }, [\n isFirst,\n isLast,\n isSelecting,\n isSelected,\n isHovering,\n isLoading,\n props.unix,\n datePickerContext.hoveredMonth,\n datePickerContext.startDate,\n datePickerContext.endDate,\n basketContext,\n datePickerContext.maxPrice,\n hotel,\n datePickerContext?.arrivalNightStay,\n datePickerContext?.nightStayValidation,\n props.day,\n ]);\n\n return memo;\n}\n"]}
1
+ {"version":3,"file":"DatePickerDay.js","sourceRoot":"/","sources":["src/components/generic/date/DatePickerDay.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, DatePickerContext } from '@frontend/contexts';\nimport { IAvailableNightStay, useCalendarNightStay, useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport AvailabilityAPI from '@/api/AvailabilityAPI';\nimport API from '@/api/BookingAPI';\nimport Currency from '@/components/generic/Currency';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport { useSignedInMember } from '@/hooks/useSignedInMember';\nimport { Color } from '@/util/Color';\ninterface DatePickerDayProps {\n text: any;\n day?: dayjs.Dayjs | any;\n unix: number;\n price?: Promise<number>;\n statuses?: DatePickerDayStatus[];\n selectable?: boolean;\n onClick?: (day: string) => void;\n onHover?: (day: string, status: boolean) => void;\n displayType?: 'month' | 'week';\n}\n\nexport enum DatePickerDayStatus {\n Inactive = 0,\n Selecting = '--selecting',\n Loading = '--loading',\n Selected = '--selected',\n}\n\nexport default function DatePickerDay(props: DatePickerDayProps) {\n const { hotel } = useCurrentHotel();\n const { memberNumber } = useSignedInMember();\n const { t } = useTranslation();\n\n const datePickerContext = useContext(DatePickerContext);\n const basketContext = useContext(BasketContext);\n const { checkAvailableNightStay } = useCalendarNightStay({ basketContext });\n\n const [price, setPrice] = useState<number>();\n\n const [isLoading, setIsLoading] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [isSelected, setIsSelected] = useState(false);\n const [isSelecting, setIsSelecting] = useState(false);\n\n const [isFirst, setIsFirst] = useState(false);\n const [isLast, setIsLast] = useState(false);\n\n const isCurrent = props.day && (datePickerContext.today as Dayjs).isSame(props.day, 'date');\n const isPast = props.unix < datePickerContext.todayInUnix && !isCurrent;\n\n const { selectedBasketRow } = basketContext;\n\n useEffect(() => {\n let cancelled = false;\n\n const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 1;\n const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;\n const infants = selectedBasketRow ? selectedBasketRow.getInfants() : 0;\n const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';\n const roomCode = selectedBasketRow ? selectedBasketRow.getRoomCode() : '';\n\n if (props.day && !isPast) {\n if (hotel) {\n setPrice(0);\n\n setIsLoading(true);\n\n API.Availability.getCheapestPriceForDay(props.day, adults, children, infants, promoCode, roomCode, hotel.hotelID, memberNumber).then((foundedPrice) => {\n if (!cancelled) {\n if (foundedPrice) {\n setPrice(foundedPrice.price);\n\n if (datePickerContext.maxPrice < AvailabilityAPI.maxNightPrice) {\n datePickerContext.setMaxPrice(AvailabilityAPI.maxNightPrice);\n }\n }\n\n setIsLoading(false);\n }\n });\n } else {\n datePickerContext.setMaxPrice(-1);\n setPrice(-1);\n setIsLoading(false);\n }\n }\n\n return () => {\n cancelled = true;\n };\n }, [props.day, selectedBasketRow?.getAdults(), selectedBasketRow?.getChildren(), selectedBasketRow?.getInfants(), selectedBasketRow?.getPromoCode(), memberNumber]);\n\n useEffect(() => {\n if (datePickerContext.hoveredMonth) {\n if (props.unix && (datePickerContext.startDate as Dayjs).isBefore(props.day, 'date') && datePickerContext.hoveredMonth.isSameOrAfter(props.day, 'date')) {\n setIsSelecting(true);\n\n if (datePickerContext.hoveredMonth.isSame(props.day, 'date') || (datePickerContext.endDate && datePickerContext.endDate.isSame(props.day))) {\n setIsLast(true);\n } else {\n setIsLast(false);\n }\n return;\n }\n }\n\n setIsSelecting(false);\n setIsLast(false);\n }, [datePickerContext.hoveredMonth, props.day]);\n\n useEffect(() => {\n if (props.unix && datePickerContext.startDate) {\n if (datePickerContext.startDate?.isSameOrBefore(props.day, 'date') && datePickerContext.endDate?.isSameOrAfter(props.day, 'date')) {\n setIsSelected(true);\n\n if (datePickerContext.endDate?.isSame(props.day, 'date')) {\n setIsLast(true);\n }\n\n return;\n }\n\n if (datePickerContext.startDate.isSame(props.day, 'date')) {\n setIsFirst(true);\n setIsSelected(true);\n\n return;\n }\n }\n\n setIsSelected(false);\n setIsFirst(false);\n setIsLast(false);\n }, [datePickerContext.startDate, datePickerContext.endDate, props.day]);\n\n const memo = useMemo(() => {\n const onHoverIn = (e: React.MouseEvent) => {\n datePickerContext.onHoverOver(props.day);\n setIsHovering(true);\n };\n\n const onHoverOut = (e: React.MouseEvent) => {\n setIsHovering(false);\n };\n\n const isSelectable = (): boolean => {\n return !!(props.day && props.selectable && !isLoading && !isPast && (price || !hotel));\n };\n\n const onClick = (e: React.MouseEvent) => {\n datePickerContext.onDayClicked(props.day);\n };\n\n const availableNightStay: IAvailableNightStay = checkAvailableNightStay({\n arrivalNightStay: datePickerContext?.arrivalNightStay,\n startDate: datePickerContext.startDate,\n dateToCheck: props.day,\n });\n\n const isDateInSelectedRange = (): boolean => {\n if (props.day && datePickerContext.startDate && datePickerContext.endDate) {\n if (props.day <= datePickerContext.endDate && props.day >= datePickerContext.startDate) {\n return true;\n }\n }\n return false;\n };\n const isDateBeforeArrivalDate: boolean = props.day && datePickerContext.startDate && datePickerContext.startDate.isAfter(props.day);\n const isNightStayAvailable = (): boolean => {\n if (datePickerContext.endDate && datePickerContext.startDate) {\n //selected both Arrival/Departure date\n return datePickerContext.startDate.isAfter(props.day) || datePickerContext.endDate.isBefore(props.day);\n } else if (datePickerContext.startDate) {\n //selected Arrival date only\n return availableNightStay.available && !isDateBeforeArrivalDate;\n } else {\n //no selected date\n return true;\n }\n };\n\n // This is insane, needs to be re-worked\n const hovered = isHovering && isSelectable() && !isDateInSelectedRange() && datePickerContext.hoveredMonth?.isSame?.(props.day, 'date');\n\n const classes = classNames(`diji-calendar-${props.displayType ?? 'month'}--item`, {\n '--selectable': isSelectable(),\n '--hovered': hovered,\n '--past': !isSelectable(),\n '--current': isCurrent,\n '--first': isFirst,\n '--last': isLast,\n '--loading': isLoading,\n '--selected': isSelected,\n '--selecting': isSelecting && !isSelected,\n '--night-stay-unavailable': !isNightStayAvailable(),\n });\n\n const events: any = {};\n\n events.onMouseEnter = onHoverIn;\n events.onMouseLeave = onHoverOut;\n events.onClick = onClick;\n\n const getTooltipTitleSetting = () => {\n let titleTooltip = {\n BlockedDate: t(Translation.Step.Date.NightStayRequirement.BlockedDate),\n DateBeforeArrivalDate: t(Translation.Step.Date.NightStayRequirement.DateBeforeArrivalDate),\n ArrivalDate: '',\n BetweenArrivalDateMinDepartureDate: t(Translation.Step.Date.NightStayRequirement.BetweenArrivalDateMinDepartureDate),\n AvailableDate: '',\n DateInSelectedRange: '',\n DateAfterMaxDepartureDate: t(Translation.Step.Date.NightStayRequirement.DateAfterMaxDepartureDate),\n };\n if (datePickerContext?.endDate) {\n const ChangeArrivalDate = t(Translation.Step.Date.NightStayRequirement.ChangeArrivalDate);\n titleTooltip = {\n BlockedDate: '',\n DateBeforeArrivalDate: ChangeArrivalDate,\n ArrivalDate: t(Translation.Step.Date.NightStayRequirement.PickAgain),\n BetweenArrivalDateMinDepartureDate: ChangeArrivalDate,\n AvailableDate: ChangeArrivalDate,\n DateInSelectedRange: ChangeArrivalDate,\n DateAfterMaxDepartureDate: ChangeArrivalDate,\n };\n }\n return titleTooltip;\n };\n\n const getTooltipTitle = () => {\n const setting = getTooltipTitleSetting();\n if (!price) {\n //Blocked dates\n return setting.BlockedDate;\n }\n\n if (availableNightStay.minDate) {\n if (props?.day.isAfter(datePickerContext.startDate) && availableNightStay.minDate?.isAfter(props.day)) {\n //Dates between Arrival date and Min Departure Date\n return setting.BetweenArrivalDateMinDepartureDate;\n }\n }\n\n if (availableNightStay.available) {\n //Available dates\n if (isDateBeforeArrivalDate) {\n //Date before Arrival date (case when hotel have no min./max. nights stay)\n return setting.DateBeforeArrivalDate;\n }\n return setting.AvailableDate;\n } else {\n //unavailable dates\n if (datePickerContext.startDate?.isAfter(props.day)) {\n //Date before Arrival date\n return setting.DateBeforeArrivalDate;\n }\n if (datePickerContext.startDate?.isSame(props.day)) {\n //Date is Arrival date\n return setting.ArrivalDate;\n }\n if (availableNightStay.minDate) {\n if (availableNightStay.minDate?.isAfter(props.day)) {\n //Dates before Min Departure Date\n return setting.BetweenArrivalDateMinDepartureDate;\n }\n }\n\n if (availableNightStay.maxDate) {\n if (availableNightStay.maxDate?.isBefore(props.day)) {\n // //Dates after Max Departure Date\n return setting.DateAfterMaxDepartureDate;\n }\n }\n return null;\n }\n };\n\n const priceBlock =\n props.day && props.selectable && !isPast && (price || (isLoading && !price)) && (price as number) >= 0 ? (\n <div className={`diji-calendar-${props.displayType ?? 'month'}--item-cost`}>\n {isLoading ? (\n <div className=\"u-inline-flex a-spin\">\n <Icon color={Color.Accent} icon={IconType.Spinner} size=\"14px\" />\n </div>\n ) : (\n <Text type={TextType.Label}>\n <Currency shortenThousandsAfter={6} removeCurrencyAfterChar={5} forceHideDecimals disableLocalization>\n {price}\n </Currency>\n </Text>\n )}\n </div>\n ) : (\n <></>\n );\n\n if (props.displayType === 'week') {\n let height = 0;\n const range = ((price as number) / AvailabilityAPI.maxNightPrice) * 100;\n\n if (isSelectable()) {\n if (range < 10) {\n height = 10;\n } else if (range > 90) {\n height = 90;\n } else {\n height = range;\n }\n } else {\n if (!isLoading) {\n height = 95;\n }\n }\n\n return (\n <div className={classes} {...events}>\n {props.text === '1' && <div className=\"diji-calendar-week--month-indicator\">{props.day.format('MMMM')}</div>}\n <div className=\"diji-calendar-week--day-label\">{props.day.format('dd')}</div>\n <div className=\"diji-calendar-week--day-digit\">\n <Text>{props.text}</Text>\n </div>\n <div className=\"diji-calendar-week--price-indicator\">\n <div className=\"diji-calendar-week--price-indicator-block\" style={{ maxHeight: `${height}%` }} />\n </div>\n {priceBlock}\n </div>\n );\n } else {\n if (datePickerContext.startDate) {\n const tooltipTitle = getTooltipTitle();\n if (tooltipTitle) {\n return (\n <div className={classes} {...events}>\n {/* Use hovered to fix the confict events's onMouseLeave/onMouseLeave with (Tooltip) */}\n <Tooltip title={tooltipTitle} usePortal open={hovered} preventMouseInteraction>\n <Text>{props.text}</Text>\n {priceBlock}\n </Tooltip>\n </div>\n );\n }\n }\n\n return (\n <div className={classes} {...events}>\n <div>\n <Text>{props.text}</Text>\n {priceBlock}\n </div>\n </div>\n );\n }\n }, [\n isFirst,\n isLast,\n isSelecting,\n isSelected,\n isHovering,\n isLoading,\n props.unix,\n datePickerContext.hoveredMonth,\n datePickerContext.startDate,\n datePickerContext.endDate,\n basketContext,\n datePickerContext.maxPrice,\n hotel,\n datePickerContext?.arrivalNightStay,\n datePickerContext?.nightStayValidation,\n props.day,\n ]);\n\n return memo;\n}\n"]}
@@ -110,9 +110,11 @@ function PeoplePickerRow(pickerProps) {
110
110
  roomName && (react_1.default.createElement("div", { className: "people-picker--item-row" },
111
111
  react_1.default.createElement(Text_1.default, null, t(Translation_1.Translation.Step.Date.Room)),
112
112
  react_1.default.createElement(Text_1.default, { className: "room-name" }, roomName))),
113
- react_1.default.createElement("div", { className: "people-picker--item-row" },
114
- react_1.default.createElement(Text_1.default, null, t(Translation_1.Translation.Step.Date.Adult_plural)),
115
- react_1.default.createElement(NumberIncrement_1.default, { number: adults, min: 1, max: maxAdults, onChange: adultsChangeHandler })),
113
+ react_1.default.createElement("div", null,
114
+ react_1.default.createElement("div", { className: "people-picker--item-row" },
115
+ react_1.default.createElement(Text_1.default, null, t(Translation_1.Translation.Step.Date.Adult_plural)),
116
+ react_1.default.createElement(NumberIncrement_1.default, { number: adults, min: 1, max: maxAdults, onChange: adultsChangeHandler })),
117
+ react_1.default.createElement(AgedBetweenLabel_1.AgedBetweenLabel, { min: hotel === null || hotel === void 0 ? void 0 : hotel.minAdultAge, max: hotel === null || hotel === void 0 ? void 0 : hotel.maxAdultAge })),
116
118
  showChildren ? (react_1.default.createElement("div", null,
117
119
  react_1.default.createElement("div", { className: "people-picker--item-row" },
118
120
  react_1.default.createElement(Text_1.default, null, t(Translation_1.Translation.Step.Date.Child_plural)),
@@ -1 +1 @@
1
- {"version":3,"file":"PeoplePickerRow.js","sourceRoot":"/","sources":["src/components/steps/date/PeoplePickerRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport { animated, useSpring } from '@react-spring/web';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport { AgedBetweenLabel } from '@/components/generic/AgedBetweenLabel/AgedBetweenLabel';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport NumberIncrement from '@/components/generic/NumberIncrement';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport { Color } from '@/util/Color';\n\nexport interface PeoplePickerDetails {\n adults: number;\n children: number;\n infants: number;\n promoCode: string;\n roomCode: string;\n}\n\nexport interface PeoplePickerRowProps {\n details: PeoplePickerDetails;\n\n number: number;\n onChange?: (details: PeoplePickerDetails) => void;\n onRemove?: () => void;\n}\n\nexport default function PeoplePickerRow(pickerProps: PeoplePickerRowProps) {\n const { t } = useTranslation();\n const { adults, children, infants, roomCode } = pickerProps.details;\n\n const { hotel } = useCurrentHotel();\n\n const [animatedIn, setAnimation] = useState(false);\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n setAnimation(true);\n }, []);\n\n const onInputChanged = (val: any) => {\n if (pickerProps.onChange) {\n pickerProps.onChange({\n ...pickerProps.details,\n ...val,\n });\n }\n };\n\n const onClose = () => {\n if (pickerProps.onRemove) {\n setAnimation(false);\n setTimeout(() => {\n pickerProps.onRemove?.();\n }, 500);\n }\n };\n const adultsChangeHandler = (val: any) => {\n onInputChanged({ adults: val });\n };\n const childrenChangeHandler = (val: any) => {\n onInputChanged({ children: val });\n };\n const infantChangeHandler = (val: any) => {\n onInputChanged({ infants: val });\n };\n\n const { getMaxSelectableAdults, showChildren, getMaxSelectableChildren, getMaxSelectableInfants } = useSearchScopeHook();\n const maxAdults = getMaxSelectableAdults({ adults, children });\n const maxChildren = getMaxSelectableChildren({ adults });\n const maxInfants = getMaxSelectableInfants();\n const roomName = hotel?.rooms?.[roomCode]?.name || '';\n\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerHeight, setContainerHeight] = useState(0);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContainerHeight(entry.contentRect.height);\n }\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n return () => {\n if (containerRef.current) {\n resizeObserver.unobserve(containerRef.current);\n }\n };\n }, [containerRef.current]);\n\n const heightProps = useSpring({\n height: containerHeight + 33, // 33 is for <LineBreak>\n opacity: animatedIn ? 1 : 0,\n });\n\n return (\n <animated.div ref={firstUpdate} style={heightProps}>\n <div className=\"people-picker--item\" ref={containerRef}>\n {pickerProps.number > 0 && (\n <div className=\"people-picker--item-row\">\n <Text type={TextType.Small} color={Color.DarkGrey}>\n <strong>\n {t(Translation.Misc.Room)}&nbsp;{pickerProps.number + 1}\n </strong>\n </Text>\n <div className=\"people-picker--item-remove\" onClick={onClose}>\n <Icon icon={IconType.Close} color={Color.Grey} />\n </div>\n </div>\n )}\n {roomName && (\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Room)}</Text>\n <Text className=\"room-name\">{roomName}</Text>\n </div>\n )}\n\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Adult_plural)}</Text>\n <NumberIncrement number={adults} min={1} max={maxAdults} onChange={adultsChangeHandler} />\n </div>\n {showChildren ? (\n <div>\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Child_plural)}</Text>\n <NumberIncrement number={children} min={0} max={maxChildren} onChange={childrenChangeHandler} />\n </div>\n <AgedBetweenLabel min={hotel?.childConfiguration?.childRange?.min} max={hotel?.childConfiguration?.childRange?.max} />\n </div>\n ) : null}\n {hotel?.childConfiguration?.supportInfants ? (\n <div>\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Infant_plural)}</Text>\n <NumberIncrement number={infants} min={0} max={maxInfants} onChange={infantChangeHandler} />\n </div>\n <AgedBetweenLabel min={hotel?.childConfiguration?.infantRange?.min} max={hotel?.childConfiguration?.infantRange?.max} />\n </div>\n ) : null}\n </div>\n <LineBreak smallMargins />\n </animated.div>\n );\n}\n"]}
1
+ {"version":3,"file":"PeoplePickerRow.js","sourceRoot":"/","sources":["src/components/steps/date/PeoplePickerRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport { animated, useSpring } from '@react-spring/web';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport { AgedBetweenLabel } from '@/components/generic/AgedBetweenLabel/AgedBetweenLabel';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport NumberIncrement from '@/components/generic/NumberIncrement';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport { Color } from '@/util/Color';\n\nexport interface PeoplePickerDetails {\n adults: number;\n children: number;\n infants: number;\n promoCode: string;\n roomCode: string;\n}\n\nexport interface PeoplePickerRowProps {\n details: PeoplePickerDetails;\n\n number: number;\n onChange?: (details: PeoplePickerDetails) => void;\n onRemove?: () => void;\n}\n\nexport default function PeoplePickerRow(pickerProps: PeoplePickerRowProps) {\n const { t } = useTranslation();\n const { adults, children, infants, roomCode } = pickerProps.details;\n\n const { hotel } = useCurrentHotel();\n\n const [animatedIn, setAnimation] = useState(false);\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n setAnimation(true);\n }, []);\n\n const onInputChanged = (val: any) => {\n if (pickerProps.onChange) {\n pickerProps.onChange({\n ...pickerProps.details,\n ...val,\n });\n }\n };\n\n const onClose = () => {\n if (pickerProps.onRemove) {\n setAnimation(false);\n setTimeout(() => {\n pickerProps.onRemove?.();\n }, 500);\n }\n };\n const adultsChangeHandler = (val: any) => {\n onInputChanged({ adults: val });\n };\n const childrenChangeHandler = (val: any) => {\n onInputChanged({ children: val });\n };\n const infantChangeHandler = (val: any) => {\n onInputChanged({ infants: val });\n };\n\n const { getMaxSelectableAdults, showChildren, getMaxSelectableChildren, getMaxSelectableInfants } = useSearchScopeHook();\n const maxAdults = getMaxSelectableAdults({ adults, children });\n const maxChildren = getMaxSelectableChildren({ adults });\n const maxInfants = getMaxSelectableInfants();\n const roomName = hotel?.rooms?.[roomCode]?.name || '';\n\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerHeight, setContainerHeight] = useState(0);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContainerHeight(entry.contentRect.height);\n }\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n return () => {\n if (containerRef.current) {\n resizeObserver.unobserve(containerRef.current);\n }\n };\n }, [containerRef.current]);\n\n const heightProps = useSpring({\n height: containerHeight + 33, // 33 is for <LineBreak>\n opacity: animatedIn ? 1 : 0,\n });\n\n return (\n <animated.div ref={firstUpdate} style={heightProps}>\n <div className=\"people-picker--item\" ref={containerRef}>\n {pickerProps.number > 0 && (\n <div className=\"people-picker--item-row\">\n <Text type={TextType.Small} color={Color.DarkGrey}>\n <strong>\n {t(Translation.Misc.Room)}&nbsp;{pickerProps.number + 1}\n </strong>\n </Text>\n <div className=\"people-picker--item-remove\" onClick={onClose}>\n <Icon icon={IconType.Close} color={Color.Grey} />\n </div>\n </div>\n )}\n {roomName && (\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Room)}</Text>\n <Text className=\"room-name\">{roomName}</Text>\n </div>\n )}\n\n <div>\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Adult_plural)}</Text>\n <NumberIncrement number={adults} min={1} max={maxAdults} onChange={adultsChangeHandler} />\n </div>\n <AgedBetweenLabel min={hotel?.minAdultAge} max={hotel?.maxAdultAge} />\n </div>\n\n {showChildren ? (\n <div>\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Child_plural)}</Text>\n <NumberIncrement number={children} min={0} max={maxChildren} onChange={childrenChangeHandler} />\n </div>\n <AgedBetweenLabel min={hotel?.childConfiguration?.childRange?.min} max={hotel?.childConfiguration?.childRange?.max} />\n </div>\n ) : null}\n\n {hotel?.childConfiguration?.supportInfants ? (\n <div>\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Infant_plural)}</Text>\n <NumberIncrement number={infants} min={0} max={maxInfants} onChange={infantChangeHandler} />\n </div>\n <AgedBetweenLabel min={hotel?.childConfiguration?.infantRange?.min} max={hotel?.childConfiguration?.infantRange?.max} />\n </div>\n ) : null}\n </div>\n <LineBreak smallMargins />\n </animated.div>\n );\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const BE_RATES_NOT_FOUND_BLOCK = "BERatesNotFoundBlock";
2
+ export default function RatesNotFoundBlock(): JSX.Element;
@@ -3,14 +3,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BE_RATES_NOT_FOUND_BLOCK = void 0;
6
7
  const react_1 = __importDefault(require("react"));
7
8
  const react_i18next_1 = require("react-i18next");
8
9
  const Headline_1 = __importDefault(require("../../generic/Headline"));
9
10
  const Text_1 = __importDefault(require("../../generic/Text"));
11
+ const DIProvider_1 = require("../../../providers/DIProvider");
10
12
  const Translation_1 = require("../../../translations/Translation");
11
13
  const Color_1 = require("../../../util/Color");
12
14
  const EmptyGraphic_1 = __importDefault(require("../../graphics/EmptyGraphic"));
13
- function RatesNotFound() {
15
+ function OriginalRatesNotFoundBlock() {
14
16
  const { t } = (0, react_i18next_1.useTranslation)();
15
17
  return (react_1.default.createElement("div", { className: "u-align-center u-marg-bottom--massive" },
16
18
  react_1.default.createElement("div", { className: "u-marg-bottom--heavy" },
@@ -20,5 +22,9 @@ function RatesNotFound() {
20
22
  react_1.default.createElement(Text_1.default, { color: Color_1.Color.DarkGrey }, t(Translation_1.Translation.Step.Room.RatesNotFoundLine1)),
21
23
  react_1.default.createElement(Text_1.default, { color: Color_1.Color.DarkGrey }, t(Translation_1.Translation.Step.Room.RatesNotFoundLine2))));
22
24
  }
23
- exports.default = RatesNotFound;
24
- //# sourceMappingURL=RatesNotFound.js.map
25
+ exports.BE_RATES_NOT_FOUND_BLOCK = 'BERatesNotFoundBlock';
26
+ function RatesNotFoundBlock() {
27
+ return (0, DIProvider_1.withDI)(exports.BE_RATES_NOT_FOUND_BLOCK, OriginalRatesNotFoundBlock, null);
28
+ }
29
+ exports.default = RatesNotFoundBlock;
30
+ //# sourceMappingURL=RatesNotFoundBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RatesNotFoundBlock.js","sourceRoot":"/","sources":["src/components/steps/room/RatesNotFoundBlock.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,iDAA+C;AAE/C,6EAAqD;AACrD,qEAA6C;AAC7C,uDAAgD;AAChD,4DAAyD;AACzD,wCAAqC;AAErC,+EAAuD;AAEvD,SAAS,0BAA0B;IAC/B,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,OAAO,CACH,uCAAK,SAAS,EAAC,uCAAuC;QAClD,uCAAK,SAAS,EAAC,sBAAsB;YAEjC,8BAAC,sBAAY,IAAC,SAAS,EAAC,wBAAwB,GAAG,CACjD;QACN,uCAAK,SAAS,EAAC,eAAe;YAC1B,8BAAC,kBAAQ,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,UACtB,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAChC,CACT;QACN,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,IAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAQ;QACjF,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,IAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAQ,CAC/E,CACT,CAAC;AACN,CAAC;AAEY,QAAA,wBAAwB,GAAG,sBAAsB,CAAC;AAE/D,SAAwB,kBAAkB;IACtC,OAAO,IAAA,mBAAM,EAAC,gCAAwB,EAAE,0BAA0B,EAAE,IAAI,CAAC,CAAC;AAC9E,CAAC;AAFD,qCAEC","sourcesContent":["import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport Headline from '@/components/generic/Headline';\nimport Text from '@/components/generic/Text';\nimport { withDI } from '@/providers/DIProvider';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\n\nimport EmptyGraphic from '../../graphics/EmptyGraphic';\n\nfunction OriginalRatesNotFoundBlock() {\n const { t } = useTranslation();\n return (\n <div className=\"u-align-center u-marg-bottom--massive\">\n <div className=\"u-marg-bottom--heavy\">\n {/*BLANK SLATE IMAGE*/}\n <EmptyGraphic className=\"c-image-blank-traveler\" />\n </div>\n <div className=\"u-marg-bottom\">\n <Headline size=\"large\" bold>\n {t(Translation.Step.Room.RatesNotFound)}\n </Headline>\n </div>\n <Text color={Color.DarkGrey}>{t(Translation.Step.Room.RatesNotFoundLine1)}</Text>\n <Text color={Color.DarkGrey}>{t(Translation.Step.Room.RatesNotFoundLine2)}</Text>\n </div>\n );\n}\n\nexport const BE_RATES_NOT_FOUND_BLOCK = 'BERatesNotFoundBlock';\n\nexport default function RatesNotFoundBlock() {\n return withDI(BE_RATES_NOT_FOUND_BLOCK, OriginalRatesNotFoundBlock, null);\n}\n"]}
@@ -67,6 +67,7 @@ function RoomDetails(props) {
67
67
  const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
68
68
  const ccx = (0, react_1.useContext)(contexts_1.CompanyContext);
69
69
  const { hotel } = (0, hooks_1.useCurrentHotel)();
70
+ const hotelOverridesContext = (0, react_1.useContext)(contexts_1.HotelOverridesContext);
70
71
  const { room } = props;
71
72
  const classes = (0, classnames_1.default)('room-details', {
72
73
  ['+is-open']: viewingRates,
@@ -124,12 +125,13 @@ function RoomDetails(props) {
124
125
  const closeDescriptionOnClose = () => {
125
126
  setViewingDescription(false);
126
127
  };
127
- const lowestPrice = Math.round(room.getLowestPrice(false, true));
128
- const currencySize = context.screenSize > ScreenSize_1.default.Medium && lowestPrice.toLocaleString().length < 7 ? 'large' : 'normal';
128
+ const lowestRawPrice = room.getLowestPrice(false, true);
129
+ const lowestDisplayPrice = hotelOverridesContext.alwaysShowDecimals ? lowestRawPrice : Math.round(lowestRawPrice);
130
+ const currencySize = context.screenSize > ScreenSize_1.default.Medium && lowestDisplayPrice.toLocaleString().length < 7 ? 'large' : 'normal';
129
131
  const convertCurrencyPrice = (value) => Math.round(currencyHelper.convertPrice(value, true, ccx.currentCurrency, hotel === null || hotel === void 0 ? void 0 : hotel.defaultCurrency));
130
132
  const { value: price, isLoading } = (0, Currency_2.default)({
131
133
  hideDecimals: true,
132
- children: lowestPrice,
134
+ children: lowestDisplayPrice,
133
135
  });
134
136
  const selectedRow = basketContext.selectedBasketRow;
135
137
  const { hasPricePreview } = (0, Planpay_1.default)();
@@ -170,7 +172,7 @@ function RoomDetails(props) {
170
172
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.Navy, inline: true }, t(Translation_1.Translation.Misc.From)),
171
173
  react_1.default.createElement("div", { className: "room-details--content-price flex-row align-items-end" },
172
174
  react_1.default.createElement(Headline_1.default, { size: currencySize, bold: true },
173
- react_1.default.createElement(Currency_1.default, { hideDecimals: true }, lowestPrice)),
175
+ react_1.default.createElement(Currency_1.default, { hideDecimals: true }, lowestDisplayPrice)),
174
176
  react_1.default.createElement(Text_1.default, { color: Color_1.Color.DarkGrey, inline: true },
175
177
  "/",
176
178
  t(Translation_1.Translation.Misc.Night))),