@roomstay/frontend 2.3.0-0 → 2.3.0-2

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 (40) hide show
  1. package/dist/903.bundle.js +1 -1
  2. package/dist/975.bundle.js +1 -1
  3. package/dist/main.bundle.js +1 -1
  4. package/dist/src/components/generic/Select/Select.d.ts +3 -1
  5. package/dist/src/components/generic/Select/Select.js +6 -2
  6. package/dist/src/components/generic/Select/Select.js.map +1 -1
  7. package/dist/src/components/generic/Tooltip/Tooltip.js +4 -1
  8. package/dist/src/components/generic/Tooltip/Tooltip.js.map +1 -1
  9. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js +1 -1
  10. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -1
  11. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.d.ts +4 -1
  12. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js +6 -4
  13. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js.map +1 -1
  14. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +20 -16
  15. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
  16. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.d.ts +2 -0
  17. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.js +1 -1
  18. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.js.map +1 -1
  19. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.d.ts +2 -0
  20. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.js +1 -1
  21. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.js.map +1 -1
  22. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.d.ts +1 -0
  23. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js +2 -2
  24. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js.map +1 -1
  25. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +11 -8
  26. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
  27. package/dist/src/components/summary/BESummaryRoomRow.js +27 -21
  28. package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
  29. package/dist/src/hooks/CurrentHotelHook.d.ts +2 -0
  30. package/dist/src/hooks/CurrentHotelHook.js +19 -3
  31. package/dist/src/hooks/CurrentHotelHook.js.map +1 -1
  32. package/dist/src/index.d.ts +1 -0
  33. package/dist/src/index.js +3 -1
  34. package/dist/src/index.js.map +1 -1
  35. package/dist/src/pages/steps/Step.d.ts +1 -1
  36. package/dist/src/pages/steps/Step.js.map +1 -1
  37. package/dist/src/util/Color.js +3 -0
  38. package/dist/src/util/Color.js.map +1 -1
  39. package/dist/test.bundle.js +1 -1
  40. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RoomDetailsPriceBlock.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/RoomDetailsPriceBlock.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAA+C;AAC/C,wCAAqC;AACrC,kEAA2D;AAC3D,0DAAuD;AACvD,6EAAqD;AACrD,mEAA2C;AAC3C,mFAA2D;AAC3D,uEAAgE;AAChE,6EAAqD;AAErD,4DAAoC;AACpC,iDAA0D;AAY1D,SAAwB,qBAAqB,CAAC,KAAiC;IAC3E,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,OAAO,GAAG,eAAK,CAAC,UAAU,CAAC,+BAAoB,CAAC,CAAC;IAEvD,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAE7D,MAAM,eAAe,GAAG,kBAAkB,GAAG,YAAY,CAAC;IAE1D,MAAM,eAAe,GAAG,IAAA,oBAAU,EAAC,wCAAwC,EAAE;QACzE,mBAAmB,EAAE,eAAe;QACpC,kBAAkB,EAAE,KAAK,CAAC,YAAY;KACzC,CAAC,CAAC;IAEH,OAAO,CACH;QACI,uCACI,SAAS,EAAE,IAAA,oBAAU,EAAC,0FAA0F,EAAE;gBAC9G,UAAU,EAAE,QAAQ;aACvB,CAAC;YAED,CAAC,QAAQ,IAAI,eAAe,IAAI,CAC7B,wCAAM,SAAS,EAAC,kEAAkE;gBAC9E,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ;oBACvB;wBACI,8BAAC,kBAAQ,QAAE,kBAAkB,CAAY,CACpC,CACN;gBACN,CAAC,KAAK,CAAC,YAAY,IAAI,CACpB,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAQ,CAAC,OAAO;;oBAC7C,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CACxB,CACV,CACE,CACV;YACD,wCAAM,SAAS,EAAE,eAAe;gBAC5B,8BAAC,kBAAQ,IAAC,IAAI,EAAE,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,QAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;oBAC9H,8BAAC,kBAAQ,IAAC,cAAc,QAAC,YAAY,UAChC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CACvB,CACJ;gBACV,CAAC,KAAK,CAAC,YAAY,IAAI,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ;;oBAAI,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAQ,CACrF;YACP,8BAAC,iBAAO,IAAC,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBACrE,wCAAM,SAAS,EAAC,kCAAkC;oBAC9C,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,aAAK,CAAC,OAAO,GAAI,CAChD,CACD,CACR,CACP,CACN,CAAC;AACN,CAAC;AAnDD,wCAmDC","sourcesContent":["import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Color } from '@/util/Color';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Translation } from 'translations/Translation';\nimport Headline from '@/components/generic/Headline';\nimport ScreenSize from '@/util/ScreenSize';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Currency from '@/components/generic/Currency';\n\nimport classNames from 'classnames';\nimport { BookingEngineContext } from '@frontend/contexts';\n\ninterface RoomDetailsPriceBlockProps {\n isLocked: boolean;\n averagePreDiscount: number;\n averagePrice: number;\n\n isMemberOnly?: boolean;\n\n hidePerNight?: boolean;\n}\n\nexport default function RoomDetailsPriceBlock(props: RoomDetailsPriceBlockProps) {\n const { t } = useTranslation();\n\n const context = React.useContext(BookingEngineContext);\n\n const { isLocked, averagePreDiscount, averagePrice } = props;\n\n const discountApplied = averagePreDiscount > averagePrice;\n\n const headlineClasses = classNames('room-details--content-price-protection', {\n '--accent-headline': discountApplied,\n '--accent-success': props.isMemberOnly,\n });\n\n return (\n <>\n <div\n className={classNames('room-details--content-price u-flex u-flex-direction-column justify-content-end flex-wrap', {\n '--locked': isLocked,\n })}\n >\n {!isLocked && discountApplied && (\n <span className=\"room-details--content-price-protection --original align-self-end\">\n <Text color={Color.DarkGrey}>\n <strong>\n <Currency>{averagePreDiscount}</Currency>\n </strong>\n </Text>\n {!props.hidePerNight && (\n <Text color={Color.DarkGrey} type={TextType.Caption}>\n /{t(Translation.Misc.Night)}\n </Text>\n )}\n </span>\n )}\n <span className={headlineClasses}>\n <Headline size={context.screenSize > ScreenSize.Medium ? 'large' : 'normal'} bold className={props.isMemberOnly ? '--success' : ''}>\n <Currency disableLoading hideDecimals>\n {isLocked ? 321 : averagePrice}\n </Currency>\n </Headline>\n {!props.hidePerNight && <Text color={Color.DarkGrey}>/{t(Translation.Misc.Night)}</Text>}\n </span>\n <Tooltip title={t(Translation.Step.Room.RoomInfo.MemberRateLockedTooltip)}>\n <span className=\"room-details--content-price-lock\">\n <Icon icon={IconType.Lock} color={Color.Success} />\n </span>\n </Tooltip>\n </div>\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"RoomDetailsPriceBlock.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/RoomDetailsPriceBlock.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAA+C;AAC/C,wCAAqC;AACrC,kEAA2D;AAC3D,0DAAuD;AACvD,6EAAqD;AACrD,mEAA2C;AAC3C,mFAA2D;AAC3D,uEAAgE;AAChE,6EAAqD;AAErD,4DAAoC;AACpC,iDAA0D;AAc1D,SAAwB,qBAAqB,CAAC,KAAiC;IAC3E,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,OAAO,GAAG,eAAK,CAAC,UAAU,CAAC,+BAAoB,CAAC,CAAC;IAEvD,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAE7D,MAAM,eAAe,GAAG,kBAAkB,GAAG,YAAY,CAAC;IAE1D,MAAM,eAAe,GAAG,IAAA,oBAAU,EAAC,wCAAwC,EAAE;QACzE,mBAAmB,EAAE,eAAe;QACpC,kBAAkB,EAAE,KAAK,CAAC,YAAY;KACzC,CAAC,CAAC;IAEH,OAAO,CACH;QACI,uCACI,SAAS,EAAE,IAAA,oBAAU,EAAC,0FAA0F,EAAE;gBAC9G,UAAU,EAAE,QAAQ;aACvB,CAAC;YAED,CAAC,QAAQ,IAAI,eAAe,IAAI,CAC7B,wCAAM,SAAS,EAAC,kEAAkE;gBAC9E,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ;oBACvB;wBACI,8BAAC,kBAAQ,QAAE,kBAAkB,CAAY,CACpC,CACN;gBACN,CAAC,KAAK,CAAC,YAAY,IAAI,CACpB,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAQ,CAAC,OAAO;;oBAC7C,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CACxB,CACV,CACE,CACV;YACD,wCAAM,SAAS,EAAE,eAAe;gBAC5B,8BAAC,kBAAQ,IACL,IAAI,EAAE,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EACjE,IAAI,QACJ,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAChD,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,aAAK,CAAC,IAAI,CAAC,CAAC,CAAC,aAAK,CAAC,QAAQ;oBAEvD,8BAAC,kBAAQ,IAAC,cAAc,QAAC,YAAY,UAChC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CACvB,CACJ;gBACV,CAAC,KAAK,CAAC,YAAY,IAAI,8BAAC,cAAI,IAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,aAAK,CAAC,IAAI,CAAC,CAAC,CAAC,aAAK,CAAC,QAAQ;;oBAAI,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAQ,CACvH;YACP,8BAAC,iBAAO,IAAC,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBACrE,wCAAM,SAAS,EAAC,kCAAkC;oBAC9C,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,aAAK,CAAC,OAAO,GAAI,CAChD,CACD,CACR,CACP,CACN,CAAC;AACN,CAAC;AAxDD,wCAwDC","sourcesContent":["import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Color } from '@/util/Color';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Translation } from 'translations/Translation';\nimport Headline from '@/components/generic/Headline';\nimport ScreenSize from '@/util/ScreenSize';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Currency from '@/components/generic/Currency';\n\nimport classNames from 'classnames';\nimport { BookingEngineContext } from '@frontend/contexts';\n\ninterface RoomDetailsPriceBlockProps {\n isLocked: boolean;\n averagePreDiscount: number;\n averagePrice: number;\n\n isMemberOnly?: boolean;\n\n hidePerNight?: boolean;\n\n useLightText?: boolean;\n}\n\nexport default function RoomDetailsPriceBlock(props: RoomDetailsPriceBlockProps) {\n const { t } = useTranslation();\n\n const context = React.useContext(BookingEngineContext);\n\n const { isLocked, averagePreDiscount, averagePrice } = props;\n\n const discountApplied = averagePreDiscount > averagePrice;\n\n const headlineClasses = classNames('room-details--content-price-protection', {\n '--accent-headline': discountApplied,\n '--accent-success': props.isMemberOnly,\n });\n\n return (\n <>\n <div\n className={classNames('room-details--content-price u-flex u-flex-direction-column justify-content-end flex-wrap', {\n '--locked': isLocked,\n })}\n >\n {!isLocked && discountApplied && (\n <span className=\"room-details--content-price-protection --original align-self-end\">\n <Text color={Color.DarkGrey}>\n <strong>\n <Currency>{averagePreDiscount}</Currency>\n </strong>\n </Text>\n {!props.hidePerNight && (\n <Text color={Color.DarkGrey} type={TextType.Caption}>\n /{t(Translation.Misc.Night)}\n </Text>\n )}\n </span>\n )}\n <span className={headlineClasses}>\n <Headline\n size={context.screenSize > ScreenSize.Medium ? 'large' : 'normal'}\n bold\n className={props.isMemberOnly ? '--success' : ''}\n color={props.useLightText ? Color.Snow : Color.Graphite}\n >\n <Currency disableLoading hideDecimals>\n {isLocked ? 321 : averagePrice}\n </Currency>\n </Headline>\n {!props.hidePerNight && <Text color={props.useLightText ? Color.Snow : Color.DarkGrey}>/{t(Translation.Misc.Night)}</Text>}\n </span>\n <Tooltip title={t(Translation.Step.Room.RoomInfo.MemberRateLockedTooltip)}>\n <span className=\"room-details--content-price-lock\">\n <Icon icon={IconType.Lock} color={Color.Success} />\n </span>\n </Tooltip>\n </div>\n </>\n );\n}\n"]}
@@ -56,7 +56,7 @@ function RoomRateRow(props) {
56
56
  currentTab: RoomRateDetailsAndPriceBreakdownModal_1.RoomRateDetailsAndPriceBreakdownModalTabs.RoomDetails,
57
57
  });
58
58
  const { t } = (0, react_i18next_1.useTranslation)();
59
- const { hotel } = (0, hooks_1.useCurrentHotel)();
59
+ const { isAccentColorDark } = (0, hooks_1.useCurrentHotel)();
60
60
  const { rate } = props;
61
61
  const selectedRow = basketContext.selectedBasketRow;
62
62
  const isRoomSelectedAndEditing = selectedRow === null || selectedRow === void 0 ? void 0 : selectedRow.isValid();
@@ -117,15 +117,18 @@ function RoomRateRow(props) {
117
117
  DataLayer_1.default.instance.sendInteraction('Rate Breakdown', DataLayer_1.InteractionType.LINK, DataLayer_1.InteractionStep.ROOMS);
118
118
  openTab(RoomRateDetailsAndPriceBreakdownModal_1.RoomRateDetailsAndPriceBreakdownModalTabs.PriceBreakdown);
119
119
  };
120
+ const shouldTextBeWhite = isAccentColorDark && ((isThisSelectedRow && isRoomSelectedAndEditing) || props.isPromoRate);
121
+ const textWhiteOr = (color = Color_1.Color.Graphite) => {
122
+ return shouldTextBeWhite ? Color_1.Color.White : color;
123
+ };
120
124
  return (react_1.default.createElement("div", { className: classes, ref: currentRow },
121
125
  react_1.default.createElement("div", { className: "row" },
122
126
  react_1.default.createElement("div", { className: "col-lg-8" },
123
127
  react_1.default.createElement("div", { className: "u-flex flex-column h-100" },
124
128
  react_1.default.createElement("div", null,
125
129
  react_1.default.createElement("div", { className: "u-marg-bottom-half" }, isLocked ? (react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Body, color: Color_1.Color.Success },
126
- react_1.default.createElement("strong", null, t(Translation_1.Translation.Step.Room.RoomInfo.MemberOnlyDeal)))) : (react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Body },
127
- react_1.default.createElement("strong", null, rate.name)))),
128
- react_1.default.createElement("div", { className: "u-marg-bottom u-h-ml-5 text-small u-clear-font-weight rdcaf" },
130
+ react_1.default.createElement("strong", null, t(Translation_1.Translation.Step.Room.RoomInfo.MemberOnlyDeal)))) : (react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Body, color: textWhiteOr(), bold: true }, rate.name))),
131
+ react_1.default.createElement("div", { className: "u-marg-bottom u-h-ml-5 text-small u-clear-font-weight rdcaf", style: { color: textWhiteOr() } },
129
132
  react_1.default.createElement("div", { dangerouslySetInnerHTML: { __html: isLocked ? t(Translation_1.Translation.Step.Room.RoomInfo.DealForMemberOnly) : rate.description } })),
130
133
  isLocked && (react_1.default.createElement("div", { className: "u-marg" },
131
134
  react_1.default.createElement("span", { onClick: openMemberSignupModalOnClick },
@@ -133,12 +136,12 @@ function RoomRateRow(props) {
133
136
  react_1.default.createElement(RoomRatePills_1.default, { rate: props.rate })),
134
137
  react_1.default.createElement("div", { className: "u-flex justify-content-start u-marg-top-bottom@l-" },
135
138
  react_1.default.createElement("div", { className: "u-marg-right u-inline-flex" },
136
- react_1.default.createElement(BEButton_1.default, { icon: Icon_1.IconType.ArrowRight2, isText: true, primary: true, size: "small", iconPosition: "right", onClick: rateDetailsOnClick }, t(Translation_1.Translation.Step.Room.ReadMore))),
137
- react_1.default.createElement(BEButton_1.default, { icon: Icon_1.IconType.ArrowRight2, isText: true, textColor: Color_1.Color.Navy, size: "small", iconPosition: "right", onClick: openTabOnClick, disabled: isLocked }, t(Translation_1.Translation.Step.Room.RoomInfo.ViewPriceBreakdown))))),
139
+ react_1.default.createElement(BEButton_1.default, { icon: Icon_1.IconType.ArrowRight2, isText: true, primary: true, size: "small", iconPosition: "right", onClick: rateDetailsOnClick, textColor: textWhiteOr(Color_1.Color.Accent) }, t(Translation_1.Translation.Step.Room.ReadMore))),
140
+ react_1.default.createElement(BEButton_1.default, { icon: Icon_1.IconType.ArrowRight2, isText: true, textColor: textWhiteOr(Color_1.Color.Navy), size: "small", iconPosition: "right", onClick: openTabOnClick, disabled: isLocked }, t(Translation_1.Translation.Step.Room.RoomInfo.ViewPriceBreakdown))))),
138
141
  react_1.default.createElement("div", { className: "col-lg-4 u-flex flex-column align-items-start align-items-md-start align-items-lg-end justify-content-start" },
139
142
  react_1.default.createElement("div", { className: "u-flex flex-column align-items-start align-items-lg-end" },
140
- react_1.default.createElement(RoomDetailsPriceBlock_1.default, { isLocked: isLocked, averagePreDiscount: rate.getAveragePriceBeforeDiscount(true), averagePrice: rate.getAveragePrice(true), isMemberOnly: props.rate.isMemberOnly }),
141
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.DarkGrey, align: TextAlignment_1.TextAlign.Right }, rate.getPriceType() === RoomRate_1.RoomRatePriceInclusion.IncludingFeesAndTaxes
143
+ react_1.default.createElement(RoomDetailsPriceBlock_1.default, { isLocked: isLocked, averagePreDiscount: rate.getAveragePriceBeforeDiscount(true), averagePrice: rate.getAveragePrice(true), isMemberOnly: props.rate.isMemberOnly, useLightText: shouldTextBeWhite }),
144
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: textWhiteOr(Color_1.Color.DarkGrey), align: TextAlignment_1.TextAlign.Right }, rate.getPriceType() === RoomRate_1.RoomRatePriceInclusion.IncludingFeesAndTaxes
142
145
  ? t(Translation_1.Translation.Step.Room.RoomInfo.IncludesTaxes)
