@tripian/react 9.1.73 → 9.1.75

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.
@@ -38,6 +38,7 @@ interface IPoiInfo {
38
38
  sendFeedback: (value: Model.FeedbackRequest) => Promise<void>;
39
39
  placeInfoCallBack: () => void;
40
40
  redeemClicked?: () => void;
41
+ onImageModalChange?: (isOpen: boolean) => void;
41
42
  t: (value: Model.TranslationKey) => string;
42
43
  }
43
44
  declare const PoiInfo: React.FC<IPoiInfo>;
@@ -5,6 +5,7 @@ import 'slick-carousel/slick/slick-theme.css';
5
5
  interface IPoiInfoImageDesktop {
6
6
  poi: Model.Poi;
7
7
  t: (key: Model.TranslationKey) => string;
8
+ onImageModalChange?: (isOpen: boolean) => void;
8
9
  }
9
10
  declare const PoiInfoImageDesktop: React.FC<IPoiInfoImageDesktop>;
10
11
  export default PoiInfoImageDesktop;
@@ -35,6 +35,7 @@ interface IStepInfo {
35
35
  showStepScoreDetails: boolean;
36
36
  isBookingClicked: boolean;
37
37
  timezone?: string;
38
+ onImageModalChange?: (isOpen: boolean) => void;
38
39
  t: (value: Model.TranslationKey) => string;
39
40
  }
40
41
  declare const StepInfo: React.FC<IStepInfo>;
package/index.js CHANGED
@@ -27535,7 +27535,7 @@ const DestinationSelect = ({ options, selectedOptionId, onSelectedOptionChange,
27535
27535
  react_1.default.createElement(react_select_1.default, { ref: selectRef, options: (0, match_sorter_1.matchSorter)(options, destinationSearchInput, { keys: ['label'] }), defaultValue: selectedOption, value: selectedOption, onChange: handleChange, onInputChange: (e) => setDestinationSearchInput(e), placeholder: placeHolder, className: "destinationSelect", classNamePrefix: "destinationSelect", isDisabled: disabled, isOptionDisabled: (option) => option.isSelected === true, isOptionSelected: (option) => option.isSelected === true, onFocus: () => onFocus && onFocus(), onBlur: () => onBlur && onBlur(), noOptionsMessage: noOptionsMessage, formatOptionLabel: formatOptionLabel, menuPlacement: "auto", components: { DropdownIndicator: null }, menuPortalTarget: document.body, styles: {
27536
27536
  menuPortal: (base) => ({ ...base, zIndex: 9999 }),
27537
27537
  } }),
27538
- showAiSuggestions && (react_1.default.createElement(Button_1.default, { onClick: handleOpenSuggestionsModal, className: "absolute top-0 right-0 mt-3 mr-12 px-3 py-1 bg-gradient-to-r from-blue-500 to-purple-600 text-white text-sm rounded-full shadow-md hover:shadow-lg transition-all flex items-center md:text-sm md:px-3 md:py-1 sm:text-xs sm:px-2 sm:py-0.5 sm:top-[50%] sm:transform sm:-translate-y-1/2 sm:mt-0 sm:mr-8", style: { zIndex: 1 }, text: t('destination.ai.buttonText'), type: ButtonTypes_1.default.CONTAINED }))),
27538
+ showAiSuggestions && (react_1.default.createElement(Button_1.default, { onClick: handleOpenSuggestionsModal, className: `px-3 py-1 bg-gradient-to-r from-blue-500 to-purple-600 text-white text-sm rounded-full shadow-md hover:shadow-lg transition-all flex items-center md:text-sm md:px-3 md:py-1 sm:text-xs sm:px-2 sm:py-0.5 ${DestinationSelect_scss_1.default.aiSuggestionsButton}`, style: { zIndex: 1 }, text: t('destination.ai.buttonText'), type: ButtonTypes_1.default.CONTAINED }))),
27539
27539
  showAiSuggestions &&
27540
27540
  isSuggestionsModalOpen &&
27541
27541
  (0, react_dom_1.createPortal)(react_1.default.createElement(CitySearchModal_1.default, { isOpen: isSuggestionsModalOpen, onClose: () => setSuggestionsModalOpen(false), suggestions: suggestions || [], onSelectCity: handleSuggestedCitySelect, searchText: lastSearchText, handleSearchChange: handleSearchChange, isSearching: isSearching, onClearSuggestions: onClearSuggestions, t: t }), document.body)));
