@roomstay/frontend 1.4.1 → 1.5.1

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 (74) hide show
  1. package/dist/201.bundle.js +1 -1
  2. package/dist/449.bundle.js +1 -1
  3. package/dist/661.bundle.js +1 -1
  4. package/dist/main.bundle.js +1 -1
  5. package/dist/src/components/steps/room/RoomList.js +35 -0
  6. package/dist/src/components/steps/room/RoomList.js.map +1 -1
  7. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +13 -0
  8. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  9. package/dist/src/events/RoomstayEventManager.d.ts +1 -1
  10. package/dist/src/events/RoomstayEventManager.js.map +1 -1
  11. package/dist/src/events/actions/GuestSearchEvent.d.ts +7 -0
  12. package/dist/src/events/actions/GuestSearchEvent.js +15 -0
  13. package/dist/src/events/actions/GuestSearchEvent.js.map +1 -0
  14. package/dist/src/events/actions/InitialHotelDetailsEvent.d.ts +7 -0
  15. package/dist/src/events/actions/InitialHotelDetailsEvent.js +15 -0
  16. package/dist/src/events/actions/InitialHotelDetailsEvent.js.map +1 -0
  17. package/dist/src/events/actions/RoomListSearchEvent.d.ts +9 -0
  18. package/dist/src/events/actions/RoomListSearchEvent.js +16 -0
  19. package/dist/src/events/actions/RoomListSearchEvent.js.map +1 -0
  20. package/dist/src/events/index.d.ts +10 -0
  21. package/dist/src/events/index.js +10 -0
  22. package/dist/src/events/index.js.map +1 -1
  23. package/dist/src/events/views/FindReservationResultsViewEvent.d.ts +7 -0
  24. package/dist/src/events/views/FindReservationResultsViewEvent.js +15 -0
  25. package/dist/src/events/views/FindReservationResultsViewEvent.js.map +1 -0
  26. package/dist/src/events/views/FindReservationViewEvent.d.ts +5 -0
  27. package/dist/src/events/views/FindReservationViewEvent.js +14 -0
  28. package/dist/src/events/views/FindReservationViewEvent.js.map +1 -0
  29. package/dist/src/events/views/StepAddonViewEvent.d.ts +7 -0
  30. package/dist/src/events/views/StepAddonViewEvent.js +15 -0
  31. package/dist/src/events/views/StepAddonViewEvent.js.map +1 -0
  32. package/dist/src/events/views/StepDateViewEvent.d.ts +5 -0
  33. package/dist/src/events/views/StepDateViewEvent.js +14 -0
  34. package/dist/src/events/views/StepDateViewEvent.js.map +1 -0
  35. package/dist/src/events/views/StepHotelInfoViewEvent.d.ts +5 -0
  36. package/dist/src/events/views/StepHotelInfoViewEvent.js +14 -0
  37. package/dist/src/events/views/StepHotelInfoViewEvent.js.map +1 -0
  38. package/dist/src/events/views/StepHotelViewEvent.d.ts +5 -0
  39. package/dist/src/events/views/StepHotelViewEvent.js +14 -0
  40. package/dist/src/events/views/StepHotelViewEvent.js.map +1 -0
  41. package/dist/src/events/views/StepThanksViewEvent.d.ts +7 -0
  42. package/dist/src/events/views/StepThanksViewEvent.js +15 -0
  43. package/dist/src/events/views/StepThanksViewEvent.js.map +1 -0
  44. package/dist/src/index.d.ts +5 -0
  45. package/dist/src/index.js +9 -3
  46. package/dist/src/index.js.map +1 -1
  47. package/dist/src/models/Api/IEventReservation.d.ts +7 -0
  48. package/dist/src/models/Api/IEventReservation.js +3 -0
  49. package/dist/src/models/Api/IEventReservation.js.map +1 -0
  50. package/dist/src/models/Client/Hotel/Hotel.d.ts +11 -0
  51. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  52. package/dist/src/models/RoomListSearch.d.ts +18 -0
  53. package/dist/src/models/RoomListSearch.js +3 -0
  54. package/dist/src/models/RoomListSearch.js.map +1 -0
  55. package/dist/src/models/SearchParameters.d.ts +8 -0
  56. package/dist/src/models/SearchParameters.js +3 -0
  57. package/dist/src/models/SearchParameters.js.map +1 -0
  58. package/dist/src/pages/findReservation/FindReservation.js +4 -0
  59. package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
  60. package/dist/src/pages/findReservation/FindReservationResults.js +27 -0
  61. package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
  62. package/dist/src/pages/hotel/HotelInfo.js +6 -0
  63. package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
  64. package/dist/src/pages/steps/StepAddon/StepAddonComponent.js +8 -0
  65. package/dist/src/pages/steps/StepAddon/StepAddonComponent.js.map +1 -1
  66. package/dist/src/pages/steps/StepDate/StepDateComponent.js +6 -0
  67. package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
  68. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js +9 -4
  69. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js.map +1 -1
  70. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +19 -0
  71. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  72. package/dist/test.bundle.js +1 -1
  73. package/dist/vendors.bundle.js +1 -1
  74. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"StepAddonComponent.js","sourceRoot":"/","sources":["src/pages/steps/StepAddon/StepAddonComponent.tsx"],"names":[],"mappings":";;AAAA,+BAA+B;AAC/B,iCAAmC;AACnC,uDAAwC;AACxC,iDAA+C;AAC/C,uEAAgE;AAChE,mEAA4D;AAC5D,qEAA8D;AAC9D,0EAAmE;AACnE,iFAA0E;AAC1E,2DAAoD;AACpD,mEAAgE;AAChE,yDAAkD;AAClD,8FAAuF;AACvF,iDAAiF;AAEjF,SAAwB,kBAAkB;IACtC,MAAM,OAAO,GAAG,kBAAU,CAAC,+BAAoB,CAAC,CAAC;IACjD,MAAM,EAAE,WAAW,EAAE,GAAG,kBAAU,CAAC,gCAAqB,CAAC,CAAC;IAE1D,MAAM,EAAE,CAAC,EAAE,GAAG,8BAAc,EAAE,CAAC;IAE/B,OAAO,CACH,6BAAK,SAAS,EAAC,WAAW;QACtB,oBAAC,yBAAe,OAAG;QACnB,6BAAK,SAAS,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,6BAAK,SAAS,EAAC,UAAU,IACpB,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,MAAM,IAAI,CACvC;gBACI,oBAAC,uBAAI,IAAC,EAAE,EAAE,qBAAW,CAAC,kBAAkB,CAAC,WAAW,CAAC;oBACjD,oBAAC,oBAAU,OAAG,CACX;gBACP,6BAAK,SAAS,EAAC,wCAAwC;oBACnD,oBAAC,kBAAQ,IAAC,IAAI,EAAE,IAAI,IAAG,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAY,CACtE,CACP,CACN,CACC;YACL,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,MAAM,IAAI,CACvC,6BAAK,SAAS,EAAC,8CAA8C;gBACzD,oBAAC,8BAAoB,OAAG,CACtB,CACT,CACC;QACL,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,MAAM,IAAI,oBAAC,mBAAS,OAAG;QACxD,oBAAC,mBAAS,OAAG,CACX,CACT,CAAC;AACN,CAAC;AAhCD,qCAgCC","sourcesContent":["import * as React from 'react';\nimport { useContext } from 'react';\nimport { Link } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport BackButton from '../../../components/generic/BackButton';\nimport Headline from '../../../components/generic/Headline';\nimport LineBreak from '../../../components/generic/LineBreak';\nimport AddonList from '../../../components/steps/addons/AddonList';\nimport BEMobileSummary from '../../../components/summary/BEMobileSummary';\nimport StepManager from '../../../util/StepManager';\nimport { Translation } from '../../../translations/Translation';\nimport ScreenSize from '../../../util/ScreenSize';\nimport StepRoomHotelDetails from '../../../components/steps/room/StepRoomHotelDetails';\nimport { BookingEngineContext, FullPageEngineContext } from '@frontend/contexts';\n\nexport default function StepAddonComponent() {\n const context = useContext(BookingEngineContext);\n const { currentStep } = useContext(FullPageEngineContext);\n\n const { t } = useTranslation();\n\n return (\n <div className=\"container\">\n <BEMobileSummary />\n <div className={'row' + (context.screenSize > ScreenSize.ExtraLarge ? ' no-gutters' : '')}>\n <div className=\"col-md-8\">\n {context.screenSize > ScreenSize.Medium && (\n <>\n <Link to={StepManager.getPreviousStepUrl(currentStep)}>\n <BackButton />\n </Link>\n <div className=\"u-marg-top--light u-marg-bottom--heavy\">\n <Headline bold={true}>{t(Translation.Navigation.Steps.Addon)}</Headline>\n </div>\n </>\n )}\n </div>\n {context.screenSize > ScreenSize.Medium && (\n <div className=\"col-xl-3 col-md-4 offset-xl-1 align-self-end\">\n <StepRoomHotelDetails />\n </div>\n )}\n </div>\n {context.screenSize > ScreenSize.Medium && <LineBreak />}\n <AddonList />\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"StepAddonComponent.js","sourceRoot":"/","sources":["src/pages/steps/StepAddon/StepAddonComponent.tsx"],"names":[],"mappings":";;AAAA,+BAA+B;AAC/B,iCAA8C;AAC9C,uDAAwC;AACxC,iDAA+C;AAC/C,uEAAgE;AAChE,mEAA4D;AAC5D,qEAA8D;AAC9D,0EAAmE;AACnE,iFAA0E;AAC1E,2DAAoD;AACpD,mEAAgE;AAChE,yDAAkD;AAClD,8FAAuF;AACvF,iDAAgG;AAChG,2CAA2C;AAC3C,4CAAqD;AAErD,SAAwB,kBAAkB;IACtC,MAAM,OAAO,GAAG,kBAAU,CAAC,+BAAoB,CAAC,CAAC;IACjD,MAAM,EAAE,WAAW,EAAE,GAAG,kBAAU,CAAC,gCAAqB,CAAC,CAAC;IAC1D,MAAM,EAAE,iBAAiB,EAAE,GAAG,kBAAU,CAAC,wBAAa,CAAC,CAAC;IAExD,MAAM,EAAE,CAAC,EAAE,GAAG,8BAAc,EAAE,CAAC;IAE/B,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAQ,EAAE,CAAC;IAE7B,iBAAS,CAAC,GAAG,EAAE;QACX,MAAM,KAAK,GAAG,IAAI,2BAAkB,CAAC,iBAAiB,CAAC,CAAC;QACxD,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACH,6BAAK,SAAS,EAAC,WAAW;QACtB,oBAAC,yBAAe,OAAG;QACnB,6BAAK,SAAS,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,6BAAK,SAAS,EAAC,UAAU,IACpB,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,MAAM,IAAI,CACvC;gBACI,oBAAC,uBAAI,IAAC,EAAE,EAAE,qBAAW,CAAC,kBAAkB,CAAC,WAAW,CAAC;oBACjD,oBAAC,oBAAU,OAAG,CACX;gBACP,6BAAK,SAAS,EAAC,wCAAwC;oBACnD,oBAAC,kBAAQ,IAAC,IAAI,EAAE,IAAI,IAAG,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAY,CACtE,CACP,CACN,CACC;YACL,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,MAAM,IAAI,CACvC,6BAAK,SAAS,EAAC,8CAA8C;gBACzD,oBAAC,8BAAoB,OAAG,CACtB,CACT,CACC;QACL,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,MAAM,IAAI,oBAAC,mBAAS,OAAG;QACxD,oBAAC,mBAAS,OAAG,CACX,CACT,CAAC;AACN,CAAC;AAxCD,qCAwCC","sourcesContent":["import * as React from 'react';\nimport { useContext, useEffect } from 'react';\nimport { Link } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport BackButton from '../../../components/generic/BackButton';\nimport Headline from '../../../components/generic/Headline';\nimport LineBreak from '../../../components/generic/LineBreak';\nimport AddonList from '../../../components/steps/addons/AddonList';\nimport BEMobileSummary from '../../../components/summary/BEMobileSummary';\nimport StepManager from '../../../util/StepManager';\nimport { Translation } from '../../../translations/Translation';\nimport ScreenSize from '../../../util/ScreenSize';\nimport StepRoomHotelDetails from '../../../components/steps/room/StepRoomHotelDetails';\nimport { BasketContext, BookingEngineContext, FullPageEngineContext } from '@frontend/contexts';\nimport { useEvent } from '@frontend/hooks';\nimport { StepAddonViewEvent } from '../../../events';\n\nexport default function StepAddonComponent() {\n const context = useContext(BookingEngineContext);\n const { currentStep } = useContext(FullPageEngineContext);\n const { currentBasketRows } = useContext(BasketContext);\n\n const { t } = useTranslation();\n\n const { raise } = useEvent();\n\n useEffect(() => {\n const event = new StepAddonViewEvent(currentBasketRows);\n raise(event);\n }, []);\n\n return (\n <div className=\"container\">\n <BEMobileSummary />\n <div className={'row' + (context.screenSize > ScreenSize.ExtraLarge ? ' no-gutters' : '')}>\n <div className=\"col-md-8\">\n {context.screenSize > ScreenSize.Medium && (\n <>\n <Link to={StepManager.getPreviousStepUrl(currentStep)}>\n <BackButton />\n </Link>\n <div className=\"u-marg-top--light u-marg-bottom--heavy\">\n <Headline bold={true}>{t(Translation.Navigation.Steps.Addon)}</Headline>\n </div>\n </>\n )}\n </div>\n {context.screenSize > ScreenSize.Medium && (\n <div className=\"col-xl-3 col-md-4 offset-xl-1 align-self-end\">\n <StepRoomHotelDetails />\n </div>\n )}\n </div>\n {context.screenSize > ScreenSize.Medium && <LineBreak />}\n <AddonList />\n </div>\n );\n}\n"]}
@@ -21,6 +21,7 @@ const StepOneDateRangePicker_1 = require("../../../components/steps/date/StepOne
21
21
  const hooks_1 = require("@frontend/hooks");
22
22
  const contexts_2 = require("@frontend/contexts");
23
23
  const HotelOverridesContext_1 = require("../../../contexts/HotelOverridesContext");
24
+ const events_1 = require("../../../events");
24
25
  const BEMobileSummary = react_1.lazy(() => Promise.resolve().then(() => require('../../../components/summary/BEMobileSummary')));
25
26
  const StepDate = (props) => {
26
27
  const context = react_1.useContext(contexts_1.BookingEngineContext);
@@ -40,6 +41,11 @@ const StepDate = (props) => {
40
41
  }
41
42
  }
42
43
  }, [basketContext.endDate]);