143
146
  : t(Translation_1.Translation.Step.Room.ExcludingTaxes))),
144
147
  react_1.default.createElement("div", { className: "u-marg-top u-w-100@l-" }, isLocked ? (react_1.default.createElement(BEButton_1.default, { filled: true, success: true, wide: true, onClick: openMemberSignupModalOnClick }, t(Translation_1.Translation.Step.Room.RoomInfo.RevealPrice))) : (react_1.default.createElement(BookNowButton_1.default, { rate: rate, buttonLabel: bookNowLabel, onAddToBasketOverride: props.onAddToBasketOverride, isFilled: !isThisSelectedRow }))))),
@@ -1 +1 @@
1
- {"version":3,"file":"RoomRateRow.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/roomRates/RoomRateRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useEffect, useRef, useState } from 'react';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\nimport BEButton from '@/components/generic/BEButton';\nimport { Translation } from 'translations/Translation';\nimport { useTranslation } from 'react-i18next';\n\nimport classNames from 'classnames';\n\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport Pill, { PillType } from '@/components/generic/Pill';\nimport { BasketContext, BookingEngineContext, CompanyContext } from '@frontend/contexts';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport RoomDetailsPriceBlock from '@/components/steps/room/roomDetails/RoomDetailsPriceBlock';\nimport { RoomRate, RoomRatePriceInclusion } from '@/models/Room/RoomRate';\nimport RoomRateDetailsAndPriceBreakdownModal, {\n RoomRateDetailsAndPriceBreakdownModalTabs,\n} from '@/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal';\nimport BookNowButton from '@/components/steps/room/roomDetails/roomRates/BookNowButton';\nimport FeatureProvider from '@/providers/FeatureProvider';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport RoomRatePills from '@/components/steps/room/roomDetails/roomRates/RoomRatePills';\nimport { BookingEngineSource } from '@/engines/BaseEngine';\n\nexport interface RoomRateRowProps {\n rate: RoomRate;\n\n getButtonLabel?: (isRoomSelectedAndEditing: boolean, isThisSelectedRow: boolean) => string;\n onAddToBasketOverride?: (rate: RoomRate) => void;\n\n isPromoRate?: boolean;\n}\n\nexport default function RoomRateRow(props: RoomRateRowProps) {\n const ccx = useContext(CompanyContext);\n const basketContext = useContext(BasketContext);\n const { engine } = useContext(BookingEngineContext);\n\n const [viewingModal, setViewingModal] = useState({\n open: false,\n currentTab: RoomRateDetailsAndPriceBreakdownModalTabs.RoomDetails,\n });\n\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n const { rate } = props;\n const selectedRow = basketContext.selectedBasketRow;\n const isRoomSelectedAndEditing = selectedRow?.isValid();\n\n const isThisSelectedRow = selectedRow && rate.name === selectedRow.getRate()?.name && rate.getRoom()?.name === selectedRow.getRoom()?.name;\n\n const currentRow = useRef<HTMLDivElement | null>(null);\n\n const classes = classNames('room-info', {\n '--default': !rate.isMemberOnly,\n '--locked': rate.isMemberOnly,\n '--current': isThisSelectedRow && isRoomSelectedAndEditing,\n '--is-promo': props.isPromoRate,\n });\n\n let isLocked = false;\n\n if (rate.isMemberOnly && !ccx.signedInUser) {\n isLocked = true;\n }\n FeatureProvider.load('AvailableUpgradesFeature');\n useEffect(() => {\n if (isThisSelectedRow && engine?.getSource() !== BookingEngineSource.Inline) {\n setTimeout(() => {\n currentRow?.current?.scrollIntoView({ behavior: 'smooth' });\n }, 250);\n }\n\n if (!isLocked) {\n DataLayer.instance.addRoomRateImpression(rate.getRoom(), rate);\n }\n }, [isThisSelectedRow]);\n\n const openTab = (tab: RoomRateDetailsAndPriceBreakdownModalTabs) => {\n setViewingModal({ open: true, currentTab: tab });\n };\n\n let bookNowLabel = '';\n if (props.getButtonLabel) {\n bookNowLabel = props.getButtonLabel(isRoomSelectedAndEditing, isThisSelectedRow);\n } else {\n if (isRoomSelectedAndEditing) {\n bookNowLabel = isThisSelectedRow ? t(Translation.Step.Room.RoomInfo.Selected) : (bookNowLabel = t(Translation.Step.Room.RoomInfo.Update));\n } else {\n bookNowLabel = t(Translation.Misc.BookNow);\n }\n }\n\n const openMemberSignupModalOnClick = () => {\n DataLayer.instance.sendInteraction('Member Signup Modal', InteractionType.LINK, InteractionStep.ROOMS);\n ccx.openMemberSignupModal();\n };\n\n const rateDetailsOnClick = () => {\n DataLayer.instance.sendInteraction('More Rate Details', InteractionType.LINK, InteractionStep.ROOMS);\n openTab(RoomRateDetailsAndPriceBreakdownModalTabs.RoomDetails);\n };\n\n const updateModalOnClose = () => {\n setViewingModal((old) => {\n old.open = false;\n return { ...old };\n });\n };\n\n const openTabOnClick = () => {\n DataLayer.instance.sendInteraction('Rate Breakdown', InteractionType.LINK, InteractionStep.ROOMS);\n openTab(RoomRateDetailsAndPriceBreakdownModalTabs.PriceBreakdown);\n };\n\n return (\n <div className={classes} ref={currentRow}>\n <div className=\"row\">\n <div className=\"col-lg-8\">\n <div className=\"u-flex flex-column h-100\">\n <div>\n <div className=\"u-marg-bottom-half\">\n {isLocked ? (\n <Text type={TextType.Body} color={Color.Success}>\n <strong>{t(Translation.Step.Room.RoomInfo.MemberOnlyDeal)}</strong>\n </Text>\n ) : (\n <Text type={TextType.Body}>\n <strong>{rate.name}</strong>\n </Text>\n )}\n </div>\n <div className=\"u-marg-bottom u-h-ml-5 text-small u-clear-font-weight rdcaf\">\n <div dangerouslySetInnerHTML={{ __html: isLocked ? t(Translation.Step.Room.RoomInfo.DealForMemberOnly) : rate.description }} />\n </div>\n {isLocked && (\n <div className=\"u-marg\">\n <span onClick={openMemberSignupModalOnClick}>\n <Pill icon={IconType.Money} type={PillType.Success}>\n {t(Translation.Step.Room.RoomInfo.SignUpToSee)}\n </Pill>\n </span>\n </div>\n )}\n <RoomRatePills rate={props.rate} />\n </div>\n <div className=\"u-flex justify-content-start u-marg-top-bottom@l-\">\n <div className=\"u-marg-right u-inline-flex\">\n <BEButton icon={IconType.ArrowRight2} isText primary size=\"small\" iconPosition=\"right\" onClick={rateDetailsOnClick}>\n {t(Translation.Step.Room.ReadMore)}\n </BEButton>\n </div>\n <BEButton icon={IconType.ArrowRight2} isText textColor={Color.Navy} size=\"small\" iconPosition=\"right\" onClick={openTabOnClick} disabled={isLocked}>\n {t(Translation.Step.Room.RoomInfo.ViewPriceBreakdown)}\n </BEButton>\n </div>\n </div>\n </div>\n <div className=\"col-lg-4 u-flex flex-column align-items-start align-items-md-start align-items-lg-end justify-content-start\">\n <div className=\"u-flex flex-column align-items-start align-items-lg-end\">\n <RoomDetailsPriceBlock\n isLocked={isLocked}\n averagePreDiscount={rate.getAveragePriceBeforeDiscount(true)}\n averagePrice={rate.getAveragePrice(true)}\n isMemberOnly={props.rate.isMemberOnly}\n />\n <Text type={TextType.Label} color={Color.DarkGrey} align={TextAlign.Right}>\n {rate.getPriceType() === RoomRatePriceInclusion.IncludingFeesAndTaxes\n ? t(Translation.Step.Room.RoomInfo.IncludesTaxes)\n : t(Translation.Step.Room.ExcludingTaxes)}\n </Text>\n </div>\n <div className=\"u-marg-top u-w-100@l-\">\n {isLocked ? (\n <BEButton filled success wide onClick={openMemberSignupModalOnClick}>\n {t(Translation.Step.Room.RoomInfo.RevealPrice)}\n </BEButton>\n ) : (\n <BookNowButton rate={rate} buttonLabel={bookNowLabel} onAddToBasketOverride={props.onAddToBasketOverride} isFilled={!isThisSelectedRow} />\n )}\n </div>\n </div>\n </div>\n <RoomRateDetailsAndPriceBreakdownModal\n isOpen={viewingModal.open}\n currentTab={viewingModal.currentTab}\n rate={props.rate}\n getButtonLabel={props.getButtonLabel}\n onAddToBasketOverride={props.onAddToBasketOverride}\n onClose={updateModalOnClose}\n />\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"RoomRateRow.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/roomRates/RoomRateRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useEffect, useRef, useState } from 'react';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\nimport BEButton from '@/components/generic/BEButton';\nimport { Translation } from 'translations/Translation';\nimport { useTranslation } from 'react-i18next';\n\nimport classNames from 'classnames';\n\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport Pill, { PillType } from '@/components/generic/Pill';\nimport { BasketContext, BookingEngineContext, CompanyContext } from '@frontend/contexts';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport RoomDetailsPriceBlock from '@/components/steps/room/roomDetails/RoomDetailsPriceBlock';\nimport { RoomRate, RoomRatePriceInclusion } from '@/models/Room/RoomRate';\nimport RoomRateDetailsAndPriceBreakdownModal, {\n RoomRateDetailsAndPriceBreakdownModalTabs,\n} from '@/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal';\nimport BookNowButton from '@/components/steps/room/roomDetails/roomRates/BookNowButton';\nimport FeatureProvider from '@/providers/FeatureProvider';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport RoomRatePills from '@/components/steps/room/roomDetails/roomRates/RoomRatePills';\nimport { BookingEngineSource } from '@/engines/BaseEngine';\n\nexport interface RoomRateRowProps {\n rate: RoomRate;\n\n getButtonLabel?: (isRoomSelectedAndEditing: boolean, isThisSelectedRow: boolean) => string;\n onAddToBasketOverride?: (rate: RoomRate) => void;\n\n isPromoRate?: boolean;\n}\n\nexport default function RoomRateRow(props: RoomRateRowProps) {\n const ccx = useContext(CompanyContext);\n const basketContext = useContext(BasketContext);\n const { engine } = useContext(BookingEngineContext);\n\n const [viewingModal, setViewingModal] = useState({\n open: false,\n currentTab: RoomRateDetailsAndPriceBreakdownModalTabs.RoomDetails,\n });\n\n const { t } = useTranslation();\n const { isAccentColorDark } = useCurrentHotel();\n\n const { rate } = props;\n const selectedRow = basketContext.selectedBasketRow;\n const isRoomSelectedAndEditing = selectedRow?.isValid();\n\n const isThisSelectedRow = selectedRow && rate.name === selectedRow.getRate()?.name && rate.getRoom()?.name === selectedRow.getRoom()?.name;\n\n const currentRow = useRef<HTMLDivElement | null>(null);\n\n const classes = classNames('room-info', {\n '--default': !rate.isMemberOnly,\n '--locked': rate.isMemberOnly,\n '--current': isThisSelectedRow && isRoomSelectedAndEditing,\n '--is-promo': props.isPromoRate,\n });\n\n let isLocked = false;\n\n if (rate.isMemberOnly && !ccx.signedInUser) {\n isLocked = true;\n }\n FeatureProvider.load('AvailableUpgradesFeature');\n useEffect(() => {\n if (isThisSelectedRow && engine?.getSource() !== BookingEngineSource.Inline) {\n setTimeout(() => {\n currentRow?.current?.scrollIntoView({ behavior: 'smooth' });\n }, 250);\n }\n\n if (!isLocked) {\n DataLayer.instance.addRoomRateImpression(rate.getRoom(), rate);\n }\n }, [isThisSelectedRow]);\n\n const openTab = (tab: RoomRateDetailsAndPriceBreakdownModalTabs) => {\n setViewingModal({ open: true, currentTab: tab });\n };\n\n let bookNowLabel = '';\n if (props.getButtonLabel) {\n bookNowLabel = props.getButtonLabel(isRoomSelectedAndEditing, isThisSelectedRow);\n } else {\n if (isRoomSelectedAndEditing) {\n bookNowLabel = isThisSelectedRow ? t(Translation.Step.Room.RoomInfo.Selected) : (bookNowLabel = t(Translation.Step.Room.RoomInfo.Update));\n } else {\n bookNowLabel = t(Translation.Misc.BookNow);\n }\n }\n\n const openMemberSignupModalOnClick = () => {\n DataLayer.instance.sendInteraction('Member Signup Modal', InteractionType.LINK, InteractionStep.ROOMS);\n ccx.openMemberSignupModal();\n };\n\n const rateDetailsOnClick = () => {\n DataLayer.instance.sendInteraction('More Rate Details', InteractionType.LINK, InteractionStep.ROOMS);\n openTab(RoomRateDetailsAndPriceBreakdownModalTabs.RoomDetails);\n };\n\n const updateModalOnClose = () => {\n setViewingModal((old) => {\n old.open = false;\n return { ...old };\n });\n };\n\n const openTabOnClick = () => {\n DataLayer.instance.sendInteraction('Rate Breakdown', InteractionType.LINK, InteractionStep.ROOMS);\n openTab(RoomRateDetailsAndPriceBreakdownModalTabs.PriceBreakdown);\n };\n\n const shouldTextBeWhite = isAccentColorDark && ((isThisSelectedRow && isRoomSelectedAndEditing) || props.isPromoRate);\n const textWhiteOr = (color = Color.Graphite) => {\n return shouldTextBeWhite ? Color.White : color;\n };\n\n return (\n <div className={classes} ref={currentRow}>\n <div className=\"row\">\n <div className=\"col-lg-8\">\n <div className=\"u-flex flex-column h-100\">\n <div>\n <div className=\"u-marg-bottom-half\">\n {isLocked ? (\n <Text type={TextType.Body} color={Color.Success}>\n <strong>{t(Translation.Step.Room.RoomInfo.MemberOnlyDeal)}</strong>\n </Text>\n ) : (\n <Text type={TextType.Body} color={textWhiteOr()} bold>\n {rate.name}\n </Text>\n )}\n </div>\n <div className=\"u-marg-bottom u-h-ml-5 text-small u-clear-font-weight rdcaf\" style={{ color: textWhiteOr() }}>\n <div dangerouslySetInnerHTML={{ __html: isLocked ? t(Translation.Step.Room.RoomInfo.DealForMemberOnly) : rate.description }} />\n </div>\n {isLocked && (\n <div className=\"u-marg\">\n <span onClick={openMemberSignupModalOnClick}>\n <Pill icon={IconType.Money} type={PillType.Success}>\n {t(Translation.Step.Room.RoomInfo.SignUpToSee)}\n </Pill>\n </span>\n </div>\n )}\n <RoomRatePills rate={props.rate} />\n </div>\n <div className=\"u-flex justify-content-start u-marg-top-bottom@l-\">\n <div className=\"u-marg-right u-inline-flex\">\n <BEButton\n icon={IconType.ArrowRight2}\n isText\n primary\n size=\"small\"\n iconPosition=\"right\"\n onClick={rateDetailsOnClick}\n textColor={textWhiteOr(Color.Accent)}\n >\n {t(Translation.Step.Room.ReadMore)}\n </BEButton>\n </div>\n <BEButton\n icon={IconType.ArrowRight2}\n isText\n textColor={textWhiteOr(Color.Navy)}\n size=\"small\"\n iconPosition=\"right\"\n onClick={openTabOnClick}\n disabled={isLocked}\n >\n {t(Translation.Step.Room.RoomInfo.ViewPriceBreakdown)}\n </BEButton>\n </div>\n </div>\n </div>\n <div className=\"col-lg-4 u-flex flex-column align-items-start align-items-md-start align-items-lg-end justify-content-start\">\n <div className=\"u-flex flex-column align-items-start align-items-lg-end\">\n <RoomDetailsPriceBlock\n isLocked={isLocked}\n averagePreDiscount={rate.getAveragePriceBeforeDiscount(true)}\n averagePrice={rate.getAveragePrice(true)}\n isMemberOnly={props.rate.isMemberOnly}\n useLightText={shouldTextBeWhite}\n />\n <Text type={TextType.Label} color={textWhiteOr(Color.DarkGrey)} align={TextAlign.Right}>\n {rate.getPriceType() === RoomRatePriceInclusion.IncludingFeesAndTaxes\n ? t(Translation.Step.Room.RoomInfo.IncludesTaxes)\n : t(Translation.Step.Room.ExcludingTaxes)}\n </Text>\n </div>\n <div className=\"u-marg-top u-w-100@l-\">\n {isLocked ? (\n <BEButton filled success wide onClick={openMemberSignupModalOnClick}>\n {t(Translation.Step.Room.RoomInfo.RevealPrice)}\n </BEButton>\n ) : (\n <BookNowButton rate={rate} buttonLabel={bookNowLabel} onAddToBasketOverride={props.onAddToBasketOverride} isFilled={!isThisSelectedRow} />\n )}\n </div>\n </div>\n </div>\n <RoomRateDetailsAndPriceBreakdownModal\n isOpen={viewingModal.open}\n currentTab={viewingModal.currentTab}\n rate={props.rate}\n getButtonLabel={props.getButtonLabel}\n onAddToBasketOverride={props.onAddToBasketOverride}\n onClose={updateModalOnClose}\n />\n </div>\n );\n}\n"]}
@@ -41,10 +41,12 @@ const react_router_dom_1 = require("react-router-dom");
41
41
  const Tooltip_1 = __importDefault(require("../generic/Tooltip/Tooltip"));