@@ -57792,7 +57792,7 @@ const PoiInfo = ({ poi, favorite, toggleFavorite, close, addRemoveReplacePoi, da
57792
57792
  // TICKET_PROVIDER_IDS,
57793
57793
  RESTAURANT_RESERVATION_PROVIDER_IDS, myOffers, isLoadingOffer, offerButtonClick, offerCardClicked, hideOffers,
57794
57794
  // offerClicked,
57795
- loadingFeedback, feedbackSubjects, isBookingClicked, timezone = 'UTC', sendFeedback, redeemClicked, t, }) => {
57795
+ loadingFeedback, feedbackSubjects, isBookingClicked, timezone = 'UTC', sendFeedback, redeemClicked, onImageModalChange, t, }) => {
57796
57796
  const [optInModalWarningMessage, setOptInModalWarningMessage] = (0, react_1.useState)([]);
57797
57797
  const [showShareModal, setShowShareModal] = (0, react_1.useState)(false);
57798
57798
  const offerRef = react_1.default.createRef();
@@ -57835,7 +57835,7 @@ loadingFeedback, feedbackSubjects, isBookingClicked, timezone = 'UTC', sendFeedb
57835
57835
  react_1.default.createElement("div", { className: PoiInfo_scss_1.default.hours },
57836
57836
  react_1.default.createElement(OpenedHours_1.default, { hourStr: poi.hours || '', planDate: planDate, timezone: timezone, t: t })))),
57837
57837
  react_1.default.createElement("div", { className: PoiInfo_scss_1.default.content },
57838
- react_1.default.createElement("div", { className: PoiInfo_scss_1.default.gallery }, !isNaN(parseFloat(poi.id)) && react_1.default.createElement(PoiInfoImageDesktop_1.default, { poi: poi, t: t }))),
57838
+ react_1.default.createElement("div", { className: PoiInfo_scss_1.default.gallery }, !isNaN(parseFloat(poi.id)) && react_1.default.createElement(PoiInfoImageDesktop_1.default, { poi: poi, onImageModalChange: onImageModalChange, t: t }))),
57839
57839
  react_1.default.createElement(PoiInfoText_1.default, { poi: poi, hideFeatures: hideFeatures, hideCuisine: hideCuisine, hideTours: hideTours, reservationUrl: reservationUrl, hideBookingButton: hideBookingButton, reservationButtonClick: reservationButtonClick, tourProducts: tourProducts, ticketProducts: ticketProducts, addRemoveReplacePoi: addRemoveReplacePoi, partOfDay: partOfDay, hideActionButtons: hideActionButtons, replace: replace, stepOrder: stepOrder, getTourInfo: getTourInfo, tourTicketProductsLoading: tourTicketProductsLoading, RESTAURANT_RESERVATION_PROVIDER_IDS: RESTAURANT_RESERVATION_PROVIDER_IDS, loadingFeedback: loadingFeedback, feedbackSubjects: feedbackSubjects, sendFeedback: sendFeedback, isBookingClicked: isBookingClicked, t: t }),
