@roomstay/frontend 2.6.18 → 2.6.20

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 (163) hide show
  1. package/dist/166.bundle.js +1 -1
  2. package/dist/279.bundle.js +1 -1
  3. package/dist/370.bundle.js +1 -1
  4. package/dist/449.bundle.js +1 -1
  5. package/dist/586.bundle.js +1 -0
  6. package/dist/736.bundle.js +1 -1
  7. package/dist/873.bundle.js +1 -1
  8. package/dist/903.bundle.js +1 -1
  9. package/dist/927.bundle.js +1 -0
  10. package/dist/972.bundle.js +1 -1
  11. package/dist/978.bundle.js +1 -0
  12. package/dist/e2e/data/checkoutTestData.d.ts +16 -0
  13. package/dist/e2e/data/checkoutTestData.js +32 -0
  14. package/dist/e2e/data/checkoutTestData.js.map +1 -0
  15. package/dist/e2e/goBackAndCheckoutAgain.spec.d.ts +1 -0
  16. package/dist/e2e/goBackAndCheckoutAgain.spec.js +72 -0
  17. package/dist/e2e/goBackAndCheckoutAgain.spec.js.map +1 -0
  18. package/dist/e2e/helpers/checkoutHelpers.d.ts +7 -0
  19. package/dist/e2e/helpers/checkoutHelpers.js +164 -0
  20. package/dist/e2e/helpers/checkoutHelpers.js.map +1 -0
  21. package/dist/e2e/price.spec.d.ts +1 -0
  22. package/dist/e2e/price.spec.js +154 -0
  23. package/dist/e2e/price.spec.js.map +1 -0
  24. package/dist/main.bundle.js +1 -1
  25. package/dist/src/api/MemberAPI.d.ts +2 -3
  26. package/dist/src/api/MemberAPI.js +2 -6
  27. package/dist/src/api/MemberAPI.js.map +1 -1
  28. package/dist/src/components/User/Forms/ForgotPasswordForm.js +6 -2
  29. package/dist/src/components/User/Forms/ForgotPasswordForm.js.map +1 -1
  30. package/dist/src/components/generic/InputGroup/InputGroup.js +6 -0
  31. package/dist/src/components/generic/InputGroup/InputGroup.js.map +1 -1
  32. package/dist/src/components/generic/InputGroup/InputGroup.types.d.ts +1 -1
  33. package/dist/src/components/generic/InputGroup/InputGroup.types.js.map +1 -1
  34. package/dist/src/components/generic/Select/InputSelect.js +1 -1
  35. package/dist/src/components/generic/Select/InputSelect.js.map +1 -1
  36. package/dist/src/components/members/EditMyProfile.js +3 -3
  37. package/dist/src/components/members/EditMyProfile.js.map +1 -1
  38. package/dist/src/components/steps/addons/AddonList.js +2 -2
  39. package/dist/src/components/steps/addons/AddonList.js.map +1 -1
  40. package/dist/src/components/steps/addons/AddonsNotFoundBlock.d.ts +2 -0
  41. package/dist/src/components/steps/addons/{AddonsNotFound.js → AddonsNotFoundBlock.js} +9 -3
  42. package/dist/src/components/steps/addons/AddonsNotFoundBlock.js.map +1 -0
  43. package/dist/src/components/steps/confirmation/RoomContactDetails.js +53 -29
  44. package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
  45. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js +3 -1
  46. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js.map +1 -1
  47. package/dist/src/components/steps/confirmation/StepConfirmationForm.js +1 -1
  48. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  49. package/dist/src/components/steps/room/MemberSignInModal/EmailAndFullnameMemberModal.d.ts +4 -0
  50. package/dist/src/components/steps/room/MemberSignInModal/EmailAndFullnameMemberModal.js +37 -0
  51. package/dist/src/components/steps/room/MemberSignInModal/EmailAndFullnameMemberModal.js.map +1 -0
  52. package/dist/src/components/steps/room/MemberSignInModal/ExternalMemberModal.d.ts +16 -5
  53. package/dist/src/components/steps/room/MemberSignInModal/ExternalMemberModal.js +51 -54
  54. package/dist/src/components/steps/room/MemberSignInModal/ExternalMemberModal.js.map +1 -1
  55. package/dist/src/components/steps/room/MemberSignInModal/FamilyNameMemberModal.d.ts +8 -0
  56. package/dist/src/components/steps/room/MemberSignInModal/FamilyNameMemberModal.js +27 -0
  57. package/dist/src/components/steps/room/MemberSignInModal/FamilyNameMemberModal.js.map +1 -0
  58. package/dist/src/components/steps/room/MemberSignInModal/InternalMemberSignInModal.d.ts +6 -0
  59. package/dist/src/components/steps/room/MemberSignInModal/InternalMemberSignInModal.js +318 -0
  60. package/dist/src/components/steps/room/MemberSignInModal/InternalMemberSignInModal.js.map +1 -0
  61. package/dist/src/components/steps/room/MemberSignInModal/{MemberSignInModal.types.d.ts → InternalMemberSignInModal.types.d.ts} +1 -1
  62. package/dist/src/components/steps/room/MemberSignInModal/{MemberSignInModal.types.js → InternalMemberSignInModal.types.js} +1 -1
  63. package/dist/src/components/steps/room/MemberSignInModal/InternalMemberSignInModal.types.js.map +1 -0
  64. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.d.ts +1 -6
  65. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js +28 -284
  66. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js.map +1 -1
  67. package/dist/src/components/steps/room/StepRoomBestRateAlert.js +22 -3
  68. package/dist/src/components/steps/room/StepRoomBestRateAlert.js.map +1 -1
  69. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +9 -6
  70. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  71. package/dist/src/contexts/CompanyContext/CompanyContextType.type.d.ts +9 -3
  72. package/dist/src/contexts/CompanyContext/CompanyContextType.type.js.map +1 -1
  73. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +51 -44
  74. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  75. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +5 -3
  76. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  77. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.d.ts +8 -1
  78. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js +2 -0
  79. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js.map +1 -1
  80. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +16 -4
  81. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
  82. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +2 -12
  83. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
  84. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.d.ts +1 -0
  85. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js.map +1 -1
  86. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js +17 -9
  87. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js.map +1 -1
  88. package/dist/src/events/{views → actions}/PlacedBookingEvent.d.ts +3 -1
  89. package/dist/src/events/{views → actions}/PlacedBookingEvent.js +2 -1
  90. package/dist/src/events/actions/PlacedBookingEvent.js.map +1 -0
  91. package/dist/src/events/views/StepThanksViewEvent.d.ts +3 -1
  92. package/dist/src/events/views/StepThanksViewEvent.js +3 -1
  93. package/dist/src/events/views/StepThanksViewEvent.js.map +1 -1
  94. package/dist/src/hooks/useExternalMember.d.ts +1 -1
  95. package/dist/src/hooks/useNextStepAction.js +1 -1
  96. package/dist/src/hooks/useNextStepAction.js.map +1 -1
  97. package/dist/src/index.d.ts +3 -0
  98. package/dist/src/index.js +9 -2
  99. package/dist/src/index.js.map +1 -1
  100. package/dist/src/models/Api/HotelDTO.d.ts +2 -6
  101. package/dist/src/models/Api/HotelDTO.js +1 -7
  102. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  103. package/dist/src/models/BasketRow.d.ts +3 -3
  104. package/dist/src/models/BasketRow.js +0 -3
  105. package/dist/src/models/BasketRow.js.map +1 -1
  106. package/dist/src/models/Client/Hotel/Hotel.d.ts +5 -4
  107. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  108. package/dist/src/models/Confirmation.d.ts +3 -0
  109. package/dist/src/models/Confirmation.js +2 -0
  110. package/dist/src/models/Confirmation.js.map +1 -1
  111. package/dist/src/models/RoomstaySession.d.ts +5 -0
  112. package/dist/src/models/RoomstaySession.js.map +1 -1
  113. package/dist/src/pages/account/AccountRouter.js +2 -0
  114. package/dist/src/pages/account/AccountRouter.js.map +1 -1
  115. package/dist/src/pages/account/AccountRoutes.d.ts +3 -0
  116. package/dist/src/pages/account/AccountRoutes.js +3 -0
  117. package/dist/src/pages/account/AccountRoutes.js.map +1 -1
  118. package/dist/src/pages/account/ChangePassword/AccountChangePasswordPage.d.ts +1 -0
  119. package/dist/src/pages/account/ChangePassword/AccountChangePasswordPage.js +143 -0
  120. package/dist/src/pages/account/ChangePassword/AccountChangePasswordPage.js.map +1 -0
  121. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js +11 -16
  122. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js.map +1 -1
  123. package/dist/src/pages/steps/StepDate/StepDateComponent.js +7 -0
  124. package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
  125. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +1 -1
  126. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  127. package/dist/src/providers/FeatureProvider.d.ts +1 -1
  128. package/dist/src/providers/FeatureProvider.js +6 -2
  129. package/dist/src/providers/FeatureProvider.js.map +1 -1
  130. package/dist/src/providers/SessionProvider.js +5 -1
  131. package/dist/src/providers/SessionProvider.js.map +1 -1
  132. package/dist/src/providers/feature/DerbysoftClickTrackingFeature.d.ts +7 -0
  133. package/dist/src/providers/feature/DerbysoftClickTrackingFeature.js +32 -0
  134. package/dist/src/providers/feature/DerbysoftClickTrackingFeature.js.map +1 -0
  135. package/dist/src/providers/feature/Feature.d.ts +3 -3
  136. package/dist/src/providers/feature/Feature.js +3 -3
  137. package/dist/src/providers/feature/Feature.js.map +1 -1
  138. package/dist/src/providers/feature/GuestTitleFieldFeature.d.ts +21 -0
  139. package/dist/src/providers/feature/GuestTitleFieldFeature.js +37 -0
  140. package/dist/src/providers/feature/GuestTitleFieldFeature.js.map +1 -0
  141. package/dist/src/providers/storage/LocalStorageProvider.js +1 -1
  142. package/dist/src/providers/storage/LocalStorageProvider.js.map +1 -1
  143. package/dist/src/translations/Translation.d.ts +19 -3
  144. package/dist/src/translations/Translation.js +19 -3
  145. package/dist/src/translations/Translation.js.map +1 -1
  146. package/dist/src/translations/languages/en-gb.js +20 -4
  147. package/dist/src/translations/languages/en-gb.js.map +1 -1
  148. package/dist/src/util/DerbysoftPixel.d.ts +4 -0
  149. package/dist/src/util/DerbysoftPixel.js +56 -0
  150. package/dist/src/util/DerbysoftPixel.js.map +1 -0
  151. package/dist/test.bundle.js +1 -1
  152. package/dist/tests/offline/entry/OfflineEngineDefaults.js +5 -0
  153. package/dist/tests/offline/entry/OfflineEngineDefaults.js.map +1 -1
  154. package/dist/vendors.bundle.js +1 -1
  155. package/dist/vendors.bundle.js.LICENSE.txt +2 -0
  156. package/package.json +2 -2
  157. package/dist/201.bundle.js +0 -1
  158. package/dist/457.bundle.js +0 -1
  159. package/dist/468.bundle.js +0 -1
  160. package/dist/src/components/steps/addons/AddonsNotFound.d.ts +0 -1
  161. package/dist/src/components/steps/addons/AddonsNotFound.js.map +0 -1
  162. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.types.js.map +0 -1
  163. package/dist/src/events/views/PlacedBookingEvent.js.map +0 -1
@@ -15,6 +15,7 @@ export interface MemberPortalWidgetConfig extends BaseEngineConfig {
15
15
  fallbackPlacements?: Placement;
16
16
  onSignedIn?: (user: IRoomstayMember) => void;
17
17
  onSignedOut?: () => void;
18
+ renderInput?: (member?: IRoomstayMember | null, isLoading?: boolean) => JSX.Element | string;
18
19
  }
