@roomstay/frontend 2.1.7 → 2.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/201.bundle.js +1 -1
  2. package/dist/449.bundle.js +1 -1
  3. package/dist/760.bundle.js +1 -1
  4. package/dist/882.bundle.js +1 -1
  5. package/dist/main.bundle.js +1 -1
  6. package/dist/src/components/generic/Icon/Icon.d.ts +1 -0
  7. package/dist/src/components/generic/Icon/Icon.js +2 -1
  8. package/dist/src/components/generic/Icon/Icon.js.map +1 -1
  9. package/dist/src/components/generic/Layout/StepLayout/StepLayoutContainer.d.ts +3 -0
  10. package/dist/src/components/generic/Layout/StepLayout/StepLayoutContainer.js +28 -0
  11. package/dist/src/components/generic/Layout/StepLayout/StepLayoutContainer.js.map +1 -0
  12. package/dist/src/components/generic/Layout/StepLayout/StepLayoutLeftContent.d.ts +3 -0
  13. package/dist/src/components/generic/Layout/StepLayout/StepLayoutLeftContent.js +25 -0
  14. package/dist/src/components/generic/Layout/StepLayout/StepLayoutLeftContent.js.map +1 -0
  15. package/dist/src/components/generic/Layout/StepLayout/StepLayoutRightContent.d.ts +3 -0
  16. package/dist/src/components/generic/Layout/StepLayout/StepLayoutRightContent.js +25 -0
  17. package/dist/src/components/generic/Layout/StepLayout/StepLayoutRightContent.js.map +1 -0
  18. package/dist/src/components/generic/Layout/StepLayout/index.d.ts +3 -0
  19. package/dist/src/components/generic/Layout/StepLayout/index.js +13 -0
  20. package/dist/src/components/generic/Layout/StepLayout/index.js.map +1 -0
  21. package/dist/src/components/generic/date/DatePicker.js +10 -11
  22. package/dist/src/components/generic/date/DatePicker.js.map +1 -1
  23. package/dist/src/components/steps/addons/AddonList.js +32 -12
  24. package/dist/src/components/steps/addons/AddonList.js.map +1 -1
  25. package/dist/src/components/steps/hotel/HotelCard.js +24 -11
  26. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  27. package/dist/src/components/summary/BESummaryAddonRow.js +4 -3
  28. package/dist/src/components/summary/BESummaryAddonRow.js.map +1 -1
  29. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +1 -0
  30. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  31. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +38 -8
  32. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  33. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +1 -0
  34. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  35. package/dist/src/index.d.ts +1 -0
  36. package/dist/src/index.js +3 -1
  37. package/dist/src/index.js.map +1 -1
  38. package/dist/src/models/Addon/Addon.d.ts +1 -0
  39. package/dist/src/models/Addon/Addon.js +10 -1
  40. package/dist/src/models/Addon/Addon.js.map +1 -1
  41. package/dist/src/models/BasketAddonRow.js +26 -19
  42. package/dist/src/models/BasketAddonRow.js.map +1 -1
  43. package/dist/src/pages/steps/StepAddon/StepAddonComponent.js +32 -9
  44. package/dist/src/pages/steps/StepAddon/StepAddonComponent.js.map +1 -1
  45. package/dist/src/pages/steps/StepAddon/StepAddonLoader.js +45 -44
  46. package/dist/src/pages/steps/StepAddon/StepAddonLoader.js.map +1 -1
  47. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js +35 -12
  48. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js.map +1 -1
  49. package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.js +10 -10
  50. package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.js.map +1 -1
  51. package/dist/src/pages/steps/StepRoom/StepRoomComponent.js +33 -33
  52. package/dist/src/pages/steps/StepRoom/StepRoomComponent.js.map +1 -1
  53. package/dist/src/pages/steps/StepRoom/StepRoomLoader.js +10 -10
  54. package/dist/src/pages/steps/StepRoom/StepRoomLoader.js.map +1 -1
  55. package/dist/src/providers/FeatureProvider.js +2 -0
  56. package/dist/src/providers/FeatureProvider.js.map +1 -1
  57. package/dist/src/providers/feature/FullPageEngineSmallSpacingFeature.d.ts +6 -0
  58. package/dist/src/providers/feature/FullPageEngineSmallSpacingFeature.js +10 -0
  59. package/dist/src/providers/feature/FullPageEngineSmallSpacingFeature.js.map +1 -0
  60. package/dist/src/reducers/BasketReducer.d.ts +2 -1
  61. package/dist/src/reducers/BasketReducer.js +7 -0
  62. package/dist/src/reducers/BasketReducer.js.map +1 -1
  63. package/dist/src/util/TotalCalculator.js +7 -1
  64. package/dist/src/util/TotalCalculator.js.map +1 -1
  65. package/dist/test.bundle.js +1 -1
  66. package/package.json +1 -1
  67. package/dist/tests/jest/engines/RoomstayThemeEngine.test.d.ts +0 -1
  68. package/dist/tests/jest/engines/RoomstayThemeEngine.test.js +0 -41
  69. package/dist/tests/jest/engines/RoomstayThemeEngine.test.js.map +0 -1
  70. package/dist/tests/jest/events/EventManager.test.d.ts +0 -1
  71. package/dist/tests/jest/events/EventManager.test.js +0 -101
  72. package/dist/tests/jest/events/EventManager.test.js.map +0 -1
  73. package/dist/tests/jest/helpers/ObjectHelper.test.d.ts +0 -1
  74. package/dist/tests/jest/helpers/ObjectHelper.test.js +0 -72
  75. package/dist/tests/jest/helpers/ObjectHelper.test.js.map +0 -1
  76. package/dist/tests/jest/models/RoomRate.test.d.ts +0 -1
  77. package/dist/tests/jest/models/RoomRate.test.js +0 -133
  78. package/dist/tests/jest/models/RoomRate.test.js.map +0 -1
  79. package/dist/tests/jest/providers/LanguageProvider.test.d.ts +0 -1
  80. package/dist/tests/jest/providers/LanguageProvider.test.js +0 -32
  81. package/dist/tests/jest/providers/LanguageProvider.test.js.map +0 -1
  82. package/dist/tests/jest/providers/SessionProvider.test.d.ts +0 -1
  83. package/dist/tests/jest/providers/SessionProvider.test.js +0 -230
  84. package/dist/tests/jest/providers/SessionProvider.test.js.map +0 -1
  85. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.d.ts +0 -1
  86. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js +0 -126
  87. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js.map +0 -1
  88. package/dist/tests/jest/reducers/BasketReducer.test.d.ts +0 -1
  89. package/dist/tests/jest/reducers/BasketReducer.test.js +0 -103
  90. package/dist/tests/jest/reducers/BasketReducer.test.js.map +0 -1
  91. package/dist/tests/offline/RoomstayBestRateAlert.d.ts +0 -1
  92. package/dist/tests/offline/RoomstayBestRateAlert.js +0 -48
  93. package/dist/tests/offline/RoomstayBestRateAlert.js.map +0 -1
  94. package/dist/tests/offline/entry/ReactWrapper.d.ts +0 -1
  95. package/dist/tests/offline/entry/ReactWrapper.js +0 -136
  96. package/dist/tests/offline/entry/ReactWrapper.js.map +0 -1
  97. package/dist/tests/offline/entry/allEngines.d.ts +0 -1
  98. package/dist/tests/offline/entry/allEngines.js +0 -50
  99. package/dist/tests/offline/entry/allEngines.js.map +0 -1
  100. package/dist/tests/offline/entry/components/TestPicker.d.ts +0 -1
  101. package/dist/tests/offline/entry/components/TestPicker.js +0 -156
  102. package/dist/tests/offline/entry/components/TestPicker.js.map +0 -1
  103. package/dist/tests/setupTests.d.ts +0 -0
  104. package/dist/tests/setupTests.js +0 -12
  105. package/dist/tests/setupTests.js.map +0 -1
