@roomstay/frontend 2.6.61 → 2.6.63

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 (122) hide show
  1. package/dist/537.bundle.js +1 -1
  2. package/dist/950.bundle.js +1 -0
  3. package/dist/978.bundle.js +1 -1
  4. package/dist/main.bundle.js +1 -1
  5. package/dist/src/api/ReservationAPI.d.ts +23 -3
  6. package/dist/src/api/ReservationAPI.js +75 -31
  7. package/dist/src/api/ReservationAPI.js.map +1 -1
  8. package/dist/src/components/User/Forms/ForgotPasswordForm.d.ts +1 -0
  9. package/dist/src/components/User/Forms/ForgotPasswordForm.js +15 -5
  10. package/dist/src/components/User/Forms/ForgotPasswordForm.js.map +1 -1
  11. package/dist/src/components/User/Forms/SignInForm.d.ts +1 -0
  12. package/dist/src/components/User/Forms/SignInForm.js +13 -4
  13. package/dist/src/components/User/Forms/SignInForm.js.map +1 -1
  14. package/dist/src/components/User/Forms/SignUpForm.d.ts +5 -0
  15. package/dist/src/components/User/Forms/SignUpForm.js +74 -77
  16. package/dist/src/components/User/Forms/SignUpForm.js.map +1 -1
  17. package/dist/src/components/User/Forms/VerifyEmailForm.d.ts +7 -0
  18. package/dist/src/components/User/Forms/VerifyEmailForm.js +92 -0
  19. package/dist/src/components/User/Forms/VerifyEmailForm.js.map +1 -0
  20. package/dist/src/components/generic/date/DatePicker.js +1 -1
  21. package/dist/src/components/generic/date/DatePicker.js.map +1 -1
  22. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.d.ts +1 -0
  23. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.js +2 -2
  24. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.js.map +1 -1
  25. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.d.ts +1 -0
  26. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.js +2 -2
  27. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.js.map +1 -1
  28. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js +12 -4
  29. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js.map +1 -1
  30. package/dist/src/components/members/InlineSignUpSection.d.ts +7 -0
  31. package/dist/src/components/members/InlineSignUpSection.js +122 -0
  32. package/dist/src/components/members/InlineSignUpSection.js.map +1 -0
  33. package/dist/src/components/members/SignInModal/ExternalMemberModal.js +4 -4
  34. package/dist/src/components/members/SignInModal/ExternalMemberModal.js.map +1 -1
  35. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.js +78 -33
  36. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.js.map +1 -1
  37. package/dist/src/components/members/SignInModal/MemberSignInModal.js +11 -1
  38. package/dist/src/components/members/SignInModal/MemberSignInModal.js.map +1 -1
  39. package/dist/src/components/navigation/Header.js +3 -2
  40. package/dist/src/components/navigation/Header.js.map +1 -1
  41. package/dist/src/components/reservation/ReservationItem.js +1 -1
  42. package/dist/src/components/reservation/ReservationItem.js.map +1 -1
  43. package/dist/src/components/steps/addons/AddonCard.js +14 -14
  44. package/dist/src/components/steps/addons/AddonCard.js.map +1 -1
  45. package/dist/src/components/steps/confirmation/RoomContactDetails.js +12 -12
  46. package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
  47. package/dist/src/components/steps/room/AvailableUpgradesModal.js +1 -1
  48. package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
  49. package/dist/src/components/summary/BESummaryAddonRow.js +1 -1
  50. package/dist/src/components/summary/BESummaryAddonRow.js.map +1 -1
  51. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js +7 -6
  52. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js.map +1 -1
  53. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +2 -5
  54. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  55. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +48 -22
  56. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  57. package/dist/src/contexts/CompanyContext/CompanyContextType.type.d.ts +1 -1
  58. package/dist/src/contexts/CompanyContext/CompanyContextType.type.js.map +1 -1
  59. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +4 -0
  60. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  61. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +20 -20
  62. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  63. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +3 -0
  64. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
  65. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.d.ts +7 -1
  66. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js.map +1 -1
  67. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +32 -6
  68. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
  69. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
  70. package/dist/src/events/index.d.ts +1 -0
  71. package/dist/src/events/index.js +1 -0
  72. package/dist/src/events/index.js.map +1 -1
  73. package/dist/src/events/views/CommittedBookingEvent.d.ts +3 -1
  74. package/dist/src/events/views/CommittedBookingEvent.js +2 -1
  75. package/dist/src/events/views/CommittedBookingEvent.js.map +1 -1
  76. package/dist/src/index.d.ts +1 -0
  77. package/dist/src/index.js +4 -2
  78. package/dist/src/index.js.map +1 -1
  79. package/dist/src/models/Addon/Addon.d.ts +6 -64
  80. package/dist/src/models/Addon/Addon.js +14 -28
  81. package/dist/src/models/Addon/Addon.js.map +1 -1
  82. package/dist/src/models/Api/HotelOverrideDTO.d.ts +2 -0
  83. package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
  84. package/dist/src/models/BasketAddonRow.js +3 -2
  85. package/dist/src/models/BasketAddonRow.js.map +1 -1
  86. package/dist/src/models/BasketRow.d.ts +1 -0
  87. package/dist/src/models/BasketRow.js.map +1 -1
  88. package/dist/src/models/Client/Hotel/Hotel.d.ts +3 -2
  89. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  90. package/dist/src/models/RoomstaySession.d.ts +1 -0
  91. package/dist/src/models/RoomstaySession.js.map +1 -1
  92. package/dist/src/models/UserProfile.d.ts +20 -20
  93. package/dist/src/models/UserProfile.js.map +1 -1
  94. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js +2 -2
  95. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
  96. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +6 -4
  97. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  98. package/dist/src/providers/FeatureProvider.js +2 -0
  99. package/dist/src/providers/FeatureProvider.js.map +1 -1
  100. package/dist/src/providers/feature/DerbysoftClickTrackingFeature.js +2 -2
  101. package/dist/src/providers/feature/DerbysoftClickTrackingFeature.js.map +1 -1
  102. package/dist/src/providers/feature/HotelGroupFeature.d.ts +6 -0
  103. package/dist/src/providers/feature/HotelGroupFeature.js +10 -0
  104. package/dist/src/providers/feature/HotelGroupFeature.js.map +1 -0
  105. package/dist/src/providers/feature/MemberPortalFeature.d.ts +7 -1
  106. package/dist/src/providers/feature/MemberPortalFeature.js +11 -0
  107. package/dist/src/providers/feature/MemberPortalFeature.js.map +1 -1
  108. package/dist/src/translations/Translation.d.ts +1 -0
  109. package/dist/src/translations/Translation.js +1 -0
  110. package/dist/src/translations/Translation.js.map +1 -1
  111. package/dist/src/translations/languages/en-gb.js +1 -0
  112. package/dist/src/translations/languages/en-gb.js.map +1 -1
  113. package/dist/src/util/EventsHelper.js +1 -1
  114. package/dist/src/util/EventsHelper.js.map +1 -1
  115. package/dist/src/util/TotalCalculator.js +2 -2
  116. package/dist/src/util/TotalCalculator.js.map +1 -1
  117. package/dist/test.bundle.js +1 -1
  118. package/dist/tests/offline/entry/config/hotelSpecDefault.js +1 -0
  119. package/dist/tests/offline/entry/config/hotelSpecDefault.js.map +1 -1
  120. package/dist/vendors.bundle.js +1 -1
  121. package/package.json +2 -2
  122. package/dist/493.bundle.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"BESummaryAddonRow.js","sourceRoot":"/","sources":["src/components/summary/BESummaryAddonRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport { getFilteredBookingAddonFees } from '@roomstay/core';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport { ADDON_PER_NIGHT_TYPES, ADDON_PER_PERSON_PER_NIGHT_TYPES, AddonPricingType } from '@/models/Addon/Addon';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport { Color } from '@/util/Color';\n\ninterface BESummaryAddonRowProps {\n row: BasketAddonRow;\n onRemoveClick: () => void;\n}\n\nexport default function BESummaryAddonRow(props: BESummaryAddonRowProps) {\n const { row } = props;\n\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n const addon = row.getAddon();\n const date = row.getSelectedDate();\n const priceInfo = addon.availability[date];\n\n let selectedTime: Dayjs | undefined;\n if (row.getSelectedTime()) {\n const [hours, minutes, seconds] = row\n .getSelectedTime()\n .substr(1)\n .split(':')\n .map((it) => parseInt(it, 10));\n selectedTime = dayjs().hour(hours).minute(minutes).second(seconds);\n }\n\n const removeOnClickHandler = () => {\n props.onRemoveClick();\n };\n\n const printLine = (left: any, right: any) => {\n return (\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex\">\n <Text type={TextType.Small}>{left}</Text>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {right}\n </Text>\n </div>\n );\n };\n\n const pricingType = addon.pricingType;\n const totalFees = row.getTotalFees();\n const itemisedFees = hotel && row.getItemisedFees(getFilteredBookingAddonFees(hotel.fees ?? []));\n\n let displayPrice = row.getTotalPrice();\n if (itemisedFees?.length) {\n // If we have itemised fees, we'll show the total price without fee.\n displayPrice -= totalFees;\n }\n\n return (\n <>\n {priceInfo && (\n <>\n <div className=\"u-marg-bottom--light u-marg-top\">\n <Text color={Color.Navy}>\n <strong>{addon.name}</strong>\n </Text>\n </div>\n\n {[\n {\n price: priceInfo.price,\n quantity: row.getQuantity(),\n },\n {\n name: 'Adult',\n price: priceInfo.adultPrice ?? priceInfo.price,\n quantity: row.getAdultQuantity(),\n },\n {\n name: 'Child',\n price: priceInfo.childPrice ?? priceInfo.price,\n quantity: row.getChildQuantity(),\n },\n ].map(({ price, quantity, name }, index) => {\n let pluralName = name;\n\n if (quantity > 1) {\n switch (name) {\n case 'Adult':\n pluralName += 's';\n break;\n case 'Child':\n pluralName += 'ren';\n break;\n }\n }\n\n // If this is a per stay or per night addon, we only want to show the price once, if we show the name it will result in something like:\n // 2 x $100 = $200\n // 1 x Adult = $100\n // Total = $200\n if ((pricingType === AddonPricingType.PER_STAY || pricingType === AddonPricingType.PER_NIGHT) && name !== undefined) {\n return;\n }\n\n return (\n <React.Fragment key={index}>\n {price && quantity > 0 && (\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex align-items-center\">\n <Text type={TextType.Small} inline>\n {quantity} {pluralName ? `${pluralName} ` : ''}×&nbsp;<Currency>{price}</Currency>\n </Text>\n <Text type={TextType.Small} color={Color.DarkGrey} inline>\n <Currency>{quantity * price}</Currency>\n </Text>\n </div>\n )}\n </React.Fragment>\n );\n })}\n\n {!row.getAddon().hideDatePicker && row.getSelectedDate() && printLine('Date', dayjs(row.getSelectedDate(), 'YYYY-MM-DD').format('D MMM'))}\n {selectedTime && printLine('Time', selectedTime.format('h:mma'))}\n\n {/* If this is a per person per night addon, and there are both children and adults added, show a sub-total. */}\n {ADDON_PER_PERSON_PER_NIGHT_TYPES.includes(pricingType) &&\n row.getAdultQuantity() > 0 &&\n row.getChildQuantity() > 0 &&\n printLine('Sub-total', <Currency>{row.getAddonSubtotal()}</Currency>)}\n\n {ADDON_PER_NIGHT_TYPES.includes(pricingType) && printLine('Nights', row.getAddon().nights)}\n\n {/*/ Only show fees if we don't have itemised fees. If we have itemised fees they will be shown later. */}\n {totalFees > 0 && !itemisedFees?.length && printLine('Fees', <Currency>{totalFees}</Currency>)}\n\n {printLine('Total', <Currency>{displayPrice}</Currency>)}\n\n <div className=\"u-marg-top--light u-marg-bottom--heavy u-flex justify-content-start\">\n <Tooltip title=\"Remove this addon\">\n <div>\n <BEButton isText size=\"tiny\" primary onClick={removeOnClickHandler}>\n {t(Translation.Misc.Remove)}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n </>\n )}\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"BESummaryAddonRow.js","sourceRoot":"/","sources":["src/components/summary/BESummaryAddonRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport { EAddonPricingType, getFilteredBookingAddonFees } from '@roomstay/core';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport { ADDON_PER_NIGHT_TYPES, ADDON_PER_PERSON_PER_NIGHT_TYPES } from '@/models/Addon/Addon';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport { Color } from '@/util/Color';\n\ninterface BESummaryAddonRowProps {\n row: BasketAddonRow;\n onRemoveClick: () => void;\n}\n\nexport default function BESummaryAddonRow(props: BESummaryAddonRowProps) {\n const { row } = props;\n\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n const addon = row.getAddon();\n const date = row.getSelectedDate();\n const priceInfo = addon.availability[date];\n\n let selectedTime: Dayjs | undefined;\n if (row.getSelectedTime()) {\n const [hours, minutes, seconds] = row\n .getSelectedTime()\n .substr(1)\n .split(':')\n .map((it) => parseInt(it, 10));\n selectedTime = dayjs().hour(hours).minute(minutes).second(seconds);\n }\n\n const removeOnClickHandler = () => {\n props.onRemoveClick();\n };\n\n const printLine = (left: any, right: any) => {\n return (\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex\">\n <Text type={TextType.Small}>{left}</Text>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {right}\n </Text>\n </div>\n );\n };\n\n const pricingType = addon.pricingType;\n const totalFees = row.getTotalFees();\n const itemisedFees = hotel && row.getItemisedFees(getFilteredBookingAddonFees(hotel.fees ?? []));\n\n let displayPrice = row.getTotalPrice();\n if (itemisedFees?.length) {\n // If we have itemised fees, we'll show the total price without fee.\n displayPrice -= totalFees;\n }\n\n return (\n <>\n {priceInfo && (\n <>\n <div className=\"u-marg-bottom--light u-marg-top\">\n <Text color={Color.Navy}>\n <strong>{addon.name}</strong>\n </Text>\n </div>\n\n {[\n {\n price: priceInfo.price,\n quantity: row.getQuantity(),\n },\n {\n name: 'Adult',\n price: priceInfo.adultPrice ?? priceInfo.price,\n quantity: row.getAdultQuantity(),\n },\n {\n name: 'Child',\n price: priceInfo.childPrice ?? priceInfo.price,\n quantity: row.getChildQuantity(),\n },\n ].map(({ price, quantity, name }, index) => {\n let pluralName = name;\n\n if (quantity > 1) {\n switch (name) {\n case 'Adult':\n pluralName += 's';\n break;\n case 'Child':\n pluralName += 'ren';\n break;\n }\n }\n\n // If this is a per stay or per night addon, we only want to show the price once, if we show the name it will result in something like:\n // 2 x $100 = $200\n // 1 x Adult = $100\n // Total = $200\n if ((pricingType === EAddonPricingType.PER_STAY || pricingType === EAddonPricingType.PER_NIGHT) && name !== undefined) {\n return;\n }\n\n return (\n <React.Fragment key={index}>\n {price && quantity > 0 && (\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex align-items-center\">\n <Text type={TextType.Small} inline>\n {quantity} {pluralName ? `${pluralName} ` : ''}×&nbsp;<Currency>{price}</Currency>\n </Text>\n <Text type={TextType.Small} color={Color.DarkGrey} inline>\n <Currency>{quantity * price}</Currency>\n </Text>\n </div>\n )}\n </React.Fragment>\n );\n })}\n\n {!row.getAddon().hideDatePicker && row.getSelectedDate() && printLine('Date', dayjs(row.getSelectedDate(), 'YYYY-MM-DD').format('D MMM'))}\n {selectedTime && printLine('Time', selectedTime.format('h:mma'))}\n\n {/* If this is a per person per night addon, and there are both children and adults added, show a sub-total. */}\n {ADDON_PER_PERSON_PER_NIGHT_TYPES.includes(pricingType) &&\n row.getAdultQuantity() > 0 &&\n row.getChildQuantity() > 0 &&\n printLine('Sub-total', <Currency>{row.getAddonSubtotal()}</Currency>)}\n\n {ADDON_PER_NIGHT_TYPES.includes(pricingType) && printLine('Nights', row.getAddon().nights)}\n\n {/*/ Only show fees if we don't have itemised fees. If we have itemised fees they will be shown later. */}\n {totalFees > 0 && !itemisedFees?.length && printLine('Fees', <Currency>{totalFees}</Currency>)}\n\n {printLine('Total', <Currency>{displayPrice}</Currency>)}\n\n <div className=\"u-marg-top--light u-marg-bottom--heavy u-flex justify-content-start\">\n <Tooltip title=\"Remove this addon\">\n <div>\n <BEButton isText size=\"tiny\" primary onClick={removeOnClickHandler}>\n {t(Translation.Misc.Remove)}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n </>\n )}\n </>\n );\n}\n"]}
@@ -38,7 +38,7 @@ const Color_1 = require("../../util/Color");
38
38
  const TextAlignment_1 = require("../../util/TextAlignment");
39
39
  const TransportDistanceFromHotelBlock_module_scss_1 = __importDefault(require("./TransportDistanceFromHotelBlock.module.scss"));
40
40
  function TransportDistanceFromHotelBlock(props) {
41
- var _a, _b, _c, _d, _e, _f, _g;
41
+ var _a, _b, _c, _d, _e, _f, _g, _h;
42
42
  const { transportDistances } = (0, react_1.useContext)(contexts_1.HotelOverridesContext);
43
43
  const { vertical, tightMargins } = props;
44
44
  const { t } = (0, react_i18next_1.useTranslation)();
@@ -50,25 +50,26 @@ function TransportDistanceFromHotelBlock(props) {
50
50
  configuration: ((_a = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _a === void 0 ? void 0 : _a.plane) || {},
51
51
  },
52
52
  { icon: Icon_1.IconType.Train, name: t(Translation_1.Translation.TransportDistances.Train), distance: transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.train, configuration: ((_b = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _b === void 0 ? void 0 : _b.train) || {} },
53
- { icon: Icon_1.IconType.Bus, name: t(Translation_1.Translation.TransportDistances.Bus), distance: transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.bus, configuration: ((_c = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _c === void 0 ? void 0 : _c.bus) || {} },
54
- { icon: Icon_1.IconType.Taxi, name: t(Translation_1.Translation.TransportDistances.Taxi), distance: transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.taxi, configuration: ((_d = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _d === void 0 ? void 0 : _d.taxi) || {} },
53
+ { icon: Icon_1.IconType.Train, name: t(Translation_1.Translation.TransportDistances.Tram), distance: transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.tram, configuration: ((_c = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _c === void 0 ? void 0 : _c.tram) || {} },
54
+ { icon: Icon_1.IconType.Bus, name: t(Translation_1.Translation.TransportDistances.Bus), distance: transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.bus, configuration: ((_d = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _d === void 0 ? void 0 : _d.bus) || {} },
55
+ { icon: Icon_1.IconType.Taxi, name: t(Translation_1.Translation.TransportDistances.Taxi), distance: transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.taxi, configuration: ((_e = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _e === void 0 ? void 0 : _e.taxi) || {} },
55
56
  {
56
57
  icon: Icon_1.IconType.Ferry,
57
58
  name: t(Translation_1.Translation.TransportDistances.Ferry),
58
59
  distance: transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.ferry,
59
- configuration: ((_e = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _e === void 0 ? void 0 : _e.ferry) || {},
60
+ configuration: ((_f = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _f === void 0 ? void 0 : _f.ferry) || {},
60
61
  },
61
62
  {
62
63
  icon: Icon_1.IconType.Location,
63
64
  name: t(Translation_1.Translation.TransportDistances.Location),
64
65
  distance: transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.location,
65
- configuration: ((_f = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _f === void 0 ? void 0 : _f.location) || {},
66
+ configuration: ((_g = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _g === void 0 ? void 0 : _g.location) || {},
66
67
  },
67
68
  {
68
69
  icon: Icon_1.IconType.Car,
69
70
  name: t(Translation_1.Translation.TransportDistances.Car),
70
71
  distance: transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.car,
71
- configuration: ((_g = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _g === void 0 ? void 0 : _g.car) || {},
72
+ configuration: ((_h = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _h === void 0 ? void 0 : _h.car) || {},
72
73
  },
73
74
  ].filter(({ distance }) => !!distance);
74
75
  const tightMarginClass = tightMargins ? 'u-marg-left-right' : 'u-marg-left-right--heavy';
@@ -1 +1 @@
1
- {"version":3,"file":"TransportDistanceFromHotelBlock.js","sourceRoot":"/","sources":["src/components/summary/TransportDistanceFromHotelBlock.tsx"],"names":[],"mappings":"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","sourcesContent":["import { HotelOverridesContext } from '@frontend/contexts';\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport Distance from '@/components/generic/Distance';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { TransportDistancesConfig } from '@/models/Api/HotelOverrideDTO';\nimport type { Hotel } from '@/models/Client/Hotel/Hotel';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\n\nimport styles from './TransportDistanceFromHotelBlock.module.scss';\ninterface TransportDistanceFromHotelBlockProps {\n vertical?: boolean;\n\n tightMargins?: boolean;\n distanceOverrides?: any;\n\n hotel?: Hotel;\n}\ninterface IDistanceValue {\n icon: IconType;\n name: string;\n distance: string | number;\n configuration: TransportDistancesConfig;\n}\nexport default function TransportDistanceFromHotelBlock(props: TransportDistanceFromHotelBlockProps) {\n const { transportDistances } = useContext(HotelOverridesContext);\n const { vertical, tightMargins } = props;\n const { t } = useTranslation();\n\n const distanceValues = [\n {\n icon: IconType.Airplane,\n name: t(Translation.TransportDistances.Airport),\n distance: transportDistances?.plane,\n configuration: transportDistances?.configuration?.plane || {},\n },\n { icon: IconType.Train, name: t(Translation.TransportDistances.Train), distance: transportDistances?.train, configuration: transportDistances?.configuration?.train || {} },\n { icon: IconType.Bus, name: t(Translation.TransportDistances.Bus), distance: transportDistances?.bus, configuration: transportDistances?.configuration?.bus || {} },\n { icon: IconType.Taxi, name: t(Translation.TransportDistances.Taxi), distance: transportDistances?.taxi, configuration: transportDistances?.configuration?.taxi || {} },\n {\n icon: IconType.Ferry,\n name: t(Translation.TransportDistances.Ferry),\n distance: transportDistances?.ferry,\n configuration: transportDistances?.configuration?.ferry || {},\n },\n {\n icon: IconType.Location,\n name: t(Translation.TransportDistances.Location),\n distance: transportDistances?.location,\n configuration: transportDistances?.configuration?.location || {},\n },\n {\n icon: IconType.Car,\n name: t(Translation.TransportDistances.Car),\n distance: transportDistances?.car,\n configuration: transportDistances?.configuration?.car || {},\n },\n ].filter(({ distance }) => !!distance) as IDistanceValue[];\n\n const tightMarginClass = tightMargins ? 'u-marg-left-right' : 'u-marg-left-right--heavy';\n\n return transportDistances?.displayCard ? (\n <div className={classNames(styles['rs-transport-distances'], 'rs-transport-distances d-flex flex-wrap justify-content-between u-w-100')}>\n {distanceValues.map((distanceValue, index) => (\n <DistanceDisplayCard key={index} {...distanceValue} vertical={vertical} totalValues={distanceValues.length} />\n ))}\n </div>\n ) : (\n <>\n {distanceValues.map((distanceValue, index) => (\n <DistanceDisplay key={index} {...distanceValue} vertical={vertical} tightMarginClass={tightMarginClass} />\n ))}\n </>\n );\n}\n\nconst DistanceDisplayCard = ({\n icon,\n distance,\n configuration: { suffix, subTitle, unit },\n totalValues,\n vertical,\n}: IDistanceValue & { totalValues: number; vertical?: boolean }) => (\n <div\n style={{\n ...(!vertical && {\n minWidth: `${100 / totalValues}%`,\n }),\n }}\n className=\"d-flex flex-row transport-card\"\n >\n <div className={classNames(styles['transport-card-icon'], 'transport-card-icon')}>\n <Icon icon={icon} size=\"1.3em\" color={Color.Accent} />\n </div>\n <div className=\"d-flex flex-column transport-card-details\">\n <Text bold align={TextAlign.Left} type={vertical ? TextType.Small : TextType.Body} color={Color.Accent} className=\"transport-card-title\">\n <Distance distance={distance} unit={unit} /> {suffix ?? ''}\n </Text>\n <Text align={TextAlign.Left} type={vertical ? TextType.Label : TextType.Small} color={Color.Graphite} className=\"transport-card-subtitle\">\n {subTitle}\n </Text>\n </div>\n </div>\n);\n\nconst DistanceDisplay = ({ name, icon, distance, configuration: { unit }, vertical, tightMarginClass }: IDistanceValue & { vertical?: boolean; tightMarginClass: string }) => (\n <div className={vertical ? 'u-flex flex-column u-marg-top-bottom' : `${tightMarginClass} u-marg-left-right@l-`}>\n <Text align={vertical ? TextAlign.Center : undefined} type={TextType.Small} color={Color.DarkGrey}>\n <strong>{name}</strong>\n </Text>\n <div\n className={classNames('u-flex u-marg-top--light', {\n 'justify-content-start flex-column align-items-center': vertical,\n 'align-items-end': !vertical,\n })}\n >\n <Icon icon={icon} size=\"1.3em\" />\n <span className={vertical ? 'u-marg-top--light' : 'u-marg-left--light'}>\n <Text type={TextType.Small}>\n <span className=\"u-nowrap\">\n <Distance unit={unit} distance={distance} />\n </span>\n </Text>\n </span>\n </div>\n </div>\n);\n"]}
1
+ {"version":3,"file":"TransportDistanceFromHotelBlock.js","sourceRoot":"/","sources":["src/components/summary/TransportDistanceFromHotelBlock.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA2D;AAC3D,4DAAoC;AACpC,+CAA0C;AAC1C,iDAA+C;AAE/C,6EAAqD;AACrD,uEAAgE;AAChE,kEAA2D;AAG3D,4DAAyD;AACzD,wCAAqC;AACrC,wDAAiD;AAEjD,gIAAmE;AAenE,SAAwB,+BAA+B,CAAC,KAA2C;;IAC/F,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IACjE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IACzC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,cAAc,GAAG;QACnB;YACI,IAAI,EAAE,eAAQ,CAAC,QAAQ;YACvB,IAAI,EAAE,CAAC,CAAC,yBAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC;YAC/C,QAAQ,EAAE,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,KAAK;YACnC,aAAa,EAAE,CAAA,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,aAAa,0CAAE,KAAK,KAAI,EAAE;SAChE;QACD,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,yBAAW,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,KAAK,EAAE,aAAa,EAAE,CAAA,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,aAAa,0CAAE,KAAK,KAAI,EAAE,EAAE;QAC3K,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,yBAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,IAAI,EAAE,aAAa,EAAE,CAAA,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,aAAa,0CAAE,IAAI,KAAI,EAAE,EAAE;QACxK,EAAE,IAAI,EAAE,eAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,yBAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,GAAG,EAAE,aAAa,EAAE,CAAA,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,aAAa,0CAAE,GAAG,KAAI,EAAE,EAAE;QACnK,EAAE,IAAI,EAAE,eAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,yBAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,IAAI,EAAE,aAAa,EAAE,CAAA,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,aAAa,0CAAE,IAAI,KAAI,EAAE,EAAE;QACvK;YACI,IAAI,EAAE,eAAQ,CAAC,KAAK;YACpB,IAAI,EAAE,CAAC,CAAC,yBAAW,CAAC,kBAAkB,CAAC,KAAK,CAAC;YAC7C,QAAQ,EAAE,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,KAAK;YACnC,aAAa,EAAE,CAAA,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,aAAa,0CAAE,KAAK,KAAI,EAAE;SAChE;QACD;YACI,IAAI,EAAE,eAAQ,CAAC,QAAQ;YACvB,IAAI,EAAE,CAAC,CAAC,yBAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC;YAChD,QAAQ,EAAE,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,QAAQ;YACtC,aAAa,EAAE,CAAA,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,aAAa,0CAAE,QAAQ,KAAI,EAAE;SACnE;QACD;YACI,IAAI,EAAE,eAAQ,CAAC,GAAG;YAClB,IAAI,EAAE,CAAC,CAAC,yBAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC;YAC3C,QAAQ,EAAE,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,GAAG;YACjC,aAAa,EAAE,CAAA,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,aAAa,0CAAE,GAAG,KAAI,EAAE;SAC9D;KACJ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAqB,CAAC;IAE3D,MAAM,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,0BAA0B,CAAC;IAEzF,OAAO,CAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,WAAW,EAAC,CAAC,CAAC,CACrC,uCAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,qDAAM,CAAC,wBAAwB,CAAC,EAAE,yEAAyE,CAAC,IAClI,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1C,8BAAC,mBAAmB,kBAAC,GAAG,EAAE,KAAK,IAAM,aAAa,IAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,CAAC,MAAM,IAAI,CACjH,CAAC,CACA,CACT,CAAC,CAAC,CAAC,CACA,8DACK,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1C,8BAAC,eAAe,kBAAC,GAAG,EAAE,KAAK,IAAM,aAAa,IAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,IAAI,CAC7G,CAAC,CACH,CACN,CAAC;AACN,CAAC;AAnDD,kDAmDC;AAED,MAAM,mBAAmB,GAAG,CAAC,EACzB,IAAI,EACJ,QAAQ,EACR,aAAa,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EACzC,WAAW,EACX,QAAQ,GACmD,EAAE,EAAE,CAAC,CAChE,uCACI,KAAK,oBACE,CAAC,CAAC,QAAQ,IAAI;QACb,QAAQ,EAAE,GAAG,GAAG,GAAG,WAAW,GAAG;KACpC,CAAC,GAEN,SAAS,EAAC,gCAAgC;IAE1C,uCAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,qDAAM,CAAC,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;QAC5E,8BAAC,cAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,OAAO,EAAC,KAAK,EAAE,aAAK,CAAC,MAAM,GAAI,CACpD;IACN,uCAAK,SAAS,EAAC,2CAA2C;QACtD,8BAAC,cAAI,IAAC,IAAI,QAAC,KAAK,EAAE,yBAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,eAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,aAAK,CAAC,MAAM,EAAE,SAAS,EAAC,sBAAsB;YACpI,8BAAC,kBAAQ,IAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAI;iBAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CACvD;QACP,8BAAC,cAAI,IAAC,KAAK,EAAE,yBAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ,EAAE,SAAS,EAAC,yBAAyB,IACpI,QAAQ,CACN,CACL,CACJ,CACT,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAqE,EAAE,EAAE,CAAC,CAC1K,uCAAK,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,GAAG,gBAAgB,uBAAuB;IAC1G,8BAAC,cAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,yBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ;QAC7F,8CAAS,IAAI,CAAU,CACpB;IACP,uCACI,SAAS,EAAE,IAAA,oBAAU,EAAC,0BAA0B,EAAE;YAC9C,sDAAsD,EAAE,QAAQ;YAChE,iBAAiB,EAAE,CAAC,QAAQ;SAC/B,CAAC;QAEF,8BAAC,cAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,OAAO,GAAG;QACjC,wCAAM,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,oBAAoB;YAClE,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;gBACtB,wCAAM,SAAS,EAAC,UAAU;oBACtB,8BAAC,kBAAQ,IAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAI,CACzC,CACJ,CACJ,CACL,CACJ,CACT,CAAC","sourcesContent":["import { HotelOverridesContext } from '@frontend/contexts';\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport Distance from '@/components/generic/Distance';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { TransportDistancesConfig } from '@/models/Api/HotelOverrideDTO';\nimport type { Hotel } from '@/models/Client/Hotel/Hotel';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\n\nimport styles from './TransportDistanceFromHotelBlock.module.scss';\ninterface TransportDistanceFromHotelBlockProps {\n vertical?: boolean;\n\n tightMargins?: boolean;\n distanceOverrides?: any;\n\n hotel?: Hotel;\n}\ninterface IDistanceValue {\n icon: IconType;\n name: string;\n distance: string | number;\n configuration: TransportDistancesConfig;\n}\nexport default function TransportDistanceFromHotelBlock(props: TransportDistanceFromHotelBlockProps) {\n const { transportDistances } = useContext(HotelOverridesContext);\n const { vertical, tightMargins } = props;\n const { t } = useTranslation();\n\n const distanceValues = [\n {\n icon: IconType.Airplane,\n name: t(Translation.TransportDistances.Airport),\n distance: transportDistances?.plane,\n configuration: transportDistances?.configuration?.plane || {},\n },\n { icon: IconType.Train, name: t(Translation.TransportDistances.Train), distance: transportDistances?.train, configuration: transportDistances?.configuration?.train || {} },\n { icon: IconType.Train, name: t(Translation.TransportDistances.Tram), distance: transportDistances?.tram, configuration: transportDistances?.configuration?.tram || {} },\n { icon: IconType.Bus, name: t(Translation.TransportDistances.Bus), distance: transportDistances?.bus, configuration: transportDistances?.configuration?.bus || {} },\n { icon: IconType.Taxi, name: t(Translation.TransportDistances.Taxi), distance: transportDistances?.taxi, configuration: transportDistances?.configuration?.taxi || {} },\n {\n icon: IconType.Ferry,\n name: t(Translation.TransportDistances.Ferry),\n distance: transportDistances?.ferry,\n configuration: transportDistances?.configuration?.ferry || {},\n },\n {\n icon: IconType.Location,\n name: t(Translation.TransportDistances.Location),\n distance: transportDistances?.location,\n configuration: transportDistances?.configuration?.location || {},\n },\n {\n icon: IconType.Car,\n name: t(Translation.TransportDistances.Car),\n distance: transportDistances?.car,\n configuration: transportDistances?.configuration?.car || {},\n },\n ].filter(({ distance }) => !!distance) as IDistanceValue[];\n\n const tightMarginClass = tightMargins ? 'u-marg-left-right' : 'u-marg-left-right--heavy';\n\n return transportDistances?.displayCard ? (\n <div className={classNames(styles['rs-transport-distances'], 'rs-transport-distances d-flex flex-wrap justify-content-between u-w-100')}>\n {distanceValues.map((distanceValue, index) => (\n <DistanceDisplayCard key={index} {...distanceValue} vertical={vertical} totalValues={distanceValues.length} />\n ))}\n </div>\n ) : (\n <>\n {distanceValues.map((distanceValue, index) => (\n <DistanceDisplay key={index} {...distanceValue} vertical={vertical} tightMarginClass={tightMarginClass} />\n ))}\n </>\n );\n}\n\nconst DistanceDisplayCard = ({\n icon,\n distance,\n configuration: { suffix, subTitle, unit },\n totalValues,\n vertical,\n}: IDistanceValue & { totalValues: number; vertical?: boolean }) => (\n <div\n style={{\n ...(!vertical && {\n minWidth: `${100 / totalValues}%`,\n }),\n }}\n className=\"d-flex flex-row transport-card\"\n >\n <div className={classNames(styles['transport-card-icon'], 'transport-card-icon')}>\n <Icon icon={icon} size=\"1.3em\" color={Color.Accent} />\n </div>\n <div className=\"d-flex flex-column transport-card-details\">\n <Text bold align={TextAlign.Left} type={vertical ? TextType.Small : TextType.Body} color={Color.Accent} className=\"transport-card-title\">\n <Distance distance={distance} unit={unit} /> {suffix ?? ''}\n </Text>\n <Text align={TextAlign.Left} type={vertical ? TextType.Label : TextType.Small} color={Color.Graphite} className=\"transport-card-subtitle\">\n {subTitle}\n </Text>\n </div>\n </div>\n);\n\nconst DistanceDisplay = ({ name, icon, distance, configuration: { unit }, vertical, tightMarginClass }: IDistanceValue & { vertical?: boolean; tightMarginClass: string }) => (\n <div className={vertical ? 'u-flex flex-column u-marg-top-bottom' : `${tightMarginClass} u-marg-left-right@l-`}>\n <Text align={vertical ? TextAlign.Center : undefined} type={TextType.Small} color={Color.DarkGrey}>\n <strong>{name}</strong>\n </Text>\n <div\n className={classNames('u-flex u-marg-top--light', {\n 'justify-content-start flex-column align-items-center': vertical,\n 'align-items-end': !vertical,\n })}\n >\n <Icon icon={icon} size=\"1.3em\" />\n <span className={vertical ? 'u-marg-top--light' : 'u-marg-left--light'}>\n <Text type={TextType.Small}>\n <span className=\"u-nowrap\">\n <Distance unit={unit} distance={distance} />\n </span>\n </Text>\n </span>\n </div>\n </div>\n);\n"]}
@@ -15,6 +15,7 @@ export interface BasketContextType {
15
15
  loadedPromotion: IPromotion | null;
16
16
  startDate: dayjs.Dayjs;
17
17
  endDate: dayjs.Dayjs;
18
+ pencilId: string | undefined;
18
19
  isLoadingPriceQuote: boolean;
19
20
  addBasketRow: (row: BasketRow) => void;
20
21
  addRate: (rate: RoomRate, notify?: boolean) => Promise<void>;
@@ -36,11 +37,7 @@ export interface BasketContextType {
36
37
  selectBasketRow: (row: BasketRow | null) => void;
37
38
  setStartDate: (date: dayjs.Dayjs) => void;
38
39
  setEndDate: (date: dayjs.Dayjs) => void;
39
- /**
40
- * @param preventApplyingOutcome a callback to check if calling function has decided that it no longer wants to apply the deposit
41
- * @returns
42
- */
43
- getBasketQuoteDetails: (preventApplyingOutcome: () => boolean) => void;
40
+ quoteOrPencilReservation: (applyQuote: () => boolean) => void;
44
41
  hasCheckedOut: boolean;
45
42
  reservationData: ReservationsDTO;
46
43
  booked: (data: ReservationsDTO, reservationRequest?: RoomstaySession['reservationRequest']) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"BasketContextType.js","sourceRoot":"/","sources":["src/contexts/BasketContext/BasketContextType.ts"],"names":[],"mappings":"","sourcesContent":["import type dayjs from 'dayjs';\n\nimport type { Addon } from '@/models/Addon/Addon';\nimport type ReservationsDTO from '@/models/Api/ReservationsDTO';\nimport type BasketAddonRow from '@/models/BasketAddonRow';\nimport type BasketRow from '@/models/BasketRow';\nimport { ItemisedFee } from '@/models/Fee';\nimport type { IPromotion } from '@/models/Promotion/IPromotion.type';\nimport type { RoomRate } from '@/models/Room/RoomRate';\nimport { RoomstaySession } from '@/models/RoomstaySession';\n\nexport interface BasketContextType {\n selectedBasketRow: BasketRow;\n currentBasketRows: BasketRow[];\n basketAddonRows: BasketAddonRow[];\n basketFeeRows: ItemisedFee[];\n loadedPromotion: IPromotion | null;\n\n startDate: dayjs.Dayjs;\n endDate: dayjs.Dayjs;\n\n isLoadingPriceQuote: boolean;\n\n addBasketRow: (row: BasketRow) => void;\n addRate: (rate: RoomRate, notify?: boolean) => Promise<void>;\n\n getAllValidRows: () => BasketRow[];\n getAllDatelessRows: () => BasketRow[];\n\n getNumberOfAdults: (withTranslation: boolean) => number | string;\n getNumberOfChildren: (withTranslation: boolean) => number | string;\n getNumberOfInfants: (withTranslation: boolean) => number | string;\n getNumberOfRooms: (withTranslation: boolean) => number | string;\n\n getTotalPrice: () => any;\n getTotalDeposit: () => number;\n getDepositFees: () => number;\n getTotalFees: () => number;\n getItemisedFees: () => ItemisedFee[];\n getTotalPayNow: () => number;\n\n updateBasketRow: (row: BasketRow, updateGlobalDates?: boolean) => void;\n removeBasketRow: (row: BasketRow) => void;\n\n clearBasketRows: (confirm: boolean) => void;\n selectBasketRow: (row: BasketRow | null) => void;\n\n setStartDate: (date: dayjs.Dayjs) => void;\n setEndDate: (date: dayjs.Dayjs) => void;\n /**\n * @param preventApplyingOutcome a callback to check if calling function has decided that it no longer wants to apply the deposit\n * @returns\n */\n getBasketQuoteDetails: (preventApplyingOutcome: () => boolean) => void;\n\n hasCheckedOut: boolean;\n reservationData: ReservationsDTO;\n booked: (data: ReservationsDTO, reservationRequest?: RoomstaySession['reservationRequest']) => Promise<void>;\n rollback: () => void;\n checkedOut: (data: ReservationsDTO) => void;\n clearSelectedRates: () => void;\n finish: () => void;\n\n getRowForAddon: (selectedAddon: Addon) => BasketAddonRow | undefined;\n\n setAddonQuantities: (addon: Addon, quantities: { quantity: number; adult: number; child: number }, selectedDate: string, selectedTime: string) => void;\n\n removeBasketAddonRow: (row: BasketAddonRow) => void;\n attemptSelectUnfilledRow: () => BasketRow | undefined;\n\n initBasketRows: (basketRows: BasketRow[]) => void;\n updateBasketFeeRows: () => void;\n\n onDatePickerOpenChange: (isOpen: boolean) => void;\n isDatePickerOpen: boolean;\n}\n"]}
1
+ {"version":3,"file":"BasketContextType.js","sourceRoot":"/","sources":["src/contexts/BasketContext/BasketContextType.ts"],"names":[],"mappings":"","sourcesContent":["import type dayjs from 'dayjs';\n\nimport type { Addon } from '@/models/Addon/Addon';\nimport type ReservationsDTO from '@/models/Api/ReservationsDTO';\nimport type BasketAddonRow from '@/models/BasketAddonRow';\nimport type BasketRow from '@/models/BasketRow';\nimport { ItemisedFee } from '@/models/Fee';\nimport type { IPromotion } from '@/models/Promotion/IPromotion.type';\nimport type { RoomRate } from '@/models/Room/RoomRate';\nimport { RoomstaySession } from '@/models/RoomstaySession';\n\nexport interface BasketContextType {\n selectedBasketRow: BasketRow;\n currentBasketRows: BasketRow[];\n basketAddonRows: BasketAddonRow[];\n basketFeeRows: ItemisedFee[];\n loadedPromotion: IPromotion | null;\n\n startDate: dayjs.Dayjs;\n endDate: dayjs.Dayjs;\n pencilId: string | undefined;\n\n isLoadingPriceQuote: boolean;\n\n addBasketRow: (row: BasketRow) => void;\n addRate: (rate: RoomRate, notify?: boolean) => Promise<void>;\n\n getAllValidRows: () => BasketRow[];\n getAllDatelessRows: () => BasketRow[];\n\n getNumberOfAdults: (withTranslation: boolean) => number | string;\n getNumberOfChildren: (withTranslation: boolean) => number | string;\n getNumberOfInfants: (withTranslation: boolean) => number | string;\n getNumberOfRooms: (withTranslation: boolean) => number | string;\n\n getTotalPrice: () => any;\n getTotalDeposit: () => number;\n getDepositFees: () => number;\n getTotalFees: () => number;\n getItemisedFees: () => ItemisedFee[];\n getTotalPayNow: () => number;\n\n updateBasketRow: (row: BasketRow, updateGlobalDates?: boolean) => void;\n removeBasketRow: (row: BasketRow) => void;\n\n clearBasketRows: (confirm: boolean) => void;\n selectBasketRow: (row: BasketRow | null) => void;\n\n setStartDate: (date: dayjs.Dayjs) => void;\n setEndDate: (date: dayjs.Dayjs) => void;\n\n quoteOrPencilReservation: (applyQuote: () => boolean) => void;\n\n hasCheckedOut: boolean;\n reservationData: ReservationsDTO;\n booked: (data: ReservationsDTO, reservationRequest?: RoomstaySession['reservationRequest']) => Promise<void>;\n rollback: () => void;\n checkedOut: (data: ReservationsDTO) => void;\n clearSelectedRates: () => void;\n finish: () => void;\n\n getRowForAddon: (selectedAddon: Addon) => BasketAddonRow | undefined;\n\n setAddonQuantities: (addon: Addon, quantities: { quantity: number; adult: number; child: number }, selectedDate: string, selectedTime: string) => void;\n\n removeBasketAddonRow: (row: BasketAddonRow) => void;\n attemptSelectUnfilledRow: () => BasketRow | undefined;\n\n initBasketRows: (basketRows: BasketRow[]) => void;\n updateBasketFeeRows: () => void;\n\n onDatePickerOpenChange: (isOpen: boolean) => void;\n isDatePickerOpen: boolean;\n}\n"]}
@@ -58,7 +58,6 @@ const Text_1 = __importDefault(require("../../components/generic/Text"));
58
58
  const MemberSignInModal_1 = require("../../components/members/SignInModal/MemberSignInModal");
59
59
  const PromoCodeVerificationAlert_1 = require("../../components/steps/room/UserSearchSummary/PromoCodeVerificationAlert");
60
60
  const useSignedInMember_1 = require("../../hooks/useSignedInMember");
61
- const Addon_1 = require("../../models/Addon/Addon");
62
61
  const BasketAddonRow_1 = __importDefault(require("../../models/BasketAddonRow"));
63
62
  const BasketRow_1 = __importDefault(require("../../models/BasketRow"));
64
63
  const Fee_1 = require("../../models/Fee");
@@ -72,7 +71,7 @@ const GetStepRoom_1 = __importDefault(require("../../util/GetStepRoom"));
72
71
  const StepManager_1 = __importDefault(require("../../util/StepManager"));
73
72
  const StringHelper_1 = __importDefault(require("../../util/StringHelper"));
74
73
  function BasketContextWrapper(props) {
75
- var _a, _b, _c;
74
+ var _a, _b, _c, _d;
76
75
  const { t } = (0, react_i18next_1.useTranslation)();
77
76
  const { hotel } = (0, hooks_1.useCurrentHotel)();
78
77
  const updateQueryParams = (0, UpdateQueryParameters_1.useUpdateQueryParameters)();
@@ -84,6 +83,7 @@ function BasketContextWrapper(props) {
84
83
  const { showPromoCodeAlert } = (0, react_1.useContext)(contexts_1.HotelOverridesContext);
85
84
  const initialSession = (_a = beContext === null || beContext === void 0 ? void 0 : beContext.engine) === null || _a === void 0 ? void 0 : _a.getInitialSession();
86
85
  const [currentBasketRows, basketRowReducer] = (0, react_1.useReducer)(BasketReducer_1.BasketReducer, (_b = initialSession === null || initialSession === void 0 ? void 0 : initialSession.basketRows) !== null && _b !== void 0 ? _b : []);
86
+ const [pencilId, setPencilId] = (0, react_1.useState)((_c = initialSession === null || initialSession === void 0 ? void 0 : initialSession.pencilId) !== null && _c !== void 0 ? _c : undefined);
87
87
  const [selectedBasketRow, setSelectedBasketRow] = (0, react_1.useState)(null);
88
88
  const [basketAddonRows, setBasketAddonRows] = (0, react_1.useState)([]);
89
89
  // This is where we store the fees that aren't included in the rates/addons.
@@ -91,7 +91,7 @@ function BasketContextWrapper(props) {
91
91
  const [isLoadingPriceQuote, setIsLoadingPriceQuote] = (0, react_1.useState)(false);
92
92
  let loadedStartDate = null;
93
93
  let loadedEndDate = null;
94
- if ((_c = initialSession === null || initialSession === void 0 ? void 0 : initialSession.basketRows) === null || _c === void 0 ? void 0 : _c.length) {
94
+ if ((_d = initialSession === null || initialSession === void 0 ? void 0 : initialSession.basketRows) === null || _d === void 0 ? void 0 : _d.length) {
95
95
  loadedStartDate = initialSession.basketRows[0].getStartDate();
96
96
  loadedEndDate = initialSession.basketRows[0].getEndDate();
97
97
  }
@@ -420,6 +420,7 @@ function BasketContextWrapper(props) {
420
420
  reservationData: reservationData,
421
421
  isLoadingPriceQuote,
422
422
  loadedPromotion,
423
+ pencilId,
423
424
  /**
424
425
  * Adds a new basket row and applies relevant updates:
425
426
  * - Synchronizes the selected date range.
@@ -545,9 +546,17 @@ function BasketContextWrapper(props) {
545
546
  }
546
547
  }
547
548
  }),
548
- getBasketQuoteDetails: (preventApplyingOutcome) => {
549
- const maxRetryAttempts = 5;
550
- if (!hotel || !(hotel === null || hotel === void 0 ? void 0 : hotel.requireDeposit)) {
549
+ quoteOrPencilReservation: (applyQuote) => {
550
+ const maxRetryAttempts = 1;
551
+ let callApi;
552
+ // To avoid multiple requests, pencil reservation step also generates a quote (if applicable)
553
+ if ((hotel === null || hotel === void 0 ? void 0 : hotel.bookingFlow) === core_1.EBookingFlow.PreCheckoutPencil) {
554
+ callApi = BookingAPI_1.default.Reservation.pencilReservation;
555
+ }
556
+ else if (hotel === null || hotel === void 0 ? void 0 : hotel.requireDeposit) {
557
+ callApi = BookingAPI_1.default.Reservation.getPriceQuote;
558
+ }
559
+ else {
551
560
  return false;
552
561
  }
553
562
  setIsLoadingPriceQuote(true);
@@ -559,26 +568,43 @@ function BasketContextWrapper(props) {
559
568
  updateBasketRow(row);
560
569
  }
561
570
  });
562
- const getData = () => (0, rxjs_1.defer)(() => BookingAPI_1.default.Reservation.getPriceQuote(hotel.hotelID, currentBasketRows, isExternalMemberHotel ? memberNumber : undefined)).pipe((0, operators_1.retryWhen)(genericRetryStrategy({
571
+ const retryableGetQuote = () => (0, rxjs_1.defer)(() => callApi(hotel.hotelID, currentBasketRows, isExternalMemberHotel ? memberNumber : undefined, pencilId)).pipe((0, operators_1.retryWhen)(genericRetryStrategy({
563
572
  maxRetryAttempts: maxRetryAttempts,
564
573
  })));
565
- const retryableObservable = getData();
566
- retryableObservable.subscribe((quote) => {
567
- if (quote === null)
574
+ retryableGetQuote().subscribe((response) => {
575
+ var _a, _b, _c;
576
+ let pencilResponse = null;
577
+ let quoteResponse;
578
+ if ((hotel === null || hotel === void 0 ? void 0 : hotel.bookingFlow) === core_1.EBookingFlow.PreCheckoutPencil) {
579
+ // Pencil call also passes back the quote (if applicable)
580
+ pencilResponse = response;
581
+ quoteResponse = pencilResponse.quote;
582
+ // Store parent pencil ID to pass back to the server later
583
+ setPencilId(pencilResponse.pencilId);
584
+ (_a = beContext.sessionProvider) === null || _a === void 0 ? void 0 : _a.updateSession({ pencilId: pencilResponse.pencilId });
585
+ // Future improvement: Handle availability errors
586
+ }
587
+ else {
588
+ quoteResponse = response;
589
+ }
590
+ if (!quoteResponse) {
568
591
  return;
569
- if (!preventApplyingOutcome()) {
592
+ }
593
+ if (!applyQuote()) {
570
594
  // User has left the Confirmation step before the quote was ready, we'll stop here instead of updating the basket.
571
595
  // If we don't stop here, the user will be redirected back to the Confirmation step.
572
596
  setIsLoadingPriceQuote(false);
573
597
  return;
574
598
  }
575
- for (const quoteRow of quote.rows) {
576
- const basketRow = currentBasketRows.find((row) => row.getID() === quoteRow.rowId);
577
- if (!basketRow) {
578
- console.warn('API Returned unfamiliar row ID', quoteRow.rowId);
579
- continue;
599
+ for (const basketRow of currentBasketRows) {
600
+ const quoteRow = (_b = quoteResponse === null || quoteResponse === void 0 ? void 0 : quoteResponse.rows) === null || _b === void 0 ? void 0 : _b.find((row) => row.rowId === basketRow.getID());
601
+ const pencilRow = (_c = pencilResponse === null || pencilResponse === void 0 ? void 0 : pencilResponse.rows) === null || _c === void 0 ? void 0 : _c.find((row) => row.rowId === basketRow.getID());
602
+ if (quoteRow) {
603
+ basketRow.quoteDetails = quoteRow;
604
+ }
605
+ if (pencilRow) {
606
+ basketRow.pencilId = pencilRow.pencilId;
580
607
  }
581
- basketRow.quoteDetails = quoteRow;
582
608
  updateBasketRow(basketRow);
583
609
  }
584
610
  }, (error) => {
@@ -732,12 +758,12 @@ function BasketContextWrapper(props) {
732
758
  setStartDate,
733
759
  setEndDate,
734
760
  booked: (data, requestData) => __awaiter(this, void 0, void 0, function* () {
735
- var _d;
761
+ var _e;
736
762
  const updateObject = { reservation: data };
737
763
  if (requestData) {
738
764
  updateObject.reservationRequest = requestData;
739
765
  }
740
- yield ((_d = beContext.sessionProvider) === null || _d === void 0 ? void 0 : _d.updateSessionAsync(updateObject));
766
+ yield ((_e = beContext.sessionProvider) === null || _e === void 0 ? void 0 : _e.updateSessionAsync(updateObject));
741
767
  setReservationData(data);
742
768
  }),
743
769
  rollback: () => {
@@ -796,14 +822,14 @@ function BasketContextWrapper(props) {
796
822
  addonRow.setSelectedDate(selectedDate);
797
823
  addonRow.setSelectedTime(addon.availability[selectedDate].selectorTimes ? selectedTime : undefined);
798
824
  // TODO: Quick hack to fix Synxis Basic Addon quantities.
799
- if (addon.pricingType === Addon_1.AddonPricingType.PER_ADULT_OCCUPANCY_PER_NIGHT) {
825
+ if (addon.pricingType === core_1.EAddonPricingType.PER_ADULT_OCCUPANCY_PER_NIGHT) {
800
826
  // TODO: Because all addons only apply to first room, we can select the 0th from the list.
801
827
  const basketRow = currentBasketRows === null || currentBasketRows === void 0 ? void 0 : currentBasketRows[0];
802
828
  if (basketRow) {
803
829
  addonRow.setAdultQuantity(basketRow.getAdults());
804
830
  }
805
831
  }
806
- if (addon.pricingType === Addon_1.AddonPricingType.PER_CHILD_OCCUPANCY_PER_NIGHT) {
832
+ if (addon.pricingType === core_1.EAddonPricingType.PER_CHILD_OCCUPANCY_PER_NIGHT) {
807
833
  // TODO: Because all addons only apply to first room, we can select the 0th from the list.
808
834
  const basketRow = currentBasketRows === null || currentBasketRows === void 0 ? void 0 : currentBasketRows[0];
809
835
  if (basketRow) {
@@ -811,7 +837,7 @@ function BasketContextWrapper(props) {
811
837
  }
812
838
  }
813
839
  // TODO: More hackyness to handle RMS Per Person Fee requirements
814
- if (addon.pricingType === Addon_1.AddonPricingType.PER_ALL_PERSONS || addon.pricingType === Addon_1.AddonPricingType.PER_ALL_PERSONS_PER_NIGHT) {
840
+ if (addon.pricingType === core_1.EAddonPricingType.PER_ALL_PERSONS || addon.pricingType === core_1.EAddonPricingType.PER_ALL_PERSONS_PER_NIGHT) {
815
841
  const basketRow = currentBasketRows === null || currentBasketRows === void 0 ? void 0 : currentBasketRows[0];
816
842
  if (basketRow) {
817
843
  addonRow.setAdultQuantity(basketRow.getAdults());