19
20
  export declare class MemberPortalWidget extends BaseEngine<MemberPortalWidgetConfig> {
20
21
  constructor(bookingContainer: HTMLElement, config?: MemberPortalWidgetConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"MemberPortalWidget.js","sourceRoot":"/","sources":["src/engines/MemberPortalWidget/MemberPortalWidget.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAIA,qDAAyF;AAGzF,0FAAkE;AAElE,2EAAuE;AAYvE,MAAa,kBAAmB,SAAQ,uBAAoC;IACxE,YAAmB,gBAA6B,EAAE,MAAiC;QAC/E,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,gCAAmB,CAAC,IAAI,CAAC;QAEvC,4CAA4C;QAC5C,6BAAmB,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC1E,CAAC;IAEe,MAAM;;YAClB,IAAA,oDAAwB,EAAC,6BAAmB,CAAC,4BAA4B,CAAC,KAAK,EAAE,sBAAsB,CAAC,EAAE,IAAI,CAAC,CAAC;QACpH,CAAC;KAAA;CACJ;AAZD,gDAYC","sourcesContent":["import { Placement } from '@popperjs/core';\nimport { IRoomstayMember } from '@roomstay/core';\n\nimport { MenuItemType } from '@/components/generic/modal/SigninModal/AuthenticatedUserModal';\nimport { BaseEngine, BaseEngineConfig, BookingEngineSource } from '@/engines/BaseEngine';\nimport { ConfigCompany } from '@/models/Client/Hotel/Company';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\n\nimport { renderMemberPortalWidget } from './MemberPortalWidgetElement';\n\nexport interface MemberPortalWidgetConfig extends BaseEngineConfig {\n company: Pick<ConfigCompany, 'colors' | 'companyShort'> & { checkoutLink?: string; hotel: string | Hotel };\n authMenuItem?: MenuItemType[];\n buttonClass?: string;\n overlayPlacement?: Placement;\n fallbackPlacements?: Placement;\n onSignedIn?: (user: IRoomstayMember) => void;\n onSignedOut?: () => void;\n}\n\nexport class MemberPortalWidget extends BaseEngine<MemberPortalWidgetConfig> {\n public constructor(bookingContainer: HTMLElement, config?: MemberPortalWidgetConfig) {\n super(bookingContainer, config);\n this.source = BookingEngineSource.Auth;\n\n // TODO: Make this a more permanent solution\n RoomstayThemeEngine.EngineContainer.classList.add('--transparent-bg');\n }\n\n protected async render() {\n renderMemberPortalWidget(RoomstayThemeEngine.createElementOrReuseExisting('div', 'member-portal-widget'), this);\n }\n}\n"]}
1
+ {"version":3,"file":"MemberPortalWidget.js","sourceRoot":"/","sources":["src/engines/MemberPortalWidget/MemberPortalWidget.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAIA,qDAAyF;AAGzF,0FAAkE;AAElE,2EAAuE;AAcvE,MAAa,kBAAmB,SAAQ,uBAAoC;IACxE,YAAmB,gBAA6B,EAAE,MAAiC;QAC/E,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,gCAAmB,CAAC,IAAI,CAAC;QAEvC,4CAA4C;QAC5C,6BAAmB,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC1E,CAAC;IAEe,MAAM;;YAClB,IAAA,oDAAwB,EAAC,6BAAmB,CAAC,4BAA4B,CAAC,KAAK,EAAE,sBAAsB,CAAC,EAAE,IAAI,CAAC,CAAC;QACpH,CAAC;KAAA;CACJ;AAZD,gDAYC","sourcesContent":["import { Placement } from '@popperjs/core';\nimport { IRoomstayMember } from '@roomstay/core';\n\nimport { MenuItemType } from '@/components/generic/modal/SigninModal/AuthenticatedUserModal';\nimport { BaseEngine, BaseEngineConfig, BookingEngineSource } from '@/engines/BaseEngine';\nimport { ConfigCompany } from '@/models/Client/Hotel/Company';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\n\nimport { renderMemberPortalWidget } from './MemberPortalWidgetElement';\n\nexport interface MemberPortalWidgetConfig extends BaseEngineConfig {\n company: Pick<ConfigCompany, 'colors' | 'companyShort'> & { checkoutLink?: string; hotel: string | Hotel };\n authMenuItem?: MenuItemType[];\n buttonClass?: string;\n overlayPlacement?: Placement;\n fallbackPlacements?: Placement;\n onSignedIn?: (user: IRoomstayMember) => void;\n onSignedOut?: () => void;\n\n renderInput?: (member?: IRoomstayMember | null, isLoading?: boolean) => JSX.Element | string;\n}\n\nexport class MemberPortalWidget extends BaseEngine<MemberPortalWidgetConfig> {\n public constructor(bookingContainer: HTMLElement, config?: MemberPortalWidgetConfig) {\n super(bookingContainer, config);\n this.source = BookingEngineSource.Auth;\n\n // TODO: Make this a more permanent solution\n RoomstayThemeEngine.EngineContainer.classList.add('--transparent-bg');\n }\n\n protected async render() {\n renderMemberPortalWidget(RoomstayThemeEngine.createElementOrReuseExisting('div', 'member-portal-widget'), this);\n }\n}\n"]}
@@ -58,6 +58,22 @@ function MemberPortalWidgetElement({ engine }) {
58
58
  (_a = engineConfig.onSignedIn) === null || _a === void 0 ? void 0 : _a.call(engineConfig, roomstayMember);
59
59
  }
60
60
  }, [roomstayMember]);
61
+ const buttonElement = (0, react_1.useMemo)(() => {
62
+ if (engineConfig.renderInput) {
63
+ return (react_1.default.createElement("div", { ref: loginAnchorEl, onClick: onLoginClickHandler }, engineConfig.renderInput(roomstayMember, loading)));
64
+ }
65
+ else {
66
+ return (react_1.default.createElement("div", { ref: loginAnchorEl, style: { width: 'fit-content' } }, roomstayMember ? (react_1.default.createElement(BEButton_1.default, { isLoading: loading, size: "small", className: engineConfig.buttonClass, onClick: onLoginClickHandler, stopIconAnimation: true },
67
+ roomstayMember.forename,
68
+ " ",
69
+ roomstayMember.surname,
70
+ react_1.default.createElement("span", { className: "u-white u-pad-left--light", style: { marginRight: -13 } },
71
+ react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowDown2, size: "1.3em", color: Color_1.Color.DarkGrey })))) : (react_1.default.createElement(BEButton_1.default, { isLoading: loading, size: "small", className: engineConfig.buttonClass, onClick: onLoginClickHandler, stopIconAnimation: true },
72
+ t(Translation_1.Translation.Navigation.SignIn.SignIn),
73
+ react_1.default.createElement("span", { className: "u-white u-pad-left--light", style: { marginRight: -13 } },
74
+ react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowDown2, size: "1.3em", color: Color_1.Color.DarkGrey }))))));
75
+ }
76
+ }, [engineConfig.renderInput, roomstayMember, loading]);
61
77
  const authProps = {
62
78
  open: loginModalOpen,
63
79
  anchorEl: loginAnchorEl.current,
@@ -76,15 +92,7 @@ function MemberPortalWidgetElement({ engine }) {
76
92
  onClose: closeLoginClickHandler,
77
93
  };
78
94
  return (react_1.default.createElement(react_1.default.Fragment, null,
79
- react_1.default.createElement("div", { ref: loginAnchorEl, style: { width: 'fit-content' } }, roomstayMember ? (react_1.default.createElement(BEButton_1.default, { isLoading: loading, size: "small", className: engineConfig.buttonClass, onClick: onLoginClickHandler, stopIconAnimation: true },
80
- roomstayMember.forename,
81
- " ",
82
- roomstayMember.surname,
83
- react_1.default.createElement("span", { className: "u-white u-pad-left--light", style: { marginRight: -13 } },
84
- react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowDown2, size: "1.3em", color: Color_1.Color.DarkGrey })))) : (react_1.default.createElement(BEButton_1.default, { isLoading: loading, size: "small", className: engineConfig.buttonClass, onClick: onLoginClickHandler, stopIconAnimation: true },
85
- t(Translation_1.Translation.Navigation.SignIn.SignIn),
86
- react_1.default.createElement("span", { className: "u-white u-pad-left--light", style: { marginRight: -13 } },
87
- react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowDown2, size: "1.3em", color: Color_1.Color.DarkGrey }))))),
95
+ buttonElement,
88
96
  react_1.default.createElement(react_1.Suspense, { fallback: SmallSpinner_1.default }, roomstayMember ? react_1.default.createElement(AuthenticatedUserModal_1.AuthenticatedUserModal, Object.assign({}, authProps)) : react_1.default.createElement(UnauthenticatedUserModal_1.UnauthenticatedUserModal, Object.assign({}, unauthProps)))));
89
97
  }
90
98
  exports.default = MemberPortalWidgetElement;
@@ -1 +1 @@
1
- {"version":3,"file":"MemberPortalWidgetElement.js","sourceRoot":"/","sources":["src/engines/MemberPortalWidget/MemberPortalWidgetElement.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AuthenticationContext, AuthenticationContextProvider, BookingEngineContextWrapper, CompanyContextWrapper, RoomstayMemberContext } from '@frontend/contexts';\nimport React, { Suspense, useContext, useEffect, useRef, useState } from 'react';\nimport { render } from 'react-dom';\nimport { useTranslation } from 'react-i18next';\nimport { HashRouter } from 'react-router-dom';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport { AuthenticatedUserModal, AuthenticatedUserModalProps } from '@/components/generic/modal/SigninModal/AuthenticatedUserModal';\nimport { UnauthenticatedUserModal, UnauthenticatedUserModalProps } from '@/components/generic/modal/SigninModal/UnauthenticatedUserModal';\nimport { ConfigCompany } from '@/models/Client/Hotel/Company';\nimport { ConfigHotel } from '@/models/Client/Hotel/Hotel';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\n\nimport { MemberPortalWidget, MemberPortalWidgetConfig } from './MemberPortalWidget';\n\nexport interface MemberPortalWidgetElementProps extends Omit<MemberPortalWidgetConfig, 'company'> {\n engine: MemberPortalWidget;\n}\n\nexport default function MemberPortalWidgetElement({ engine }: MemberPortalWidgetElementProps) {\n const engineConfig = engine.getConfig();\n\n const { roomstayMember } = useContext(RoomstayMemberContext);\n const { loading } = useContext(AuthenticationContext);\n\n const { t } = useTranslation();\n const [loginModalOpen, setLoginModalOpen] = useState(false);\n const loginAnchorEl = useRef<HTMLDivElement | null>(null);\n\n const closeLoginClickHandler = () => {\n setLoginModalOpen(false);\n };\n\n const onLoginClickHandler = () => {\n setLoginModalOpen(true);\n };\n\n useEffect(() => {\n if (roomstayMember) {\n engineConfig.onSignedIn?.(roomstayMember);\n }\n }, [roomstayMember]);\n\n const authProps: AuthenticatedUserModalProps = {\n open: loginModalOpen,\n anchorEl: loginAnchorEl.current,\n menuItems: engineConfig.authMenuItem,\n placement: engineConfig.overlayPlacement || 'bottom-end',\n fallbackPlacements: engineConfig.fallbackPlacements,\n basePath: engineConfig.company.checkoutLink,\n onClose: closeLoginClickHandler,\n onSignedOut: engineConfig.onSignedOut,\n };\n\n const unauthProps: UnauthenticatedUserModalProps = {\n open: loginModalOpen,\n anchorEl: loginAnchorEl.current,\n placement: engineConfig.overlayPlacement || 'bottom-end',\n fallbackPlacements: engineConfig.fallbackPlacements,\n onClose: closeLoginClickHandler,\n };\n\n return (\n <>\n <div ref={loginAnchorEl} style={{ width: 'fit-content' }}>\n {roomstayMember ? (\n <BEButton isLoading={loading} size=\"small\" className={engineConfig.buttonClass} onClick={onLoginClickHandler} stopIconAnimation>\n {roomstayMember.forename} {roomstayMember.surname}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n ) : (\n <BEButton isLoading={loading} size=\"small\" className={engineConfig.buttonClass} onClick={onLoginClickHandler} stopIconAnimation>\n {t(Translation.Navigation.SignIn.SignIn)}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n )}\n </div>\n <Suspense fallback={SmallSpinner}>{roomstayMember ? <AuthenticatedUserModal {...authProps} /> : <UnauthenticatedUserModal {...unauthProps} />}</Suspense>\n </>\n );\n}\n\nexport const renderMemberPortalWidget = (container: Element, engine: MemberPortalWidget) => {\n const config = engine.getConfig();\n const companyConfig = config.company;\n\n const company: ConfigCompany = {\n name: '',\n logo: '',\n companyShort: companyConfig.companyShort,\n colors: companyConfig.colors,\n selectedHotel: companyConfig.hotel,\n hotels:\n typeof companyConfig.hotel === 'string'\n ? [\n {\n hotelID: companyConfig.hotel,\n } as ConfigHotel,\n ]\n : [companyConfig.hotel],\n };\n\n render(\n <Suspense fallback={<></>}>\n <HashRouter>\n <BookingEngineContextWrapper engine={engine}>\n <CompanyContextWrapper configCompany={company}>\n <AuthenticationContextProvider>\n <MemberPortalWidgetElement engine={engine} />\n </AuthenticationContextProvider>\n </CompanyContextWrapper>\n </BookingEngineContextWrapper>\n </HashRouter>\n </Suspense>,\n container\n );\n};\n"]}
1
+ {"version":3,"file":"MemberPortalWidgetElement.js","sourceRoot":"/","sources":["src/engines/MemberPortalWidget/MemberPortalWidgetElement.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AuthenticationContext, AuthenticationContextProvider, BookingEngineContextWrapper, CompanyContextWrapper, RoomstayMemberContext } from '@frontend/contexts';\nimport React, { Suspense, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { render } from 'react-dom';\nimport { useTranslation } from 'react-i18next';\nimport { HashRouter } from 'react-router-dom';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport { AuthenticatedUserModal, AuthenticatedUserModalProps } from '@/components/generic/modal/SigninModal/AuthenticatedUserModal';\nimport { UnauthenticatedUserModal, UnauthenticatedUserModalProps } from '@/components/generic/modal/SigninModal/UnauthenticatedUserModal';\nimport { ConfigCompany } from '@/models/Client/Hotel/Company';\nimport { ConfigHotel } from '@/models/Client/Hotel/Hotel';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\n\nimport { MemberPortalWidget, MemberPortalWidgetConfig } from './MemberPortalWidget';\n\nexport interface MemberPortalWidgetElementProps extends Omit<MemberPortalWidgetConfig, 'company'> {\n engine: MemberPortalWidget;\n}\n\nexport default function MemberPortalWidgetElement({ engine }: MemberPortalWidgetElementProps) {\n const engineConfig = engine.getConfig();\n\n const { roomstayMember } = useContext(RoomstayMemberContext);\n const { loading } = useContext(AuthenticationContext);\n\n const { t } = useTranslation();\n const [loginModalOpen, setLoginModalOpen] = useState(false);\n const loginAnchorEl = useRef<HTMLDivElement | null>(null);\n\n const closeLoginClickHandler = () => {\n setLoginModalOpen(false);\n };\n\n const onLoginClickHandler = () => {\n setLoginModalOpen(true);\n };\n\n useEffect(() => {\n if (roomstayMember) {\n engineConfig.onSignedIn?.(roomstayMember);\n }\n }, [roomstayMember]);\n\n const buttonElement = useMemo(() => {\n if (engineConfig.renderInput) {\n return (\n <div ref={loginAnchorEl} onClick={onLoginClickHandler}>\n {engineConfig.renderInput(roomstayMember, loading)}\n </div>\n );\n } else {\n return (\n <div ref={loginAnchorEl} style={{ width: 'fit-content' }}>\n {roomstayMember ? (\n <BEButton isLoading={loading} size=\"small\" className={engineConfig.buttonClass} onClick={onLoginClickHandler} stopIconAnimation>\n {roomstayMember.forename} {roomstayMember.surname}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n ) : (\n <BEButton isLoading={loading} size=\"small\" className={engineConfig.buttonClass} onClick={onLoginClickHandler} stopIconAnimation>\n {t(Translation.Navigation.SignIn.SignIn)}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n )}\n </div>\n );\n }\n }, [engineConfig.renderInput, roomstayMember, loading]);\n\n const authProps: AuthenticatedUserModalProps = {\n open: loginModalOpen,\n anchorEl: loginAnchorEl.current,\n menuItems: engineConfig.authMenuItem,\n placement: engineConfig.overlayPlacement || 'bottom-end',\n fallbackPlacements: engineConfig.fallbackPlacements,\n basePath: engineConfig.company.checkoutLink,\n onClose: closeLoginClickHandler,\n onSignedOut: engineConfig.onSignedOut,\n };\n\n const unauthProps: UnauthenticatedUserModalProps = {\n open: loginModalOpen,\n anchorEl: loginAnchorEl.current,\n placement: engineConfig.overlayPlacement || 'bottom-end',\n fallbackPlacements: engineConfig.fallbackPlacements,\n onClose: closeLoginClickHandler,\n };\n\n return (\n <>\n {buttonElement}\n <Suspense fallback={SmallSpinner}>{roomstayMember ? <AuthenticatedUserModal {...authProps} /> : <UnauthenticatedUserModal {...unauthProps} />}</Suspense>\n </>\n );\n}\n\nexport const renderMemberPortalWidget = (container: Element, engine: MemberPortalWidget) => {\n const config = engine.getConfig();\n const companyConfig = config.company;\n\n const company: ConfigCompany = {\n name: '',\n logo: '',\n companyShort: companyConfig.companyShort,\n colors: companyConfig.colors,\n selectedHotel: companyConfig.hotel,\n hotels:\n typeof companyConfig.hotel === 'string'\n ? [\n {\n hotelID: companyConfig.hotel,\n } as ConfigHotel,\n ]\n : [companyConfig.hotel],\n };\n\n render(\n <Suspense fallback={<></>}>\n <HashRouter>\n <BookingEngineContextWrapper engine={engine}>\n <CompanyContextWrapper configCompany={company}>\n <AuthenticationContextProvider>\n <MemberPortalWidgetElement engine={engine} />\n </AuthenticationContextProvider>\n </CompanyContextWrapper>\n </BookingEngineContextWrapper>\n </HashRouter>\n </Suspense>,\n container\n );\n};\n"]}
@@ -1,9 +1,11 @@
1
1
  import ReservationsDTO from '../../models/Api/ReservationsDTO';