@@ -70,6 +70,7 @@ export declare enum IconType {
70
70
  export interface IconProps {
71
71
  icon: IconType;
72
72
  size?: string;
73
+ name?: string;
73
74
  color?: Color;
74
75
  backgroundColor?: Color;
75
76
  noPadding?: boolean;
@@ -87,6 +87,7 @@ function IconDropdownFilled() {
87
87
  exports.IconDropdownFilled = IconDropdownFilled;
88
88
  function Icon(props) {
89
89
  const defaultProps = Object.assign({ size: '18px' }, props);
90
+ const name = props.name || defaultProps.icon;
90
91
  // TODO: remove the diji-icon class from all external uses.
91
92
  const classes = (0, classnames_1.default)(Icon_module_scss_1.default['diji-icon'], props.className, Icon_module_scss_1.default[`diji-icon${defaultProps.icon}`], 'diji-icon', {
92
93
  [Icon_module_scss_1.default['--has-bg']]: !!defaultProps.backgroundColor,
@@ -107,7 +108,7 @@ function Icon(props) {
107
108
  if (defaultProps.backgroundColor) {
108
109
  style.backgroundColor = defaultProps.backgroundColor;
109
110
  }
110
- return react_1.default.createElement("i", Object.assign({ className: classes, style: style }, extraProps));
111
+ return react_1.default.createElement("i", Object.assign({ className: classes, style: style }, extraProps, { name: name }));
111
112
  }
112
113
  exports.default = Icon;
113
114
  //# sourceMappingURL=Icon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.js","sourceRoot":"/","sources":["src/components/generic/Icon/Icon.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Color } from '@/util/Color';\nimport React from 'react';\n\nimport classNames from 'classnames';\n\nimport styles from './Icon.module.scss';\n\nexport enum IconType {\n Email = 'Email',\n Degrees = 'Degrees',\n Hotel = 'Hotel',\n Hotel2 = 'Hotel-2',\n Map = 'Map',\n Info = 'Info',\n Deal = 'Deal',\n Money = 'Money',\n Lock = 'Lock',\n Check = 'Check',\n CheckCircled = 'Check-Circled',\n Bed = 'Bed',\n ApplePay = 'Apple-Pay',\n PayPal = 'PayPal',\n Person = 'Person',\n ChildFriendly = 'Child-Friendly',\n Fridge = 'Fridge',\n Smoking = 'Smoking',\n Gym = 'Gym',\n Bar = 'Bar',\n Laundry = 'Laundry',\n Breakfast = 'Breakfast',\n Snacks = 'Snacks',\n Phone = 'Phone',\n ViewMonth = 'View-Month',\n Ovolo = 'Ovolo',\n ViewWeek = 'View-Week',\n AirCon = 'Air-Con',\n WiFi = 'Wifi',\n Time = 'Time',\n People = 'People',\n Calendar = 'Calendar',\n CreditCard = 'Credit-Card',\n Spinner = 'Spinner',\n Fullscreen = 'Fullscreen',\n Star = 'Star',\n ArrowRight = 'Arrow-Right',\n ArrowLeft = 'Arrow-Left',\n ArrowUp = 'Arrow-Up',\n ArrowDown = 'Arrow-Down',\n ArrowLeft2 = 'Arrow-2-Left',\n ArrowUp2 = 'Arrow-2-Up',\n ArrowRight2 = 'Arrow-2-Right',\n ArrowDown2 = 'Arrow-2-Down',\n Close = 'Close',\n Remove = 'Remove',\n Add = 'Add',\n Dropdown = 'Dropdown',\n Train = 'Train',\n Taxi = 'Taxi',\n Share = 'Share',\n Print = 'Print',\n LogOut = 'Log-Out',\n Error = 'Error',\n Edit = 'Edit',\n Bus = 'Bus',\n Airplane = 'Airplane',\n Menu = 'Menu',\n LootBag = 'loot-bag',\n LateCheckout = 'Late-Checkout',\n RoomSize = 'Room-Size',\n RoomUpgrade = 'Room-Upgrade',\n Champagne = 'Champagne',\n Eye = 'Eye',\n EyeBlocked = 'EyeBlocked',\n Delete = 'Delete',\n}\n\nexport interface IconProps {\n icon: IconType;\n size?: string;\n\n color?: Color;\n backgroundColor?: Color;\n\n noPadding?: boolean;\n\n onClick?: () => void;\n borderRadius?: 'oval' | 'round';\n className?: string;\n}\n\nexport function IconDropdown() {\n return <Icon icon={IconType.ArrowDown2} size=\"1em\" color={Color.DarkGrey} />;\n}\n\nexport function IconDropdownFilled() {\n return <Icon icon={IconType.Dropdown} size=\"1em\" color={Color.DarkGrey} />;\n}\n\nexport default function Icon(props: IconProps) {\n const defaultProps: IconProps = {\n size: '18px',\n ...props,\n };\n\n // TODO: remove the diji-icon class from all external uses.\n const classes = classNames(styles['diji-icon'], props.className, (styles as any)[`diji-icon${defaultProps.icon}`], 'diji-icon', {\n [styles['--has-bg']]: !!defaultProps.backgroundColor,\n [styles['--clickable']]: defaultProps.onClick,\n 'u-pad-none': props.noPadding,\n [(styles as any)[`--border-${defaultProps.borderRadius}`]]: defaultProps.borderRadius,\n });\n\n const extraProps: any = {};\n\n if (defaultProps.onClick) {\n extraProps.onClick = defaultProps.onClick;\n }\n\n const style: any = {\n fontSize: defaultProps.size,\n };\n\n if (defaultProps.color) {\n style.color = defaultProps.color;\n }\n\n if (defaultProps.backgroundColor) {\n style.backgroundColor = defaultProps.backgroundColor;\n }\n\n return <i className={classes} style={style} {...extraProps} />;\n}\n"]}
1
+ {"version":3,"file":"Icon.js","sourceRoot":"/","sources":["src/components/generic/Icon/Icon.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Color } from '@/util/Color';\nimport React from 'react';\n\nimport classNames from 'classnames';\n\nimport styles from './Icon.module.scss';\n\nexport enum IconType {\n Email = 'Email',\n Degrees = 'Degrees',\n Hotel = 'Hotel',\n Hotel2 = 'Hotel-2',\n Map = 'Map',\n Info = 'Info',\n Deal = 'Deal',\n Money = 'Money',\n Lock = 'Lock',\n Check = 'Check',\n CheckCircled = 'Check-Circled',\n Bed = 'Bed',\n ApplePay = 'Apple-Pay',\n PayPal = 'PayPal',\n Person = 'Person',\n ChildFriendly = 'Child-Friendly',\n Fridge = 'Fridge',\n Smoking = 'Smoking',\n Gym = 'Gym',\n Bar = 'Bar',\n Laundry = 'Laundry',\n Breakfast = 'Breakfast',\n Snacks = 'Snacks',\n Phone = 'Phone',\n ViewMonth = 'View-Month',\n Ovolo = 'Ovolo',\n ViewWeek = 'View-Week',\n AirCon = 'Air-Con',\n WiFi = 'Wifi',\n Time = 'Time',\n People = 'People',\n Calendar = 'Calendar',\n CreditCard = 'Credit-Card',\n Spinner = 'Spinner',\n Fullscreen = 'Fullscreen',\n Star = 'Star',\n ArrowRight = 'Arrow-Right',\n ArrowLeft = 'Arrow-Left',\n ArrowUp = 'Arrow-Up',\n ArrowDown = 'Arrow-Down',\n ArrowLeft2 = 'Arrow-2-Left',\n ArrowUp2 = 'Arrow-2-Up',\n ArrowRight2 = 'Arrow-2-Right',\n ArrowDown2 = 'Arrow-2-Down',\n Close = 'Close',\n Remove = 'Remove',\n Add = 'Add',\n Dropdown = 'Dropdown',\n Train = 'Train',\n Taxi = 'Taxi',\n Share = 'Share',\n Print = 'Print',\n LogOut = 'Log-Out',\n Error = 'Error',\n Edit = 'Edit',\n Bus = 'Bus',\n Airplane = 'Airplane',\n Menu = 'Menu',\n LootBag = 'loot-bag',\n LateCheckout = 'Late-Checkout',\n RoomSize = 'Room-Size',\n RoomUpgrade = 'Room-Upgrade',\n Champagne = 'Champagne',\n Eye = 'Eye',\n EyeBlocked = 'EyeBlocked',\n Delete = 'Delete',\n}\n\nexport interface IconProps {\n icon: IconType;\n size?: string;\n name?: string;\n\n color?: Color;\n backgroundColor?: Color;\n\n noPadding?: boolean;\n\n onClick?: () => void;\n borderRadius?: 'oval' | 'round';\n className?: string;\n}\n\nexport function IconDropdown() {\n return <Icon icon={IconType.ArrowDown2} size=\"1em\" color={Color.DarkGrey} />;\n}\n\nexport function IconDropdownFilled() {\n return <Icon icon={IconType.Dropdown} size=\"1em\" color={Color.DarkGrey} />;\n}\n\nexport default function Icon(props: IconProps) {\n const defaultProps: IconProps = {\n size: '18px',\n ...props,\n };\n\n const name = props.name || defaultProps.icon;\n\n // TODO: remove the diji-icon class from all external uses.\n const classes = classNames(styles['diji-icon'], props.className, (styles as any)[`diji-icon${defaultProps.icon}`], 'diji-icon', {\n [styles['--has-bg']]: !!defaultProps.backgroundColor,\n [styles['--clickable']]: defaultProps.onClick,\n 'u-pad-none': props.noPadding,\n [(styles as any)[`--border-${defaultProps.borderRadius}`]]: defaultProps.borderRadius,\n });\n\n const extraProps: any = {};\n\n if (defaultProps.onClick) {\n extraProps.onClick = defaultProps.onClick;\n }\n\n const style: any = {\n fontSize: defaultProps.size,\n };\n\n if (defaultProps.color) {\n style.color = defaultProps.color;\n }\n\n if (defaultProps.backgroundColor) {\n style.backgroundColor = defaultProps.backgroundColor;\n }\n\n return <i className={classes} style={style} {...extraProps} name={name} />;\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import { FC, PropsWithChildren } from 'react';
2
+ declare const StepLayoutContainer: FC<PropsWithChildren<JSX.IntrinsicElements['div']>>;
3
+ export default StepLayoutContainer;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ const react_1 = __importDefault(require("react"));
18
+ const StepLayout_module_scss_1 = __importDefault(require("./StepLayout.module.scss"));
19
+ const classnames_1 = __importDefault(require("classnames"));
20
+ const FullPageEngineSmallSpacingFeature_1 = __importDefault(require("../../../../providers/feature/FullPageEngineSmallSpacingFeature"));
21
+ const StepLayoutContainer = (_a) => {
22
+ var { className } = _a, props = __rest(_a, ["className"]);
23
+ return (react_1.default.createElement("div", Object.assign({ className: (0, classnames_1.default)(StepLayout_module_scss_1.default.container, className, {
24
+ [StepLayout_module_scss_1.default['no-gaps']]: FullPageEngineSmallSpacingFeature_1.default.isActive(),
25
+ }) }, props)));
26
+ };
27
+ exports.default = StepLayoutContainer;
28
+ //# sourceMappingURL=StepLayoutContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepLayoutContainer.js","sourceRoot":"/","sources":["src/components/generic/Layout/StepLayout/StepLayoutContainer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAqD;AACrD,sFAA8C;AAC9C,4DAAoC;AACpC,8HAAsG;AAEtG,MAAM,mBAAmB,GAAwD,CAAC,EAAuB,EAAE,EAAE;QAA3B,EAAE,SAAS,OAAY,EAAP,KAAK,cAArB,aAAuB,CAAF;IACnG,OAAO,CACH,qDACI,SAAS,EAAE,IAAA,oBAAU,EAAC,gCAAM,CAAC,SAAS,EAAE,SAAS,EAAE;YAC/C,CAAC,gCAAM,CAAC,SAAS,CAAC,CAAC,EAAE,2CAAiC,CAAC,QAAQ,EAAE;SACpE,CAAC,IACE,KAAK,EACX,CACL,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,mBAAmB,CAAC","sourcesContent":["import React, { FC, PropsWithChildren } from 'react';\nimport styles from './StepLayout.module.scss';\nimport classNames from 'classnames';\nimport FullPageEngineSmallSpacingFeature from '@/providers/feature/FullPageEngineSmallSpacingFeature';\n\nconst StepLayoutContainer: FC<PropsWithChildren<JSX.IntrinsicElements['div']>> = ({ className, ...props }) => {\n return (\n <div\n className={classNames(styles.container, className, {\n [styles['no-gaps']]: FullPageEngineSmallSpacingFeature.isActive(),\n })}\n {...props}\n />\n );\n};\n\nexport default StepLayoutContainer;\n"]}
@@ -0,0 +1,3 @@
1
+ import { FC, PropsWithChildren } from 'react';
2
+ declare const StepLayoutLeftContent: FC<PropsWithChildren<JSX.IntrinsicElements['div']>>;
3
+ export default StepLayoutLeftContent;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ const react_1 = __importDefault(require("react"));
18
+ const StepLayout_module_scss_1 = __importDefault(require("./StepLayout.module.scss"));
19
+ const classnames_1 = __importDefault(require("classnames"));
20
+ const StepLayoutLeftContent = (_a) => {
21
+ var { className } = _a, props = __rest(_a, ["className"]);
22
+ return react_1.default.createElement("div", Object.assign({ className: (0, classnames_1.default)(StepLayout_module_scss_1.default.leftContent, className) }, props));
23
+ };
24
+ exports.default = StepLayoutLeftContent;
25
+ //# sourceMappingURL=StepLayoutLeftContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepLayoutLeftContent.js","sourceRoot":"/","sources":["src/components/generic/Layout/StepLayout/StepLayoutLeftContent.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAqD;AACrD,sFAA8C;AAC9C,4DAAoC;AAEpC,MAAM,qBAAqB,GAAwD,CAAC,EAAuB,EAAE,EAAE;QAA3B,EAAE,SAAS,OAAY,EAAP,KAAK,cAArB,aAAuB,CAAF;IACrG,OAAO,qDAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,gCAAM,CAAC,WAAW,EAAE,SAAS,CAAC,IAAM,KAAK,EAAI,CAAC;AACpF,CAAC,CAAC;AAEF,kBAAe,qBAAqB,CAAC","sourcesContent":["import React, { FC, PropsWithChildren } from 'react';\nimport styles from './StepLayout.module.scss';\nimport classNames from 'classnames';\n\nconst StepLayoutLeftContent: FC<PropsWithChildren<JSX.IntrinsicElements['div']>> = ({ className, ...props }) => {\n return <div className={classNames(styles.leftContent, className)} {...props} />;\n};\n\nexport default StepLayoutLeftContent;\n"]}
@@ -0,0 +1,3 @@
1
+ import { FC, PropsWithChildren } from 'react';
2
+ declare const StepLayoutRightContent: FC<PropsWithChildren<JSX.IntrinsicElements['div']>>;
3
+ export default StepLayoutRightContent;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ const react_1 = __importDefault(require("react"));
18
+ const StepLayout_module_scss_1 = __importDefault(require("./StepLayout.module.scss"));
19
+ const classnames_1 = __importDefault(require("classnames"));
20
+ const StepLayoutRightContent = (_a) => {
21
+ var { className } = _a, props = __rest(_a, ["className"]);
22
+ return react_1.default.createElement("div", Object.assign({ className: (0, classnames_1.default)(StepLayout_module_scss_1.default.rightContent, className) }, props));
23
+ };
24
+ exports.default = StepLayoutRightContent;
25
+ //# sourceMappingURL=StepLayoutRightContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepLayoutRightContent.js","sourceRoot":"/","sources":["src/components/generic/Layout/StepLayout/StepLayoutRightContent.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAqD;AACrD,sFAA8C;AAC9C,4DAAoC;AAEpC,MAAM,sBAAsB,GAAwD,CAAC,EAAuB,EAAE,EAAE;QAA3B,EAAE,SAAS,OAAY,EAAP,KAAK,cAArB,aAAuB,CAAF;IACtG,OAAO,qDAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,gCAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAM,KAAK,EAAI,CAAC;AACrF,CAAC,CAAC;AAEF,kBAAe,sBAAsB,CAAC","sourcesContent":["import React, { FC, PropsWithChildren } from 'react';\nimport styles from './StepLayout.module.scss';\nimport classNames from 'classnames';\n\nconst StepLayoutRightContent: FC<PropsWithChildren<JSX.IntrinsicElements['div']>> = ({ className, ...props }) => {\n return <div className={classNames(styles.rightContent, className)} {...props} />;\n};\n\nexport default StepLayoutRightContent;\n"]}
@@ -0,0 +1,3 @@
1
+ export { default as StepLayoutContainer } from './StepLayoutContainer';
2
+ export { default as StepLayoutLeftContent } from './StepLayoutLeftContent';
3
+ export { default as StepLayoutRightContent } from './StepLayoutRightContent';
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.StepLayoutRightContent = exports.StepLayoutLeftContent = exports.StepLayoutContainer = void 0;
7
+ var StepLayoutContainer_1 = require("./StepLayoutContainer");
8
+ Object.defineProperty(exports, "StepLayoutContainer", { enumerable: true, get: function () { return __importDefault(StepLayoutContainer_1).default; } });
9
+ var StepLayoutLeftContent_1 = require("./StepLayoutLeftContent");
10
+ Object.defineProperty(exports, "StepLayoutLeftContent", { enumerable: true, get: function () { return __importDefault(StepLayoutLeftContent_1).default; } });
11
+ var StepLayoutRightContent_1 = require("./StepLayoutRightContent");
12
+ Object.defineProperty(exports, "StepLayoutRightContent", { enumerable: true, get: function () { return __importDefault(StepLayoutRightContent_1).default; } });
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["src/components/generic/Layout/StepLayout/index.ts"],"names":[],"mappings":";;;;;;AAAA,6DAAuE;AAA9D,2IAAA,OAAO,OAAuB;AACvC,iEAA2E;AAAlE,+IAAA,OAAO,OAAyB;AACzC,mEAA6E;AAApE,iJAAA,OAAO,OAA0B","sourcesContent":["export { default as StepLayoutContainer } from './StepLayoutContainer';\nexport { default as StepLayoutLeftContent } from './StepLayoutLeftContent';\nexport { default as StepLayoutRightContent } from './StepLayoutRightContent';\n"]}
@@ -36,20 +36,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
38
  const react_1 = __importDefault(require("react"));
39
- const Color_1 = require("../../../util/Color");
40
39
  const Icon_1 = __importStar(require("../Icon/Icon"));
40
+ const Color_1 = require("../../../util/Color");
41
41
  const react_2 = require("react");
42
42
  const classnames_1 = __importDefault(require("classnames"));
43
- const dayjs_1 = __importDefault(require("dayjs"));
44
- const contexts_1 = require("../../../contexts/index.js");
45
- const DatePickerMonth_1 = __importDefault(require("./DatePickerMonth"));
46
43
  const BookingAPI_1 = __importDefault(require("../../../api/BookingAPI"));
47
- const contexts_2 = require("../../../contexts/index.js");
48
- const DataLayer_1 = __importStar(require("../../../util/DataLayer"));
49
- const MinimumNightStayPill_1 = __importDefault(require("../../steps/MinimumNightStayPill"));
44
+ const DatePickerMonth_1 = __importDefault(require("./DatePickerMonth"));
50
45
  const DaysSelectedInformer_1 = __importDefault(require("../../steps/DaysSelectedInformer"));
51
- const hooks_1 = require("../../../hooks/index.js");
46
+ const MinimumNightStayPill_1 = __importDefault(require("../../steps/MinimumNightStayPill"));
52
47
  const DatePickerTypeFeature_1 = __importDefault(require("../../../providers/feature/DatePickerTypeFeature"));
48
+ const DataLayer_1 = __importStar(require("../../../util/DataLayer"));
49
+ const contexts_1 = require("../../../contexts/index.js");
50
+ const hooks_1 = require("../../../hooks/index.js");
51
+ const dayjs_1 = __importDefault(require("dayjs"));
53
52
  const WeekViewSkeleton_1 = __importDefault(require("./WeekViewSkeleton"));
54
53
  const DatePickerWeek = (0, react_2.lazy)(() => Promise.resolve().then(() => __importStar(require('./DatePickerWeek'))));
55
54
  var DateRangePickingState;
@@ -71,7 +70,7 @@ function DatePicker(props) {
71
70
  }, [hotel === null || hotel === void 0 ? void 0 : hotel.defaultDatepickerType]);
72
71
  const [months, setMonths] = (0, react_2.useState)(props.showMultipleMonths ? [currentMonth, currentMonth.add(1, 'month')] : [currentMonth]);
73
72
  const [maxPrice, setMaxPrice] = (0, react_2.useState)(0);
74
- const basketContext = (0, react_2.useContext)(contexts_2.BasketContext);
73
+ const basketContext = (0, react_2.useContext)(contexts_1.BasketContext);
75
74
  const onClickDate = (newDate) => __awaiter(this, void 0, void 0, function* () {
76
75
  let newPickingState = null;
77
76
  const selectedBasketRow = basketContext.selectedBasketRow;
@@ -219,8 +218,8 @@ function DatePicker(props) {
219
218
  react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowLeft2, onClick: previousMonthOnClick, color: Color_1.Color.White, backgroundColor: Color_1.Color.Navy, borderRadius: "round", size: "24px" }),
220
219
  react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowRight2, onClick: nextMonthOnClick, color: Color_1.Color.White, backgroundColor: Color_1.Color.Navy, borderRadius: "round", size: "24px" }))),
221
220
  props.supportsWeek && (react_1.default.createElement("div", { className: "diji-calendar-picker-type" },
222
- react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ViewMonth, size: "32px", color: calendarStyle === 'Month' ? Color_1.Color.Navy : Color_1.Color.Grey, onClick: setCalendarStyleAsMonth }),
223
- react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ViewWeek, size: "32px", color: calendarStyle === 'Week' ? Color_1.Color.Navy : Color_1.Color.Grey, onClick: setCalendarStyleAsWeek }))),
221
+ react_1.default.createElement(Icon_1.default, { name: "Calendar_MothViewButton", icon: Icon_1.IconType.ViewMonth, size: "32px", color: calendarStyle === 'Month' ? Color_1.Color.Navy : Color_1.Color.Grey, onClick: setCalendarStyleAsMonth }),
222
+ react_1.default.createElement(Icon_1.default, { name: "Calendar_WeekViewButton", icon: Icon_1.IconType.ViewWeek, size: "32px", color: calendarStyle === 'Week' ? Color_1.Color.Navy : Color_1.Color.Grey, onClick: setCalendarStyleAsWeek }))),
224
223
  printMonths,