42
42
  const StepRoom_1 = __importDefault(require("../../pages/steps/StepRoom/StepRoom"));
43
43
  const ImageProvider_1 = require("../../providers/ImageProvider");
44
+ const hooks_1 = require("../../hooks/index.js");
44
45
  function BESummaryRoomRow(props) {
45
46
  var _a, _b, _c;
46
47
  const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
47
48
  const { currentStep } = (0, react_1.useContext)(contexts_1.FullPageEngineContext);
49
+ const { isAccentColorDark } = (0, hooks_1.useCurrentHotel)();
48
50
  const { t } = (0, react_i18next_1.useTranslation)();
49
51
  const history = (0, react_router_dom_1.useHistory)();
50
52
  const { index, row, showImages } = props;
@@ -72,66 +74,70 @@ function BESummaryRoomRow(props) {
72
74
  basketContext.removeBasketRow(row);
73
75
  };
74
76
  const promoApplied = row.isPromoCodeValid();
77
+ const shouldTextBeWhite = isAccentColorDark && isSelected;
78
+ const textWhiteOr = (color = Color_1.Color.Graphite) => {
79
+ return shouldTextBeWhite ? Color_1.Color.White : color;
80
+ };
75
81
  return (react_1.default.createElement(react_1.default.Fragment, null,
76
82
  index >= 1 && react_1.default.createElement(LineBreak_1.default, { noMargins: true, darker: true }),
77
83
  react_1.default.createElement("div", { key: row.getID(), className: 'booking-engine-summary--row' + (isSelected ? ' --selected' : '') },
78
84
  showImages && (react_1.default.createElement("div", { className: "u-border-rounded", style: { height: '190px' } },
79
85
  react_1.default.createElement(ImageGallerySlider_1.default, { images: row.getRoom().getImages(), imageSize: ImageProvider_1.ImageSize.Tiny }))),
80
86
  react_1.default.createElement("div", { className: "u-marg-top--light" },
81
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.DarkGrey },
87
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: textWhiteOr(Color_1.Color.DarkGrey) },
82
88
  react_1.default.createElement("strong", null,
83
89
  t(Translation_1.Translation.Step.Date.Room),
84
90
  " ",
85
91
  index + 1))),
86
92
  react_1.default.createElement("div", { className: "u-marg-bottom--light" },
87
- react_1.default.createElement(Text_1.default, { color: Color_1.Color.Navy },
93
+ react_1.default.createElement(Text_1.default, { color: textWhiteOr(Color_1.Color.Navy) },
88
94
  react_1.default.createElement("strong", null, rate === null || rate === void 0 ? void 0 : rate.getRoom().name))),
89
95
  react_1.default.createElement("div", { className: "u-marg-bottom--light" },
90
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, rate === null || rate === void 0 ? void 0 : rate.name)),
96
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: textWhiteOr() }, rate === null || rate === void 0 ? void 0 : rate.name)),
91
97
  react_1.default.createElement("div", { className: "u-marg-bottom--light u-flex" },
92
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, t(Translation_1.Translation.Step.Date.Arrival)),
93
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.Accent }, row.getArrivalDate())),
98
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: textWhiteOr() }, t(Translation_1.Translation.Step.Date.Arrival)),
99
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: textWhiteOr(Color_1.Color.Accent) }, row.getArrivalDate())),
94
100
  react_1.default.createElement("div", { className: "u-marg-bottom--light u-flex" },
95
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, t(Translation_1.Translation.Step.Date.Departure)),
96
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.Accent }, row.getDepartureDate())),
101
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: textWhiteOr() }, t(Translation_1.Translation.Step.Date.Departure)),
102
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: textWhiteOr(Color_1.Color.Accent) }, row.getDepartureDate())),
97
103
  react_1.default.createElement("div", { className: "u-marg-bottom--medium u-flex" },
98
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small },
104
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: textWhiteOr() },
99
105
  StringHelper_1.default.pluralWithDictAndCount(row.getAdults(), Translation_1.Translation.Step.Date.Adult, t),