57840
57840
  !hideOffers && poi.offers && poi.offers.length > 0 && (react_1.default.createElement("div", { className: "col col12 px5 pb5" },
57841
57841
  poi.offers.map((offer, i) => {
@@ -57884,6 +57884,8 @@ exports.default = PoiInfo;
57884
57884
 
57885
57885
  "use strict";
57886
57886
 
57887
+ /* eslint-disable react-hooks/exhaustive-deps */
57888
+ /* eslint-disable import/no-extraneous-dependencies */
57887
57889
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
57888
57890
  if (k2 === undefined) k2 = k;
57889
57891
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -57911,7 +57913,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
57911
57913
  return (mod && mod.__esModule) ? mod : { "default": mod };
57912
57914
  };
57913
57915
  Object.defineProperty(exports, "__esModule", { value: true });
57914
- /* eslint-disable import/no-extraneous-dependencies */
57915
57916
  const react_1 = __importStar(__webpack_require__(0));
57916
57917
  const model_1 = __webpack_require__(9);
57917
57918
  const react_dom_1 = __importDefault(__webpack_require__(14));
@@ -57922,10 +57923,28 @@ const ImgLazy_1 = __importDefault(__webpack_require__(16));
57922
57923
  const CloseIconButton_1 = __importDefault(__webpack_require__(20));
57923
57924
  const Icons_1 = __webpack_require__(11);
57924
57925
  const PoiInfoImageDesktop_scss_1 = __importDefault(__webpack_require__(1005));
57925
- const PoiInfoImageDesktop = ({ poi, t }) => {
57926
+ const PoiInfoImageDesktop = ({ poi, t, onImageModalChange }) => {
57926
57927
  var _a;
57927
57928
  const [imageZoomed, setImageZoomed] = (0, react_1.useState)({ clicked: false, url: '' });
57928
57929
  const [selectedImage, setSelectedImage] = (0, react_1.useState)('');
57930
+ (0, react_1.useEffect)(() => {
57931
+ if (onImageModalChange)
57932
+ onImageModalChange(imageZoomed.clicked);
57933
+ }, [imageZoomed.clicked]);
57934
+ (0, react_1.useEffect)(() => {
57935
+ const handleEsc = (e) => {
57936
+ if (e.key === 'Escape') {
57937
+ setImageZoomed({ clicked: false, url: '' });
57938
+ setSelectedImage('');
57939
+ }
57940
+ };
57941
+ if (imageZoomed.clicked) {
57942
+ document.addEventListener('keydown', handleEsc);
57943
+ }
57944
+ return () => {
57945
+ document.removeEventListener('keydown', handleEsc);
57946
+ };
57947
+ }, [imageZoomed.clicked]);
57929
57948
  const images = poi.gallery.length === 0 ? [{ url: emptyImage_1.default, imageOwner: null }] : poi.gallery.map((img) => ({ url: model_1.helper.imgUrl(img.url, 1200), imageOwner: img.imageOwner }));
57930
57949
  const mainImage = images[0];
57931
57950
  if (!(mainImage === null || mainImage === void 0 ? void 0 : mainImage.url))
@@ -57982,8 +58001,19 @@ const PoiInfoImageDesktop = ({ poi, t }) => {
57982
58001
  });
57983
58002
  return (react_1.default.createElement("div", { className: PoiInfoImageDesktop_scss_1.default.container },
57984
58003
  imageZoomed.clicked &&
57985
- react_dom_1.default.createPortal(react_1.default.createElement("div", { className: PoiInfoImageDesktop_scss_1.default.modalWrapper },
57986
- react_1.default.createElement("div", { className: PoiInfoImageDesktop_scss_1.default.modalContent },
58004
+ react_dom_1.default.createPortal(react_1.default.createElement("div", { className: PoiInfoImageDesktop_scss_1.default.modalWrapper, role: "button", "aria-label": "Close image modal", tabIndex: 0, onClick: (e) => {
58005
+ if (e.target === e.currentTarget) {
58006
+ setImageZoomed({ clicked: false, url: '' });
58007
+ setSelectedImage('');
58008
+ }
58009
+ }, onKeyDown: (e) => {
58010
+ if (e.key === 'Escape' || e.key === 'Enter' || e.key === ' ') {
58011
+ e.preventDefault();
58012
+ setImageZoomed({ clicked: false, url: '' });
58013
+ setSelectedImage('');
58014
+ }
58015
+ } },
58016
+ react_1.default.createElement("div", { className: PoiInfoImageDesktop_scss_1.default.modalContent, role: "dialog", "aria-modal": "true", tabIndex: -1 },
57987
58017
  react_1.default.createElement("div", { className: PoiInfoImageDesktop_scss_1.default.modalHeader, style: { position: 'relative' } },
57988
58018
  react_1.default.createElement("div", { className: PoiInfoImageDesktop_scss_1.default.modalCloseIcon, style: { position: 'absolute', top: '0.5rem', right: '0.5rem' } },
57989
58019
  react_1.default.createElement(CloseIconButton_1.default, { fill: "#333", clicked: () => {
@@ -78442,7 +78472,7 @@ exports.default = CitySearchModal;
78442
78472
  /***/ (function(module, exports, __webpack_require__) {
78443
78473
 
78444
78474
  // extracted by mini-css-extract-plugin
78445
- module.exports = {"optionLabel":"components-DestinationSelect-DestinationSelect__optionLabel--2Gare","optionLabelText":"components-DestinationSelect-DestinationSelect__optionLabelText--2CoVy"};
78475
+ module.exports = {"optionLabel":"components-DestinationSelect-DestinationSelect__optionLabel--2Gare","optionLabelText":"components-DestinationSelect-DestinationSelect__optionLabelText--2CoVy","aiSuggestionsButton":"components-DestinationSelect-DestinationSelect__aiSuggestionsButton--13IWJ"};
78446
78476
 
78447
78477
  /***/ }),
78448
78478
  /* 829 */
@@ -89204,14 +89234,14 @@ const StepInfo = ({ step, favorite, toggleFavorite, removeStep, close, dayNumber
89204
89234
  hidePartOfDay, hideFeatures, hideCuisine, reservationButtonClick, planDate, favoriteLoading, reservationUrl, hideBookingButton, hideTours, getTourInfo, tourProducts, ticketProducts, tourTicketProductsLoading,
89205
89235
  // TOUR_PROVIDER_IDS,
89206
89236
  // TICKET_PROVIDER_IDS,
89207
- RESTAURANT_RESERVATION_PROVIDER_IDS, myOffers, isLoadingOffer, offerButtonClick, offerCardClicked, hideOffers, loadingFeedback, feedbackSubjects, sendFeedback, placeInfoCallBack, isBookingClicked, timezone, t, }) => (react_1.default.createElement(PoiInfo_1.default, { dayNumbers: dayNumbers, poi: step.poi, favorite: favorite, toggleFavorite: toggleFavorite, close: close, addRemoveReplacePoi: () => {
89237
+ RESTAURANT_RESERVATION_PROVIDER_IDS, myOffers, isLoadingOffer, offerButtonClick, offerCardClicked, hideOffers, loadingFeedback, feedbackSubjects, sendFeedback, placeInfoCallBack, isBookingClicked, timezone, onImageModalChange, t, }) => (react_1.default.createElement(PoiInfo_1.default, { dayNumbers: dayNumbers, poi: step.poi, favorite: favorite, toggleFavorite: toggleFavorite, close: close, addRemoveReplacePoi: () => {
89208
89238
  removeStep(step.id);
89209
89239
  }, stepOrder: step.order, hideActionButtons: hideActionButtons, hideFavoriteIcon: hideFavoriteIcon,
89210
89240
  // hideScore={hideScore}
89211
89241
  hidePartOfDay: hidePartOfDay, hideFeatures: hideFeatures, hideCuisine: hideCuisine, reservationButtonClick: reservationButtonClick, planDate: planDate, favoriteLoading: favoriteLoading, reservationUrl: reservationUrl, hideBookingButton: hideBookingButton, square: false, hideTours: hideTours, getTourInfo: getTourInfo, tourProducts: tourProducts, ticketProducts: ticketProducts, tourTicketProductsLoading: tourTicketProductsLoading,
89212
89242
  // TOUR_PROVIDER_IDS={TOUR_PROVIDER_IDS}
89213
89243
  // TICKET_PROVIDER_IDS={TICKET_PROVIDER_IDS}
89214
- RESTAURANT_RESERVATION_PROVIDER_IDS: RESTAURANT_RESERVATION_PROVIDER_IDS, myOffers: myOffers, isLoadingOffer: isLoadingOffer, offerButtonClick: offerButtonClick, offerCardClicked: offerCardClicked, hideOffers: hideOffers, loadingFeedback: loadingFeedback, feedbackSubjects: feedbackSubjects, sendFeedback: sendFeedback, placeInfoCallBack: placeInfoCallBack, isBookingClicked: isBookingClicked, timezone: timezone, t: t }));
89244
+ RESTAURANT_RESERVATION_PROVIDER_IDS: RESTAURANT_RESERVATION_PROVIDER_IDS, myOffers: myOffers, isLoadingOffer: isLoadingOffer, offerButtonClick: offerButtonClick, offerCardClicked: offerCardClicked, hideOffers: hideOffers, loadingFeedback: loadingFeedback, feedbackSubjects: feedbackSubjects, sendFeedback: sendFeedback, placeInfoCallBack: placeInfoCallBack, isBookingClicked: isBookingClicked, timezone: timezone, onImageModalChange: onImageModalChange, t: t }));
89215
89245
  exports.default = StepInfo;
89216
89246
 
89217
89247