2
2
  import BasketRow from '../../models/BasketRow';
3
+ import { Hotel } from '../../models/Client/Hotel/Hotel';
3
4
  import { RoomstayEvent } from '../RoomstayEvent';
4
5
  export declare class PlacedBookingEvent extends RoomstayEvent {
5
6
  reservation: ReservationsDTO;
6
7
  basketRows: BasketRow[];
7
- constructor(reservation: ReservationsDTO, basketRows: BasketRow[]);
8
+ hotel?: Hotel;
9
+ constructor(reservation: ReservationsDTO, basketRows: BasketRow[], hotel?: Hotel);
8
10
  static getLabel(): string;
9
11
  }
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PlacedBookingEvent = void 0;
4
4
  const RoomstayEvent_1 = require("../RoomstayEvent");
5
5
  class PlacedBookingEvent extends RoomstayEvent_1.RoomstayEvent {
6
- constructor(reservation, basketRows) {
6
+ constructor(reservation, basketRows, hotel) {
7
7
  super();
8
8
  this.reservation = reservation;
9
9
  this.basketRows = basketRows;
10
+ this.hotel = hotel;
10
11
  }
11
12
  static getLabel() {
12
13
  return 'Booking/Placed';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlacedBookingEvent.js","sourceRoot":"/","sources":["src/events/actions/PlacedBookingEvent.ts"],"names":[],"mappings":";;;AAIA,oDAAiD;AAEjD,MAAa,kBAAmB,SAAQ,6BAAa;IAKjD,YAAmB,WAA4B,EAAE,UAAuB,EAAE,KAAa;QACnF,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,QAAQ;QACX,OAAO,gBAAgB,CAAC;IAC5B,CAAC;CACJ;AAhBD,gDAgBC","sourcesContent":["import ReservationsDTO from '@/models/Api/ReservationsDTO';\nimport BasketRow from '@/models/BasketRow';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\n\nimport { RoomstayEvent } from '../RoomstayEvent';\n\nexport class PlacedBookingEvent extends RoomstayEvent {\n public reservation: ReservationsDTO;\n public basketRows: BasketRow[];\n public hotel?: Hotel;\n\n public constructor(reservation: ReservationsDTO, basketRows: BasketRow[], hotel?: Hotel) {\n super();\n\n this.reservation = reservation;\n this.basketRows = basketRows;\n this.hotel = hotel;\n }\n\n static getLabel(): string {\n return 'Booking/Placed';\n }\n}\n"]}
@@ -1,9 +1,11 @@
1
1
  import { IEventReservation } from '../../models/Api/IEventReservation';
2
2
  import BasketRow from '../../models/BasketRow';
3
+ import { Hotel } from '../../models/Client/Hotel/Hotel';
3
4
  import { RoomstayEvent } from '../RoomstayEvent';
4
5
  export declare class StepThanksViewEvent extends RoomstayEvent {
5
6
  reservations: IEventReservation[];
6
7
  basketRows: BasketRow[];
7
- constructor(res: IEventReservation[], rows: BasketRow[]);
8
+ hotel?: Hotel;
9
+ constructor(res: IEventReservation[], rows: BasketRow[], hotel?: Hotel);
8
10
  static getLabel(): string;
9
11
  }
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StepThanksViewEvent = void 0;
4
4
  const RoomstayEvent_1 = require("../RoomstayEvent");
5
5
  class StepThanksViewEvent extends RoomstayEvent_1.RoomstayEvent {
6
- constructor(res, rows) {
6
+ // TODO: https://dijitally.atlassian.net/browse/RE-1770
7
+ constructor(res, rows, hotel) {
7
8
  super();
8
9
  this.reservations = res;
9
10
  this.basketRows = rows;
11
+ this.hotel = hotel;
10
12
  }
11
13
  static getLabel() {
12
14
  return 'View/Thanks';
@@ -1 +1 @@
1
- {"version":3,"file":"StepThanksViewEvent.js","sourceRoot":"/","sources":["src/events/views/StepThanksViewEvent.ts"],"names":[],"mappings":";;;AAGA,oDAAiD;AAEjD,MAAa,mBAAoB,SAAQ,6BAAa;IAIlD,YAAmB,GAAwB,EAAE,IAAiB;QAC1D,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,QAAQ;QACX,OAAO,aAAa,CAAC;IACzB,CAAC;CACJ;AAdD,kDAcC","sourcesContent":["import { IEventReservation } from '@/models/Api/IEventReservation';\nimport BasketRow from '@/models/BasketRow';\n\nimport { RoomstayEvent } from '../RoomstayEvent';\n\nexport class StepThanksViewEvent extends RoomstayEvent {\n public reservations: IEventReservation[];\n public basketRows: BasketRow[];\n\n public constructor(res: IEventReservation[], rows: BasketRow[]) {\n super();\n\n this.reservations = res;\n this.basketRows = rows;\n }\n\n static getLabel(): string {\n return 'View/Thanks';\n }\n}\n"]}
1
+ {"version":3,"file":"StepThanksViewEvent.js","sourceRoot":"/","sources":["src/events/views/StepThanksViewEvent.ts"],"names":[],"mappings":";;;AAIA,oDAAiD;AAEjD,MAAa,mBAAoB,SAAQ,6BAAa;IAMlD,uDAAuD;IACvD,YAAmB,GAAwB,EAAE,IAAiB,EAAE,KAAa;QACzE,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,QAAQ;QACX,OAAO,aAAa,CAAC;IACzB,CAAC;CACJ;AAlBD,kDAkBC","sourcesContent":["import { IEventReservation } from '@/models/Api/IEventReservation';\nimport BasketRow from '@/models/BasketRow';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\n\nimport { RoomstayEvent } from '../RoomstayEvent';\n\nexport class StepThanksViewEvent extends RoomstayEvent {\n public reservations: IEventReservation[];\n public basketRows: BasketRow[];\n\n public hotel?: Hotel;\n\n // TODO: https://dijitally.atlassian.net/browse/RE-1770\n public constructor(res: IEventReservation[], rows: BasketRow[], hotel?: Hotel) {\n super();\n\n this.reservations = res;\n this.basketRows = rows;\n this.hotel = hotel;\n }\n\n static getLabel(): string {\n return 'View/Thanks';\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  export declare const useExternalMember: () => {
2
- externalMemberType: import("..").EIntegration | undefined;
2
+ externalMemberType: import("@roomstay/core").EIntegration | undefined;
3
3
  isExternalMemberHotel: boolean;
4
4
  memberNumber: string | undefined;
5
5
  };
@@ -42,8 +42,8 @@ const react_i18next_1 = require("react-i18next");
42
42
  const BEButton_1 = __importDefault(require("../components/generic/BEButton"));
43
43
  const SimpleModal_1 = __importStar(require("../components/generic/modal/SimpleModal"));
44
44
  const Text_1 = __importDefault(require("../components/generic/Text"));
45
- const Translation_1 = require("../translations/Translation");
46
45
  const RoomRateAvailabilityListFromApi_1 = require("./RoomRateAvailabilityListFromApi");
46
+ const Translation_1 = require("../translations/Translation");
47
47
  const useNextStepAction = () => {
48
48
  const { getAllValidRows, updateBasketRow } = (0, react_1.useContext)(contexts_1.BasketContext);
49
49
  const { getRoomsByBasketRow } = (0, RoomRateAvailabilityListFromApi_1.useRoomRateAvailabilityListFromApi)();
@@ -1 +1 @@
1
- {"version":3,"file":"useNextStepAction.js","sourceRoot":"/","sources":["src/hooks/useNextStepAction.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport React, { useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport BEButton from '@/components/generic/BEButton';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport Text from '@/components/generic/Text';\nimport BasketRow from '@/models/BasketRow';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport { Translation } from '@/translations/Translation';\n\nimport { useRoomRateAvailabilityListFromApi } from './RoomRateAvailabilityListFromApi';\ninterface IValidationMatchedPrice {\n matched: boolean;\n latestRate: RoomRate | null;\n}\n\nexport const useNextStepAction = () => {\n const { getAllValidRows, updateBasketRow } = useContext(BasketContext);\n const { getRoomsByBasketRow } = useRoomRateAvailabilityListFromApi();\n\n const validateRoomRateMatchedPrice = async (basketRow: BasketRow): Promise<IValidationMatchedPrice> => {\n const roomRate = basketRow.getRate();\n const rooms = await getRoomsByBasketRow(basketRow);\n const latestRate = roomRate?.code ? rooms.find(({ code }) => code === roomRate?.getRoom()?.code)?.getRate(roomRate?.code) : null;\n return {\n matched: roomRate?.getAveragePrice(true) === latestRate?.getAveragePrice(true),\n latestRate: latestRate ?? null,\n };\n };\n\n const getBasketRowUnMatchedPrice = async (): Promise<\n {\n basketRow: BasketRow;\n validation: IValidationMatchedPrice;\n }[]\n > => {\n const allValidRows: BasketRow[] = getAllValidRows();\n const invalidRows = [];\n for (const basketRow of allValidRows) {\n const validation = await validateRoomRateMatchedPrice(basketRow);\n if (validation.matched === false) {\n invalidRows.push({\n basketRow: basketRow,\n validation: validation,\n });\n }\n }\n return invalidRows;\n };\n\n const syncBasketRowUnMatchedPrice = async (): Promise<void> => {\n const allValidRows: BasketRow[] = getAllValidRows();\n for (const basketRow of allValidRows) {\n const matchedPrice = await validateRoomRateMatchedPrice(basketRow);\n if (matchedPrice.matched === false) {\n basketRow.setRate(matchedPrice?.latestRate);\n basketRow.setPreGuestsState();\n updateBasketRow(basketRow);\n }\n }\n };\n\n return { getBasketRowUnMatchedPrice, syncBasketRowUnMatchedPrice };\n};\n\n//HOC\nexport const withNextStepConfirmationDialog = (WrappedComponent: any) => {\n return function WithConfirmationDialog(props: any) {\n const { t } = useTranslation();\n\n const { updateBasketRow } = useContext(BasketContext);\n const { getBasketRowUnMatchedPrice, syncBasketRowUnMatchedPrice } = useNextStepAction();\n const [showConfirmationDialog, setShowConfirmationDialog] = useState<boolean>(false);\n const [hasUnavailableBasket, setHasUnavailableBasket] = useState<boolean>(false);\n\n const onClickHandler = async (event: MouseEvent) => {\n const basketRowUnMatchedPrice = await getBasketRowUnMatchedPrice();\n if (basketRowUnMatchedPrice.length === 0) {\n //Pre-validation passed\n props.onClick?.();\n } else {\n //Pre-validation failed\n //Show dymanic alert here\n setHasUnavailableBasket(basketRowUnMatchedPrice.some(({ validation }) => !validation.latestRate));\n setShowConfirmationDialog(true);\n event.stopPropagation();\n event.preventDefault();\n }\n };\n\n const onDiscardHandler = async () => {\n setShowConfirmationDialog(false);\n const basketRowUnMatchedPrice = await getBasketRowUnMatchedPrice();\n for (const { basketRow } of basketRowUnMatchedPrice) {\n basketRow.discardGuestsState();\n updateBasketRow(basketRow, true);\n }\n props.onClick?.();\n };\n\n const onSyncChangesHandler = async () => {\n setShowConfirmationDialog(false);\n await syncBasketRowUnMatchedPrice();\n props.onClick?.();\n };\n\n const openCloseHandler = () => {\n setShowConfirmationDialog(false);\n };\n\n return (\n <>\n <WrappedComponent {...props} onClick={onClickHandler} />\n <SimpleModal open={showConfirmationDialog} onClose={openCloseHandler} alignCenter size={SimpleModalSize.ExtraSmall}>\n <div className=\"u-pad--heavy inactivity-window\">\n <div className=\"u-marg-bottom--heavy\">\n {hasUnavailableBasket ? (\n <>\n <Text>{t(Translation.Step.Room.UnMatchedBasketRowPrice.ConfirmUpdateAndClearAlert)}</Text>\n <Text>{t(Translation.Step.Room.UnMatchedBasketRowPrice.ConfirmUpdateAndClearAlert2)}</Text>\n </>\n ) : (\n <Text>{t(Translation.Step.Room.UnMatchedBasketRowPrice.ConfirmKeepChangesAlert)}</Text>\n )}\n </div>\n <div className=\"u-flex\">\n <div className=\"u-marg-right--light u-w-100\">\n <BEButton wide onClick={onDiscardHandler}>\n {t(Translation.Misc.No)}\n </BEButton>\n </div>\n <div className=\"u-w-100\">\n <BEButton wide filled primary onClick={onSyncChangesHandler}>\n {hasUnavailableBasket ? t(Translation.Step.Room.UnMatchedBasketRowPrice.Continue) : t(Translation.Step.Room.UnMatchedBasketRowPrice.YesUpdate)}\n </BEButton>\n </div>\n </div>\n </div>\n </SimpleModal>\n </>\n );\n };\n};\n"]}
1
+ {"version":3,"file":"useNextStepAction.js","sourceRoot":"/","sources":["src/hooks/useNextStepAction.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport React, { useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport BEButton from '@/components/generic/BEButton';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport Text from '@/components/generic/Text';\nimport { useRoomRateAvailabilityListFromApi } from '@/hooks/RoomRateAvailabilityListFromApi';\nimport BasketRow from '@/models/BasketRow';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport { Translation } from '@/translations/Translation';\n\ninterface IValidationMatchedPrice {\n matched: boolean;\n latestRate: RoomRate | null;\n}\n\nexport const useNextStepAction = () => {\n const { getAllValidRows, updateBasketRow } = useContext(BasketContext);\n const { getRoomsByBasketRow } = useRoomRateAvailabilityListFromApi();\n\n const validateRoomRateMatchedPrice = async (basketRow: BasketRow): Promise<IValidationMatchedPrice> => {\n const roomRate = basketRow.getRate();\n const rooms = await getRoomsByBasketRow(basketRow);\n const latestRate = roomRate?.code ? rooms.find(({ code }) => code === roomRate?.getRoom()?.code)?.getRate(roomRate?.code) : null;\n return {\n matched: roomRate?.getAveragePrice(true) === latestRate?.getAveragePrice(true),\n latestRate: latestRate ?? null,\n };\n };\n\n const getBasketRowUnMatchedPrice = async (): Promise<\n {\n basketRow: BasketRow;\n validation: IValidationMatchedPrice;\n }[]\n > => {\n const allValidRows: BasketRow[] = getAllValidRows();\n const invalidRows = [];\n for (const basketRow of allValidRows) {\n const validation = await validateRoomRateMatchedPrice(basketRow);\n if (validation.matched === false) {\n invalidRows.push({\n basketRow: basketRow,\n validation: validation,\n });\n }\n }\n return invalidRows;\n };\n\n const syncBasketRowUnMatchedPrice = async (): Promise<void> => {\n const allValidRows: BasketRow[] = getAllValidRows();\n for (const basketRow of allValidRows) {\n const matchedPrice = await validateRoomRateMatchedPrice(basketRow);\n if (matchedPrice.matched === false) {\n basketRow.setRate(matchedPrice?.latestRate);\n basketRow.setPreGuestsState();\n updateBasketRow(basketRow);\n }\n }\n };\n\n return { getBasketRowUnMatchedPrice, syncBasketRowUnMatchedPrice };\n};\n\n//HOC\nexport const withNextStepConfirmationDialog = (WrappedComponent: any) => {\n return function WithConfirmationDialog(props: any) {\n const { t } = useTranslation();\n\n const { updateBasketRow } = useContext(BasketContext);\n const { getBasketRowUnMatchedPrice, syncBasketRowUnMatchedPrice } = useNextStepAction();\n const [showConfirmationDialog, setShowConfirmationDialog] = useState<boolean>(false);\n const [hasUnavailableBasket, setHasUnavailableBasket] = useState<boolean>(false);\n\n const onClickHandler = async (event: MouseEvent) => {\n const basketRowUnMatchedPrice = await getBasketRowUnMatchedPrice();\n if (basketRowUnMatchedPrice.length === 0) {\n //Pre-validation passed\n props.onClick?.();\n } else {\n //Pre-validation failed\n //Show dymanic alert here\n setHasUnavailableBasket(basketRowUnMatchedPrice.some(({ validation }) => !validation.latestRate));\n setShowConfirmationDialog(true);\n event.stopPropagation();\n event.preventDefault();\n }\n };\n\n const onDiscardHandler = async () => {\n setShowConfirmationDialog(false);\n const basketRowUnMatchedPrice = await getBasketRowUnMatchedPrice();\n for (const { basketRow } of basketRowUnMatchedPrice) {\n basketRow.discardGuestsState();\n updateBasketRow(basketRow, true);\n }\n props.onClick?.();\n };\n\n const onSyncChangesHandler = async () => {\n setShowConfirmationDialog(false);\n await syncBasketRowUnMatchedPrice();\n props.onClick?.();\n };\n\n const openCloseHandler = () => {\n setShowConfirmationDialog(false);\n };\n\n return (\n <>\n <WrappedComponent {...props} onClick={onClickHandler} />\n <SimpleModal open={showConfirmationDialog} onClose={openCloseHandler} alignCenter size={SimpleModalSize.ExtraSmall}>\n <div className=\"u-pad--heavy inactivity-window\">\n <div className=\"u-marg-bottom--heavy\">\n {hasUnavailableBasket ? (\n <>\n <Text>{t(Translation.Step.Room.UnMatchedBasketRowPrice.ConfirmUpdateAndClearAlert)}</Text>\n <Text>{t(Translation.Step.Room.UnMatchedBasketRowPrice.ConfirmUpdateAndClearAlert2)}</Text>\n </>\n ) : (\n <Text>{t(Translation.Step.Room.UnMatchedBasketRowPrice.ConfirmKeepChangesAlert)}</Text>\n )}\n </div>\n <div className=\"u-flex\">\n <div className=\"u-marg-right--light u-w-100\">\n <BEButton wide onClick={onDiscardHandler}>\n {t(Translation.Misc.No)}\n </BEButton>\n </div>\n <div className=\"u-w-100\">\n <BEButton wide filled primary onClick={onSyncChangesHandler}>\n {hasUnavailableBasket ? t(Translation.Step.Room.UnMatchedBasketRowPrice.Continue) : t(Translation.Step.Room.UnMatchedBasketRowPrice.YesUpdate)}\n </BEButton>\n </div>\n </div>\n </div>\n </SimpleModal>\n </>\n );\n };\n};\n"]}
@@ -24,6 +24,7 @@ export type { HotelInfoPerkRowProps } from './components/steps/hotel/HotelInfoPe
24
24
  export { BE_HOTEL_INFO_PERK_ROW } from './components/steps/hotel/HotelInfoPerksRow';
25
25
  export { default as HotelInfoPerksRow } from './components/steps/hotel/HotelInfoPerksRow';
26
26
  export { BE_NO_ROOMS_FOUND_BLOCK } from './components/steps/room/NoRoomsFoundBlock';
27
+ export { default as AddonsNotFoundBlock, BE_NO_ADDONS_FOUND_BLOCK } from './components/steps/addons/AddonsNotFoundBlock';
27
28
  export { default as NoRoomsFoundBlock } from './components/steps/room/NoRoomsFoundBlock';
28
29
  export type { RoomModalPerkRowProps } from './components/steps/room/RoomModalPerkRow';
29
30
  export { BE_ROOM_MODAL_PERK_ROW } from './components/steps/room/RoomModalPerkRow';
@@ -48,9 +49,11 @@ export { default as RatePillProvider } from './providers/RatePillProvider';
48
49
  export { RoomSort } from './providers/RoomSortProvider';
49
50
  export { default as ConfirmationVerifyFeature } from './providers/feature/ConfirmationVerifyFeature';
50
51
  export { default as DatePickerTypeFeature } from './providers/feature/DatePickerTypeFeature';
52
+ export { default as DerbysoftClickTrackingFeature } from './providers/feature/DerbysoftClickTrackingFeature';
51
53
  export { default as E164PhoneNumberFieldFeature } from './providers/feature/E164PhoneNumberFieldFeature';
52
54
  export { default as FeaturedPromoFeature } from './providers/feature/FeaturedPromoFeature';
53
55
  export { default as FullPageEngineSmallSpacingFeature } from './providers/feature/FullPageEngineSmallSpacingFeature';
56
+ export { default as GuestTitleFieldFeature } from './providers/feature/GuestTitleFieldFeature';
54
57
  export { default as InlineAddonStepFeature } from './providers/feature/InlineAddonStepFeature';
55
58
  export { default as PlanPayPricePreviewFeature } from './providers/feature/PlanPayPricePreviewFeature';
56
59
  export { default as RoomRateReadMoreVersionFeature } from './providers/feature/RoomRateReadMoreVersionFeature';
package/dist/src/index.js CHANGED
@@ -17,8 +17,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.StepGroupedRoom = exports.StepDate = exports.StepConfirmation = exports.StepAddon = exports.HotelDataSource = exports.API = exports.useFormContext = exports.DataLayer = exports.SessionProvider = exports.RoomstayThemeEngine = exports.withDI = exports.registerReplacement = exports.ShowIATANumberOnCheckoutFeature = exports.RoomUpsellFeature = exports.RoomRateReadMoreVersionFeature = exports.PlanPayPricePreviewFeature = exports.InlineAddonStepFeature = exports.FullPageEngineSmallSpacingFeature = exports.FeaturedPromoFeature = exports.E164PhoneNumberFieldFeature = exports.DatePickerTypeFeature = exports.ConfirmationVerifyFeature = exports.RoomSort = exports.RatePillProvider = exports.FeatureProvider = exports.CurrencyProvider = exports.SmallSpinner = exports.StepNoRoomBestRateAlert = exports.RoomModalPerkRow = exports.BE_ROOM_MODAL_PERK_ROW = exports.NoRoomsFoundBlock = exports.BE_NO_ROOMS_FOUND_BLOCK = exports.HotelInfoPerksRow = exports.BE_HOTEL_INFO_PERK_ROW = exports.StepConfirmationCountrySelector = exports.TextBox = exports.TextArea = exports.RadioFields = exports.LineBreak = exports.InputGroup = exports.Icon = exports.Headline = exports.Currency = exports.Checkbox = exports.BEButton = exports.Alert = exports.AutoAutoHeight = exports.Link = exports.useTranslation = exports.react = void 0;
21
- exports.Version = exports.events = exports.RoomstayEventManager = exports.StepManager = exports.StepThanks = exports.StepRoom = exports.StepHotel = void 0;
20
+ exports.HotelDataSource = exports.API = exports.useFormContext = exports.DataLayer = exports.SessionProvider = exports.RoomstayThemeEngine = exports.withDI = exports.registerReplacement = exports.ShowIATANumberOnCheckoutFeature = exports.RoomUpsellFeature = exports.RoomRateReadMoreVersionFeature = exports.PlanPayPricePreviewFeature = exports.InlineAddonStepFeature = exports.GuestTitleFieldFeature = exports.FullPageEngineSmallSpacingFeature = exports.FeaturedPromoFeature = exports.E164PhoneNumberFieldFeature = exports.DerbysoftClickTrackingFeature = exports.DatePickerTypeFeature = exports.ConfirmationVerifyFeature = exports.RoomSort = exports.RatePillProvider = exports.FeatureProvider = exports.CurrencyProvider = exports.SmallSpinner = exports.StepNoRoomBestRateAlert = exports.RoomModalPerkRow = exports.BE_ROOM_MODAL_PERK_ROW = exports.NoRoomsFoundBlock = exports.BE_NO_ADDONS_FOUND_BLOCK = exports.AddonsNotFoundBlock = exports.BE_NO_ROOMS_FOUND_BLOCK = exports.HotelInfoPerksRow = exports.BE_HOTEL_INFO_PERK_ROW = exports.StepConfirmationCountrySelector = exports.TextBox = exports.TextArea = exports.RadioFields = exports.LineBreak = exports.InputGroup = exports.Icon = exports.Headline = exports.Currency = exports.Checkbox = exports.BEButton = exports.Alert = exports.AutoAutoHeight = exports.Link = exports.useTranslation = exports.react = void 0;
21
+ exports.Version = exports.events = exports.RoomstayEventManager = exports.StepManager = exports.StepThanks = exports.StepRoom = exports.StepHotel = exports.StepGroupedRoom = exports.StepDate = exports.StepConfirmation = exports.StepAddon = void 0;
22
22
  // TODO: Look into resolving this.
23
23
  const react_1 = __importDefault(require("react"));
24
24
  const StepConfirmation_1 = __importDefault(require("./pages/steps/StepConfirmation/StepConfirmation"));
@@ -70,6 +70,9 @@ var HotelInfoPerksRow_2 = require("./components/steps/hotel/HotelInfoPerksRow");
70
70
  Object.defineProperty(exports, "HotelInfoPerksRow", { enumerable: true, get: function () { return __importDefault(HotelInfoPerksRow_2).default; } });
71
71
  var NoRoomsFoundBlock_1 = require("./components/steps/room/NoRoomsFoundBlock");
72
72
  Object.defineProperty(exports, "BE_NO_ROOMS_FOUND_BLOCK", { enumerable: true, get: function () { return NoRoomsFoundBlock_1.BE_NO_ROOMS_FOUND_BLOCK; } });
73
+ var AddonsNotFoundBlock_1 = require("./components/steps/addons/AddonsNotFoundBlock");
74
+ Object.defineProperty(exports, "AddonsNotFoundBlock", { enumerable: true, get: function () { return __importDefault(AddonsNotFoundBlock_1).default; } });
75
+ Object.defineProperty(exports, "BE_NO_ADDONS_FOUND_BLOCK", { enumerable: true, get: function () { return AddonsNotFoundBlock_1.BE_NO_ADDONS_FOUND_BLOCK; } });
73
76
  var NoRoomsFoundBlock_2 = require("./components/steps/room/NoRoomsFoundBlock");
74
77
  Object.defineProperty(exports, "NoRoomsFoundBlock", { enumerable: true, get: function () { return __importDefault(NoRoomsFoundBlock_2).default; } });
75
78
  var RoomModalPerkRow_1 = require("./components/steps/room/RoomModalPerkRow");
@@ -107,12 +110,16 @@ var ConfirmationVerifyFeature_1 = require("./providers/feature/ConfirmationVerif
107
110
  Object.defineProperty(exports, "ConfirmationVerifyFeature", { enumerable: true, get: function () { return __importDefault(ConfirmationVerifyFeature_1).default; } });
108
111
  var DatePickerTypeFeature_1 = require("./providers/feature/DatePickerTypeFeature");
109
112
  Object.defineProperty(exports, "DatePickerTypeFeature", { enumerable: true, get: function () { return __importDefault(DatePickerTypeFeature_1).default; } });
113
+ var DerbysoftClickTrackingFeature_1 = require("./providers/feature/DerbysoftClickTrackingFeature");
114
+ Object.defineProperty(exports, "DerbysoftClickTrackingFeature", { enumerable: true, get: function () { return __importDefault(DerbysoftClickTrackingFeature_1).default; } });
110
115
  var E164PhoneNumberFieldFeature_1 = require("./providers/feature/E164PhoneNumberFieldFeature");
111
116
  Object.defineProperty(exports, "E164PhoneNumberFieldFeature", { enumerable: true, get: function () { return __importDefault(E164PhoneNumberFieldFeature_1).default; } });
112
117
  var FeaturedPromoFeature_1 = require("./providers/feature/FeaturedPromoFeature");
113
118
  Object.defineProperty(exports, "FeaturedPromoFeature", { enumerable: true, get: function () { return __importDefault(FeaturedPromoFeature_1).default; } });
114
119
  var FullPageEngineSmallSpacingFeature_1 = require("./providers/feature/FullPageEngineSmallSpacingFeature");
115
120
  Object.defineProperty(exports, "FullPageEngineSmallSpacingFeature", { enumerable: true, get: function () { return __importDefault(FullPageEngineSmallSpacingFeature_1).default; } });
121
+ var GuestTitleFieldFeature_1 = require("./providers/feature/GuestTitleFieldFeature");
122
+ Object.defineProperty(exports, "GuestTitleFieldFeature", { enumerable: true, get: function () { return __importDefault(GuestTitleFieldFeature_1).default; } });
116
123
  var InlineAddonStepFeature_1 = require("./providers/feature/InlineAddonStepFeature");
117
124
  Object.defineProperty(exports, "InlineAddonStepFeature", { enumerable: true, get: function () { return __importDefault(InlineAddonStepFeature_1).default; } });
118
125
  var PlanPayPricePreviewFeature_1 = require("./providers/feature/PlanPayPricePreviewFeature");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO: Look into resolving this.\nimport ReactRaw from 'react';\n\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport StepDate from '@/pages/steps/StepDate/StepDate';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport StepThanks from '@/pages/steps/StepThanks/StepThanks';\nimport StepManager from '@/util/StepManager';\n\nimport RoomstayEventManager from './events/RoomstayEventManager';\n\nexport const react = ReactRaw;\n\nexport { useTranslation } from 'react-i18next';\nexport { Link } from 'react-router-dom';\n\n// Components\nexport { default as AutoAutoHeight } from '@/animations/AutoAutoHeight';\nexport * from '@/components/generic/Alert';\nexport { default as Alert } from '@/components/generic/Alert';\nexport { default as BEButton } from '@/components/generic/BEButton';\nexport { default as Checkbox } from '@/components/generic/Checkbox/Checkbox';\nexport { default as Currency } from '@/components/generic/Currency';\nexport { default as Headline } from '@/components/generic/Headline';\nexport { default as Icon } from '@/components/generic/Icon/Icon';\nexport * from '@/components/generic/Icon/Icon';\nexport { default as InputGroup } from '@/components/generic/InputGroup/InputGroup';\nexport { default as LineBreak } from '@/components/generic/LineBreak';\nexport { default as RadioFields } from '@/components/generic/radio/RadioFields';\nexport * from '@/components/generic/Select/index';\nexport * from '@/components/generic/Text';\nexport { default as TextArea } from '@/components/generic/TextArea';\nexport { default as TextBox } from '@/components/generic/TextBox';\nexport * from '@/components/steps/confirmation/StepConfirmationCommentsComponent';\nexport { default as StepConfirmationCountrySelector } from '@/components/steps/confirmation/StepConfirmationCountrySelector';\nexport type { HotelInfoPerkRowProps } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { BE_HOTEL_INFO_PERK_ROW } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { default as HotelInfoPerksRow } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { BE_NO_ROOMS_FOUND_BLOCK } from '@/components/steps/room/NoRoomsFoundBlock';\nexport { default as NoRoomsFoundBlock } from '@/components/steps/room/NoRoomsFoundBlock';\nexport type { RoomModalPerkRowProps } from '@/components/steps/room/RoomModalPerkRow';\nexport { BE_ROOM_MODAL_PERK_ROW } from '@/components/steps/room/RoomModalPerkRow';\nexport { default as RoomModalPerkRow } from '@/components/steps/room/RoomModalPerkRow';\nexport * from '@/components/steps/room/StepRoomBestRateAlert';\nexport { default as StepNoRoomBestRateAlert } from '@/components/steps/room/StepRoomBestRateAlert';\nexport * from '@/components/summary/BESummary';\nexport * from '@/components/summary/BESummaryPerkBlock';\nexport * from '@/engines/BookingWizardEngine/BookingWizardEngine';\nexport * from '@/engines/CustomEngine/CustomEngine';\nexport * from '@/engines/FullPageBookingEngine/FullPageBookingEngine';\nexport * from '@/engines/InlineRoomMiniEngine/InlineRoomMiniEngine';\nexport * from '@/engines/MemberPortalWidget/MemberPortalWidget';\nexport * from '@/engines/RecentSearchesEngine/RecentSearchesEngine';\n\n// Loaders\nexport { default as SmallSpinner } from '@/components/generic/loader/SmallSpinner';\n\n// Providers\nexport * from '@/providers/CurrencyProvider';\nexport { default as CurrencyProvider } from '@/providers/CurrencyProvider';\nexport { default as FeatureProvider } from '@/providers/FeatureProvider';\nexport * from '@/providers/LanguageProvider';\nexport * from '@/providers/PromotionProvider';\nexport { default as RatePillProvider } from '@/providers/RatePillProvider';\nexport { RoomSort } from '@/providers/RoomSortProvider';\n\n// Features\n\nexport { default as ConfirmationVerifyFeature } from '@/providers/feature/ConfirmationVerifyFeature';\nexport { default as DatePickerTypeFeature } from '@/providers/feature/DatePickerTypeFeature';\nexport { default as E164PhoneNumberFieldFeature } from '@/providers/feature/E164PhoneNumberFieldFeature';\nexport { default as FeaturedPromoFeature } from '@/providers/feature/FeaturedPromoFeature';\nexport { default as FullPageEngineSmallSpacingFeature } from '@/providers/feature/FullPageEngineSmallSpacingFeature';\nexport { default as InlineAddonStepFeature } from '@/providers/feature/InlineAddonStepFeature';\nexport { default as PlanPayPricePreviewFeature } from '@/providers/feature/PlanPayPricePreviewFeature';\nexport { default as RoomRateReadMoreVersionFeature } from '@/providers/feature/RoomRateReadMoreVersionFeature';\nexport { default as RoomUpsellFeature } from '@/providers/feature/RoomUpsellFeature';\nexport { default as ShowIATANumberOnCheckoutFeature } from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\n\n// Contexts\nexport { registerReplacement, withDI } from '@/providers/DIProvider';\nexport * from '@/providers/RoomstayThemeEngine';\nexport { default as RoomstayThemeEngine } from '@/providers/RoomstayThemeEngine';\nexport { default as SessionProvider } from '@/providers/SessionProvider';\nexport { default as DataLayer } from '@/util/DataLayer';\nexport * from '@/util/DataLayer';\nexport * from '@/util/DefaultValueManager';\nexport * from '@/util/RouteManager';\nexport * from '@frontend/contexts';\nexport { useFormContext } from 'react-hook-form';\n\n// Models\nexport { default as API } from '@/api/BookingAPI';\nexport * from '@/models/Api/HotelDTO';\nexport * from '@/models/Api/HotelOverrideDTO';\nexport type { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nexport * from '@/models/Client/Hotel/Company';\nexport * from '@/models/Client/Hotel/DistanceUnitType.types';\nexport * from '@/models/Client/Hotel/Hotel';\nexport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nexport * from '@/models/Client/Hotel/HotelPerk';\nexport * from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\n// Steps\nexport { default as StepAddon } from '@/pages/steps/StepAddon/StepAddon';\nexport { default as StepConfirmation } from '@/pages/steps/StepConfirmation/StepConfirmation';\nexport { default as StepDate } from '@/pages/steps/StepDate/StepDate';\nexport { default as StepGroupedRoom } from '@/pages/steps/StepGroupedRoom/StepGroupedRoom';\nexport { default as StepHotel } from '@/pages/steps/StepHotel/StepHotel';\nexport { default as StepRoom } from '@/pages/steps/StepRoom/StepRoom';\nexport { default as StepThanks } from '@/pages/steps/StepThanks/StepThanks';\nexport * from '@/translations/Translation';\nexport { default as StepManager } from '@/util/StepManager';\n\n// Util\n\nexport type { default as ColorProfile } from '@/models/Client/Hotel/ColorProfile';\nexport * from '@/util/Color';\nexport * from '@/util/Debounce';\n\n// Hooks\n\nexport * from '@/events/index';\nexport * from '@/hooks/CurrentHotelHook';\nexport * from '@/hooks/EventHook';\n\n/** @deprecated use `roomstay.events` instead */\nexport { default as RoomstayEventManager } from '@/events/RoomstayEventManager';\n\nexport const events = {\n on: RoomstayEventManager.addEvent,\n raise: RoomstayEventManager.raise,\n};\n\ndeclare const RS_VERSION: string;\nexport const Version = RS_VERSION;\n\nStepManager.currentSteps = {\n 0: StepDate,\n 10: StepRoom,\n 20: StepConfirmation,\n 30: StepThanks,\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO: Look into resolving this.\nimport ReactRaw from 'react';\n\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport StepDate from '@/pages/steps/StepDate/StepDate';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport StepThanks from '@/pages/steps/StepThanks/StepThanks';\nimport StepManager from '@/util/StepManager';\n\nimport RoomstayEventManager from './events/RoomstayEventManager';\n\nexport const react = ReactRaw;\n\nexport { useTranslation } from 'react-i18next';\nexport { Link } from 'react-router-dom';\n\n// Components\nexport { default as AutoAutoHeight } from '@/animations/AutoAutoHeight';\nexport * from '@/components/generic/Alert';\nexport { default as Alert } from '@/components/generic/Alert';\nexport { default as BEButton } from '@/components/generic/BEButton';\nexport { default as Checkbox } from '@/components/generic/Checkbox/Checkbox';\nexport { default as Currency } from '@/components/generic/Currency';\nexport { default as Headline } from '@/components/generic/Headline';\nexport { default as Icon } from '@/components/generic/Icon/Icon';\nexport * from '@/components/generic/Icon/Icon';\nexport { default as InputGroup } from '@/components/generic/InputGroup/InputGroup';\nexport { default as LineBreak } from '@/components/generic/LineBreak';\nexport { default as RadioFields } from '@/components/generic/radio/RadioFields';\nexport * from '@/components/generic/Select/index';\nexport * from '@/components/generic/Text';\nexport { default as TextArea } from '@/components/generic/TextArea';\nexport { default as TextBox } from '@/components/generic/TextBox';\nexport * from '@/components/steps/confirmation/StepConfirmationCommentsComponent';\nexport { default as StepConfirmationCountrySelector } from '@/components/steps/confirmation/StepConfirmationCountrySelector';\nexport type { HotelInfoPerkRowProps } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { BE_HOTEL_INFO_PERK_ROW } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { default as HotelInfoPerksRow } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { BE_NO_ROOMS_FOUND_BLOCK } from '@/components/steps/room/NoRoomsFoundBlock';\nexport { default as AddonsNotFoundBlock, BE_NO_ADDONS_FOUND_BLOCK } from '@/components/steps/addons/AddonsNotFoundBlock';\nexport { default as NoRoomsFoundBlock } from '@/components/steps/room/NoRoomsFoundBlock';\nexport type { RoomModalPerkRowProps } from '@/components/steps/room/RoomModalPerkRow';\nexport { BE_ROOM_MODAL_PERK_ROW } from '@/components/steps/room/RoomModalPerkRow';\nexport { default as RoomModalPerkRow } from '@/components/steps/room/RoomModalPerkRow';\nexport * from '@/components/steps/room/StepRoomBestRateAlert';\nexport { default as StepNoRoomBestRateAlert } from '@/components/steps/room/StepRoomBestRateAlert';\nexport * from '@/components/summary/BESummary';\nexport * from '@/components/summary/BESummaryPerkBlock';\nexport * from '@/engines/BookingWizardEngine/BookingWizardEngine';\nexport * from '@/engines/CustomEngine/CustomEngine';\nexport * from '@/engines/FullPageBookingEngine/FullPageBookingEngine';\nexport * from '@/engines/InlineRoomMiniEngine/InlineRoomMiniEngine';\nexport * from '@/engines/MemberPortalWidget/MemberPortalWidget';\nexport * from '@/engines/RecentSearchesEngine/RecentSearchesEngine';\n\n// Loaders\nexport { default as SmallSpinner } from '@/components/generic/loader/SmallSpinner';\n\n// Providers\nexport * from '@/providers/CurrencyProvider';\nexport { default as CurrencyProvider } from '@/providers/CurrencyProvider';\nexport { default as FeatureProvider } from '@/providers/FeatureProvider';\nexport * from '@/providers/LanguageProvider';\nexport * from '@/providers/PromotionProvider';\nexport { default as RatePillProvider } from '@/providers/RatePillProvider';\nexport { RoomSort } from '@/providers/RoomSortProvider';\n\n// Features\n\nexport { default as ConfirmationVerifyFeature } from '@/providers/feature/ConfirmationVerifyFeature';\nexport { default as DatePickerTypeFeature } from '@/providers/feature/DatePickerTypeFeature';\nexport { default as DerbysoftClickTrackingFeature } from '@/providers/feature/DerbysoftClickTrackingFeature';\nexport { default as E164PhoneNumberFieldFeature } from '@/providers/feature/E164PhoneNumberFieldFeature';\nexport { default as FeaturedPromoFeature } from '@/providers/feature/FeaturedPromoFeature';\nexport { default as FullPageEngineSmallSpacingFeature } from '@/providers/feature/FullPageEngineSmallSpacingFeature';\nexport { default as GuestTitleFieldFeature } from '@/providers/feature/GuestTitleFieldFeature';\nexport { default as InlineAddonStepFeature } from '@/providers/feature/InlineAddonStepFeature';\nexport { default as PlanPayPricePreviewFeature } from '@/providers/feature/PlanPayPricePreviewFeature';\nexport { default as RoomRateReadMoreVersionFeature } from '@/providers/feature/RoomRateReadMoreVersionFeature';\nexport { default as RoomUpsellFeature } from '@/providers/feature/RoomUpsellFeature';\nexport { default as ShowIATANumberOnCheckoutFeature } from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\n\n// Contexts\nexport { registerReplacement, withDI } from '@/providers/DIProvider';\nexport * from '@/providers/RoomstayThemeEngine';\nexport { default as RoomstayThemeEngine } from '@/providers/RoomstayThemeEngine';\nexport { default as SessionProvider } from '@/providers/SessionProvider';\nexport { default as DataLayer } from '@/util/DataLayer';\nexport * from '@/util/DataLayer';\nexport * from '@/util/DefaultValueManager';\nexport * from '@/util/RouteManager';\nexport * from '@frontend/contexts';\nexport { useFormContext } from 'react-hook-form';\n\n// Models\nexport { default as API } from '@/api/BookingAPI';\nexport * from '@/models/Api/HotelDTO';\nexport * from '@/models/Api/HotelOverrideDTO';\nexport type { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nexport * from '@/models/Client/Hotel/Company';\nexport * from '@/models/Client/Hotel/DistanceUnitType.types';\nexport * from '@/models/Client/Hotel/Hotel';\nexport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nexport * from '@/models/Client/Hotel/HotelPerk';\nexport * from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\n// Steps\nexport { default as StepAddon } from '@/pages/steps/StepAddon/StepAddon';\nexport { default as StepConfirmation } from '@/pages/steps/StepConfirmation/StepConfirmation';\nexport { default as StepDate } from '@/pages/steps/StepDate/StepDate';\nexport { default as StepGroupedRoom } from '@/pages/steps/StepGroupedRoom/StepGroupedRoom';\nexport { default as StepHotel } from '@/pages/steps/StepHotel/StepHotel';\nexport { default as StepRoom } from '@/pages/steps/StepRoom/StepRoom';\nexport { default as StepThanks } from '@/pages/steps/StepThanks/StepThanks';\nexport * from '@/translations/Translation';\nexport { default as StepManager } from '@/util/StepManager';\n\n// Util\n\nexport type { default as ColorProfile } from '@/models/Client/Hotel/ColorProfile';\nexport * from '@/util/Color';\nexport * from '@/util/Debounce';\n\n// Hooks\n\nexport * from '@/events/index';\nexport * from '@/hooks/CurrentHotelHook';\nexport * from '@/hooks/EventHook';\n\n/** @deprecated use `roomstay.events` instead */\nexport { default as RoomstayEventManager } from '@/events/RoomstayEventManager';\n\nexport const events = {\n on: RoomstayEventManager.addEvent,\n raise: RoomstayEventManager.raise,\n};\n\ndeclare const RS_VERSION: string;\nexport const Version = RS_VERSION;\n\nStepManager.currentSteps = {\n 0: StepDate,\n 10: StepRoom,\n 20: StepConfirmation,\n 30: StepThanks,\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { EnvironmentName } from '@planpay/web';
2
- import type { EBookingPaymentMethod, EHotelCardProcessor } from '@roomstay/core';
2
+ import type { EBookingPaymentMethod, EHotelCardProcessor, EIntegration, EHotelStateFieldConfiguration } from '@roomstay/core';
3
3
  import { DeepPartial } from 'react-hook-form';
4
4
  import ColorProfile from '../Client/Hotel/ColorProfile';
5
5
  import { DistanceUnitType } from '../Client/Hotel/DistanceUnitType.types';
@@ -54,11 +54,6 @@ export type HotelRoomDTO = {
54
54
  prePerkDisclaimer?: string;
55
55
  perks?: ConfigHotel['perks'];
56
56
  };
57
- export declare enum EIntegration {
58
- Big4 = "Big4",
59
- Top10 = "Top10",
60
- Gday = "Gday"
61
- }
62
57
  export type HotelDTO = {
63
58
  id: number;
64
59
  name: string;
@@ -110,6 +105,7 @@ export type HotelDTO = {
110
105
  maxAdults?: number;
111
106
  maxChildren?: number;
112
107
  maxInfants?: number;
108
+ stateFieldConfiguration?: EHotelStateFieldConfiguration;
113
109
  } & Pick<AdminHotelConfig, 'childConfiguration'>;
114
110
  export declare enum VGSCardName {
115
111
  Visa = "visa",
@@ -1,13 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SynxisToVGSCardNameMapping = exports.VGSCardName = exports.EIntegration = void 0;
3
+ exports.SynxisToVGSCardNameMapping = exports.VGSCardName = void 0;
4
4
  const Hotel_1 = require("../Client/Hotel/Hotel");
5
- var EIntegration;
6
- (function (EIntegration) {
7
- EIntegration["Big4"] = "Big4";
8
- EIntegration["Top10"] = "Top10";
9
- EIntegration["Gday"] = "Gday";
10
- })(EIntegration = exports.EIntegration || (exports.EIntegration = {}));
11
5
  var VGSCardName;
12
6
  (function (VGSCardName) {
13
7
  VGSCardName["Visa"] = "visa";
@@ -1 +1 @@
1
- {"version":3,"file":"HotelDTO.js","sourceRoot":"/","sources":["src/models/Api/HotelDTO.ts"],"names":[],"mappings":";;;AAMA,uDAA8F;AAiD9F,IAAY,YAIX;AAJD,WAAY,YAAY;IACpB,6BAAa,CAAA;IACb,+BAAe,CAAA;IACf,6BAAa,CAAA;AACjB,CAAC,EAJW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAIvB;AA+DD,IAAY,WAOX;AAPD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,wCAAyB,CAAA;IACzB,0BAAW,CAAA;IACX,wCAAyB,CAAA;IACzB,uCAAwB,CAAA;IACxB,oCAAqB,CAAA;AACzB,CAAC,EAPW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAOtB;AAEY,QAAA,0BAA0B,GAAsD;IACzF,CAAC,wBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI;IACzC,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG;IACvC,CAAC,wBAAgB,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,eAAe;IAC/D,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ;CACpD,CAAC","sourcesContent":["import type { EnvironmentName } from '@planpay/web';\nimport type { EBookingPaymentMethod, EHotelCardProcessor } from '@roomstay/core';\nimport { DeepPartial } from 'react-hook-form';\n\nimport ColorProfile from '@/models/Client/Hotel/ColorProfile';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport { AdminHotelConfig, ConfigHotel, EPaymentCardType } from '@/models/Client/Hotel/Hotel';\nimport HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\nexport type HotelServiceDTO = {\n detail: string;\n included: boolean;\n name: string;\n onsite: boolean;\n};\n\nexport type HotelRoomsDTO = {\n [roomTypeCode: string]: HotelRoomDTO;\n};\n\nexport type HotelRoomGroupsDTO = {\n groupName: string;\n id: string;\n filters: { [id: string]: { name: string; type: 'select'; includeAllAbove: boolean; requireInput: boolean; options: any } };\n}[];\n\nexport type HotelRoomAmenitiesDTO = {\n type: string;\n description: string;\n};\n\nexport type HotelRoomDTO = {\n code: string;\n name: string;\n shortDescription: string;\n longDescription: string;\n images: string[];\n quantity: number;\n maxOccupancy: number;\n bedQuantity: number;\n showBedType?: boolean;\n standardNumBeds: number;\n maxRollaways: number;\n bedType: string;\n amenities: HotelRoomAmenitiesDTO[];\n features: HotelRoomAmenitiesDTO[];\n bedTypeOverride?: string;\n roomGroupId?: string;\n roomSize?: number;\n prePerkDisclaimer?: string;\n perks?: ConfigHotel['perks'];\n};\n\nexport enum EIntegration {\n Big4 = 'Big4',\n Top10 = 'Top10',\n Gday = 'Gday',\n}\n\nexport type HotelDTO = {\n id: number;\n name: string;\n chainId: number;\n chainName: string;\n\n address: HotelAddress;\n phone: string;\n\n latitude: string;\n longitude: string;\n\n utcOffset: string;\n\n languageCode: string;\n currencyCode: string;\n\n checkInTime: string;\n checkOutTime: string;\n\n paymentCardTypes: EPaymentCardType[];\n\n description: string;\n locationDescription: string;\n policies: string;\n\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n\n rooms: { [roomTypeCode: string]: HotelRoomDTO };\n dataSource: HotelDataSource;\n\n // Following fields are only present if dataSource = 'roomstay'\n logo?: string;\n colors: DeepPartial<ColorProfile>;\n distanceUnitType?: DistanceUnitType;\n weekdayStartsOn?: WeekdayStartsOn;\n\n crossSellHotelIds?: string[];\n paymentMethods: EBookingPaymentMethod[];\n cardProcessor: EHotelCardProcessor;\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n\n email?: string;\n hotelUrl?: string;\n heroImage?: string;\n images?: string[];\n integrations?: EIntegration[];\n roomGroups: HotelRoomGroupsDTO;\n requireDeposit?: boolean;\n availableCountries?: { name: string; value: string }[];\n preventCancellation?: boolean;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n} & Pick<AdminHotelConfig, 'childConfiguration'>;\n\nexport enum VGSCardName {\n Visa = 'visa',\n Mastercard = 'mastercard',\n JCB = 'jcb',\n DinersClub = 'dinersclub',\n AmericanExpress = 'amex',\n UnionPay = 'unionpay',\n}\n\nexport const SynxisToVGSCardNameMapping: { [synxisName in EPaymentCardType]: VGSCardName } = {\n [EPaymentCardType.Visa]: VGSCardName.Visa,\n [EPaymentCardType.Mastercard]: VGSCardName.Mastercard,\n [EPaymentCardType.JCB]: VGSCardName.JCB,\n [EPaymentCardType.AmericanExpress]: VGSCardName.AmericanExpress,\n [EPaymentCardType.DinersClub]: VGSCardName.DinersClub,\n [EPaymentCardType.UnionPay]: VGSCardName.UnionPay,\n};\n"]}
1
+ {"version":3,"file":"HotelDTO.js","sourceRoot":"/","sources":["src/models/Api/HotelDTO.ts"],"names":[],"mappings":";;;AAMA,uDAA8F;AAgH9F,IAAY,WAOX;AAPD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,wCAAyB,CAAA;IACzB,0BAAW,CAAA;IACX,wCAAyB,CAAA;IACzB,uCAAwB,CAAA;IACxB,oCAAqB,CAAA;AACzB,CAAC,EAPW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAOtB;AAEY,QAAA,0BAA0B,GAAsD;IACzF,CAAC,wBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI;IACzC,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG;IACvC,CAAC,wBAAgB,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,eAAe;IAC/D,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ;CACpD,CAAC","sourcesContent":["import type { EnvironmentName } from '@planpay/web';\nimport type { EBookingPaymentMethod, EHotelCardProcessor, EIntegration, EHotelStateFieldConfiguration } from '@roomstay/core';\nimport { DeepPartial } from 'react-hook-form';\n\nimport ColorProfile from '@/models/Client/Hotel/ColorProfile';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport { AdminHotelConfig, ConfigHotel, EPaymentCardType } from '@/models/Client/Hotel/Hotel';\nimport HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\nexport type HotelServiceDTO = {\n detail: string;\n included: boolean;\n name: string;\n onsite: boolean;\n};\n\nexport type HotelRoomsDTO = {\n [roomTypeCode: string]: HotelRoomDTO;\n};\n\nexport type HotelRoomGroupsDTO = {\n groupName: string;\n id: string;\n filters: { [id: string]: { name: string; type: 'select'; includeAllAbove: boolean; requireInput: boolean; options: any } };\n}[];\n\nexport type HotelRoomAmenitiesDTO = {\n type: string;\n description: string;\n};\n\nexport type HotelRoomDTO = {\n code: string;\n name: string;\n shortDescription: string;\n longDescription: string;\n images: string[];\n quantity: number;\n maxOccupancy: number;\n bedQuantity: number;\n showBedType?: boolean;\n standardNumBeds: number;\n maxRollaways: number;\n bedType: string;\n amenities: HotelRoomAmenitiesDTO[];\n features: HotelRoomAmenitiesDTO[];\n bedTypeOverride?: string;\n roomGroupId?: string;\n roomSize?: number;\n prePerkDisclaimer?: string;\n perks?: ConfigHotel['perks'];\n};\n\nexport type HotelDTO = {\n id: number;\n name: string;\n chainId: number;\n chainName: string;\n\n address: HotelAddress;\n phone: string;\n\n latitude: string;\n longitude: string;\n\n utcOffset: string;\n\n languageCode: string;\n currencyCode: string;\n\n checkInTime: string;\n checkOutTime: string;\n\n paymentCardTypes: EPaymentCardType[];\n\n description: string;\n locationDescription: string;\n policies: string;\n\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n\n rooms: { [roomTypeCode: string]: HotelRoomDTO };\n dataSource: HotelDataSource;\n\n // Following fields are only present if dataSource = 'roomstay'\n logo?: string;\n colors: DeepPartial<ColorProfile>;\n distanceUnitType?: DistanceUnitType;\n weekdayStartsOn?: WeekdayStartsOn;\n\n crossSellHotelIds?: string[];\n paymentMethods: EBookingPaymentMethod[];\n cardProcessor: EHotelCardProcessor;\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n\n email?: string;\n hotelUrl?: string;\n heroImage?: string;\n images?: string[];\n integrations?: EIntegration[];\n roomGroups: HotelRoomGroupsDTO;\n requireDeposit?: boolean;\n availableCountries?: { name: string; value: string }[];\n preventCancellation?: boolean;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n\n stateFieldConfiguration?: EHotelStateFieldConfiguration;\n} & Pick<AdminHotelConfig, 'childConfiguration'>;\n\nexport enum VGSCardName {\n Visa = 'visa',\n Mastercard = 'mastercard',\n JCB = 'jcb',\n DinersClub = 'dinersclub',\n AmericanExpress = 'amex',\n UnionPay = 'unionpay',\n}\n\nexport const SynxisToVGSCardNameMapping: { [synxisName in EPaymentCardType]: VGSCardName } = {\n [EPaymentCardType.Visa]: VGSCardName.Visa,\n [EPaymentCardType.Mastercard]: VGSCardName.Mastercard,\n [EPaymentCardType.JCB]: VGSCardName.JCB,\n [EPaymentCardType.AmericanExpress]: VGSCardName.AmericanExpress,\n [EPaymentCardType.DinersClub]: VGSCardName.DinersClub,\n [EPaymentCardType.UnionPay]: VGSCardName.UnionPay,\n};\n"]}
@@ -1,9 +1,10 @@
1
- import { IBookingQuoteResponse, IRoomstayMember } from '@roomstay/core';
1
+ import { IBookingQuoteResponse } from '@roomstay/core';
2
2
  import dayjs from 'dayjs';
3
3
  import { ReservationDTO } from './Api/ReservationsDTO';
4
4
  import BasketRowDifferences from './BasketRowDifferences';
5
5
  import type { Room } from './Room/Room';
6
6
  import type { RoomRate } from './Room/RoomRate';
7
+ import UserProfile from './UserProfile';
7
8
  import { Color } from '../util/Color';
8
9
  export default class BasketRow {
9
10
  private uniqId;
@@ -19,9 +20,9 @@ export default class BasketRow {
19
20
  private startDate;
20
21
  private endDate;
21
22
  private promoOnly;
22
- private member?;
23
23
  private upsellPrevRoom?;
24
24
  quoteDetails: NonNullable<IBookingQuoteResponse>['rows'][number];
25
+ checkoutDefaults?: Partial<UserProfile>;
25
26
  constructor(rate?: RoomRate, uniqId?: string);
26
27
  getStale(): boolean;
27
28
  getRate(): RoomRate | null;
@@ -61,7 +62,6 @@ export default class BasketRow {
61
62
  setPreGuestsState(): void;
62
63
  discardGuestsState(): void;
63
64
  setRate(rate: RoomRate | null, upsellEnabled?: boolean): void;
64
- setMember(member: Partial<IRoomstayMember>): void;
65
65
  setUpsellPrevRoom(roomCode: string, price: number): void;
66
66
  getUpsellPrevRoom(): {
67
67
  code?: string | undefined;
@@ -171,9 +171,6 @@ class BasketRow {
171
171
  this.room = rate.getRoom();
172
172
  }
173
173
  }
174
- setMember(member) {
175
- this.member = member;
176
- }
177
174
  setUpsellPrevRoom(roomCode, price) {
178
175
  this.upsellPrevRoom = {
179
176
  code: roomCode,
@@ -1 +1 @@
1
- {"version":3,"file":"BasketRow.js","sourceRoot":"/","sources":["src/models/BasketRow.ts"],"names":[],"mappings":"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","sourcesContent":["import { IBookingQuoteResponse, IRoomstayMember } from '@roomstay/core';\nimport dayjs from 'dayjs';\n\nimport { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketRowDifferences from '@/models/BasketRowDifferences';\nimport type { Room } from '@/models/Room/Room';\nimport type { RoomRate } from '@/models/Room/RoomRate';\nimport { Color } from '@/util/Color';\nimport { DEFAULT_VALUES } from '@/util/DefaultValueManager';\n\nexport default class BasketRow {\n private uniqId: string;\n\n private room!: Room;\n private rate!: RoomRate | null;\n private isStale!: boolean;\n private adults: number;\n private children: number;\n private infants: number;\n private preGuestsState: {\n adults: number;\n children: number;\n infants: number;\n startDate: dayjs.Dayjs;\n endDate: dayjs.Dayjs;\n } = {\n adults: 0,\n children: 0,\n infants: 0,\n startDate: dayjs(),\n endDate: dayjs(),\n };\n\n private promoCode: string;\n private promoCodeStatus: 'valid' | 'invalid' | 'new';\n\n private startDate!: dayjs.Dayjs;\n private endDate!: dayjs.Dayjs;\n\n private promoOnly: boolean;\n private member?: Partial<IRoomstayMember>;\n private upsellPrevRoom?: {\n code?: string;\n price?: number;\n };\n\n public quoteDetails!: NonNullable<IBookingQuoteResponse>['rows'][number];\n\n public constructor(rate?: RoomRate, uniqId?: string) {\n /*\n Rate is optional since we can create row entries\n on first step, where there is no ability to select rate.\n */\n if (rate) {\n this.setRate(rate);\n }\n\n this.adults = DEFAULT_VALUES.ADULTS ?? 1;\n this.children = DEFAULT_VALUES.CHILDREN ?? 0;\n this.infants = DEFAULT_VALUES.INFANTS ?? 0;\n\n this.promoCode = '';\n this.promoCodeStatus = 'new';\n this.promoOnly = false;\n\n this.uniqId = uniqId ? uniqId : btoa(((Date.now() % 1000) / 1000) * Math.random() + '');\n }\n\n public getStale() {\n return this.isStale;\n }\n\n public getRate() {\n return this.rate;\n }\n\n public getPromoCode() {\n return this.promoCode.toUpperCase();\n }\n\n public getPromoOnly() {\n return this.promoOnly;\n }\n\n public getPromoCodeColour() {\n if (this.promoCodeStatus === 'valid') {\n return Color.Success;\n } else if (this.promoCodeStatus === 'invalid') {\n return Color.Alert;\n }\n\n return Color.Navy;\n }\n\n public isPromoCodeValid() {\n const rate = this.getRate();\n\n return (rate?.getAveragePrice(true) as number) < (rate?.getAveragePriceBeforeDiscount(true) as number) && this.getPromoCode() && this.getPromoCodeStatus() === 'valid';\n }\n\n public getNumberOfDays() {\n if (this.endDate && this.startDate) {\n return this.endDate.diff(this.startDate, 'day');\n }\n\n return 0;\n }\n\n public getRoom() {\n return this.room;\n }\n\n public getStartDate() {\n return this.startDate;\n }\n\n public getEndDate() {\n return this.endDate;\n }\n\n public getArrivalDate() {\n if (this.startDate) {\n return this.startDate.format('D MMM');\n }\n\n return null;\n }\n\n public getDepartureDate() {\n if (this.endDate) {\n return this.endDate.format('D MMM');\n }\n\n return null;\n }\n\n public getStayDateRange(format = 'ddd D MMM', separator = ',') {\n if (this.startDate && this.endDate) {\n return `${this.startDate.format(format)}${separator} ${this.endDate.format(format)}`;\n }\n }\n\n public getAdults() {\n return this.adults;\n }\n\n public getChildren() {\n return this.children;\n }\n\n public getInfants() {\n return this.infants;\n }\n\n public getPreGuestsState() {\n return this.preGuestsState;\n }\n\n public getID() {\n return this.uniqId;\n }\n\n public getPromoCodeStatus() {\n return this.promoCodeStatus;\n }\n\n public isValid(): boolean {\n return this.startDate && this.endDate && !!this.rate;\n }\n\n public setPromoCode(code: string) {\n if (this.promoCode !== code.toUpperCase()) {\n this.setPromoCodeStatus('new');\n this.promoOnly = false;\n }\n\n this.promoCode = code.toUpperCase();\n }\n\n public setPromoOnly(value: boolean) {\n this.promoOnly = value;\n }\n\n public setStale(status: boolean) {\n this.isStale = status;\n }\n\n public setPromoCodeStatus(status: 'valid' | 'invalid' | 'new') {\n this.promoCodeStatus = this.promoCode ? status : 'new';\n }\n\n public setStartDate(date: dayjs.Dayjs) {\n if (date?.isValid() || date === undefined) {\n this.startDate = date;\n }\n }\n\n public setEndDate(date: dayjs.Dayjs) {\n if (date?.isValid() || date === undefined) {\n this.endDate = date;\n }\n }\n\n public setAdults(adults: number) {\n this.adults = adults;\n }\n\n public setChildren(children: number) {\n this.children = children;\n }\n\n public setInfants(infants: number) {\n this.infants = infants;\n }\n\n public setPreGuestsState() {\n this.preGuestsState.adults = this.adults;\n this.preGuestsState.children = this.children;\n this.preGuestsState.infants = this.infants;\n this.preGuestsState.startDate = this.startDate;\n this.preGuestsState.endDate = this.endDate;\n }\n\n public discardGuestsState() {\n this.setAdults(this.preGuestsState.adults);\n this.setChildren(this.preGuestsState.children);\n this.setInfants(this.preGuestsState.infants);\n this.setStartDate(this.preGuestsState.startDate);\n this.setEndDate(this.preGuestsState.endDate);\n }\n\n public setRate(rate: RoomRate | null, upsellEnabled?: boolean) {\n if (upsellEnabled) {\n this.upsellPrevRoom = {\n code: this.room.code,\n price: this.rate?.getTotalPrice(),\n };\n }\n\n this.rate = rate;\n if (rate) {\n this.room = rate.getRoom();\n }\n }\n\n public setMember(member: Partial<IRoomstayMember>) {\n this.member = member;\n }\n\n public setUpsellPrevRoom(roomCode: string, price: number) {\n this.upsellPrevRoom = {\n code: roomCode,\n price,\n };\n }\n\n public getUpsellPrevRoom() {\n return this.upsellPrevRoom;\n }\n\n public getTotalPrice(beforeTax = false) {\n return this.getRate()?.getTotalPrice(beforeTax);\n }\n\n public checkDiffFromReservation(res: ReservationDTO) {\n const differences: BasketRowDifferences = {};\n\n if (Number(res.total.afterTax).toFixed(2) !== Number(this.getTotalPrice()).toFixed(2)) {\n differences.totalPrice = {\n before: this.getTotalPrice(),\n after: res.total.afterTax,\n };\n }\n\n if (Object.keys(differences).length) {\n differences.id = this.getID();\n\n return differences;\n } else {\n return false;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"BasketRow.js","sourceRoot":"/","sources":["src/models/BasketRow.ts"],"names":[],"mappings":"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","sourcesContent":["import { IBookingQuoteResponse, IRoomstayMember } from '@roomstay/core';\nimport dayjs from 'dayjs';\n\nimport { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketRowDifferences from '@/models/BasketRowDifferences';\nimport type { Room } from '@/models/Room/Room';\nimport type { RoomRate } from '@/models/Room/RoomRate';\nimport UserProfile from '@/models/UserProfile';\nimport { Color } from '@/util/Color';\nimport { DEFAULT_VALUES } from '@/util/DefaultValueManager';\n\nexport default class BasketRow {\n private uniqId: string;\n\n private room!: Room;\n private rate!: RoomRate | null;\n private isStale!: boolean;\n private adults: number;\n private children: number;\n private infants: number;\n private preGuestsState: {\n adults: number;\n children: number;\n infants: number;\n startDate: dayjs.Dayjs;\n endDate: dayjs.Dayjs;\n } = {\n adults: 0,\n children: 0,\n infants: 0,\n startDate: dayjs(),\n endDate: dayjs(),\n };\n\n private promoCode: string;\n private promoCodeStatus: 'valid' | 'invalid' | 'new';\n\n private startDate!: dayjs.Dayjs;\n private endDate!: dayjs.Dayjs;\n\n private promoOnly: boolean;\n\n private upsellPrevRoom?: {\n code?: string;\n price?: number;\n };\n\n public quoteDetails!: NonNullable<IBookingQuoteResponse>['rows'][number];\n\n public checkoutDefaults?: Partial<UserProfile>;\n\n public constructor(rate?: RoomRate, uniqId?: string) {\n /*\n Rate is optional since we can create row entries\n on first step, where there is no ability to select rate.\n */\n if (rate) {\n this.setRate(rate);\n }\n\n this.adults = DEFAULT_VALUES.ADULTS ?? 1;\n this.children = DEFAULT_VALUES.CHILDREN ?? 0;\n this.infants = DEFAULT_VALUES.INFANTS ?? 0;\n\n this.promoCode = '';\n this.promoCodeStatus = 'new';\n this.promoOnly = false;\n\n this.uniqId = uniqId ? uniqId : btoa(((Date.now() % 1000) / 1000) * Math.random() + '');\n }\n\n public getStale() {\n return this.isStale;\n }\n\n public getRate() {\n return this.rate;\n }\n\n public getPromoCode() {\n return this.promoCode.toUpperCase();\n }\n\n public getPromoOnly() {\n return this.promoOnly;\n }\n\n public getPromoCodeColour() {\n if (this.promoCodeStatus === 'valid') {\n return Color.Success;\n } else if (this.promoCodeStatus === 'invalid') {\n return Color.Alert;\n }\n\n return Color.Navy;\n }\n\n public isPromoCodeValid() {\n const rate = this.getRate();\n\n return (rate?.getAveragePrice(true) as number) < (rate?.getAveragePriceBeforeDiscount(true) as number) && this.getPromoCode() && this.getPromoCodeStatus() === 'valid';\n }\n\n public getNumberOfDays() {\n if (this.endDate && this.startDate) {\n return this.endDate.diff(this.startDate, 'day');\n }\n\n return 0;\n }\n\n public getRoom() {\n return this.room;\n }\n\n public getStartDate() {\n return this.startDate;\n }\n\n public getEndDate() {\n return this.endDate;\n }\n\n public getArrivalDate() {\n if (this.startDate) {\n return this.startDate.format('D MMM');\n }\n\n return null;\n }\n\n public getDepartureDate() {\n if (this.endDate) {\n return this.endDate.format('D MMM');\n }\n\n return null;\n }\n\n public getStayDateRange(format = 'ddd D MMM', separator = ',') {\n if (this.startDate && this.endDate) {\n return `${this.startDate.format(format)}${separator} ${this.endDate.format(format)}`;\n }\n }\n\n public getAdults() {\n return this.adults;\n }\n\n public getChildren() {\n return this.children;\n }\n\n public getInfants() {\n return this.infants;\n }\n\n public getPreGuestsState() {\n return this.preGuestsState;\n }\n\n public getID() {\n return this.uniqId;\n }\n\n public getPromoCodeStatus() {\n return this.promoCodeStatus;\n }\n\n public isValid(): boolean {\n return this.startDate && this.endDate && !!this.rate;\n }\n\n public setPromoCode(code: string) {\n if (this.promoCode !== code.toUpperCase()) {\n this.setPromoCodeStatus('new');\n this.promoOnly = false;\n }\n\n this.promoCode = code.toUpperCase();\n }\n\n public setPromoOnly(value: boolean) {\n this.promoOnly = value;\n }\n\n public setStale(status: boolean) {\n this.isStale = status;\n }\n\n public setPromoCodeStatus(status: 'valid' | 'invalid' | 'new') {\n this.promoCodeStatus = this.promoCode ? status : 'new';\n }\n\n public setStartDate(date: dayjs.Dayjs) {\n if (date?.isValid() || date === undefined) {\n this.startDate = date;\n }\n }\n\n public setEndDate(date: dayjs.Dayjs) {\n if (date?.isValid() || date === undefined) {\n this.endDate = date;\n }\n }\n\n public setAdults(adults: number) {\n this.adults = adults;\n }\n\n public setChildren(children: number) {\n this.children = children;\n }\n\n public setInfants(infants: number) {\n this.infants = infants;\n }\n\n public setPreGuestsState() {\n this.preGuestsState.adults = this.adults;\n this.preGuestsState.children = this.children;\n this.preGuestsState.infants = this.infants;\n this.preGuestsState.startDate = this.startDate;\n this.preGuestsState.endDate = this.endDate;\n }\n\n public discardGuestsState() {\n this.setAdults(this.preGuestsState.adults);\n this.setChildren(this.preGuestsState.children);\n this.setInfants(this.preGuestsState.infants);\n this.setStartDate(this.preGuestsState.startDate);\n this.setEndDate(this.preGuestsState.endDate);\n }\n\n public setRate(rate: RoomRate | null, upsellEnabled?: boolean) {\n if (upsellEnabled) {\n this.upsellPrevRoom = {\n code: this.room.code,\n price: this.rate?.getTotalPrice(),\n };\n }\n\n this.rate = rate;\n if (rate) {\n this.room = rate.getRoom();\n }\n }\n\n public setUpsellPrevRoom(roomCode: string, price: number) {\n this.upsellPrevRoom = {\n code: roomCode,\n price,\n };\n }\n\n public getUpsellPrevRoom() {\n return this.upsellPrevRoom;\n }\n\n public getTotalPrice(beforeTax = false) {\n return this.getRate()?.getTotalPrice(beforeTax);\n }\n\n public checkDiffFromReservation(res: ReservationDTO) {\n const differences: BasketRowDifferences = {};\n\n if (Number(res.total.afterTax).toFixed(2) !== Number(this.getTotalPrice()).toFixed(2)) {\n differences.totalPrice = {\n before: this.getTotalPrice(),\n after: res.total.afterTax,\n };\n }\n\n if (Object.keys(differences).length) {\n differences.id = this.getID();\n\n return differences;\n } else {\n return false;\n }\n }\n}\n"]}