100
106
  ",\u00A0",
101
107
  StringHelper_1.default.pluralWithDictAndCount(row.getChildren(), Translation_1.Translation.Step.Date.Child, t))),
102
108
  react_1.default.createElement("div", { className: "u-marg-top--light u-marg-bottom--light u-flex" },
103
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small },
109
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: textWhiteOr() },
104
110
  t(Translation_1.Translation.Misc.Rates),
105
111
  " (",
106
112
  t(Translation_1.Translation.Misc.PerNight),
107
113
  ")"),
108
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.DarkGrey },
114
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: textWhiteOr(Color_1.Color.DarkGrey) },
109
115
  react_1.default.createElement(Currency_1.default, null, rate === null || rate === void 0 ? void 0 : rate.getAveragePrice(true)))),
110
116
  promoApplied && (react_1.default.createElement("div", { className: "u-marg-bottom--light u-flex" },
111
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, t(Translation_1.Translation.Step.Date.PromoCode)),
112
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.DarkGrey }, row.getPromoCode()))),
117
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: textWhiteOr() }, t(Translation_1.Translation.Step.Date.PromoCode)),
118
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: textWhiteOr(Color_1.Color.DarkGrey) }, row.getPromoCode()))),
113
119
  react_1.default.createElement("div", { className: "u-marg-bottom--light u-flex" },
114
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, t(Translation_1.Translation.Step.General.RoomTotal)),
115
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.DarkGrey },
120
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: textWhiteOr() }, t(Translation_1.Translation.Step.General.RoomTotal)),
121
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: textWhiteOr(Color_1.Color.DarkGrey) },
116
122
  react_1.default.createElement(Currency_1.default, null, totalPrice))),
117
123
  !!rowFees && (react_1.default.createElement("div", { className: "u-marg-bottom--light u-flex" },
118
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, t(Translation_1.Translation.Step.Room.Summary.Fees)),
119
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.DarkGrey },
124
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: textWhiteOr() }, t(Translation_1.Translation.Step.Room.Summary.Fees)),
125
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: textWhiteOr(Color_1.Color.DarkGrey) },
120
126
  react_1.default.createElement(Currency_1.default, null, rowFees)))),
121
127
  !!rowTaxes && (react_1.default.createElement("div", { className: "u-marg-bottom--light u-flex" },
122
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, t(Translation_1.Translation.Step.Room.Summary.Taxes)),
123
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.DarkGrey },
128
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: textWhiteOr() }, t(Translation_1.Translation.Step.Room.Summary.Taxes)),
129
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: textWhiteOr(Color_1.Color.DarkGrey) },
124
130
  react_1.default.createElement(Currency_1.default, null, rowTaxes)))),
125
131
  react_1.default.createElement("div", { className: "u-marg-top u-marg-bottom u-flex justify-content-start" },
126
132
  isSelected ? (react_1.default.createElement(Tooltip_1.default, { title: t(Translation_1.Translation.Misc.Cancel) },
127
133
  react_1.default.createElement("div", null,
128
- react_1.default.createElement(BEButton_1.default, { isText: true, size: "tiny", primary: true, onClick: selectBasketRowOnClick }, t(Translation_1.Translation.Misc.Cancel))))) : (react_1.default.createElement(Tooltip_1.default, { title: t(Translation_1.Translation.Step.Confirmation.EditThisProperty) },
134
+ react_1.default.createElement(BEButton_1.default, { isText: true, size: "tiny", primary: true, onClick: selectBasketRowOnClick, textColor: textWhiteOr(Color_1.Color.Accent) }, t(Translation_1.Translation.Misc.Cancel))))) : (react_1.default.createElement(Tooltip_1.default, { title: t(Translation_1.Translation.Step.Confirmation.EditThisProperty) },
129
135
  react_1.default.createElement("div", null,
130
- react_1.default.createElement(BEButton_1.default, { isText: true, size: "tiny", primary: true, onClick: editOnClickHandler }, t(Translation_1.Translation.Misc.Edit))))),
136
+ react_1.default.createElement(BEButton_1.default, { isText: true, size: "tiny", primary: true, onClick: editOnClickHandler, textColor: textWhiteOr(Color_1.Color.Accent) }, t(Translation_1.Translation.Misc.Edit))))),
131
137
  react_1.default.createElement("span", { className: "u-pad-left--light u-pad-right--light", style: { color: Color_1.Color.LightGrey } }, "|"),
132
138
  react_1.default.createElement(Tooltip_1.default, { title: removeRate },
133
139
  react_1.default.createElement("div", null,
134
- react_1.default.createElement(BEButton_1.default, { isText: true, size: "tiny", primary: true, disabled: isOnlyRate, onClick: removeOnClickHandler }, t(Translation_1.Translation.Misc.Remove))))))));
140
+ react_1.default.createElement(BEButton_1.default, { isText: true, size: "tiny", primary: true, disabled: isOnlyRate, onClick: removeOnClickHandler, textColor: textWhiteOr(Color_1.Color.Accent) }, t(Translation_1.Translation.Misc.Remove))))))));
135
141
  }
136
142
  exports.default = BESummaryRoomRow;