44
+ const { raise } = hooks_1.useEvent();
45
+ react_1.useEffect(() => {
46
+ const event = new events_1.StepDateViewEvent();
47
+ raise(event);
48
+ }, []);
43
49
  return (React.createElement("div", { className: "container" },
44
50
  context.screenSize <= ScreenSize_1.default.Medium && React.createElement(BEMobileSummary, null),
45
51
  context.screenSize >= ScreenSize_1.default.Large && (React.createElement(React.Fragment, null,
@@ -1 +1 @@
1
- {"version":3,"file":"StepDateComponent.js","sourceRoot":"/","sources":["src/pages/steps/StepDate/StepDateComponent.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport Headline from '../../../components/generic/Headline';\nimport Text from '../../../components/generic/Text';\n\nimport { Color } from '../../../util/Color';\nimport { withRouter } from 'react-router';\n\nimport { useTranslation } from 'react-i18next';\n\nimport { Translation } from '../../../translations/Translation';\nimport ScreenSize from '../../../util/ScreenSize';\nimport StepOneStatusPeople from '../../../components/steps/date/StepOneStatusPeople';\nimport StepOneDateRange from '../../../components/steps/date/StepOneDateRange';\nimport StepOneNextStepButton from '../../../components/steps/date/StepOneNextStepButton';\nimport { useContext, useRef, useEffect, Suspense, lazy } from 'react';\n\nimport StepOneDateRangePickerLegend from '../../../components/steps/date/StepOneDateRangePickerLegend';\nimport StepDatePricePerRoom from '../../../components/steps/date/StepDatePricePerRoom';\nimport { BasketContext, BookingEngineContext } from '@frontend/contexts';\n\nimport LineBreak from '../../../components/generic/LineBreak';\nimport PeoplePicker from '../../../components/steps/date/PeoplePicker';\nimport StepOneDateRangePicker from '../../../components/steps/date/StepOneDateRangePicker';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { CompanyContext } from '@frontend/contexts';\nimport { HotelOverridesContext } from '../../../contexts/HotelOverridesContext';\n\nconst BEMobileSummary = lazy(() => import('../../../components/summary/BEMobileSummary'));\n\nconst StepDate = (props: any) => {\n const context = useContext(BookingEngineContext);\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const { hideByLine } = useContext(HotelOverridesContext);\n\n const { hotel } = useCurrentHotel();\n\n const { t } = useTranslation();\n const peopleRef = useRef(null);\n\n useEffect(() => {\n if (context.screenSize <= ScreenSize.Medium && basketContext.endDate) {\n if (peopleRef) {\n setTimeout(() => {\n peopleRef.current?.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });\n }, 50);\n }\n }\n }, [basketContext.endDate]);\n\n return (\n <div className=\"container\">\n {context.screenSize <= ScreenSize.Medium && <BEMobileSummary />}\n {context.screenSize >= ScreenSize.Large && (\n <>\n <div className=\"row\">\n <div className=\"col-md-4 col-lg-3\">\n <div className=\"u-marg-bottom--heavy\">\n <Headline bold={true}>{t(Translation.Step.Date.Reservation)}</Headline>\n </div>\n <Headline color={Color.Navy}>{hotel.name}</Headline>\n {!hideByLine && (\n <Text color={Color.DarkGrey}>\n {t(Translation.Misc.By)} {ccx.name}\n </Text>\n )}\n </div>\n <div className=\"col-md-8 col-lg-9\">\n <div className=\"row justify-content-between\">\n <div className=\"col-md-6\">\n <div className=\"u-marg-bottom--heavy\">\n <Headline bold={true}>{t(Translation.Step.Date.SelectYourDate)}</Headline>\n </div>\n <div className=\"step-one-status\">\n <StepOneDateRange />\n <StepOneStatusPeople />\n </div>\n </div>\n <div className=\"col-md-4\">\n <StepDatePricePerRoom isMobile={false} />\n </div>\n </div>\n </div>\n </div>\n <LineBreak />\n </>\n )}\n\n <div className=\"row flex-column-reverse flex-md-row align-items-center align-items-md-start\">\n <div ref={peopleRef} className=\"col-md-4 col-xl-3\">\n <PeoplePicker />\n </div>\n <div className=\"col-md-8 col-xl-9\">\n <div className=\"w-100 u-flex justify-content-center flex-column align-items-center\">\n <Suspense fallback=\"loading....\">\n <StepOneDateRangePicker />\n </Suspense>\n </div>\n {context.screenSize >= ScreenSize.Large ? <StepOneDateRangePickerLegend /> : <LineBreak />}\n </div>\n </div>\n <div className=\"u-flex justify-content-end\">\n <StepOneNextStepButton history={props.history} />\n </div>\n </div>\n );\n};\n\nexport default withRouter(StepDate);\n"]}
1
+ {"version":3,"file":"StepDateComponent.js","sourceRoot":"/","sources":["src/pages/steps/StepDate/StepDateComponent.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport Headline from '../../../components/generic/Headline';\nimport Text from '../../../components/generic/Text';\n\nimport { Color } from '../../../util/Color';\nimport { withRouter } from 'react-router';\n\nimport { useTranslation } from 'react-i18next';\n\nimport { Translation } from '../../../translations/Translation';\nimport ScreenSize from '../../../util/ScreenSize';\nimport StepOneStatusPeople from '../../../components/steps/date/StepOneStatusPeople';\nimport StepOneDateRange from '../../../components/steps/date/StepOneDateRange';\nimport StepOneNextStepButton from '../../../components/steps/date/StepOneNextStepButton';\nimport { useContext, useRef, useEffect, Suspense, lazy } from 'react';\n\nimport StepOneDateRangePickerLegend from '../../../components/steps/date/StepOneDateRangePickerLegend';\nimport StepDatePricePerRoom from '../../../components/steps/date/StepDatePricePerRoom';\nimport { BasketContext, BookingEngineContext } from '@frontend/contexts';\n\nimport LineBreak from '../../../components/generic/LineBreak';\nimport PeoplePicker from '../../../components/steps/date/PeoplePicker';\nimport StepOneDateRangePicker from '../../../components/steps/date/StepOneDateRangePicker';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport { CompanyContext } from '@frontend/contexts';\nimport { HotelOverridesContext } from '../../../contexts/HotelOverridesContext';\nimport { StepDateViewEvent } from '../../../events';\n\nconst BEMobileSummary = lazy(() => import('../../../components/summary/BEMobileSummary'));\n\nconst StepDate = (props: any) => {\n const context = useContext(BookingEngineContext);\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const { hideByLine } = useContext(HotelOverridesContext);\n\n const { hotel } = useCurrentHotel();\n\n const { t } = useTranslation();\n const peopleRef = useRef(null);\n\n useEffect(() => {\n if (context.screenSize <= ScreenSize.Medium && basketContext.endDate) {\n if (peopleRef) {\n setTimeout(() => {\n peopleRef.current?.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });\n }, 50);\n }\n }\n }, [basketContext.endDate]);\n\n const { raise } = useEvent();\n\n useEffect(() => {\n const event = new StepDateViewEvent();\n raise(event);\n }, []);\n\n return (\n <div className=\"container\">\n {context.screenSize <= ScreenSize.Medium && <BEMobileSummary />}\n {context.screenSize >= ScreenSize.Large && (\n <>\n <div className=\"row\">\n <div className=\"col-md-4 col-lg-3\">\n <div className=\"u-marg-bottom--heavy\">\n <Headline bold={true}>{t(Translation.Step.Date.Reservation)}</Headline>\n </div>\n <Headline color={Color.Navy}>{hotel.name}</Headline>\n {!hideByLine && (\n <Text color={Color.DarkGrey}>\n {t(Translation.Misc.By)} {ccx.name}\n </Text>\n )}\n </div>\n <div className=\"col-md-8 col-lg-9\">\n <div className=\"row justify-content-between\">\n <div className=\"col-md-6\">\n <div className=\"u-marg-bottom--heavy\">\n <Headline bold={true}>{t(Translation.Step.Date.SelectYourDate)}</Headline>\n </div>\n <div className=\"step-one-status\">\n <StepOneDateRange />\n <StepOneStatusPeople />\n </div>\n </div>\n <div className=\"col-md-4\">\n <StepDatePricePerRoom isMobile={false} />\n </div>\n </div>\n </div>\n </div>\n <LineBreak />\n </>\n )}\n\n <div className=\"row flex-column-reverse flex-md-row align-items-center align-items-md-start\">\n <div ref={peopleRef} className=\"col-md-4 col-xl-3\">\n <PeoplePicker />\n </div>\n <div className=\"col-md-8 col-xl-9\">\n <div className=\"w-100 u-flex justify-content-center flex-column align-items-center\">\n <Suspense fallback=\"loading....\">\n <StepOneDateRangePicker />\n </Suspense>\n </div>\n {context.screenSize >= ScreenSize.Large ? <StepOneDateRangePickerLegend /> : <LineBreak />}\n </div>\n </div>\n <div className=\"u-flex justify-content-end\">\n <StepOneNextStepButton history={props.history} />\n </div>\n </div>\n );\n};\n\nexport default withRouter(StepDate);\n"]}
@@ -11,11 +11,11 @@ const LineBreak_1 = require("../../../components/generic/LineBreak");
11
11
  const HotelCardList_1 = require("../../../components/steps/hotel/HotelCardList");
12
12
  const HotelSearchParameters_1 = require("../../../components/steps/hotel/HotelSearchParameters");
13
13
  const contexts_1 = require("@frontend/contexts");
14
- const contexts_2 = require("@frontend/contexts");
15
- const contexts_3 = require("@frontend/contexts");
16
14
  const Translation_1 = require("../../../translations/Translation");
17
15
  const Color_1 = require("../../../util/Color");
18
16
  const ScreenSize_1 = require("../../../util/ScreenSize");
17
+ const hooks_1 = require("@frontend/hooks");
18
+ const events_1 = require("../../../events");
19
19
  var SortByOptions;
20
20
  (function (SortByOptions) {
21
21
  SortByOptions["Recommended"] = "R";
@@ -29,15 +29,20 @@ const StepHotelComponent = () => {
29
29
  { value: SortByOptions.LowestPrice, text: 'Lowest Price' },
30
30
  { value: SortByOptions.HighestPrice, text: 'Highest Price' },
31
31
  ];
32
- const ccx = react_1.useContext(contexts_2.CompanyContext);
32
+ const ccx = react_1.useContext(contexts_1.CompanyContext);
33
33
  const context = react_1.useContext(contexts_1.BookingEngineContext);
34
34
  const basketContext = react_1.useContext(contexts_1.BasketContext);
35
- const fullPageContext = react_1.useContext(contexts_3.FullPageEngineContext);
35
+ const fullPageContext = react_1.useContext(contexts_1.FullPageEngineContext);
36
36
  const [sortBy, setSortBy] = react_1.useState(sortByValues[0].value);
37
37
  const [city, setCity] = react_1.useState((_a = fullPageContext.urlParameters.defaultCity) !== null && _a !== void 0 ? _a : 'All');
38
38
  const [cityOptions, setCityOptions] = react_1.useState([]);
39
39
  const [sortedHotels, setSortedHotels] = react_1.useState();
40
40
  const basketRow = (_b = basketContext.selectedBasketRow) !== null && _b !== void 0 ? _b : basketContext.currentBasketRows[0];
41
+ const { raise } = hooks_1.useEvent();
42
+ react_1.useEffect(() => {
43
+ const event = new events_1.StepHotelViewEvent();
44
+ raise(event);
45
+ }, []);
41
46
  react_1.useEffect(() => {
42
47
  const hotelsToShow = ccx.hotels.filter((hotel) => {
43
48
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"StepHotelComponent.js","sourceRoot":"/","sources":["src/pages/steps/StepHotel/StepHotelComponent.tsx"],"names":[],"mappings":";;AAAA,+BAA+B;AAC/B,+BAA+B;AAC/B,iCAAwD;AACxD,iDAA+C;AAC/C,mEAA4D;AAC5D,2DAAkE;AAClE,mEAA4D;AAC5D,qEAA8D;AAC9D,iFAA0E;AAC1E,iGAA0F;AAC1F,iDAAyE;AACzE,iDAAoD;AACpD,iDAA2D;AAG3D,mEAAgE;AAChE,+CAA4C;AAC5C,yDAAkD;AAElD,IAAK,aAIJ;AAJD,WAAK,aAAa;IACd,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,mCAAkB,CAAA;AACtB,CAAC,EAJI,aAAa,KAAb,aAAa,QAIjB;AAED,MAAM,kBAAkB,GAAG,GAAG,EAAE;;IAC5B,MAAM,YAAY,GAAG;QACjB,EAAE,KAAK,EAAE,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE;QACzD,EAAE,KAAK,EAAE,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE;QAC1D,EAAE,KAAK,EAAE,aAAa,CAAC,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE;KAC/D,CAAC;IAEF,MAAM,GAAG,GAAG,kBAAU,CAAC,yBAAc,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,kBAAU,CAAC,+BAAoB,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,kBAAU,CAAC,wBAAa,CAAC,CAAC;IAChD,MAAM,eAAe,GAAG,kBAAU,CAAC,gCAAqB,CAAC,CAAC;IAE1D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,gBAAQ,CAAgB,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3E,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,gBAAQ,OAAC,eAAe,CAAC,aAAa,CAAC,WAAW,mCAAI,KAAK,CAAC,CAAC;IAErF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,gBAAQ,CAAC,EAAE,CAAC,CAAC;IAEnD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,gBAAQ,EAAW,CAAC;IAE5D,MAAM,SAAS,SAAG,aAAa,CAAC,iBAAiB,mCAAI,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAExF,iBAAS,CAAC,GAAG,EAAE;QACX,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAY,EAAE,EAAE;;YACpD,IAAI,OAAA,KAAK,CAAC,OAAO,0CAAE,IAAI,MAAK,IAAI,EAAE;gBAC9B,OAAO,KAAK,CAAC;aAChB;iBAAM,IAAI,IAAI,KAAK,KAAK,EAAE;gBACvB,OAAO,KAAK,CAAC;aAChB;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,MAAM,KAAK,aAAa,CAAC,WAAW,EAAE;YACtC,eAAe,CAAC,YAAY,CAAC,CAAC;SACjC;aAAM;YACH,eAAe,CACX,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAQ,EAAE,CAAQ,EAAE,EAAE;;gBAC1C,QAAQ,MAAM,EAAE;oBACZ,KAAK,aAAa,CAAC,WAAW;wBAC1B,OAAO,OAAA,CAAC,CAAC,WAAW,0CAAE,KAAK,WAAG,CAAC,CAAC,WAAW,0CAAE,KAAK,CAAA,CAAC;oBACvD,KAAK,aAAa,CAAC,YAAY;wBAC3B,OAAO,OAAA,CAAC,CAAC,WAAW,0CAAE,KAAK,WAAG,CAAC,CAAC,WAAW,0CAAE,KAAK,CAAA,CAAC;iBAC1D;YACL,CAAC,CAAC,CACL,CAAC;SACL;IACL,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/B,iBAAS,CAAC,GAAG,EAAE;QACX,MAAM,MAAM,GAAgC,EAAE,CAAC;QAE/C,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAY,EAAE,EAAE;YAChC,sCAAsC;YACtC,IAAI,KAAK,CAAC,OAAO,EAAE;gBACf,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;aACxF;QACL,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAEjB,iBAAS,CAAC,GAAG,EAAE;QACX,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACzB,GAAG,CAAC,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,YAAY,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,YAAY,GAAG,CAAC,CAAC;IAEtI,MAAM,EAAE,CAAC,EAAE,GAAG,8BAAc,EAAE,CAAC;IAE/B,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAE,EAAE;QACvC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,QAAuB,EAAE,EAAE;QAC7C,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;;QACtB,OAAO,OAAC,WAAW,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAC,CAAC;QAC/B,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF,iBAAS,CAAC,GAAG,EAAE;QACX,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;QAEvC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE;YACxB,IAAI,SAAS,EAAE;gBACX,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;aACjD;iBAAM;gBACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC9C,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;aAC/C;YAED,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;SAC5C;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACH,6BAAK,SAAS,EAAC,WAAW;QACtB,6BAAK,SAAS,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,6BAAK,SAAS,EAAC,UAAU,IAEjB,6BAAK,SAAS,EAAC,qBAAqB;gBAChC,6BAAK,SAAS,EAAC,yBAAyB;oBACpC,oBAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ;wBAC7C,oCAAS,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAU,CAC/C;oBACP;wBACI,oBAAC,kBAAQ,IAAC,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAI,CAC9E,CACJ;gBACN,6BAAK,SAAS,EAAC,yBAAyB;oBACpC;wBACI,oBAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ;4BAC7C,6CAAuB,CACpB;wBACP,6BAAK,SAAS,EAAC,0DAA0D;4BACrE,oBAAC,kBAAQ,IAAC,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,GAAI,CAC5E,CACJ,CACJ;gBACN,6BAAK,SAAS,EAAE,qDAAqD,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,oBAAU,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxI,oBAAC,kBAAQ,IAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,EAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,YAAK,WAAW,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAA,IAAI,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,gBAE7H,CACT,CACJ,CAER,CACJ;QACN,oBAAC,mBAAS,OAAG;QACZ,oBAAC,+BAAqB,OAAG;QAC1B,oBAAC,uBAAa,IAAC,SAAS,EAAE,YAAY,GAAI,CACxC,CACT,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,kBAAkB,CAAC","sourcesContent":["import * as dayjs from 'dayjs';\nimport * as React from 'react';\nimport { useEffect, useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport BEButton from '../../../components/generic/BEButton';\nimport Text, { TextType } from '../../../components/generic/Text';\nimport BESelect from '../../../components/generic/BESelect';\nimport LineBreak from '../../../components/generic/LineBreak';\nimport HotelCardList from '../../../components/steps/hotel/HotelCardList';\nimport HotelSearchParameters from '../../../components/steps/hotel/HotelSearchParameters';\nimport { BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport { CompanyContext } from '@frontend/contexts';\nimport { FullPageEngineContext } from '@frontend/contexts';\nimport type { Hotel } from '../../../models/Client/Hotel/Hotel';\n\nimport { Translation } from '../../../translations/Translation';\nimport { Color } from '../../../util/Color';\nimport ScreenSize from '../../../util/ScreenSize';\n\nenum SortByOptions {\n Recommended = 'R',\n LowestPrice = 'L',\n HighestPrice = 'H',\n}\n\nconst StepHotelComponent = () => {\n const sortByValues = [\n { value: SortByOptions.Recommended, text: 'Recommended' },\n { value: SortByOptions.LowestPrice, text: 'Lowest Price' },\n { value: SortByOptions.HighestPrice, text: 'Highest Price' },\n ];\n\n const ccx = useContext(CompanyContext);\n const context = useContext(BookingEngineContext);\n const basketContext = useContext(BasketContext);\n const fullPageContext = useContext(FullPageEngineContext);\n\n const [sortBy, setSortBy] = useState<SortByOptions>(sortByValues[0].value);\n const [city, setCity] = useState(fullPageContext.urlParameters.defaultCity ?? 'All');\n\n const [cityOptions, setCityOptions] = useState([]);\n\n const [sortedHotels, setSortedHotels] = useState<Hotel[]>();\n\n const basketRow = basketContext.selectedBasketRow ?? basketContext.currentBasketRows[0];\n\n useEffect(() => {\n const hotelsToShow = ccx.hotels.filter((hotel: Hotel) => {\n if (hotel.address?.city === city) {\n return hotel;\n } else if (city === 'All') {\n return hotel;\n }\n });\n\n if (sortBy === SortByOptions.Recommended) {\n setSortedHotels(hotelsToShow);\n } else {\n setSortedHotels(\n [...hotelsToShow].sort((a: Hotel, b: Hotel) => {\n switch (sortBy) {\n case SortByOptions.LowestPrice:\n return a.lowestPrice?.value - b.lowestPrice?.value;\n case SortByOptions.HighestPrice:\n return b.lowestPrice?.value - a.lowestPrice?.value;\n }\n })\n );\n }\n }, [ccx.hotels, sortBy, city]);\n\n useEffect(() => {\n const cities: { [cityName: string]: any } = {};\n\n ccx.hotels.forEach((hotel: Hotel) => {\n // We must wait till address is loaded\n if (hotel.address) {\n cities[hotel.address.city] = { value: hotel.address.city, text: hotel.address.city };\n }\n });\n\n setCityOptions([{ value: 'All', text: 'All' }, ...Object.values(cities)]);\n }, [ccx.hotels]);\n\n useEffect(() => {\n ccx.hotels.forEach((hotel) => {\n ccx.updateLowestPricePerNight(hotel, basketRow);\n });\n }, [basketRow?.getStartDate(), basketRow?.getEndDate(), basketRow?.getAdults(), basketRow?.getChildren(), basketRow?.getPromoCode()]);\n\n const { t } = useTranslation();\n\n const changeCountry = (selected: string) => {\n setCity(selected);\n };\n\n const changeFilter = (selected: SortByOptions) => {\n setSortBy(selected);\n };\n\n const clearFilters = () => {\n setCity(cityOptions[0]?.value);\n setSortBy(sortByValues[0].value);\n };\n\n useEffect(() => {\n const startDate = basketRow.getStartDate();\n const endDate = basketRow.getEndDate();\n\n if (!startDate || !endDate) {\n if (startDate) {\n basketRow.setEndDate(startDate.add(1, 'day'));\n } else {\n basketRow.setStartDate(dayjs().add(1, 'day'));\n basketRow.setEndDate(dayjs().add(2, 'day'));\n }\n\n basketContext.updateBasketRow(basketRow);\n }\n }, []);\n\n return (\n <div className=\"container\">\n <div className={'row' + (context.screenSize > ScreenSize.ExtraLarge ? ' no-gutters' : '')}>\n <div className=\"col-md-8\">\n {\n <div className=\"row align-items-end\">\n <div className=\"col-6 col-md-4 col-lg-3\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <strong>{t(Translation.Step.Room.SortBy)}</strong>\n </Text>\n <div>\n <BESelect items={sortByValues} selectedValue={sortBy} onChange={changeFilter} />\n </div>\n </div>\n <div className=\"col-6 col-md-2 col-lg-2\">\n <div>\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <strong>Cities</strong>\n </Text>\n <div className=\"filter-button d-flex align-items-center u-cursor-pointer\">\n <BESelect items={cityOptions} selectedValue={city} onChange={changeCountry} />\n </div>\n </div>\n </div>\n <div className={'col-sm-12 col-md-2 col-lg-1 u-flex u-flex-flex-end ' + (context.screenSize <= ScreenSize.Medium ? 'u-marg-top--light' : '')}>\n <BEButton rounded={true} size=\"tiny\" onClick={clearFilters} disabled={city === cityOptions[0]?.value && sortBy === sortByValues[0].value}>\n Clear all\n </BEButton>\n </div>\n </div>\n }\n </div>\n </div>\n <LineBreak />\n {<HotelSearchParameters />}\n <HotelCardList hotelList={sortedHotels} />\n </div>\n );\n};\n\nexport default StepHotelComponent;\n"]}
1
+ {"version":3,"file":"StepHotelComponent.js","sourceRoot":"/","sources":["src/pages/steps/StepHotel/StepHotelComponent.tsx"],"names":[],"mappings":";;AAAA,+BAA+B;AAC/B,+BAA+B;AAC/B,iCAAwD;AACxD,iDAA+C;AAC/C,mEAA4D;AAC5D,2DAAkE;AAClE,mEAA4D;AAC5D,qEAA8D;AAC9D,iFAA0E;AAC1E,iGAA0F;AAC1F,iDAAgH;AAGhH,mEAAgE;AAChE,+CAA4C;AAC5C,yDAAkD;AAClD,2CAA2C;AAC3C,4CAAqD;AAErD,IAAK,aAIJ;AAJD,WAAK,aAAa;IACd,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,mCAAkB,CAAA;AACtB,CAAC,EAJI,aAAa,KAAb,aAAa,QAIjB;AAED,MAAM,kBAAkB,GAAG,GAAG,EAAE;;IAC5B,MAAM,YAAY,GAAG;QACjB,EAAE,KAAK,EAAE,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE;QACzD,EAAE,KAAK,EAAE,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE;QAC1D,EAAE,KAAK,EAAE,aAAa,CAAC,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE;KAC/D,CAAC;IAEF,MAAM,GAAG,GAAG,kBAAU,CAAC,yBAAc,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,kBAAU,CAAC,+BAAoB,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,kBAAU,CAAC,wBAAa,CAAC,CAAC;IAChD,MAAM,eAAe,GAAG,kBAAU,CAAC,gCAAqB,CAAC,CAAC;IAE1D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,gBAAQ,CAAgB,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3E,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,gBAAQ,OAAC,eAAe,CAAC,aAAa,CAAC,WAAW,mCAAI,KAAK,CAAC,CAAC;IAErF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,gBAAQ,CAAC,EAAE,CAAC,CAAC;IAEnD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,gBAAQ,EAAW,CAAC;IAE5D,MAAM,SAAS,SAAG,aAAa,CAAC,iBAAiB,mCAAI,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAExF,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAQ,EAAE,CAAC;IAE7B,iBAAS,CAAC,GAAG,EAAE;QACX,MAAM,KAAK,GAAG,IAAI,2BAAkB,EAAE,CAAC;QACvC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,iBAAS,CAAC,GAAG,EAAE;QACX,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAY,EAAE,EAAE;;YACpD,IAAI,OAAA,KAAK,CAAC,OAAO,0CAAE,IAAI,MAAK,IAAI,EAAE;gBAC9B,OAAO,KAAK,CAAC;aAChB;iBAAM,IAAI,IAAI,KAAK,KAAK,EAAE;gBACvB,OAAO,KAAK,CAAC;aAChB;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,MAAM,KAAK,aAAa,CAAC,WAAW,EAAE;YACtC,eAAe,CAAC,YAAY,CAAC,CAAC;SACjC;aAAM;YACH,eAAe,CACX,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAQ,EAAE,CAAQ,EAAE,EAAE;;gBAC1C,QAAQ,MAAM,EAAE;oBACZ,KAAK,aAAa,CAAC,WAAW;wBAC1B,OAAO,OAAA,CAAC,CAAC,WAAW,0CAAE,KAAK,WAAG,CAAC,CAAC,WAAW,0CAAE,KAAK,CAAA,CAAC;oBACvD,KAAK,aAAa,CAAC,YAAY;wBAC3B,OAAO,OAAA,CAAC,CAAC,WAAW,0CAAE,KAAK,WAAG,CAAC,CAAC,WAAW,0CAAE,KAAK,CAAA,CAAC;iBAC1D;YACL,CAAC,CAAC,CACL,CAAC;SACL;IACL,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/B,iBAAS,CAAC,GAAG,EAAE;QACX,MAAM,MAAM,GAAgC,EAAE,CAAC;QAE/C,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAY,EAAE,EAAE;YAChC,sCAAsC;YACtC,IAAI,KAAK,CAAC,OAAO,EAAE;gBACf,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;aACxF;QACL,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAEjB,iBAAS,CAAC,GAAG,EAAE;QACX,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACzB,GAAG,CAAC,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,YAAY,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,YAAY,GAAG,CAAC,CAAC;IAEtI,MAAM,EAAE,CAAC,EAAE,GAAG,8BAAc,EAAE,CAAC;IAE/B,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAE,EAAE;QACvC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,QAAuB,EAAE,EAAE;QAC7C,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;;QACtB,OAAO,OAAC,WAAW,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAC,CAAC;QAC/B,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF,iBAAS,CAAC,GAAG,EAAE;QACX,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;QAEvC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE;YACxB,IAAI,SAAS,EAAE;gBACX,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;aACjD;iBAAM;gBACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC9C,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;aAC/C;YAED,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;SAC5C;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACH,6BAAK,SAAS,EAAC,WAAW;QACtB,6BAAK,SAAS,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,6BAAK,SAAS,EAAC,UAAU,IAEjB,6BAAK,SAAS,EAAC,qBAAqB;gBAChC,6BAAK,SAAS,EAAC,yBAAyB;oBACpC,oBAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ;wBAC7C,oCAAS,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAU,CAC/C;oBACP;wBACI,oBAAC,kBAAQ,IAAC,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAI,CAC9E,CACJ;gBACN,6BAAK,SAAS,EAAC,yBAAyB;oBACpC;wBACI,oBAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ;4BAC7C,6CAAuB,CACpB;wBACP,6BAAK,SAAS,EAAC,0DAA0D;4BACrE,oBAAC,kBAAQ,IAAC,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,GAAI,CAC5E,CACJ,CACJ;gBACN,6BAAK,SAAS,EAAE,qDAAqD,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,oBAAU,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxI,oBAAC,kBAAQ,IAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,EAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,YAAK,WAAW,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAA,IAAI,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,gBAE7H,CACT,CACJ,CAER,CACJ;QACN,oBAAC,mBAAS,OAAG;QACZ,oBAAC,+BAAqB,OAAG;QAC1B,oBAAC,uBAAa,IAAC,SAAS,EAAE,YAAY,GAAI,CACxC,CACT,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,kBAAkB,CAAC","sourcesContent":["import * as dayjs from 'dayjs';\nimport * as React from 'react';\nimport { useEffect, useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport BEButton from '../../../components/generic/BEButton';\nimport Text, { TextType } from '../../../components/generic/Text';\nimport BESelect from '../../../components/generic/BESelect';\nimport LineBreak from '../../../components/generic/LineBreak';\nimport HotelCardList from '../../../components/steps/hotel/HotelCardList';\nimport HotelSearchParameters from '../../../components/steps/hotel/HotelSearchParameters';\nimport { BasketContext, BookingEngineContext, CompanyContext, FullPageEngineContext } from '@frontend/contexts';\nimport type { Hotel } from '../../../models/Client/Hotel/Hotel';\n\nimport { Translation } from '../../../translations/Translation';\nimport { Color } from '../../../util/Color';\nimport ScreenSize from '../../../util/ScreenSize';\nimport { useEvent } from '@frontend/hooks';\nimport { StepHotelViewEvent } from '../../../events';\n\nenum SortByOptions {\n Recommended = 'R',\n LowestPrice = 'L',\n HighestPrice = 'H',\n}\n\nconst StepHotelComponent = () => {\n const sortByValues = [\n { value: SortByOptions.Recommended, text: 'Recommended' },\n { value: SortByOptions.LowestPrice, text: 'Lowest Price' },\n { value: SortByOptions.HighestPrice, text: 'Highest Price' },\n ];\n\n const ccx = useContext(CompanyContext);\n const context = useContext(BookingEngineContext);\n const basketContext = useContext(BasketContext);\n const fullPageContext = useContext(FullPageEngineContext);\n\n const [sortBy, setSortBy] = useState<SortByOptions>(sortByValues[0].value);\n const [city, setCity] = useState(fullPageContext.urlParameters.defaultCity ?? 'All');\n\n const [cityOptions, setCityOptions] = useState([]);\n\n const [sortedHotels, setSortedHotels] = useState<Hotel[]>();\n\n const basketRow = basketContext.selectedBasketRow ?? basketContext.currentBasketRows[0];\n\n const { raise } = useEvent();\n\n useEffect(() => {\n const event = new StepHotelViewEvent();\n raise(event);\n }, []);\n\n useEffect(() => {\n const hotelsToShow = ccx.hotels.filter((hotel: Hotel) => {\n if (hotel.address?.city === city) {\n return hotel;\n } else if (city === 'All') {\n return hotel;\n }\n });\n\n if (sortBy === SortByOptions.Recommended) {\n setSortedHotels(hotelsToShow);\n } else {\n setSortedHotels(\n [...hotelsToShow].sort((a: Hotel, b: Hotel) => {\n switch (sortBy) {\n case SortByOptions.LowestPrice:\n return a.lowestPrice?.value - b.lowestPrice?.value;\n case SortByOptions.HighestPrice:\n return b.lowestPrice?.value - a.lowestPrice?.value;\n }\n })\n );\n }\n }, [ccx.hotels, sortBy, city]);\n\n useEffect(() => {\n const cities: { [cityName: string]: any } = {};\n\n ccx.hotels.forEach((hotel: Hotel) => {\n // We must wait till address is loaded\n if (hotel.address) {\n cities[hotel.address.city] = { value: hotel.address.city, text: hotel.address.city };\n }\n });\n\n setCityOptions([{ value: 'All', text: 'All' }, ...Object.values(cities)]);\n }, [ccx.hotels]);\n\n useEffect(() => {\n ccx.hotels.forEach((hotel) => {\n ccx.updateLowestPricePerNight(hotel, basketRow);\n });\n }, [basketRow?.getStartDate(), basketRow?.getEndDate(), basketRow?.getAdults(), basketRow?.getChildren(), basketRow?.getPromoCode()]);\n\n const { t } = useTranslation();\n\n const changeCountry = (selected: string) => {\n setCity(selected);\n };\n\n const changeFilter = (selected: SortByOptions) => {\n setSortBy(selected);\n };\n\n const clearFilters = () => {\n setCity(cityOptions[0]?.value);\n setSortBy(sortByValues[0].value);\n };\n\n useEffect(() => {\n const startDate = basketRow.getStartDate();\n const endDate = basketRow.getEndDate();\n\n if (!startDate || !endDate) {\n if (startDate) {\n basketRow.setEndDate(startDate.add(1, 'day'));\n } else {\n basketRow.setStartDate(dayjs().add(1, 'day'));\n basketRow.setEndDate(dayjs().add(2, 'day'));\n }\n\n basketContext.updateBasketRow(basketRow);\n }\n }, []);\n\n return (\n <div className=\"container\">\n <div className={'row' + (context.screenSize > ScreenSize.ExtraLarge ? ' no-gutters' : '')}>\n <div className=\"col-md-8\">\n {\n <div className=\"row align-items-end\">\n <div className=\"col-6 col-md-4 col-lg-3\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <strong>{t(Translation.Step.Room.SortBy)}</strong>\n </Text>\n <div>\n <BESelect items={sortByValues} selectedValue={sortBy} onChange={changeFilter} />\n </div>\n </div>\n <div className=\"col-6 col-md-2 col-lg-2\">\n <div>\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <strong>Cities</strong>\n </Text>\n <div className=\"filter-button d-flex align-items-center u-cursor-pointer\">\n <BESelect items={cityOptions} selectedValue={city} onChange={changeCountry} />\n </div>\n </div>\n </div>\n <div className={'col-sm-12 col-md-2 col-lg-1 u-flex u-flex-flex-end ' + (context.screenSize <= ScreenSize.Medium ? 'u-marg-top--light' : '')}>\n <BEButton rounded={true} size=\"tiny\" onClick={clearFilters} disabled={city === cityOptions[0]?.value && sortBy === sortByValues[0].value}>\n Clear all\n </BEButton>\n </div>\n </div>\n }\n </div>\n </div>\n <LineBreak />\n {<HotelSearchParameters />}\n <HotelCardList hotelList={sortedHotels} />\n </div>\n );\n};\n\nexport default StepHotelComponent;\n"]}
@@ -19,14 +19,33 @@ const dayjs = require("dayjs");
19
19
  const hooks_1 = require("@frontend/hooks");
20
20
  const CommonAddonSummary_1 = require("components/steps/common/CommonAddonSummary/CommonAddonSummary");
21
21
  const TotalCalculator_1 = require("util/TotalCalculator");
22
+ const events_1 = require("../../../events");
22
23
  function StepThanksComponent() {
23
24
  var _a, _b;
24
25
  const basketContext = react_1.useContext(contexts_1.BasketContext);
25
26
  const { hotel } = hooks_1.useCurrentHotel();
27
+ const ccx = react_1.useContext(contexts_1.CompanyContext);
28
+ const { raise } = hooks_1.useEvent();
26
29
  const checkoutData = basketContext.reservationData;
27
30
  const { t } = react_i18next_1.useTranslation();
28
31
  const total = react_1.useCallback(() => {
32
+ var _a;
29
33
  if (checkoutData === null || checkoutData === void 0 ? void 0 : checkoutData.reservations) {
34
+ const reservations = (_a = checkoutData === null || checkoutData === void 0 ? void 0 : checkoutData.reservations) === null || _a === void 0 ? void 0 : _a.map((obj) => {
35
+ const nightKeys = Object.keys(obj.nights);
36
+ const dateFormat = 'YYYY-MM-DDTHH:mm:ss';
37
+ return {
38
+ reservationId: obj.reservationNumber,
39
+ checkInTime: dayjs(nightKeys[0]).format(dateFormat),
40
+ checkOutTime: dayjs(nightKeys[nightKeys.length - 1])
41
+ .add(1, 'day')
42
+ .format(dateFormat),
43
+ totalPrice: obj.total.afterTax,
44
+ priceCurrency: ccx.currentCurrency,
45
+ };
46
+ });
47
+ const event = new events_1.StepThanksViewEvent(reservations);
48
+ raise(event);
30
49
  return TotalCalculator_1.calculateTotalForReservation(checkoutData);
31
50
  }
32
51
  return 0;
@@ -1 +1 @@
1
- {"version":3,"file":"StepThanksComponent.js","sourceRoot":"/","sources":["src/pages/steps/StepThanks/StepThanksComponent.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport Headline from '../../../components/generic/Headline';\nimport { useContext, useCallback } from 'react';\nimport Icon, { IconType } from '../../../components/generic/Icon';\nimport { Color } from '../../../util/Color';\nimport Text, { TextType } from '../../../components/generic/Text';\nimport BEButton from '../../../components/generic/BEButton';\nimport { Link } from 'react-router-dom';\nimport Currency from '../../../components/generic/Currency';\nimport LineBreak from '../../../components/generic/LineBreak';\nimport { TextAlign } from '../../../util/TextAlignment';\nimport { Translation } from '../../../translations/Translation';\nimport { useTranslation } from 'react-i18next';\nimport { BasketContext } from '@frontend/contexts';\nimport { ReservationAddonDTO, ReservationDTO } from '../../../models/Api/ReservationsDTO';\nimport ReservationRow from '../../findReservation/ReservationRow';\nimport * as dayjs from 'dayjs';\n\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { CommonAddonSummary } from 'components/steps/common/CommonAddonSummary/CommonAddonSummary';\nimport { calculateTotalForReservation } from 'util/TotalCalculator';\n\nexport default function StepThanksComponent() {\n const basketContext = useContext(BasketContext);\n\n const { hotel } = useCurrentHotel();\n\n const checkoutData = basketContext.reservationData;\n\n const { t } = useTranslation();\n\n const total = useCallback(() => {\n if (checkoutData?.reservations) {\n return calculateTotalForReservation(checkoutData);\n }\n\n return 0;\n }, [checkoutData]);\n\n const addons: ReservationAddonDTO[] = [];\n const comments: string[] = [];\n\n return (\n <div className=\"container u-marg-top--heavy\">\n <div className=\"row justify-content-center\">\n <div className=\"col-lg-8 col-md-12 u-flex align-items-center u-flex-direction-column\">\n <div className=\"u-marg-bottom\">\n <Icon icon={IconType.Check} size={'48px'} color={Color.White} backgroundColor={Color.Accent} borderRadius={'round'} noPadding={true} />\n </div>\n <div className=\"u-marg-bottom\" style={{ maxWidth: '530px' }}>\n <Headline size={'large'} align={TextAlign.Center}>\n {t(Translation.Step.Thanks.ThankYouHeadline, { hotel: hotel.name })}\n </Headline>\n </div>\n <div className=\"u-marg-bottom--heavy\">\n <Text color={Color.DarkGrey}>\n {t(Translation.Step.Thanks.InvoiceNumber)} {checkoutData.itineraryNumber}\n </Text>\n </div>\n <div className=\"u-marg-bottom--massive\">\n <Link to=\"/\">\n <BEButton>{t(Translation.Step.Thanks.GoBackHome)}</BEButton>\n </Link>\n </div>\n <>\n <div className=\"u-marg-top w-100\">\n {checkoutData?.reservations?.map((obj: ReservationDTO) => {\n if (obj.addons) {\n const nights = Object.keys(obj.nights);\n obj.addons.forEach((addon) => addons.push({ ...addon, nights: nights.length }));\n }\n\n if (obj.comments) {\n obj.comments.map((comment: string) => {\n comments.push(comment);\n });\n }\n\n return <ReservationRow reservation={obj} key={obj.reservationNumber} />;\n })}\n </div>\n <LineBreak />\n\n <div className=\"w-100\">\n <CommonAddonSummary addons={addons} />\n {comments.length >= 1 && (\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Label} color={Color.Grey}>\n {t(Translation.Step.Confirmation.Comments)}\n </Text>\n </div>\n {comments.map((comment, index) => (\n <Text key={index} type={TextType.Small}>\n {comment}\n </Text>\n ))}\n </div>\n )}\n <Text type={TextType.Small} align={TextAlign.Right}>\n {t(Translation.Misc.Total)}\n </Text>\n <Headline bold={true} size={'large'} align={TextAlign.Right}>\n <Currency>{total}</Currency>\n </Headline>\n <Text type={TextType.Small} align={TextAlign.Right} color={Color.DarkGrey}>\n {t(Translation.Step.Thanks.IncludingTaxes)}\n </Text>\n </div>\n </>\n </div>\n </div>\n {checkoutData?.reservations?.map((obj: ReservationDTO, index) => {\n const nightKeys = Object.keys(obj.nights);\n\n const firstNight = dayjs(nightKeys[0]);\n const lastNight = dayjs(nightKeys[nightKeys.length - 1]).add(1, 'day');\n\n return (\n <script key={index} type=\"application/ld+json\">\n {JSON.stringify({\n '@context': 'http://schema.org',\n '@type': 'LodgingReservation',\n reservationId: obj.reservationNumber,\n reservationStatus: 'http://schema.org/ReservationConfirmed',\n checkinTime: firstNight.format('YYYY-MM-DDTHH:mm:ss'),\n checkoutTime: lastNight.format('YYYY-MM-DDTHH:mm:ss'),\n totalPrice: obj.total.afterTax,\n priceCurrency: 'AUD',\n })}\n </script>\n );\n })}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"StepThanksComponent.js","sourceRoot":"/","sources":["src/pages/steps/StepThanks/StepThanksComponent.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport Headline from '../../../components/generic/Headline';\nimport { useContext, useCallback, useEffect } from 'react';\nimport Icon, { IconType } from '../../../components/generic/Icon';\nimport { Color } from '../../../util/Color';\nimport Text, { TextType } from '../../../components/generic/Text';\nimport BEButton from '../../../components/generic/BEButton';\nimport { Link } from 'react-router-dom';\nimport Currency from '../../../components/generic/Currency';\nimport LineBreak from '../../../components/generic/LineBreak';\nimport { TextAlign } from '../../../util/TextAlignment';\nimport { Translation } from '../../../translations/Translation';\nimport { useTranslation } from 'react-i18next';\nimport { BasketContext, CompanyContext } from '@frontend/contexts';\nimport { ReservationAddonDTO, ReservationDTO } from '../../../models/Api/ReservationsDTO';\nimport ReservationRow from '../../findReservation/ReservationRow';\nimport * as dayjs from 'dayjs';\n\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport { CommonAddonSummary } from 'components/steps/common/CommonAddonSummary/CommonAddonSummary';\nimport { calculateTotalForReservation } from 'util/TotalCalculator';\nimport { StepThanksViewEvent } from '../../../events';\nimport { IEventReservation } from 'models/Api/IEventReservation';\n\nexport default function StepThanksComponent() {\n const basketContext = useContext(BasketContext);\n\n const { hotel } = useCurrentHotel();\n const ccx = useContext(CompanyContext);\n const { raise } = useEvent();\n\n const checkoutData = basketContext.reservationData;\n\n const { t } = useTranslation();\n\n const total = useCallback(() => {\n if (checkoutData?.reservations) {\n const reservations: IEventReservation[] = checkoutData?.reservations?.map((obj: ReservationDTO) => {\n const nightKeys = Object.keys(obj.nights);\n const dateFormat = 'YYYY-MM-DDTHH:mm:ss';\n\n return {\n reservationId: obj.reservationNumber,\n checkInTime: dayjs(nightKeys[0]).format(dateFormat),\n checkOutTime: dayjs(nightKeys[nightKeys.length - 1])\n .add(1, 'day')\n .format(dateFormat),\n totalPrice: obj.total.afterTax,\n priceCurrency: ccx.currentCurrency,\n };\n });\n\n const event = new StepThanksViewEvent(reservations);\n raise(event);\n\n return calculateTotalForReservation(checkoutData);\n }\n\n return 0;\n }, [checkoutData]);\n\n const addons: ReservationAddonDTO[] = [];\n const comments: string[] = [];\n\n return (\n <div className=\"container u-marg-top--heavy\">\n <div className=\"row justify-content-center\">\n <div className=\"col-lg-8 col-md-12 u-flex align-items-center u-flex-direction-column\">\n <div className=\"u-marg-bottom\">\n <Icon icon={IconType.Check} size={'48px'} color={Color.White} backgroundColor={Color.Accent} borderRadius={'round'} noPadding={true} />\n </div>\n <div className=\"u-marg-bottom\" style={{ maxWidth: '530px' }}>\n <Headline size={'large'} align={TextAlign.Center}>\n {t(Translation.Step.Thanks.ThankYouHeadline, { hotel: hotel.name })}\n </Headline>\n </div>\n <div className=\"u-marg-bottom--heavy\">\n <Text color={Color.DarkGrey}>\n {t(Translation.Step.Thanks.InvoiceNumber)} {checkoutData.itineraryNumber}\n </Text>\n </div>\n <div className=\"u-marg-bottom--massive\">\n <Link to=\"/\">\n <BEButton>{t(Translation.Step.Thanks.GoBackHome)}</BEButton>\n </Link>\n </div>\n <>\n <div className=\"u-marg-top w-100\">\n {checkoutData?.reservations?.map((obj: ReservationDTO) => {\n if (obj.addons) {\n const nights = Object.keys(obj.nights);\n obj.addons.forEach((addon) => addons.push({ ...addon, nights: nights.length }));\n }\n\n if (obj.comments) {\n obj.comments.map((comment: string) => {\n comments.push(comment);\n });\n }\n\n return <ReservationRow reservation={obj} key={obj.reservationNumber} />;\n })}\n </div>\n <LineBreak />\n\n <div className=\"w-100\">\n <CommonAddonSummary addons={addons} />\n {comments.length >= 1 && (\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Label} color={Color.Grey}>\n {t(Translation.Step.Confirmation.Comments)}\n </Text>\n </div>\n {comments.map((comment, index) => (\n <Text key={index} type={TextType.Small}>\n {comment}\n </Text>\n ))}\n </div>\n )}\n <Text type={TextType.Small} align={TextAlign.Right}>\n {t(Translation.Misc.Total)}\n </Text>\n <Headline bold={true} size={'large'} align={TextAlign.Right}>\n <Currency>{total}</Currency>\n </Headline>\n <Text type={TextType.Small} align={TextAlign.Right} color={Color.DarkGrey}>\n {t(Translation.Step.Thanks.IncludingTaxes)}\n </Text>\n </div>\n </>\n </div>\n </div>\n {checkoutData?.reservations?.map((obj: ReservationDTO, index) => {\n const nightKeys = Object.keys(obj.nights);\n\n const firstNight = dayjs(nightKeys[0]);\n const lastNight = dayjs(nightKeys[nightKeys.length - 1]).add(1, 'day');\n\n return (\n <script key={index} type=\"application/ld+json\">\n {JSON.stringify({\n '@context': 'http://schema.org',\n '@type': 'LodgingReservation',\n reservationId: obj.reservationNumber,\n reservationStatus: 'http://schema.org/ReservationConfirmed',\n checkinTime: firstNight.format('YYYY-MM-DDTHH:mm:ss'),\n checkoutTime: lastNight.format('YYYY-MM-DDTHH:mm:ss'),\n totalPrice: obj.total.afterTax,\n priceCurrency: 'AUD',\n })}\n </script>\n );\n })}\n </div>\n );\n}\n"]}