225
224
  props.showMinNightStay && props.showMultipleMonths && (react_1.default.createElement("div", { className: "diji-calendar--min-night-stay u-flex u-flex-direction-column u-flex-align-center" },
226
225
  react_1.default.createElement(DaysSelectedInformer_1.default, null),
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sourceRoot":"/","sources":["src/components/generic/date/DatePicker.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAE1B,wCAAqC;AACrC,uEAAgE;AAChE,iCAAgG;AAEhG,4DAAoC;AAEpC,kDAAqC;AACrC,iDAA2E;AAC3E,gGAAwE;AACxE,kEAAmC;AACnC,iDAAmD;AACnD,8DAA+E;AAC/E,mGAA2E;AAC3E,mGAA2E;AAC3E,2CAAkD;AAClD,sGAA8E;AAC9E,0EAAkD;AAElD,MAAM,cAAc,GAAG,IAAA,YAAI,EAAC,GAAG,EAAE,mDAAQ,0CAA0C,GAAC,CAAC,CAAC;AAqCtF,IAAK,qBAGJ;AAHD,WAAK,qBAAqB;IACtB,2EAAa,CAAA;IACb,uEAAW,CAAA;AACf,CAAC,EAHI,qBAAqB,KAArB,qBAAqB,QAGzB;AAED,SAAwB,UAAU,CAAC,KAAsB;;IACrD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAA,eAAK,GAAE,CAAC,CAAC;IAE9J,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,KAAK,CAAC,iBAAiB,mCAAI,IAAI,CAAC,CAAC;IAC5F,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,KAAK,CAAC,eAAe,mCAAI,IAAI,CAAC,CAAC;IAEtF,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,IAAA,gBAAQ,EAAe,IAAI,CAAC,CAAC;IAE7E,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAClF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAmB,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,qBAAqB,EAAC,CAAC,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5I,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,gBAAgB,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,qBAAqB,EAAC,CAAC,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5F,CAAC,EAAE,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,qBAAqB,CAAC,CAAC,CAAC;IAEnC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/H,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAEhD,MAAM,WAAW,GAAG,CAAO,OAAoB,EAAE,EAAE;QAC/C,IAAI,eAAe,GAAiC,IAAI,CAAC;QAEzD,MAAM,iBAAiB,GAAG,aAAa,CAAC,iBAAiB,CAAC;QAC1D,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,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5E,MAAM,YAAY,GAAG,MAAM,oBAAG,CAAC,YAAY,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAiB,EAAE,KAAK,CAAC,CAAC;QAE1I,QAAQ,YAAY,EAAE;YAClB,QAAQ;YACR,KAAK,qBAAqB,CAAC,SAAS;gBAChC,IAAI,YAAY,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;oBAC9B,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC;oBAEhD,oBAAoB,CAAC,OAAO,CAAC,CAAC;oBAC9B,kBAAkB,CAAC,IAAI,CAAC,CAAC;iBAC5B;gBAED,MAAM;YACV,KAAK,qBAAqB,CAAC,OAAO;gBAC9B,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;oBACrC,oBAAoB,CAAC,OAAO,CAAC,CAAC;oBAC9B,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC;iBACnD;qBAAM;oBACH,eAAe,GAAG,qBAAqB,CAAC,SAAS,CAAC;oBAElD,mBAAmB,CAAC,IAAI,CAAC,CAAC;oBAE1B,MAAM,gBAAgB,GAAG,MAAM,eAAe,CAAC,iBAA0B,EAAE,OAAO,CAAC,CAAC;oBAEpF,IAAI,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE;wBACnC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;qBACtD;yBAAM;wBACH,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;qBACxC;iBACJ;gBAED,MAAM;SACb;QAED,IAAI,KAAK,CAAC,sBAAsB,EAAE;YAC9B,eAAe,CAAC,eAAwC,CAAC,CAAC;SAC7D;IACL,CAAC,CAAA,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,QAAqB,EAAE,MAAmB,EAAwB,EAAE,CACzF,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,EAAE;;QAC1B,MAAM,iBAAiB,GAAG,aAAa,CAAC,iBAAiB,CAAC;QAC1D,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,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5E,MAAM,IAAI,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,uDAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE7C,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;YAC5B,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAE1C,MAAM,KAAK,GAAG,MAAM,oBAAG,CAAC,YAAY,CAAC,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAiB,EAAE,KAAK,CAAC,CAAC;YAEtI,IAAI,aAAa,EAAE;gBACf,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;aACjD;YAED,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE;gBACvB,aAAa,GAAG,IAAI,CAAC;gBACrB,SAAS;aACZ;SACJ;QAED,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC,CAAA,CAAC,CAAC;IAEP,MAAM,gBAAgB,GAAG,CAAC,GAAgB,EAAE,EAAE;QAC1C,IAAI,iBAAiB,IAAI,CAAC,eAAe,EAAE;YACvC,eAAe,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;gBAC1D,mBAAmB,CAAC,YAAY,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;SACN;IACL,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,IAAA,cAAM,EAAwB,IAAI,CAAC,CAAC;IAExD,qEAAqE;IACrE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,CAAA,+BAAqB,aAArB,+BAAqB,uBAArB,+BAAqB,CAAE,QAAQ,EAAE,KAAI,KAAK,CAAC,YAAY,EAAE;YACzD,gBAAgB,CAAC,MAAM,CAAC,CAAC;SAC5B;IACL,CAAC,EAAE,CAAC,+BAAqB,aAArB,+BAAqB,uBAArB,+BAAqB,CAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAExC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,KAAK,CAAC,eAAe,EAAE;YACvB,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;SAC1C;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAE5B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,KAAK,CAAC,kBAAkB,EAAE;YAC1B,SAAS,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;SAC3D;IACL,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAE7C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,WAAW,CAAC,OAAO,EAAE;YACrB,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;YAC3B,OAAO;SACV;QAED,IAAI,KAAK,CAAC,kBAAkB,EAAE;YAC1B,KAAK,CAAC,kBAAkB,CAAC,iBAA0B,CAAC,CAAC;SACxD;IACL,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExB,IAAA,uBAAe,EAAC,GAAG,EAAE;QACjB,IAAI,WAAW,CAAC,OAAO,EAAE;YACrB,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;YAC3B,OAAO;SACV;QAED,IAAI,KAAK,CAAC,gBAAgB,EAAE;YACxB,KAAK,CAAC,gBAAgB,CAAC,eAAwB,CAAC,CAAC;SACpD;IACL,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,MAAM,OAAO,GAAuB;QAChC,KAAK,EAAE,IAAA,eAAK,GAAE;QACd,WAAW,EAAE,IAAA,eAAK,GAAE,CAAC,IAAI,EAAE;QAC3B,SAAS,EAAE,iBAAiB;QAC5B,OAAO,EAAE,eAAe;QAExB,YAAY,EAAE,gBAAgB;QAC9B,QAAQ;QAER,WAAW,EAAE,gBAAgB;QAC7B,YAAY;QAEZ,YAAY,EAAE,CAAC,IAAiB,EAAE,EAAE;YAChC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QACD,WAAW;KACd,CAAC;IAEF,MAAM,WAAW,GAAG,IAAA,eAAO,EACvB,GAAG,EAAE,CAAC,CACF,8DACK,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CACzB;QACI,8BAAC,yBAAe,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,GAAI;QAClE,KAAK,CAAC,kBAAkB,IAAI,8BAAC,yBAAe,IAAC,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAI,CAC7F,CACN,CAAC,CAAC,CAAC,CACA;QACI,8BAAC,eAAK,CAAC,QAAQ,IAAC,QAAQ,EAAE,8BAAC,0BAAgB,OAAG;YAC1C,8BAAC,cAAc,OAAG,CACL,CAClB,CACN,CACF,CACN,EACD,CAAC,YAAY,EAAE,KAAK,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAC1D,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAA,oBAAU,EAAC,eAAe,EAAE;QACnD,UAAU,EAAE,CAAC,KAAK,CAAC,kBAAkB;QACrC,SAAS,EAAE,KAAK,CAAC,KAAK;QACtB,QAAQ,EAAE,aAAa,KAAK,MAAM;KACrC,CAAC,CAAC;IACH,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAC9B,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,qBAAqB,EAAE,2BAAe,CAAC,QAAQ,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QAC3G,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC1B,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,EAAE,2BAAe,CAAC,QAAQ,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QACvG,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC;IACF,MAAM,uBAAuB,GAAG,GAAG,EAAE;QACjC,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,2BAAe,CAAC,QAAQ,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QAClH,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC;IACF,MAAM,sBAAsB,GAAG,GAAG,EAAE;QAChC,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,2BAA2B,EAAE,2BAAe,CAAC,QAAQ,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QACjH,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO,CACH,8BAAC,4BAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO;QACtC,uCAAK,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB;YAC/C,aAAa,KAAK,OAAO,IAAI,CAC1B,uCAAK,SAAS,EAAC,0BAA0B;gBACrC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK,EAAE,eAAe,EAAE,aAAK,CAAC,IAAI,EAAE,YAAY,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,GAAG;gBACpJ,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK,EAAE,eAAe,EAAE,aAAK,CAAC,IAAI,EAAE,YAAY,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,GAAG,CAC/I,CACT;YACA,KAAK,CAAC,YAAY,IAAI,CACnB,uCAAK,SAAS,EAAC,2BAA2B;gBACtC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,SAAS,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,aAAK,CAAC,IAAI,CAAC,CAAC,CAAC,aAAK,CAAC,IAAI,EAAE,OAAO,EAAE,uBAAuB,GAAI;gBAC5I,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,QAAQ,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,aAAK,CAAC,IAAI,CAAC,CAAC,CAAC,aAAK,CAAC,IAAI,EAAE,OAAO,EAAE,sBAAsB,GAAI,CACvI,CACT;YACA,WAAW;YACX,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,kBAAkB,IAAI,CACnD,uCAAK,SAAS,EAAC,kFAAkF;gBAC7F,8BAAC,8BAAoB,OAAG;gBACxB,uCAAK,SAAS,EAAC,mBAAmB;oBAC9B,8BAAC,8BAAoB,OAAG,CACtB,CACJ,CACT,CACC;QAEL,KAAK,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,kBAAkB,IAAI,CACpD,uCAAK,SAAS,EAAC,qGAAqG;YAChH,8BAAC,8BAAoB,OAAG;YACxB,uCAAK,SAAS,EAAC,mBAAmB;gBAC9B,8BAAC,8BAAoB,OAAG,CACtB,CACJ,CACT,CACwB,CAChC,CAAC;AACN,CAAC;AAnPD,6BAmPC","sourcesContent":["import React from 'react';\n\nimport { Color } from '@/util/Color';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { useEffect, useState, useRef, useLayoutEffect, useMemo, useContext, lazy } from 'react';\n\nimport classNames from 'classnames';\n\nimport dayjs, { Dayjs } from 'dayjs';\nimport { DatePickerContext, IDatePickerContext } from '@frontend/contexts';\nimport DatePickerMonth from '@/components/generic/date/DatePickerMonth';\nimport API from '@/api/BookingAPI';\nimport { BasketContext } from '@frontend/contexts';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport MinimumNightStayPill from '@/components/steps/MinimumNightStayPill';\nimport DaysSelectedInformer from '@/components/steps/DaysSelectedInformer';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport DatePickerTypeFeature from '@/providers/feature/DatePickerTypeFeature';\nimport WeekViewSkeleton from './WeekViewSkeleton';\n\nconst DatePickerWeek = lazy(() => import('@/components/generic/date/DatePickerWeek'));\n\nexport interface DatePickerProps {\n showMonthOnLoad?: dayjs.Dayjs;\n\n selectedStartDate?: dayjs.Dayjs;\n selectedEndDate?: dayjs.Dayjs;\n\n canSelect?: boolean;\n // Includes default navigation arrows\n showArrows?: boolean;\n // Displays two side by side\n showMultipleMonths?: boolean;\n\n // Used for tight spaces\n small?: boolean;\n\n // is there support for start / end dates\n supportsMultiSelecting?: boolean;\n\n // Do or don't show mininmum night stay block\n showMinNightStay?: boolean;\n\n supportsWeek?: boolean;\n\n onDateClicked?: (date: dayjs.Dayjs) => void;\n onStartDateChanged?: (date: dayjs.Dayjs) => void;\n onEndDateChanged?: (date: dayjs.Dayjs) => void;\n}\n\ninterface DatePickerDayObject {\n value: string;\n dateObj: dayjs.Dayjs | null;\n price?: string;\n hovered: boolean;\n}\n\nenum DateRangePickingState {\n StartDate = 1,\n EndDate = 2,\n}\n\nexport default function DatePicker(props: DatePickerProps) {\n const { hotel } = useCurrentHotel();\n\n const [currentMonth, setCurrentMonth] = useState(props.showMonthOnLoad ? props.showMonthOnLoad : props.selectedStartDate ? props.selectedStartDate : dayjs());\n\n const [selectedStartDate, setSelectedStartDate] = useState(props.selectedStartDate ?? null);\n const [selectedEndDate, setSelectedEndDate] = useState(props.selectedEndDate ?? null);\n\n const [hoveringOverDate, setHoveringOverDate] = useState<Dayjs | null>(null);\n\n const [pickingState, setPickingState] = useState(DateRangePickingState.StartDate);\n const [calendarStyle, setCalendarStyle] = useState<'Month' | 'Week'>(hotel?.defaultDatepickerType ? hotel?.defaultDatepickerType : 'Month');\n useEffect(() => {\n setCalendarStyle(hotel?.defaultDatepickerType ? hotel?.defaultDatepickerType : 'Month');\n }, [hotel?.defaultDatepickerType]);\n\n const [months, setMonths] = useState(props.showMultipleMonths ? [currentMonth, currentMonth.add(1, 'month')] : [currentMonth]);\n const [maxPrice, setMaxPrice] = useState(0);\n\n const basketContext = useContext(BasketContext);\n\n const onClickDate = async (newDate: dayjs.Dayjs) => {\n let newPickingState: DateRangePickingState | null = null;\n\n const selectedBasketRow = basketContext.selectedBasketRow;\n const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 0;\n const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;\n const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';\n\n const newDatePrice = await API.Availability.getCheapestPriceForDay(newDate, adults, children, promoCode, hotel?.hotelID as string, false);\n\n switch (pickingState) {\n default:\n case DateRangePickingState.StartDate:\n if (newDatePrice.price || !hotel) {\n newPickingState = DateRangePickingState.EndDate;\n\n setSelectedStartDate(newDate);\n setSelectedEndDate(null);\n }\n\n break;\n case DateRangePickingState.EndDate:\n if (newDate.isBefore(selectedStartDate)) {\n setSelectedStartDate(newDate);\n newPickingState = DateRangePickingState.EndDate;\n } else {\n newPickingState = DateRangePickingState.StartDate;\n\n setHoveringOverDate(null);\n\n const nextAvailableDay = await getLastValidDay(selectedStartDate as Dayjs, newDate);\n\n if (newDate.isSame(selectedStartDate)) {\n setSelectedEndDate(nextAvailableDay.add(1, 'day'));\n } else {\n setSelectedEndDate(nextAvailableDay);\n }\n }\n\n break;\n }\n\n if (props.supportsMultiSelecting) {\n setPickingState(newPickingState as DateRangePickingState);\n }\n };\n\n const getLastValidDay = (fromDate: dayjs.Dayjs, toDate: dayjs.Dayjs): Promise<dayjs.Dayjs> =>\n new Promise(async (resolve) => {\n const selectedBasketRow = basketContext.selectedBasketRow;\n const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 0;\n const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;\n const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';\n\n const diff = toDate?.diff?.(fromDate, 'day');\n\n let nextMustBreak = false;\n for (let i = 0; i <= diff; i++) {\n const dayToCheck = fromDate.add(i, 'day');\n\n const price = await API.Availability.getCheapestPriceForDay(dayToCheck, adults, children, promoCode, hotel?.hotelID as string, false);\n\n if (nextMustBreak) {\n return resolve(dayToCheck.subtract(1, 'day'));\n }\n\n if (!price.price && hotel) {\n nextMustBreak = true;\n continue;\n }\n }\n\n resolve(toDate);\n });\n\n const onHoveredOverDay = (day: dayjs.Dayjs) => {\n if (selectedStartDate && !selectedEndDate) {\n getLastValidDay(selectedStartDate, day).then((lastValidDay) => {\n setHoveringOverDate(lastValidDay);\n });\n }\n };\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n // TODO: Perhaps refactor this later to not depend on non-state items\n useEffect(() => {\n if (DatePickerTypeFeature?.isActive() && props.supportsWeek) {\n setCalendarStyle('Week');\n }\n }, [DatePickerTypeFeature?.isActive()]);\n\n useEffect(() => {\n if (props.showMonthOnLoad) {\n setCurrentMonth(props.showMonthOnLoad);\n }\n }, [props.showMonthOnLoad]);\n\n useEffect(() => {\n if (props.showMultipleMonths) {\n setMonths([currentMonth, currentMonth.add(1, 'month')]);\n }\n }, [currentMonth, props.showMultipleMonths]);\n\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = null;\n return;\n }\n\n if (props.onStartDateChanged) {\n props.onStartDateChanged(selectedStartDate as Dayjs);\n }\n }, [selectedStartDate]);\n\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = null;\n return;\n }\n\n if (props.onEndDateChanged) {\n props.onEndDateChanged(selectedEndDate as Dayjs);\n }\n }, [selectedEndDate]);\n\n const context: IDatePickerContext = {\n today: dayjs(),\n todayInUnix: dayjs().unix(),\n startDate: selectedStartDate,\n endDate: selectedEndDate,\n\n hoveredMonth: hoveringOverDate,\n maxPrice,\n\n onHoverOver: onHoveredOverDay,\n currentMonth,\n\n onDayClicked: (date: dayjs.Dayjs) => {\n onClickDate(date);\n },\n setMaxPrice,\n };\n\n const printMonths = useMemo(\n () => (\n <>\n {calendarStyle === 'Month' ? (\n <>\n <DatePickerMonth small={props.small} showingMonth={currentMonth} />\n {props.showMultipleMonths && <DatePickerMonth showingMonth={currentMonth.add(1, 'month')} />}\n </>\n ) : (\n <>\n <React.Suspense fallback={<WeekViewSkeleton />}>\n <DatePickerWeek />\n </React.Suspense>\n </>\n )}\n </>\n ),\n [currentMonth, props.showMultipleMonths, calendarStyle]\n );\n\n const calendarClassNames = classNames('diji-calendar', {\n '--single': !props.showMultipleMonths,\n '--small': props.small,\n '--week': calendarStyle === 'Week',\n });\n const previousMonthOnClick = () => {\n DataLayer.instance.sendInteraction('Show Previous Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCurrentMonth(currentMonth.subtract(1, 'month'));\n };\n const nextMonthOnClick = () => {\n DataLayer.instance.sendInteraction('Show Next Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCurrentMonth(currentMonth.add(1, 'month'));\n };\n const setCalendarStyleAsMonth = () => {\n DataLayer.instance.sendInteraction('Set Calendar Style - Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCalendarStyle('Month');\n };\n const setCalendarStyleAsWeek = () => {\n DataLayer.instance.sendInteraction('Set Calendar Style - Week', InteractionType.CALENDAR, InteractionStep.DATES);\n setCalendarStyle('Week');\n };\n\n return (\n <DatePickerContext.Provider value={context}>\n <div ref={firstUpdate} className={calendarClassNames}>\n {calendarStyle === 'Month' && (\n <div className=\"diji-calendar-navigation\">\n <Icon icon={IconType.ArrowLeft2} onClick={previousMonthOnClick} color={Color.White} backgroundColor={Color.Navy} borderRadius=\"round\" size=\"24px\" />\n <Icon icon={IconType.ArrowRight2} onClick={nextMonthOnClick} color={Color.White} backgroundColor={Color.Navy} borderRadius=\"round\" size=\"24px\" />\n </div>\n )}\n {props.supportsWeek && (\n <div className=\"diji-calendar-picker-type\">\n <Icon icon={IconType.ViewMonth} size=\"32px\" color={calendarStyle === 'Month' ? Color.Navy : Color.Grey} onClick={setCalendarStyleAsMonth} />\n <Icon icon={IconType.ViewWeek} size=\"32px\" color={calendarStyle === 'Week' ? Color.Navy : Color.Grey} onClick={setCalendarStyleAsWeek} />\n </div>\n )}\n {printMonths}\n {props.showMinNightStay && props.showMultipleMonths && (\n <div className=\"diji-calendar--min-night-stay u-flex u-flex-direction-column u-flex-align-center\">\n <DaysSelectedInformer />\n <div className=\"u-marg-top--light\">\n <MinimumNightStayPill />\n </div>\n </div>\n )}\n </div>\n\n {props.showMinNightStay && !props.showMultipleMonths && (\n <div className=\"diji-calendar--min-night-stay --small u-flex u-flex-direction-column u-flex-align-center u-marg-top\">\n <DaysSelectedInformer />\n <div className=\"u-marg-top--light\">\n <MinimumNightStayPill />\n </div>\n </div>\n )}\n </DatePickerContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"file":"DatePicker.js","sourceRoot":"/","sources":["src/components/generic/date/DatePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { Color } from '@/util/Color';\nimport { lazy, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport API from '@/api/BookingAPI';\nimport DatePickerMonth from '@/components/generic/date/DatePickerMonth';\nimport DaysSelectedInformer from '@/components/steps/DaysSelectedInformer';\nimport MinimumNightStayPill from '@/components/steps/MinimumNightStayPill';\nimport DatePickerTypeFeature from '@/providers/feature/DatePickerTypeFeature';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport { BasketContext, DatePickerContext, IDatePickerContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport dayjs, { Dayjs } from 'dayjs';\nimport WeekViewSkeleton from './WeekViewSkeleton';\n\nconst DatePickerWeek = lazy(() => import('@/components/generic/date/DatePickerWeek'));\n\nexport interface DatePickerProps {\n showMonthOnLoad?: dayjs.Dayjs;\n\n selectedStartDate?: dayjs.Dayjs;\n selectedEndDate?: dayjs.Dayjs;\n\n canSelect?: boolean;\n // Includes default navigation arrows\n showArrows?: boolean;\n // Displays two side by side\n showMultipleMonths?: boolean;\n\n // Used for tight spaces\n small?: boolean;\n\n // is there support for start / end dates\n supportsMultiSelecting?: boolean;\n\n // Do or don't show mininmum night stay block\n showMinNightStay?: boolean;\n\n supportsWeek?: boolean;\n\n onDateClicked?: (date: dayjs.Dayjs) => void;\n onStartDateChanged?: (date: dayjs.Dayjs) => void;\n onEndDateChanged?: (date: dayjs.Dayjs) => void;\n}\n\ninterface DatePickerDayObject {\n value: string;\n dateObj: dayjs.Dayjs | null;\n price?: string;\n hovered: boolean;\n}\n\nenum DateRangePickingState {\n StartDate = 1,\n EndDate = 2,\n}\n\nexport default function DatePicker(props: DatePickerProps) {\n const { hotel } = useCurrentHotel();\n\n const [currentMonth, setCurrentMonth] = useState(props.showMonthOnLoad ? props.showMonthOnLoad : props.selectedStartDate ? props.selectedStartDate : dayjs());\n\n const [selectedStartDate, setSelectedStartDate] = useState(props.selectedStartDate ?? null);\n const [selectedEndDate, setSelectedEndDate] = useState(props.selectedEndDate ?? null);\n\n const [hoveringOverDate, setHoveringOverDate] = useState<Dayjs | null>(null);\n\n const [pickingState, setPickingState] = useState(DateRangePickingState.StartDate);\n const [calendarStyle, setCalendarStyle] = useState<'Month' | 'Week'>(hotel?.defaultDatepickerType ? hotel?.defaultDatepickerType : 'Month');\n useEffect(() => {\n setCalendarStyle(hotel?.defaultDatepickerType ? hotel?.defaultDatepickerType : 'Month');\n }, [hotel?.defaultDatepickerType]);\n\n const [months, setMonths] = useState(props.showMultipleMonths ? [currentMonth, currentMonth.add(1, 'month')] : [currentMonth]);\n const [maxPrice, setMaxPrice] = useState(0);\n\n const basketContext = useContext(BasketContext);\n\n const onClickDate = async (newDate: dayjs.Dayjs) => {\n let newPickingState: DateRangePickingState | null = null;\n\n const selectedBasketRow = basketContext.selectedBasketRow;\n const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 0;\n const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;\n const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';\n\n const newDatePrice = await API.Availability.getCheapestPriceForDay(newDate, adults, children, promoCode, hotel?.hotelID as string, false);\n\n switch (pickingState) {\n default:\n case DateRangePickingState.StartDate:\n if (newDatePrice.price || !hotel) {\n newPickingState = DateRangePickingState.EndDate;\n\n setSelectedStartDate(newDate);\n setSelectedEndDate(null);\n }\n\n break;\n case DateRangePickingState.EndDate:\n if (newDate.isBefore(selectedStartDate)) {\n setSelectedStartDate(newDate);\n newPickingState = DateRangePickingState.EndDate;\n } else {\n newPickingState = DateRangePickingState.StartDate;\n\n setHoveringOverDate(null);\n\n const nextAvailableDay = await getLastValidDay(selectedStartDate as Dayjs, newDate);\n\n if (newDate.isSame(selectedStartDate)) {\n setSelectedEndDate(nextAvailableDay.add(1, 'day'));\n } else {\n setSelectedEndDate(nextAvailableDay);\n }\n }\n\n break;\n }\n\n if (props.supportsMultiSelecting) {\n setPickingState(newPickingState as DateRangePickingState);\n }\n };\n\n const getLastValidDay = (fromDate: dayjs.Dayjs, toDate: dayjs.Dayjs): Promise<dayjs.Dayjs> =>\n new Promise(async (resolve) => {\n const selectedBasketRow = basketContext.selectedBasketRow;\n const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 0;\n const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;\n const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';\n\n const diff = toDate?.diff?.(fromDate, 'day');\n\n let nextMustBreak = false;\n for (let i = 0; i <= diff; i++) {\n const dayToCheck = fromDate.add(i, 'day');\n\n const price = await API.Availability.getCheapestPriceForDay(dayToCheck, adults, children, promoCode, hotel?.hotelID as string, false);\n\n if (nextMustBreak) {\n return resolve(dayToCheck.subtract(1, 'day'));\n }\n\n if (!price.price && hotel) {\n nextMustBreak = true;\n continue;\n }\n }\n\n resolve(toDate);\n });\n\n const onHoveredOverDay = (day: dayjs.Dayjs) => {\n if (selectedStartDate && !selectedEndDate) {\n getLastValidDay(selectedStartDate, day).then((lastValidDay) => {\n setHoveringOverDate(lastValidDay);\n });\n }\n };\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n // TODO: Perhaps refactor this later to not depend on non-state items\n useEffect(() => {\n if (DatePickerTypeFeature?.isActive() && props.supportsWeek) {\n setCalendarStyle('Week');\n }\n }, [DatePickerTypeFeature?.isActive()]);\n\n useEffect(() => {\n if (props.showMonthOnLoad) {\n setCurrentMonth(props.showMonthOnLoad);\n }\n }, [props.showMonthOnLoad]);\n\n useEffect(() => {\n if (props.showMultipleMonths) {\n setMonths([currentMonth, currentMonth.add(1, 'month')]);\n }\n }, [currentMonth, props.showMultipleMonths]);\n\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = null;\n return;\n }\n\n if (props.onStartDateChanged) {\n props.onStartDateChanged(selectedStartDate as Dayjs);\n }\n }, [selectedStartDate]);\n\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = null;\n return;\n }\n\n if (props.onEndDateChanged) {\n props.onEndDateChanged(selectedEndDate as Dayjs);\n }\n }, [selectedEndDate]);\n\n const context: IDatePickerContext = {\n today: dayjs(),\n todayInUnix: dayjs().unix(),\n startDate: selectedStartDate,\n endDate: selectedEndDate,\n\n hoveredMonth: hoveringOverDate,\n maxPrice,\n\n onHoverOver: onHoveredOverDay,\n currentMonth,\n\n onDayClicked: (date: dayjs.Dayjs) => {\n onClickDate(date);\n },\n setMaxPrice,\n };\n\n const printMonths = useMemo(\n () => (\n <>\n {calendarStyle === 'Month' ? (\n <>\n <DatePickerMonth small={props.small} showingMonth={currentMonth} />\n {props.showMultipleMonths && <DatePickerMonth showingMonth={currentMonth.add(1, 'month')} />}\n </>\n ) : (\n <>\n <React.Suspense fallback={<WeekViewSkeleton />}>\n <DatePickerWeek />\n </React.Suspense>\n </>\n )}\n </>\n ),\n [currentMonth, props.showMultipleMonths, calendarStyle]\n );\n\n const calendarClassNames = classNames('diji-calendar', {\n '--single': !props.showMultipleMonths,\n '--small': props.small,\n '--week': calendarStyle === 'Week',\n });\n const previousMonthOnClick = () => {\n DataLayer.instance.sendInteraction('Show Previous Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCurrentMonth(currentMonth.subtract(1, 'month'));\n };\n const nextMonthOnClick = () => {\n DataLayer.instance.sendInteraction('Show Next Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCurrentMonth(currentMonth.add(1, 'month'));\n };\n const setCalendarStyleAsMonth = () => {\n DataLayer.instance.sendInteraction('Set Calendar Style - Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCalendarStyle('Month');\n };\n const setCalendarStyleAsWeek = () => {\n DataLayer.instance.sendInteraction('Set Calendar Style - Week', InteractionType.CALENDAR, InteractionStep.DATES);\n setCalendarStyle('Week');\n };\n\n return (\n <DatePickerContext.Provider value={context}>\n <div ref={firstUpdate} className={calendarClassNames}>\n {calendarStyle === 'Month' && (\n <div className=\"diji-calendar-navigation\">\n <Icon icon={IconType.ArrowLeft2} onClick={previousMonthOnClick} color={Color.White} backgroundColor={Color.Navy} borderRadius=\"round\" size=\"24px\" />\n <Icon icon={IconType.ArrowRight2} onClick={nextMonthOnClick} color={Color.White} backgroundColor={Color.Navy} borderRadius=\"round\" size=\"24px\" />\n </div>\n )}\n {props.supportsWeek && (\n <div className=\"diji-calendar-picker-type\">\n <Icon\n name=\"Calendar_MothViewButton\"\n icon={IconType.ViewMonth}\n size=\"32px\"\n color={calendarStyle === 'Month' ? Color.Navy : Color.Grey}\n onClick={setCalendarStyleAsMonth}\n />\n <Icon\n name=\"Calendar_WeekViewButton\"\n icon={IconType.ViewWeek}\n size=\"32px\"\n color={calendarStyle === 'Week' ? Color.Navy : Color.Grey}\n onClick={setCalendarStyleAsWeek}\n />\n </div>\n )}\n {printMonths}\n {props.showMinNightStay && props.showMultipleMonths && (\n <div className=\"diji-calendar--min-night-stay u-flex u-flex-direction-column u-flex-align-center\">\n <DaysSelectedInformer />\n <div className=\"u-marg-top--light\">\n <MinimumNightStayPill />\n </div>\n </div>\n )}\n </div>\n\n {props.showMinNightStay && !props.showMultipleMonths && (\n <div className=\"diji-calendar--min-night-stay --small u-flex u-flex-direction-column u-flex-align-center u-marg-top\">\n <DaysSelectedInformer />\n <div className=\"u-marg-top--light\">\n <MinimumNightStayPill />\n </div>\n </div>\n )}\n </DatePickerContext.Provider>\n );\n}\n"]}
@@ -1,27 +1,47 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
5
28
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = __importDefault(require("react"));
7
- const react_2 = require("react");
29
+ const react_1 = __importStar(require("react"));
8
30
  const BookingAPI_1 = __importDefault(require("../../../api/BookingAPI"));
9
31
  const contexts_1 = require("../../../contexts/index.js");
10
- const contexts_2 = require("../../../contexts/index.js");
11
32
  const hooks_1 = require("../../../hooks/index.js");
12
- const ScreenSize_1 = __importDefault(require("../../../util/ScreenSize"));
13
33
  const LargeLoader_1 = __importDefault(require("../../generic/loader/LargeLoader"));
14
34
  const StepRoomSummaryAndButton_1 = __importDefault(require("../room/StepRoomSummaryAndButton"));
15
35
  const AddonCard_1 = __importDefault(require("./AddonCard"));
16
36
  const AddonsNotFound_1 = __importDefault(require("./AddonsNotFound"));
37
+ const StepLayout_1 = require("../../generic/Layout/StepLayout");
17
38
  const AddonList = () => {
18
- const basketContext = (0, react_2.useContext)(contexts_1.BasketContext);
19
- const beContext = (0, react_2.useContext)(contexts_1.BookingEngineContext);
20
- const ccx = (0, react_2.useContext)(contexts_2.CompanyContext);
39
+ const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
40
+ const ccx = (0, react_1.useContext)(contexts_1.CompanyContext);
21
41
  const { hotel } = (0, hooks_1.useCurrentHotel)();
22
42
  const rows = basketContext.getAllValidRows();
23
- const [addons, setAddons] = (0, react_2.useState)(null);
24
- const [isLoading, setLoading] = (0, react_2.useState)(false);
43
+ const [addons, setAddons] = (0, react_1.useState)(null);
44
+ const [isLoading, setLoading] = (0, react_1.useState)(false);
25
45
  react_1.default.useEffect(() => {
26
46
  setLoading(true);
27
47
  BookingAPI_1.default.Addons.findAddons(rows, hotel === null || hotel === void 0 ? void 0 : hotel.hotelID).then((foundedAddons) => {
@@ -30,11 +50,11 @@ const AddonList = () => {
30
50
  });
31
51
  }, [ccx.currentLanguage]);
32
52
  return (react_1.default.createElement("div", { className: "u-flex" },
33
- react_1.default.createElement("div", { className: 'row' + (beContext.screenSize > ScreenSize_1.default.ExtraLarge ? ' no-gutters' : '') },
34
- react_1.default.createElement("div", { className: "col-md-7 col-lg-8 no-gutters" }, !isLoading ? ((addons === null || addons === void 0 ? void 0 : addons.length) ? (addons.map((addon, index) => {
53
+ react_1.default.createElement(StepLayout_1.StepLayoutContainer, null,
54
+ react_1.default.createElement(StepLayout_1.StepLayoutLeftContent, null, !isLoading ? ((addons === null || addons === void 0 ? void 0 : addons.length) ? (addons.map((addon, index) => {
35
55
  return react_1.default.createElement(AddonCard_1.default, { key: index, className: "u-marg-bottom", addon: addon });
36
56
  })) : (react_1.default.createElement(AddonsNotFound_1.default, null))) : (react_1.default.createElement(LargeLoader_1.default, null))),
37
- react_1.default.createElement("div", { className: "col-xl-3 col-md-5 col-lg-4 offset-xl-1" },
57
+ react_1.default.createElement(StepLayout_1.StepLayoutRightContent, null,
38
58
  react_1.default.createElement(StepRoomSummaryAndButton_1.default, null)))));
39
59
  };
40
60
  exports.default = AddonList;
@@ -1 +1 @@
1
- {"version":3,"file":"AddonList.js","sourceRoot":"/","sources":["src/components/steps/addons/AddonList.tsx"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,iCAA6C;AAC7C,kEAAmC;AACnC,iDAAyE;AACzE,iDAAoD;AACpD,2CAAkD;AAGlD,mEAA2C;AAC3C,0FAAkE;AAClE,gHAAwF;AACxF,oFAA4D;AAC5D,8FAAsE;AAEtE,MAAM,SAAS,GAAG,GAAG,EAAE;IACnB,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,IAAA,kBAAU,EAAC,+BAAoB,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAC;IAEvC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,IAAI,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC;IAC7C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAiB,IAAI,CAAC,CAAC;IAC3D,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAEhD,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,oBAAG,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE;YACzE,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,SAAS,CAAC,aAAa,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;IAE1B,OAAO,CACH,uCAAK,SAAS,EAAC,QAAQ;QACnB,uCAAK,SAAS,EAAE,KAAK,GAAG,CAAC,SAAS,CAAC,UAAU,GAAG,oBAAU,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,uCAAK,SAAS,EAAC,8BAA8B,IACxC,CAAC,SAAS,CAAC,CAAC,CAAC,CACV,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,EAAC,CAAC,CAAC,CACb,MAAM,CAAC,GAAG,CAAC,CAAC,KAAY,EAAE,KAAa,EAAE,EAAE;gBACvC,OAAO,8BAAC,mBAAS,IAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAC,eAAe,EAAC,KAAK,EAAE,KAAK,GAAI,CAAC;YAC7E,CAAC,CAAC,CACL,CAAC,CAAC,CAAC,CACA,8BAAC,wBAAc,OAAG,CACrB,CACJ,CAAC,CAAC,CAAC,CACA,8BAAC,qBAAW,OAAG,CAClB,CACC;YAEN,uCAAK,SAAS,EAAC,wCAAwC;gBACnD,8BAAC,kCAAwB,OAAG,CAC1B,CACJ,CACJ,CACT,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,SAAS,CAAC","sourcesContent":["import React from 'react';\nimport { useContext, useState } from 'react';\nimport API from '@/api/BookingAPI';\nimport { BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport { CompanyContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { Addon } from '@/models/Addon/Addon';\n\nimport ScreenSize from '@/util/ScreenSize';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport StepRoomSummaryAndButton from '@/components/steps/room/StepRoomSummaryAndButton';\nimport AddonCard from '@/components/steps/addons/AddonCard';\nimport AddonsNotFound from '@/components/steps/addons/AddonsNotFound';\n\nconst AddonList = () => {\n const basketContext = useContext(BasketContext);\n const beContext = useContext(BookingEngineContext);\n const ccx = useContext(CompanyContext);\n\n const { hotel } = useCurrentHotel();\n\n const rows = basketContext.getAllValidRows();\n const [addons, setAddons] = useState<Addon[] | null>(null);\n const [isLoading, setLoading] = useState(false);\n\n React.useEffect(() => {\n setLoading(true);\n API.Addons.findAddons(rows, hotel?.hotelID as string).then((foundedAddons) => {\n setLoading(false);\n setAddons(foundedAddons);\n });\n }, [ccx.currentLanguage]);\n\n return (\n <div className=\"u-flex\">\n <div className={'row' + (beContext.screenSize > ScreenSize.ExtraLarge ? ' no-gutters' : '')}>\n <div className=\"col-md-7 col-lg-8 no-gutters\">\n {!isLoading ? (\n addons?.length ? (\n addons.map((addon: Addon, index: number) => {\n return <AddonCard key={index} className=\"u-marg-bottom\" addon={addon} />;\n })\n ) : (\n <AddonsNotFound />\n )\n ) : (\n <LargeLoader />\n )}\n </div>\n\n <div className=\"col-xl-3 col-md-5 col-lg-4 offset-xl-1\">\n <StepRoomSummaryAndButton />\n </div>\n </div>\n </div>\n );\n};\n\nexport default AddonList;\n"]}
1
+ {"version":3,"file":"AddonList.js","sourceRoot":"/","sources":["src/components/steps/addons/AddonList.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAoD;AACpD,kEAAmC;AACnC,iDAAmE;AACnE,2CAAkD;AAElD,0FAAkE;AAClE,gHAAwF;AACxF,oFAA4D;AAC5D,8FAAsE;AACtE,uEAA4H;AAE5H,MAAM,SAAS,GAAG,GAAG,EAAE;IACnB,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAC;IAEvC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,IAAI,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC;IAC7C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAiB,IAAI,CAAC,CAAC;IAC3D,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAEhD,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,oBAAG,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE;YACzE,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,SAAS,CAAC,aAAa,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;IAE1B,OAAO,CACH,uCAAK,SAAS,EAAC,QAAQ;QACnB,8BAAC,gCAAmB;YAChB,8BAAC,kCAAqB,QACjB,CAAC,SAAS,CAAC,CAAC,CAAC,CACV,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,EAAC,CAAC,CAAC,CACb,MAAM,CAAC,GAAG,CAAC,CAAC,KAAY,EAAE,KAAa,EAAE,EAAE;gBACvC,OAAO,8BAAC,mBAAS,IAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAC,eAAe,EAAC,KAAK,EAAE,KAAK,GAAI,CAAC;YAC7E,CAAC,CAAC,CACL,CAAC,CAAC,CAAC,CACA,8BAAC,wBAAc,OAAG,CACrB,CACJ,CAAC,CAAC,CAAC,CACA,8BAAC,qBAAW,OAAG,CAClB,CACmB;YAExB,8BAAC,mCAAsB;gBACnB,8BAAC,kCAAwB,OAAG,CACP,CACP,CACpB,CACT,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,SAAS,CAAC","sourcesContent":["import React, { useContext, useState } from 'react';\nimport API from '@/api/BookingAPI';\nimport { BasketContext, CompanyContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { Addon } from '@/models/Addon/Addon';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport StepRoomSummaryAndButton from '@/components/steps/room/StepRoomSummaryAndButton';\nimport AddonCard from '@/components/steps/addons/AddonCard';\nimport AddonsNotFound from '@/components/steps/addons/AddonsNotFound';\nimport { StepLayoutContainer, StepLayoutLeftContent, StepLayoutRightContent } from '@/components/generic/Layout/StepLayout';\n\nconst AddonList = () => {\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n\n const { hotel } = useCurrentHotel();\n\n const rows = basketContext.getAllValidRows();\n const [addons, setAddons] = useState<Addon[] | null>(null);\n const [isLoading, setLoading] = useState(false);\n\n React.useEffect(() => {\n setLoading(true);\n API.Addons.findAddons(rows, hotel?.hotelID as string).then((foundedAddons) => {\n setLoading(false);\n setAddons(foundedAddons);\n });\n }, [ccx.currentLanguage]);\n\n return (\n <div className=\"u-flex\">\n <StepLayoutContainer>\n <StepLayoutLeftContent>\n {!isLoading ? (\n addons?.length ? (\n addons.map((addon: Addon, index: number) => {\n return <AddonCard key={index} className=\"u-marg-bottom\" addon={addon} />;\n })\n ) : (\n <AddonsNotFound />\n )\n ) : (\n <LargeLoader />\n )}\n </StepLayoutLeftContent>\n\n <StepLayoutRightContent>\n <StepRoomSummaryAndButton />\n </StepLayoutRightContent>\n </StepLayoutContainer>\n </div>\n );\n};\n\nexport default AddonList;\n"]}
@@ -35,8 +35,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
35
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
- const react_1 = __importDefault(require("react"));
39
- const react_2 = require("react");
38
+ const react_1 = __importStar(require("react"));
40
39
  const react_i18next_1 = require("react-i18next");
41
40
  const Translation_1 = require("translations/Translation");
42
41
  const Color_1 = require("../../../util/Color");
@@ -54,19 +53,24 @@ const contexts_1 = require("../../../contexts/index.js");
54
53
  const Tooltip_1 = __importDefault(require("../../generic/Tooltip/Tooltip"));
55
54
  const SmallSpinner_1 = __importDefault(require("../../generic/loader/SmallSpinner"));
56
55
  const StepRoom_1 = __importDefault(require("../../../pages/steps/StepRoom/StepRoom"));
56
+ const hooks_1 = require("../../../hooks");
57
+ const BasketRow_1 = __importDefault(require("../../../models/BasketRow"));
58
+ const dayjs_1 = __importDefault(require("dayjs"));
57
59
  const HotelCard = ({ hotel }) => {
58
60
  var _a, _b, _c;
59
- const beContext = (0, react_2.useContext)(contexts_1.BookingEngineContext);
60
- const ccx = (0, react_2.useContext)(contexts_1.CompanyContext);
61
+ const beContext = (0, react_1.useContext)(contexts_1.BookingEngineContext);
62
+ const ccx = (0, react_1.useContext)(contexts_1.CompanyContext);
63
+ const { hotel: currentHotel } = (0, hooks_1.useCurrentHotel)();
64
+ const basketContext = (0, contexts_1.useBasket)();
61
65
  const history = (0, react_router_dom_1.useHistory)();
62
- const [images, setImages] = (0, react_2.useState)([hotel.heroImage]);
63
- const [modalOpen, setModalOpen] = (0, react_2.useState)(false);
64
- const hotelCardRef = (0, react_2.useRef)(null);
66
+ const [images, setImages] = (0, react_1.useState)([hotel.heroImage]);
67
+ const [modalOpen, setModalOpen] = (0, react_1.useState)(false);
68
+ const hotelCardRef = (0, react_1.useRef)(null);
65
69
  const currentPrice = (_a = hotel.lowestPrice) === null || _a === void 0 ? void 0 : _a.value;
66
70
  const currentPriceLoading = (_b = hotel.lowestPrice) === null || _b === void 0 ? void 0 : _b.isLoading;
67
71
  const showPrice = currentPriceLoading || (!currentPriceLoading && currentPrice > 0);
68
72
  const { t } = (0, react_i18next_1.useTranslation)();
69
- (0, react_2.useEffect)(() => {
73
+ (0, react_1.useEffect)(() => {
70
74
  const newImages = [hotel.heroImage];
71
75
  if (hotel.rooms) {
72
76
  for (const room of Object.values(hotel.rooms)) {
@@ -77,15 +81,24 @@ const HotelCard = ({ hotel }) => {
77
81
  }
78
82
  setImages(newImages);
79
83
  }, [hotel.rooms]);
80
- (0, react_2.useEffect)(() => {
84
+ (0, react_1.useEffect)(() => {
81
85
  if (!hotel.hasLoadedDetails) {
82
86
  // If we haven't fetched this hotel yet, lets trigger
83
87
  ccx.getHotel(hotel.hotelID);
84
88
  }
85
89
  }, [hotel.hasLoadedDetails]);
86
- const [openPerk, setOpenPerk] = (0, react_2.useState)((_c = hotel.perks[0]) === null || _c === void 0 ? void 0 : _c.name);
90
+ const [openPerk, setOpenPerk] = (0, react_1.useState)((_c = hotel.perks[0]) === null || _c === void 0 ? void 0 : _c.name);
87
91
  const colorProfile = hotel.colors;
88
92
  const onViewRoomsClicked = () => __awaiter(void 0, void 0, void 0, function* () {
93
+ if ((currentHotel === null || currentHotel === void 0 ? void 0 : currentHotel.hotelID) !== hotel.hotelID) {
94
+ const appliedBasketRow = basketContext.selectedBasketRow || basketContext.currentBasketRows[basketContext.currentBasketRows.length - 1];
95
+ const row = new BasketRow_1.default();
96
+ row.setStartDate((appliedBasketRow === null || appliedBasketRow === void 0 ? void 0 : appliedBasketRow.getStartDate()) || (0, dayjs_1.default)().add(1, 'day'));
97
+ row.setEndDate((appliedBasketRow === null || appliedBasketRow === void 0 ? void 0 : appliedBasketRow.getEndDate()) || (0, dayjs_1.default)().add(2, 'day'));
98
+ row.setChildren((appliedBasketRow === null || appliedBasketRow === void 0 ? void 0 : appliedBasketRow.getAdults()) || 1);
99
+ row.setChildren((appliedBasketRow === null || appliedBasketRow === void 0 ? void 0 : appliedBasketRow.getChildren()) || 0);
100
+ basketContext.initBasketRows([row]);
101
+ }
89
102
  ccx.changeHotel(hotel);
90
103
  history.push(StepRoom_1.default.getStepUrl());
91
104
  });
@@ -96,7 +109,7 @@ const HotelCard = ({ hotel }) => {
96
109
  setModalOpen(false);
97
110
  };
98
111
  const isLoading = !hotel.hasLoadedDetails;
99
- return (0, react_2.useMemo)(() => {
112
+ return (0, react_1.useMemo)(() => {
100
113
  var _a, _b, _c, _d, _e, _f, _g;
101
114
  const content = isLoading ? (react_1.default.createElement("div", null,
102
115
  react_1.default.createElement("div", { className: "d-flex flex-column" },