137
143
  //# sourceMappingURL=BESummaryRoomRow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BESummaryRoomRow.js","sourceRoot":"/","sources":["src/components/summary/BESummaryRoomRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext } from 'react';\nimport BasketRow from '@/models/BasketRow';\nimport { BasketContext, FullPageEngineContext } from '@frontend/contexts';\nimport { useTranslation } from 'react-i18next';\nimport LineBreak from '@/components/generic/LineBreak';\nimport ImageGallerySlider from '@/components/steps/room/ImageGallerySlider';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport StringHelper from '@/util/StringHelper';\nimport Currency from '@/components/generic/Currency';\nimport BEButton from '@/components/generic/BEButton';\nimport { Translation } from 'translations/Translation';\nimport { useHistory } from 'react-router-dom';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport { ImageSize } from '@/providers/ImageProvider';\n\ninterface BESummaryRoomRowProps {\n index: number;\n row: BasketRow;\n showImages: boolean;\n\n onEditPropertyClicked?: () => void;\n}\n\nexport default function BESummaryRoomRow(props: BESummaryRoomRowProps) {\n const basketContext = useContext(BasketContext);\n const { currentStep } = useContext(FullPageEngineContext);\n\n const { t } = useTranslation();\n const history = useHistory();\n\n const { index, row, showImages } = props;\n\n const totalPrice = row.getTotalPrice(true);\n const rate = row.getRate();\n\n const isSelected = basketContext.selectedBasketRow?.getID() === row.getID();\n const isOnlyRate = basketContext.currentBasketRows.length === 1;\n\n const removeRate = t(isOnlyRate ? Translation.Step.Room.Summary.NoRemoveLastRate : Translation.Step.Room.Summary.RemoveThisRate);\n\n const rowFees = row.getRate()?.getTotalFees();\n const rowTaxes = row.getRate()?.getTotalTaxes();\n const selectBasketRowOnClick = () => basketContext.selectBasketRow(null);\n const editOnClickHandler = () => {\n if (currentStep !== StepRoom) {\n history.push(StepRoom.getStepUrl());\n }\n basketContext.selectBasketRow(row);\n\n if (props.onEditPropertyClicked) {\n props.onEditPropertyClicked();\n }\n };\n const removeOnClickHandler = () => {\n if (currentStep !== StepRoom) {\n history.push(StepRoom.getStepUrl());\n }\n basketContext.removeBasketRow(row);\n };\n\n const promoApplied = row.isPromoCodeValid();\n\n return (\n <>\n {index >= 1 && <LineBreak noMargins darker />}\n <div key={row.getID()} className={'booking-engine-summary--row' + (isSelected ? ' --selected' : '')}>\n {showImages && (\n <div className=\"u-border-rounded\" style={{ height: '190px' }}>\n <ImageGallerySlider images={row.getRoom().getImages()} imageSize={ImageSize.Tiny} />\n </div>\n )}\n <div className=\"u-marg-top--light\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <strong>\n {t(Translation.Step.Date.Room)} {index + 1}\n </strong>\n </Text>\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text color={Color.Navy}>\n <strong>{rate?.getRoom().name}</strong>\n </Text>\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>{rate?.name}</Text>\n </div>\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small}>{t(Translation.Step.Date.Arrival)}</Text>\n <Text type={TextType.Small} color={Color.Accent}>\n {row.getArrivalDate()}\n </Text>\n </div>\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small}>{t(Translation.Step.Date.Departure)}</Text>\n <Text type={TextType.Small} color={Color.Accent}>\n {row.getDepartureDate()}\n </Text>\n </div>\n <div className=\"u-marg-bottom--medium u-flex\">\n <Text type={TextType.Small}>\n {StringHelper.pluralWithDictAndCount(row.getAdults(), Translation.Step.Date.Adult, t)},&nbsp;\n {StringHelper.pluralWithDictAndCount(row.getChildren(), Translation.Step.Date.Child, t)}\n </Text>\n </div>\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex\">\n <Text type={TextType.Small}>\n {t(Translation.Misc.Rates)} ({t(Translation.Misc.PerNight)})\n </Text>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n <Currency>{rate?.getAveragePrice(true)}</Currency>\n </Text>\n </div>\n {promoApplied && (\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small}>{t(Translation.Step.Date.PromoCode)}</Text>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {row.getPromoCode()}\n </Text>\n </div>\n )}\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small}>{t(Translation.Step.General.RoomTotal)}</Text>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n <Currency>{totalPrice}</Currency>\n </Text>\n </div>\n {!!rowFees && (\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small}>{t(Translation.Step.Room.Summary.Fees)}</Text>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n <Currency>{rowFees}</Currency>\n </Text>\n </div>\n )}\n {!!rowTaxes && (\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small}>{t(Translation.Step.Room.Summary.Taxes)}</Text>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n <Currency>{rowTaxes}</Currency>\n </Text>\n </div>\n )}\n <div className=\"u-marg-top u-marg-bottom u-flex justify-content-start\">\n {isSelected ? (\n <Tooltip title={t(Translation.Misc.Cancel)}>\n <div>\n <BEButton isText size=\"tiny\" primary onClick={selectBasketRowOnClick}>\n {t(Translation.Misc.Cancel)}\n </BEButton>\n </div>\n </Tooltip>\n ) : (\n <Tooltip title={t(Translation.Step.Confirmation.EditThisProperty)}>\n <div>\n <BEButton isText size=\"tiny\" primary onClick={editOnClickHandler}>\n {t(Translation.Misc.Edit)}\n </BEButton>\n </div>\n </Tooltip>\n )}\n\n <span className=\"u-pad-left--light u-pad-right--light\" style={{ color: Color.LightGrey }}>\n |\n </span>\n <Tooltip title={removeRate}>\n <div>\n <BEButton isText size=\"tiny\" primary disabled={isOnlyRate} onClick={removeOnClickHandler}>\n {t(Translation.Misc.Remove)}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n </div>\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"BESummaryRoomRow.js","sourceRoot":"/","sources":["src/components/summary/BESummaryRoomRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext } from 'react';\nimport BasketRow from '@/models/BasketRow';\nimport { BasketContext, FullPageEngineContext } from '@frontend/contexts';\nimport { useTranslation } from 'react-i18next';\nimport LineBreak from '@/components/generic/LineBreak';\nimport ImageGallerySlider from '@/components/steps/room/ImageGallerySlider';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport StringHelper from '@/util/StringHelper';\nimport Currency from '@/components/generic/Currency';\nimport BEButton from '@/components/generic/BEButton';\nimport { Translation } from 'translations/Translation';\nimport { useHistory } from 'react-router-dom';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport { ImageSize } from '@/providers/ImageProvider';\nimport { useCurrentHotel } from '@frontend/hooks';\n\ninterface BESummaryRoomRowProps {\n index: number;\n row: BasketRow;\n showImages: boolean;\n\n onEditPropertyClicked?: () => void;\n}\n\nexport default function BESummaryRoomRow(props: BESummaryRoomRowProps) {\n const basketContext = useContext(BasketContext);\n const { currentStep } = useContext(FullPageEngineContext);\n const { isAccentColorDark } = useCurrentHotel();\n\n const { t } = useTranslation();\n const history = useHistory();\n\n const { index, row, showImages } = props;\n\n const totalPrice = row.getTotalPrice(true);\n const rate = row.getRate();\n\n const isSelected = basketContext.selectedBasketRow?.getID() === row.getID();\n const isOnlyRate = basketContext.currentBasketRows.length === 1;\n\n const removeRate = t(isOnlyRate ? Translation.Step.Room.Summary.NoRemoveLastRate : Translation.Step.Room.Summary.RemoveThisRate);\n\n const rowFees = row.getRate()?.getTotalFees();\n const rowTaxes = row.getRate()?.getTotalTaxes();\n const selectBasketRowOnClick = () => basketContext.selectBasketRow(null);\n const editOnClickHandler = () => {\n if (currentStep !== StepRoom) {\n history.push(StepRoom.getStepUrl());\n }\n basketContext.selectBasketRow(row);\n\n if (props.onEditPropertyClicked) {\n props.onEditPropertyClicked();\n }\n };\n const removeOnClickHandler = () => {\n if (currentStep !== StepRoom) {\n history.push(StepRoom.getStepUrl());\n }\n basketContext.removeBasketRow(row);\n };\n\n const promoApplied = row.isPromoCodeValid();\n\n const shouldTextBeWhite = isAccentColorDark && isSelected;\n const textWhiteOr = (color = Color.Graphite) => {\n return shouldTextBeWhite ? Color.White : color;\n };\n\n return (\n <>\n {index >= 1 && <LineBreak noMargins darker />}\n <div key={row.getID()} className={'booking-engine-summary--row' + (isSelected ? ' --selected' : '')}>\n {showImages && (\n <div className=\"u-border-rounded\" style={{ height: '190px' }}>\n <ImageGallerySlider images={row.getRoom().getImages()} imageSize={ImageSize.Tiny} />\n </div>\n )}\n <div className=\"u-marg-top--light\">\n <Text type={TextType.Label} color={textWhiteOr(Color.DarkGrey)}>\n <strong>\n {t(Translation.Step.Date.Room)} {index + 1}\n </strong>\n </Text>\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text color={textWhiteOr(Color.Navy)}>\n <strong>{rate?.getRoom().name}</strong>\n </Text>\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {rate?.name}\n </Text>\n </div>\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.Date.Arrival)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.Accent)}>\n {row.getArrivalDate()}\n </Text>\n </div>\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.Date.Departure)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.Accent)}>\n {row.getDepartureDate()}\n </Text>\n </div>\n <div className=\"u-marg-bottom--medium u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {StringHelper.pluralWithDictAndCount(row.getAdults(), Translation.Step.Date.Adult, t)},&nbsp;\n {StringHelper.pluralWithDictAndCount(row.getChildren(), Translation.Step.Date.Child, t)}\n </Text>\n </div>\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Misc.Rates)} ({t(Translation.Misc.PerNight)})\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.DarkGrey)}>\n <Currency>{rate?.getAveragePrice(true)}</Currency>\n </Text>\n </div>\n {promoApplied && (\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.Date.PromoCode)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.DarkGrey)}>\n {row.getPromoCode()}\n </Text>\n </div>\n )}\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.General.RoomTotal)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.DarkGrey)}>\n <Currency>{totalPrice}</Currency>\n </Text>\n </div>\n {!!rowFees && (\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.Room.Summary.Fees)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.DarkGrey)}>\n <Currency>{rowFees}</Currency>\n </Text>\n </div>\n )}\n {!!rowTaxes && (\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.Room.Summary.Taxes)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.DarkGrey)}>\n <Currency>{rowTaxes}</Currency>\n </Text>\n </div>\n )}\n <div className=\"u-marg-top u-marg-bottom u-flex justify-content-start\">\n {isSelected ? (\n <Tooltip title={t(Translation.Misc.Cancel)}>\n <div>\n <BEButton isText size=\"tiny\" primary onClick={selectBasketRowOnClick} textColor={textWhiteOr(Color.Accent)}>\n {t(Translation.Misc.Cancel)}\n </BEButton>\n </div>\n </Tooltip>\n ) : (\n <Tooltip title={t(Translation.Step.Confirmation.EditThisProperty)}>\n <div>\n <BEButton isText size=\"tiny\" primary onClick={editOnClickHandler} textColor={textWhiteOr(Color.Accent)}>\n {t(Translation.Misc.Edit)}\n </BEButton>\n </div>\n </Tooltip>\n )}\n\n <span className=\"u-pad-left--light u-pad-right--light\" style={{ color: Color.LightGrey }}>\n |\n </span>\n <Tooltip title={removeRate}>\n <div>\n <BEButton isText size=\"tiny\" primary disabled={isOnlyRate} onClick={removeOnClickHandler} textColor={textWhiteOr(Color.Accent)}>\n {t(Translation.Misc.Remove)}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n </div>\n </>\n );\n}\n"]}
@@ -1,4 +1,6 @@
1
1
  export declare const useCurrentHotel: () => {
2
2
  hotel: import("..").Hotel | undefined;
3
+ isAccentColorDark: boolean;
4
+ isAccent2ColorDark: boolean;
3
5
  changeHotel: (newHotelID: string) => void;
4
6
  };
@@ -3,21 +3,37 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useCurrentHotel = void 0;
4
4
  const react_1 = require("react");
5
5
  const contexts_1 = require("../contexts/index.js");
6
- const NoCompanyContextError_1 = require("errors/NoCompanyContextError");
6
+ const NoCompanyContextError_1 = require("../errors/NoCompanyContextError");
7
+ const Color_1 = require("../util/Color");
7
8
  const useCurrentHotel = () => {
9
+ var _a, _b;
8
10
  const companyContext = (0, react_1.useContext)(contexts_1.CompanyContext);
9
11
  if (!companyContext) {
10
12
  throw new NoCompanyContextError_1.NoCompanyContextError();
11
13
  }
12
- const hotel = (() => {
14
+ const hotel = (0, react_1.useMemo)(() => {
13
15
  for (const companyHotel of companyContext.hotels) {
14
16
  if (companyContext.selectedHotelID + '' === companyHotel.hotelID + '') {
15
17
  return companyHotel;
16
18
  }
17
19
  }
18
- })();
20
+ }, [companyContext === null || companyContext === void 0 ? void 0 : companyContext.hotels, companyContext === null || companyContext === void 0 ? void 0 : companyContext.selectedHotelID]);
21
+ const isAccentColorDark = (0, react_1.useMemo)(() => {
22
+ var _a;
23
+ if (!((_a = hotel === null || hotel === void 0 ? void 0 : hotel.colors) === null || _a === void 0 ? void 0 : _a.accent))
24
+ return false;
25
+ return (0, Color_1.lightOrDark)(hotel.colors.accent) === 'dark';
26
+ }, [(_a = hotel === null || hotel === void 0 ? void 0 : hotel.colors) === null || _a === void 0 ? void 0 : _a.accent]);
27
+ const isAccent2ColorDark = (0, react_1.useMemo)(() => {
28
+ var _a;
29
+ if (!((_a = hotel === null || hotel === void 0 ? void 0 : hotel.colors) === null || _a === void 0 ? void 0 : _a.accent2))
30
+ return false;
31
+ return (0, Color_1.lightOrDark)(hotel.colors.accent2) === 'dark';
32
+ }, [(_b = hotel === null || hotel === void 0 ? void 0 : hotel.colors) === null || _b === void 0 ? void 0 : _b.accent2]);
19
33
  return {
20
34
  hotel,
35
+ isAccentColorDark,
36
+ isAccent2ColorDark,
21
37
  changeHotel: (newHotelID) => {
22
38
  companyContext.changeHotel(newHotelID);
23
39
  },
@@ -1 +1 @@
1
- {"version":3,"file":"CurrentHotelHook.js","sourceRoot":"/","sources":["src/hooks/CurrentHotelHook.tsx"],"names":[],"mappings":";;;AAAA,iCAAmC;AACnC,iDAAoD;AACpD,wEAAqE;AAE9D,MAAM,eAAe,GAAG,GAAG,EAAE;IAChC,MAAM,cAAc,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAC;IAElD,IAAI,CAAC,cAAc,EAAE;QACjB,MAAM,IAAI,6CAAqB,EAAE,CAAC;KACrC;IAED,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE;QAChB,KAAK,MAAM,YAAY,IAAI,cAAc,CAAC,MAAM,EAAE;YAC9C,IAAI,cAAc,CAAC,eAAe,GAAG,EAAE,KAAK,YAAY,CAAC,OAAO,GAAG,EAAE,EAAE;gBACnE,OAAO,YAAY,CAAC;aACvB;SACJ;IACL,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACH,KAAK;QAEL,WAAW,EAAE,CAAC,UAAkB,EAAE,EAAE;YAChC,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;KACJ,CAAC;AACN,CAAC,CAAC;AAtBW,QAAA,eAAe,mBAsB1B","sourcesContent":["import { useContext } from 'react';\nimport { CompanyContext } from '@frontend/contexts';\nimport { NoCompanyContextError } from 'errors/NoCompanyContextError';\n\nexport const useCurrentHotel = () => {\n const companyContext = useContext(CompanyContext);\n\n if (!companyContext) {\n throw new NoCompanyContextError();\n }\n\n const hotel = (() => {\n for (const companyHotel of companyContext.hotels) {\n if (companyContext.selectedHotelID + '' === companyHotel.hotelID + '') {\n return companyHotel;\n }\n }\n })();\n\n return {\n hotel,\n\n changeHotel: (newHotelID: string) => {\n companyContext.changeHotel(newHotelID);\n },\n };\n};\n"]}
1
+ {"version":3,"file":"CurrentHotelHook.js","sourceRoot":"/","sources":["src/hooks/CurrentHotelHook.tsx"],"names":[],"mappings":";;;AAAA,iCAA4C;AAC5C,iDAAoD;AACpD,0EAAuE;AACvE,wCAA2C;AAEpC,MAAM,eAAe,GAAG,GAAG,EAAE;;IAChC,MAAM,cAAc,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAC;IAElD,IAAI,CAAC,cAAc,EAAE;QACjB,MAAM,IAAI,6CAAqB,EAAE,CAAC;KACrC;IAED,MAAM,KAAK,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QACvB,KAAK,MAAM,YAAY,IAAI,cAAc,CAAC,MAAM,EAAE;YAC9C,IAAI,cAAc,CAAC,eAAe,GAAG,EAAE,KAAK,YAAY,CAAC,OAAO,GAAG,EAAE,EAAE;gBACnE,OAAO,YAAY,CAAC;aACvB;SACJ;IACL,CAAC,EAAE,CAAC,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,MAAM,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,eAAe,CAAC,CAAC,CAAC;IAE9D,MAAM,iBAAiB,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;;QACnC,IAAI,CAAC,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,0CAAE,MAAM,CAAA;YAAE,OAAO,KAAK,CAAC;QAEzC,OAAO,IAAA,mBAAW,EAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC;IACvD,CAAC,EAAE,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,0CAAE,MAAM,CAAC,CAAC,CAAC;IAE5B,MAAM,kBAAkB,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;;QACpC,IAAI,CAAC,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,0CAAE,OAAO,CAAA;YAAE,OAAO,KAAK,CAAC;QAE1C,OAAO,IAAA,mBAAW,EAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC;IACxD,CAAC,EAAE,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,0CAAE,OAAO,CAAC,CAAC,CAAC;IAE7B,OAAO;QACH,KAAK;QACL,iBAAiB;QACjB,kBAAkB;QAElB,WAAW,EAAE,CAAC,UAAkB,EAAE,EAAE;YAChC,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;KACJ,CAAC;AACN,CAAC,CAAC;AApCW,QAAA,eAAe,mBAoC1B","sourcesContent":["import { useContext, useMemo } from 'react';\nimport { CompanyContext } from '@frontend/contexts';\nimport { NoCompanyContextError } from '@/errors/NoCompanyContextError';\nimport { lightOrDark } from '@/util/Color';\n\nexport const useCurrentHotel = () => {\n const companyContext = useContext(CompanyContext);\n\n if (!companyContext) {\n throw new NoCompanyContextError();\n }\n\n const hotel = useMemo(() => {\n for (const companyHotel of companyContext.hotels) {\n if (companyContext.selectedHotelID + '' === companyHotel.hotelID + '') {\n return companyHotel;\n }\n }\n }, [companyContext?.hotels, companyContext?.selectedHotelID]);\n\n const isAccentColorDark = useMemo(() => {\n if (!hotel?.colors?.accent) return false;\n\n return lightOrDark(hotel.colors.accent) === 'dark';\n }, [hotel?.colors?.accent]);\n\n const isAccent2ColorDark = useMemo(() => {\n if (!hotel?.colors?.accent2) return false;\n\n return lightOrDark(hotel.colors.accent2) === 'dark';\n }, [hotel?.colors?.accent2]);\n\n return {\n hotel,\n isAccentColorDark,\n isAccent2ColorDark,\n\n changeHotel: (newHotelID: string) => {\n companyContext.changeHotel(newHotelID);\n },\n };\n};\n"]}
@@ -68,6 +68,7 @@ export { default as StepDate } from './pages/steps/StepDate/StepDate';
68
68
  export { default as StepConfirmation } from './pages/steps/StepConfirmation/StepConfirmation';
69
69
  export { default as StepHotel } from './pages/steps/StepHotel/StepHotel';
70
70
  export { default as StepRoom } from './pages/steps/StepRoom/StepRoom';
71
+ export { default as StepGroupedRoom } from './pages/steps/StepGroupedRoom/StepGroupedRoom';
71
72
  export { default as StepThanks } from './pages/steps/StepThanks/StepThanks';
72
73
  export * from './translations/Translation';
73
74
  export * from './util/Color';
package/dist/src/index.js CHANGED
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.Version = exports.events = exports.RoomstayEventManager = exports.StepThanks = exports.StepRoom = exports.StepHotel = exports.StepConfirmation = exports.StepDate = exports.StepAddon = exports.StepManager = exports.HotelDataSource = exports.API = exports.DataLayer = exports.withDI = exports.registerReplacement = exports.RoomstayThemeEngine = exports.SessionProvider = exports.useFormContext = exports.FullPageEngineSmallSpacingFeature = exports.E164PhoneNumberFieldFeature = exports.ShowIATANumberOnCheckoutFeature = exports.RoomUpsellFeature = exports.InlineAddonStepFeature = exports.FeaturedPromoFeature = exports.DatePickerTypeFeature = exports.ConfirmationVerifyFeature = exports.RatePillProvider = exports.FeatureProvider = exports.CurrencyProvider = exports.SmallSpinner = exports.StepNoRoomBestRateAlert = exports.StepConfirmationCountrySelector = exports.NoRoomsFoundBlock = exports.BE_NO_ROOMS_FOUND_BLOCK = exports.BEButton = exports.Alert = exports.Headline = exports.AutoAutoHeight = exports.LineBreak = exports.Checkbox = exports.RadioFields = exports.InputGroup = exports.TextArea = exports.TextBox = exports.Icon = exports.Link = exports.useTranslation = exports.react = void 0;
20
+ exports.Version = exports.events = exports.RoomstayEventManager = exports.StepThanks = exports.StepGroupedRoom = exports.StepRoom = exports.StepHotel = exports.StepConfirmation = exports.StepDate = exports.StepAddon = exports.StepManager = exports.HotelDataSource = exports.API = exports.DataLayer = exports.withDI = exports.registerReplacement = exports.RoomstayThemeEngine = exports.SessionProvider = exports.useFormContext = exports.FullPageEngineSmallSpacingFeature = exports.E164PhoneNumberFieldFeature = exports.ShowIATANumberOnCheckoutFeature = exports.RoomUpsellFeature = exports.InlineAddonStepFeature = exports.FeaturedPromoFeature = exports.DatePickerTypeFeature = exports.ConfirmationVerifyFeature = exports.RatePillProvider = exports.FeatureProvider = exports.CurrencyProvider = exports.SmallSpinner = exports.StepNoRoomBestRateAlert = exports.StepConfirmationCountrySelector = exports.NoRoomsFoundBlock = exports.BE_NO_ROOMS_FOUND_BLOCK = exports.BEButton = exports.Alert = exports.Headline = exports.AutoAutoHeight = exports.LineBreak = exports.Checkbox = exports.RadioFields = exports.InputGroup = exports.TextArea = exports.TextBox = exports.Icon = exports.Link = exports.useTranslation = exports.react = void 0;
21
21
  const StepConfirmation_1 = __importDefault(require("./pages/steps/StepConfirmation/StepConfirmation"));
22
22
  const StepDate_1 = __importDefault(require("./pages/steps/StepDate/StepDate"));
23
23
  const StepRoom_1 = __importDefault(require("./pages/steps/StepRoom/StepRoom"));
@@ -145,6 +145,8 @@ var StepHotel_1 = require("./pages/steps/StepHotel/StepHotel");
145
145
  Object.defineProperty(exports, "StepHotel", { enumerable: true, get: function () { return __importDefault(StepHotel_1).default; } });
146
146
  var StepRoom_2 = require("./pages/steps/StepRoom/StepRoom");
147
147
  Object.defineProperty(exports, "StepRoom", { enumerable: true, get: function () { return __importDefault(StepRoom_2).default; } });
148
+ var StepGroupedRoom_1 = require("./pages/steps/StepGroupedRoom/StepGroupedRoom");
149
+ Object.defineProperty(exports, "StepGroupedRoom", { enumerable: true, get: function () { return __importDefault(StepGroupedRoom_1).default; } });
148
150
  var StepThanks_2 = require("./pages/steps/StepThanks/StepThanks");
149
151
  Object.defineProperty(exports, "StepThanks", { enumerable: true, get: function () { return __importDefault(StepThanks_2).default; } });
150
152
  __exportStar(require("./translations/Translation"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport StepDate from '@/pages/steps/StepDate/StepDate';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport StepThanks from '@/pages/steps/StepThanks/StepThanks';\nimport StepManager from '@/util/StepManager';\n\n// TODO: Look into resolving this.\nimport ReactRaw from 'react';\nimport RoomstayEventManager from './events/RoomstayEventManager';\n\nexport const react = ReactRaw;\n\nexport { useTranslation } from 'react-i18next';\nexport { Link } from 'react-router-dom';\n\n// Components\nexport * from '@/engines/FullPageBookingEngine/FullPageBookingEngine';\nexport * from '@/engines/InlineRoomMiniEngine/InlineRoomMiniEngine';\nexport * from '@/engines/RecentSearchesEngine/RecentSearchesEngine';\nexport * from '@/engines/BookingWizardEngine/BookingWizardEngine';\nexport * from '@/engines/CustomEngine/CustomEngine';\n\nexport { default as Icon } from '@/components/generic/Icon/Icon';\nexport * from '@/components/generic/Icon/Icon';\nexport * from '@/components/generic/Text';\nexport * from '@/components/generic/Select/index';\n\nexport { default as TextBox } from '@/components/generic/TextBox';\nexport { default as TextArea } from '@/components/generic/TextArea';\nexport { default as InputGroup } from '@/components/generic/InputGroup/InputGroup';\nexport { default as RadioFields } from '@/components/generic/radio/RadioFields';\nexport { default as Checkbox } from '@/components/generic/Checkbox/Checkbox';\n\nexport { default as LineBreak } from '@/components/generic/LineBreak';\nexport { default as AutoAutoHeight } from '@/animations/AutoAutoHeight';\nexport { default as Headline } from '@/components/generic/Headline';\n\nexport * from '@/components/generic/Alert';\nexport { default as Alert } from '@/components/generic/Alert';\nexport { default as BEButton } from '@/components/generic/BEButton';\n\nexport { BE_NO_ROOMS_FOUND_BLOCK } from '@/components/steps/room/NoRoomsFoundBlock';\nexport { default as NoRoomsFoundBlock } from '@/components/steps/room/NoRoomsFoundBlock';\n\nexport { default as StepConfirmationCountrySelector } from '@/components/steps/confirmation/StepConfirmationCountrySelector';\n\nexport * from '@/components/steps/confirmation/StepConfirmationCommentsComponent';\nexport * from '@/components/summary/BESummaryPerkBlock';\n\nexport * from '@/components/summary/BESummary';\n\nexport * from '@/components/steps/room/StepRoomBestRateAlert';\nexport { default as StepNoRoomBestRateAlert } from '@/components/steps/room/StepRoomBestRateAlert';\n\n// Loaders\nexport { default as SmallSpinner } from '@/components/generic/loader/SmallSpinner';\n\n// Providers\nexport * from '@/providers/LanguageProvider';\nexport * from '@/providers/CurrencyProvider';\nexport { default as CurrencyProvider } from '@/providers/CurrencyProvider';\nexport { default as FeatureProvider } from '@/providers/FeatureProvider';\nexport { default as RatePillProvider } from '@/providers/RatePillProvider';\nexport * from '@/providers/PromotionProvider';\n\n// Features\n\nexport { default as ConfirmationVerifyFeature } from '@/providers/feature/ConfirmationVerifyFeature';\nexport { default as DatePickerTypeFeature } from '@/providers/feature/DatePickerTypeFeature';\nexport { default as FeaturedPromoFeature } from '@/providers/feature/FeaturedPromoFeature';\nexport { default as InlineAddonStepFeature } from '@/providers/feature/InlineAddonStepFeature';\nexport { default as RoomUpsellFeature } from '@/providers/feature/RoomUpsellFeature';\nexport { default as ShowIATANumberOnCheckoutFeature } from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\nexport { default as E164PhoneNumberFieldFeature } from '@/providers/feature/E164PhoneNumberFieldFeature';\nexport { default as FullPageEngineSmallSpacingFeature } from '@/providers/feature/FullPageEngineSmallSpacingFeature';\n\n// Contexts\nexport * from '@frontend/contexts';\nexport { useFormContext } from 'react-hook-form';\n\nexport { default as SessionProvider } from '@/providers/SessionProvider';\nexport * from '@/providers/RoomstayThemeEngine';\nexport { default as RoomstayThemeEngine } from '@/providers/RoomstayThemeEngine';\nexport { registerReplacement, withDI } from '@/providers/DIProvider';\n\nexport { default as DataLayer } from '@/util/DataLayer';\nexport * from '@/util/DataLayer';\n\n// Models\nexport * from '@/models/Client/Hotel/Hotel';\nexport * from '@/models/Client/Hotel/HotelPerk';\n\nexport * from '@/models/Client/Hotel/DistanceUnitType.types';\nexport * from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\nexport * from '@/models/Client/Hotel/Company';\n\nexport { default as API } from '@/api/BookingAPI';\n\nexport * from '@/models/Api/HotelOverrideDTO';\nexport * from '@/models/Api/HotelDTO';\n\nexport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\n\n// Steps\nexport { default as StepManager } from '@/util/StepManager';\n\nexport { default as StepAddon } from '@/pages/steps/StepAddon/StepAddon';\nexport { default as StepDate } from '@/pages/steps/StepDate/StepDate';\nexport { default as StepConfirmation } from '@/pages/steps/StepConfirmation/StepConfirmation';\nexport { default as StepHotel } from '@/pages/steps/StepHotel/StepHotel';\nexport { default as StepRoom } from '@/pages/steps/StepRoom/StepRoom';\nexport { default as StepThanks } from '@/pages/steps/StepThanks/StepThanks';\n\nexport * from '@/translations/Translation';\n\n// Util\n\nexport * from '@/util/Color';\nexport * from '@/util/Debounce';\n\n// Hooks\n\nexport * from '@/hooks/CurrentHotelHook';\nexport * from '@/hooks/EventHook';\n\nexport * from '@/events/index';\n\n/** @deprecated use `roomstay.events` instead */\nexport { default as RoomstayEventManager } from '@/events/RoomstayEventManager';\n\nexport const events = {\n on: RoomstayEventManager.addEvent,\n raise: RoomstayEventManager.raise,\n};\n\ndeclare const RS_VERSION: string;\nexport const Version = RS_VERSION;\n\nStepManager.currentSteps = {\n 0: StepDate,\n 10: StepRoom,\n 20: StepConfirmation,\n 30: StepThanks,\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport StepDate from '@/pages/steps/StepDate/StepDate';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport StepThanks from '@/pages/steps/StepThanks/StepThanks';\nimport StepManager from '@/util/StepManager';\n\n// TODO: Look into resolving this.\nimport ReactRaw from 'react';\nimport RoomstayEventManager from './events/RoomstayEventManager';\n\nexport const react = ReactRaw;\n\nexport { useTranslation } from 'react-i18next';\nexport { Link } from 'react-router-dom';\n\n// Components\nexport * from '@/engines/FullPageBookingEngine/FullPageBookingEngine';\nexport * from '@/engines/InlineRoomMiniEngine/InlineRoomMiniEngine';\nexport * from '@/engines/RecentSearchesEngine/RecentSearchesEngine';\nexport * from '@/engines/BookingWizardEngine/BookingWizardEngine';\nexport * from '@/engines/CustomEngine/CustomEngine';\n\nexport { default as Icon } from '@/components/generic/Icon/Icon';\nexport * from '@/components/generic/Icon/Icon';\nexport * from '@/components/generic/Text';\nexport * from '@/components/generic/Select/index';\n\nexport { default as TextBox } from '@/components/generic/TextBox';\nexport { default as TextArea } from '@/components/generic/TextArea';\nexport { default as InputGroup } from '@/components/generic/InputGroup/InputGroup';\nexport { default as RadioFields } from '@/components/generic/radio/RadioFields';\nexport { default as Checkbox } from '@/components/generic/Checkbox/Checkbox';\n\nexport { default as LineBreak } from '@/components/generic/LineBreak';\nexport { default as AutoAutoHeight } from '@/animations/AutoAutoHeight';\nexport { default as Headline } from '@/components/generic/Headline';\n\nexport * from '@/components/generic/Alert';\nexport { default as Alert } from '@/components/generic/Alert';\nexport { default as BEButton } from '@/components/generic/BEButton';\n\nexport { BE_NO_ROOMS_FOUND_BLOCK } from '@/components/steps/room/NoRoomsFoundBlock';\nexport { default as NoRoomsFoundBlock } from '@/components/steps/room/NoRoomsFoundBlock';\n\nexport { default as StepConfirmationCountrySelector } from '@/components/steps/confirmation/StepConfirmationCountrySelector';\n\nexport * from '@/components/steps/confirmation/StepConfirmationCommentsComponent';\nexport * from '@/components/summary/BESummaryPerkBlock';\n\nexport * from '@/components/summary/BESummary';\n\nexport * from '@/components/steps/room/StepRoomBestRateAlert';\nexport { default as StepNoRoomBestRateAlert } from '@/components/steps/room/StepRoomBestRateAlert';\n\n// Loaders\nexport { default as SmallSpinner } from '@/components/generic/loader/SmallSpinner';\n\n// Providers\nexport * from '@/providers/LanguageProvider';\nexport * from '@/providers/CurrencyProvider';\nexport { default as CurrencyProvider } from '@/providers/CurrencyProvider';\nexport { default as FeatureProvider } from '@/providers/FeatureProvider';\nexport { default as RatePillProvider } from '@/providers/RatePillProvider';\nexport * from '@/providers/PromotionProvider';\n\n// Features\n\nexport { default as ConfirmationVerifyFeature } from '@/providers/feature/ConfirmationVerifyFeature';\nexport { default as DatePickerTypeFeature } from '@/providers/feature/DatePickerTypeFeature';\nexport { default as FeaturedPromoFeature } from '@/providers/feature/FeaturedPromoFeature';\nexport { default as InlineAddonStepFeature } from '@/providers/feature/InlineAddonStepFeature';\nexport { default as RoomUpsellFeature } from '@/providers/feature/RoomUpsellFeature';\nexport { default as ShowIATANumberOnCheckoutFeature } from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\nexport { default as E164PhoneNumberFieldFeature } from '@/providers/feature/E164PhoneNumberFieldFeature';\nexport { default as FullPageEngineSmallSpacingFeature } from '@/providers/feature/FullPageEngineSmallSpacingFeature';\n\n// Contexts\nexport * from '@frontend/contexts';\nexport { useFormContext } from 'react-hook-form';\n\nexport { default as SessionProvider } from '@/providers/SessionProvider';\nexport * from '@/providers/RoomstayThemeEngine';\nexport { default as RoomstayThemeEngine } from '@/providers/RoomstayThemeEngine';\nexport { registerReplacement, withDI } from '@/providers/DIProvider';\n\nexport { default as DataLayer } from '@/util/DataLayer';\nexport * from '@/util/DataLayer';\n\n// Models\nexport * from '@/models/Client/Hotel/Hotel';\nexport * from '@/models/Client/Hotel/HotelPerk';\n\nexport * from '@/models/Client/Hotel/DistanceUnitType.types';\nexport * from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\nexport * from '@/models/Client/Hotel/Company';\n\nexport { default as API } from '@/api/BookingAPI';\n\nexport * from '@/models/Api/HotelOverrideDTO';\nexport * from '@/models/Api/HotelDTO';\n\nexport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\n\n// Steps\nexport { default as StepManager } from '@/util/StepManager';\n\nexport { default as StepAddon } from '@/pages/steps/StepAddon/StepAddon';\nexport { default as StepDate } from '@/pages/steps/StepDate/StepDate';\nexport { default as StepConfirmation } from '@/pages/steps/StepConfirmation/StepConfirmation';\nexport { default as StepHotel } from '@/pages/steps/StepHotel/StepHotel';\nexport { default as StepRoom } from '@/pages/steps/StepRoom/StepRoom';\nexport { default as StepGroupedRoom } from '@/pages/steps/StepGroupedRoom/StepGroupedRoom';\nexport { default as StepThanks } from '@/pages/steps/StepThanks/StepThanks';\n\nexport * from '@/translations/Translation';\n\n// Util\n\nexport * from '@/util/Color';\nexport * from '@/util/Debounce';\n\n// Hooks\n\nexport * from '@/hooks/CurrentHotelHook';\nexport * from '@/hooks/EventHook';\n\nexport * from '@/events/index';\n\n/** @deprecated use `roomstay.events` instead */\nexport { default as RoomstayEventManager } from '@/events/RoomstayEventManager';\n\nexport const events = {\n on: RoomstayEventManager.addEvent,\n raise: RoomstayEventManager.raise,\n};\n\ndeclare const RS_VERSION: string;\nexport const Version = RS_VERSION;\n\nStepManager.currentSteps = {\n 0: StepDate,\n 10: StepRoom,\n 20: StepConfirmation,\n 30: StepThanks,\n};\n"]}
@@ -17,6 +17,6 @@ export default abstract class Step {
17
17
  * to automatically set theme when step is loaded
18
18
  */
19
19
  getColorProfile(company: Company, hotel?: Hotel): IHotelColorScheme | undefined;
20
- abstract getComponent(): ReactFragment;
20
+ abstract getComponent(): ReactFragment | JSX.Element;
21
21
  abstract getValidator(): StepValidator;
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Step.js","sourceRoot":"/","sources":["src/pages/steps/Step.ts"],"names":[],"mappings":";;AAMA,MAA8B,IAAI;IAI9B,YAAmB,IAAY;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACjC,CAAC;IAES,cAAc;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACzC,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAEM,UAAU;QACb,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC;IAClD,CAAC;IAEM,kBAAkB;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,sBAAsB;QACzB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED;;;OAGG;IACI,eAAe,CAAC,OAAgB,EAAE,KAAa;QAClD,OAAO;IACX,CAAC;CAIJ;AAvCD,uBAuCC","sourcesContent":["import { ReactFragment } from 'react';\nimport { IHotelColorScheme } from '@roomstay/core';\nimport type { Company } from '@/models/Client/Hotel/Company';\nimport type { Hotel } from '@/models/Client/Hotel/Hotel';\nimport StepValidator from '@/pages/steps/StepValidator';\n\nexport default abstract class Step {\n protected name: string;\n protected showOnNavigation: boolean;\n\n public constructor(name: string) {\n this.name = name;\n this.showOnNavigation = true;\n }\n\n protected getUrlFragment() {\n return this.name.toLocaleLowerCase();\n }\n\n public getName() {\n return this.name;\n }\n\n public getStepUrl() {\n return `${'/step/'}${this.getUrlFragment()}/`;\n }\n\n public getStepTranslation(): string | null {\n return null;\n }\n\n public shouldShowOnNavigation() {\n return this.showOnNavigation;\n }\n\n /**\n * Method gets called when Step is activated. Return a @type ColorProfile\n * to automatically set theme when step is loaded\n */\n public getColorProfile(company: Company, hotel?: Hotel): IHotelColorScheme | undefined {\n return;\n }\n\n public abstract getComponent(): ReactFragment;\n public abstract getValidator(): StepValidator;\n}\n"]}
1
+ {"version":3,"file":"Step.js","sourceRoot":"/","sources":["src/pages/steps/Step.ts"],"names":[],"mappings":";;AAMA,MAA8B,IAAI;IAI9B,YAAmB,IAAY;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACjC,CAAC;IAES,cAAc;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACzC,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAEM,UAAU;QACb,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC;IAClD,CAAC;IAEM,kBAAkB;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,sBAAsB;QACzB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED;;;OAGG;IACI,eAAe,CAAC,OAAgB,EAAE,KAAa;QAClD,OAAO;IACX,CAAC;CAIJ;AAvCD,uBAuCC","sourcesContent":["import { ReactFragment } from 'react';\nimport { IHotelColorScheme } from '@roomstay/core';\nimport type { Company } from '@/models/Client/Hotel/Company';\nimport type { Hotel } from '@/models/Client/Hotel/Hotel';\nimport StepValidator from '@/pages/steps/StepValidator';\n\nexport default abstract class Step {\n protected name: string;\n protected showOnNavigation: boolean;\n\n public constructor(name: string) {\n this.name = name;\n this.showOnNavigation = true;\n }\n\n protected getUrlFragment() {\n return this.name.toLocaleLowerCase();\n }\n\n public getName() {\n return this.name;\n }\n\n public getStepUrl() {\n return `${'/step/'}${this.getUrlFragment()}/`;\n }\n\n public getStepTranslation(): string | null {\n return null;\n }\n\n public shouldShowOnNavigation() {\n return this.showOnNavigation;\n }\n\n /**\n * Method gets called when Step is activated. Return a @type ColorProfile\n * to automatically set theme when step is loaded\n */\n public getColorProfile(company: Company, hotel?: Hotel): IHotelColorScheme | undefined {\n return;\n }\n\n public abstract getComponent(): ReactFragment | JSX.Element;\n public abstract getValidator(): StepValidator;\n}\n"]}
@@ -40,6 +40,9 @@ const getAccentOverrideStyleContent = (color) => {
40
40
  };
41
41
  exports.getAccentOverrideStyleContent = getAccentOverrideStyleContent;
42
42
  const lightOrDark = (hc) => {
43
+ if (hc[0] === '#') {
44
+ hc = hc.replace('#', '');
45
+ }
43
46
  const [r, g, b] = [0, 2, 4].map((p) => parseInt(hc.substring(p, p + 2), 16));
44
47
  const yiq = (r * 299 + g * 587 + b * 114) / 1000;
45
48
  return yiq >= 128 ? 'light' : 'dark';
@@ -1 +1 @@
1
- {"version":3,"file":"Color.js","sourceRoot":"/","sources":["src/util/Color.ts"],"names":[],"mappings":";;;AAEA,IAAY,KAkBX;AAlBD,WAAY,KAAK;IACb,4CAAmC,CAAA;IACnC,6CAAoC,CAAA;IACpC,6CAAoC,CAAA;IAEpC,4CAAmC,CAAA;IACnC,qDAA4C,CAAA;IAC5C,0CAAiC,CAAA;IACjC,4CAAmC,CAAA;IACnC,wCAA+B,CAAA;IAE/B,8CAAqC,CAAA;IACrC,+CAAsC,CAAA;IACtC,sCAA6B,CAAA;IAC7B,iDAAwC,CAAA;IACxC,sCAA6B,CAAA;IAC7B,sCAA6B,CAAA;IAC7B,wCAA+B,CAAA;AACnC,CAAC,EAlBW,KAAK,GAAL,aAAK,KAAL,aAAK,QAkBhB;AAED,gJAAgJ;AACzI,MAAM,6BAA6B,GAAG,CAAC,KAAwB,EAAE,EAAE;IACtE,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,IAAI,KAAK,CAAC,MAAM,EAAE;QACd,eAAe,GAAG;wCACc,KAAK,CAAC,MAAM,CAAC,UAAU;kCAC7B,KAAK,CAAC,MAAM,CAAC,IAAI;yCACV,KAAK,CAAC,MAAM,CAAC,UAAU;SACvD,CAAC;KACL;IAED,OAAO;+BACoB,KAAK,CAAC,MAAM;+BACZ,KAAK,CAAC,OAAO;+BACb,KAAK,CAAC,OAAO;;UAElC,eAAe;;UAEf,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACnF,CAAC,CAAC;AAlBW,QAAA,6BAA6B,iCAkBxC;AAEK,MAAM,WAAW,GAAG,CAAC,EAAU,EAAoB,EAAE;IACxD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;IACjD,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACzC,CAAC,CAAC;AAJW,QAAA,WAAW,eAItB","sourcesContent":["import { IHotelColorScheme } from '@roomstay/core';\n\nexport enum Color {\n Accent = 'var(--rs-color-accent-1)',\n Accent2 = 'var(--rs-color-accent-2)',\n Accent3 = 'var(--rs-color-accent-3)',\n\n Success = 'var(--rs-color-success)',\n SuccessTint = 'var(--rs-color-success-tint)',\n Danger = 'var(--rs-color-danger)',\n Warning = 'var(--rs-color-warning)',\n Alert = 'var(--rs-color-alert)',\n\n Graphite = 'var(--rs-color-graphite)',\n DarkGrey = 'var(--rs-color-dark-grey)',\n Grey = 'var(--rs-color-grey)',\n LightGrey = 'var(--rs-color-light-grey)',\n Snow = 'var(--rs-color-snow)',\n Navy = 'var(--rs-color-navy)',\n White = 'var(--rs-color-white)',\n}\n\n/** Returns the style tag content for overriding default colors. Insert this in an existing style tag, you'll need to specify your own target */\nexport const getAccentOverrideStyleContent = (color: IHotelColorScheme) => {\n let headerOverrides = '';\n if (color.navbar) {\n headerOverrides = `\n --rs-color-header-background: ${color.navbar.background}!important;\n --rs-color-header-text: ${color.navbar.text}!important;\n --rs-color-header-text-active: ${color.navbar.textActive}!important;\n `;\n }\n\n return `\n --rs-color-accent-1: ${color.accent}!important;\n --rs-color-accent-2: ${color.accent2}!important;\n --rs-color-accent-3: ${color.accent3}!important;\n\n ${headerOverrides}\n\n ${color.success ? `--rs-color-success: ${color.success}!important;` : ''}`;\n};\n\nexport const lightOrDark = (hc: string): 'light' | 'dark' => {\n const [r, g, b] = [0, 2, 4].map((p) => parseInt(hc.substring(p, p + 2), 16));\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 128 ? 'light' : 'dark';\n};\n"]}
1
+ {"version":3,"file":"Color.js","sourceRoot":"/","sources":["src/util/Color.ts"],"names":[],"mappings":";;;AAEA,IAAY,KAkBX;AAlBD,WAAY,KAAK;IACb,4CAAmC,CAAA;IACnC,6CAAoC,CAAA;IACpC,6CAAoC,CAAA;IAEpC,4CAAmC,CAAA;IACnC,qDAA4C,CAAA;IAC5C,0CAAiC,CAAA;IACjC,4CAAmC,CAAA;IACnC,wCAA+B,CAAA;IAE/B,8CAAqC,CAAA;IACrC,+CAAsC,CAAA;IACtC,sCAA6B,CAAA;IAC7B,iDAAwC,CAAA;IACxC,sCAA6B,CAAA;IAC7B,sCAA6B,CAAA;IAC7B,wCAA+B,CAAA;AACnC,CAAC,EAlBW,KAAK,GAAL,aAAK,KAAL,aAAK,QAkBhB;AAED,gJAAgJ;AACzI,MAAM,6BAA6B,GAAG,CAAC,KAAwB,EAAE,EAAE;IACtE,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,IAAI,KAAK,CAAC,MAAM,EAAE;QACd,eAAe,GAAG;wCACc,KAAK,CAAC,MAAM,CAAC,UAAU;kCAC7B,KAAK,CAAC,MAAM,CAAC,IAAI;yCACV,KAAK,CAAC,MAAM,CAAC,UAAU;SACvD,CAAC;KACL;IAED,OAAO;+BACoB,KAAK,CAAC,MAAM;+BACZ,KAAK,CAAC,OAAO;+BACb,KAAK,CAAC,OAAO;;UAElC,eAAe;;UAEf,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACnF,CAAC,CAAC;AAlBW,QAAA,6BAA6B,iCAkBxC;AAEK,MAAM,WAAW,GAAG,CAAC,EAAU,EAAoB,EAAE;IACxD,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QACf,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;KAC5B;IACD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;IACjD,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACzC,CAAC,CAAC;AAPW,QAAA,WAAW,eAOtB","sourcesContent":["import { IHotelColorScheme } from '@roomstay/core';\n\nexport enum Color {\n Accent = 'var(--rs-color-accent-1)',\n Accent2 = 'var(--rs-color-accent-2)',\n Accent3 = 'var(--rs-color-accent-3)',\n\n Success = 'var(--rs-color-success)',\n SuccessTint = 'var(--rs-color-success-tint)',\n Danger = 'var(--rs-color-danger)',\n Warning = 'var(--rs-color-warning)',\n Alert = 'var(--rs-color-alert)',\n\n Graphite = 'var(--rs-color-graphite)',\n DarkGrey = 'var(--rs-color-dark-grey)',\n Grey = 'var(--rs-color-grey)',\n LightGrey = 'var(--rs-color-light-grey)',\n Snow = 'var(--rs-color-snow)',\n Navy = 'var(--rs-color-navy)',\n White = 'var(--rs-color-white)',\n}\n\n/** Returns the style tag content for overriding default colors. Insert this in an existing style tag, you'll need to specify your own target */\nexport const getAccentOverrideStyleContent = (color: IHotelColorScheme) => {\n let headerOverrides = '';\n if (color.navbar) {\n headerOverrides = `\n --rs-color-header-background: ${color.navbar.background}!important;\n --rs-color-header-text: ${color.navbar.text}!important;\n --rs-color-header-text-active: ${color.navbar.textActive}!important;\n `;\n }\n\n return `\n --rs-color-accent-1: ${color.accent}!important;\n --rs-color-accent-2: ${color.accent2}!important;\n --rs-color-accent-3: ${color.accent3}!important;\n\n ${headerOverrides}\n\n ${color.success ? `--rs-color-success: ${color.success}!important;` : ''}`;\n};\n\nexport const lightOrDark = (hc: string): 'light' | 'dark' => {\n if (hc[0] === '#') {\n hc = hc.replace('#', '');\n }\n const [r, g, b] = [0, 2, 4].map((p) => parseInt(hc.substring(p, p + 2), 16));\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 128 ? 'light' : 'dark';\n};\n"]}