@tripian/react 9.3.28 → 9.3.30
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.
|
@@ -34,6 +34,7 @@ interface IPoiInfo {
|
|
|
34
34
|
loadingFeedback: boolean;
|
|
35
35
|
feedbackSubjects: Model.FeedbackSubjects[];
|
|
36
36
|
isBookingClicked: boolean;
|
|
37
|
+
onBookableTabClick?: () => void;
|
|
37
38
|
timezone?: string;
|
|
38
39
|
sendFeedback: (value: Model.FeedbackRequest) => Promise<void>;
|
|
39
40
|
placeInfoCallBack: () => void;
|
|
@@ -22,6 +22,7 @@ interface IPoiInfoText {
|
|
|
22
22
|
ticketProducts: Model.BookingProduct[];
|
|
23
23
|
isBookingClicked?: boolean;
|
|
24
24
|
getTourInfo?: (productId: string, poi: Model.Poi) => void;
|
|
25
|
+
onBookableTabClick?: () => void;
|
|
25
26
|
sendFeedback: (value: Model.FeedbackRequest) => Promise<void>;
|
|
26
27
|
t: (value: Model.TranslationKey) => string;
|
|
27
28
|
plans?: Model.Plan[];
|
|
@@ -34,6 +34,7 @@ interface IStepInfo {
|
|
|
34
34
|
placeInfoCallBack: () => void;
|
|
35
35
|
showStepScoreDetails: boolean;
|
|
36
36
|
isBookingClicked: boolean;
|
|
37
|
+
onBookableTabClick?: () => void;
|
|
37
38
|
timezone?: string;
|
|
38
39
|
onImageModalChange?: (isOpen: boolean) => void;
|
|
39
40
|
t: (value: Model.TranslationKey) => string;
|
package/index.js
CHANGED
|
@@ -59919,7 +59919,7 @@ const PoiInfo = ({ poi, favorite, toggleFavorite, close, addRemoveReplacePoi, da
|
|
|
59919
59919
|
// TICKET_PROVIDER_IDS,
|
|
59920
59920
|
RESTAURANT_RESERVATION_PROVIDER_IDS, myOffers, isLoadingOffer, offerButtonClick, offerCardClicked, hideOffers,
|
|
59921
59921
|
// offerClicked,
|
|
59922
|
-
loadingFeedback, feedbackSubjects, isBookingClicked, timezone = 'UTC', sendFeedback, redeemClicked, onImageModalChange, stepType, t, plans, currentDayIndex, onTimelineAdd, }) => {
|
|
59922
|
+
loadingFeedback, feedbackSubjects, isBookingClicked, onBookableTabClick, timezone = 'UTC', sendFeedback, redeemClicked, onImageModalChange, stepType, t, plans, currentDayIndex, onTimelineAdd, }) => {
|
|
59923
59923
|
var _a, _b, _c;
|
|
59924
59924
|
const [optInModalWarningMessage, setOptInModalWarningMessage] = (0, react_1.useState)([]);
|
|
59925
59925
|
const [showShareModal, setShowShareModal] = (0, react_1.useState)(false);
|
|
@@ -59972,7 +59972,7 @@ loadingFeedback, feedbackSubjects, isBookingClicked, timezone = 'UTC', sendFeedb
|
|
|
59972
59972
|
react_1.default.createElement("div", { className: PoiInfo_scss_1.default.content },
|
|
59973
59973
|
react_1.default.createElement("div", { className: PoiInfo_scss_1.default.gallery },
|
|
59974
59974
|
react_1.default.createElement(PoiInfoImageDesktop_1.default, { poi: poi, onImageModalChange: onImageModalChange, t: t, stepType: stepType }))),
|
|
59975
|
-
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, plans: plans, currentDayIndex: currentDayIndex, onTimelineAdd: onTimelineAdd }),
|
|
59975
|
+
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, onBookableTabClick: onBookableTabClick, t: t, plans: plans, currentDayIndex: currentDayIndex, onTimelineAdd: onTimelineAdd }),
|
|
59976
59976
|
!hideOffers && poi.offers && poi.offers.length > 0 && (react_1.default.createElement("div", { className: "col col12 px5 pb5" },
|
|
59977
59977
|
poi.offers.map((offer, i) => {
|
|
59978
59978
|
var _a, _b;
|
|
@@ -60271,7 +60271,7 @@ const PoiActionButton_1 = __importDefault(__webpack_require__(169));
|
|
|
60271
60271
|
const TourCard_1 = __importDefault(__webpack_require__(443));
|
|
60272
60272
|
const PreLoading_1 = __importDefault(__webpack_require__(15));
|
|
60273
60273
|
const PoiInfoText_scss_1 = __importDefault(__webpack_require__(1029));
|
|
60274
|
-
const PoiInfoText = ({ poi, hideFeatures, hideCuisine, reservationUrl, hideBookingButton = false, hideActionButtons = false, replace = false, stepOrder = -1, addRemoveReplacePoi, partOfDay, reservationButtonClick, tourTicketProductsLoading, hideFeedback = false, loadingFeedback, feedbackSubjects, tourProducts, ticketProducts, isBookingClicked = false, getTourInfo, hideTours, sendFeedback, RESTAURANT_RESERVATION_PROVIDER_IDS, t, plans, currentDayIndex, onTimelineAdd, }) => {
|
|
60274
|
+
const PoiInfoText = ({ poi, hideFeatures, hideCuisine, reservationUrl, hideBookingButton = false, hideActionButtons = false, replace = false, stepOrder = -1, addRemoveReplacePoi, partOfDay, reservationButtonClick, tourTicketProductsLoading, hideFeedback = false, loadingFeedback, feedbackSubjects, tourProducts, ticketProducts, isBookingClicked = false, getTourInfo, hideTours, sendFeedback, onBookableTabClick, RESTAURANT_RESERVATION_PROVIDER_IDS, t, plans, currentDayIndex, onTimelineAdd, }) => {
|
|
60275
60275
|
var _a, _b;
|
|
60276
60276
|
const [activeTab, setActiveTab] = (0, react_1.useState)('overview');
|
|
60277
60277
|
const [activeBookableTab, setActiveBookableTab] = (0, react_1.useState)('tickets');
|
|
@@ -60418,7 +60418,7 @@ const PoiInfoText = ({ poi, hideFeatures, hideCuisine, reservationUrl, hideBooki
|
|
|
60418
60418
|
react_1.default.createElement("div", { className: `hide-m ${PoiInfoText_scss_1.default.dot}` }),
|
|
60419
60419
|
react_1.default.createElement("div", { className: PoiInfoText_scss_1.default.tabs, role: "tablist", ref: tabsRef },
|
|
60420
60420
|
react_1.default.createElement("button", { className: `${PoiInfoText_scss_1.default.tab} ${activeTab === 'overview' ? PoiInfoText_scss_1.default.active : ''}`, onClick: () => setActiveTab('overview'), role: "tab", "aria-selected": activeTab === 'overview', type: "button" }, t('overview.desktop')),
|
|
60421
|
-
react_1.default.createElement("button", { className: `${PoiInfoText_scss_1.default.tab} ${activeTab === 'bookable' ? PoiInfoText_scss_1.default.active : ''}`, onClick: () => setActiveTab('bookable'), role: "tab", "aria-selected": activeTab === 'bookable', type: "button" }, t('bookable.desktop'))),
|
|
60421
|
+
react_1.default.createElement("button", { className: `${PoiInfoText_scss_1.default.tab} ${activeTab === 'bookable' ? PoiInfoText_scss_1.default.active : ''}`, onClick: () => { setActiveTab('bookable'); onBookableTabClick === null || onBookableTabClick === void 0 ? void 0 : onBookableTabClick(); }, role: "tab", "aria-selected": activeTab === 'bookable', type: "button" }, t('bookable.desktop'))),
|
|
60422
60422
|
activeTab === 'overview' && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
60423
60423
|
poi.description && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
60424
60424
|
react_1.default.createElement("div", { className: PoiInfoText_scss_1.default.description, dangerouslySetInnerHTML: { __html: dompurify_1.default.sanitize(poi.description) } }),
|
|
@@ -92307,14 +92307,14 @@ const StepInfo = ({ step, favorite, toggleFavorite, removeStep, close, dayNumber
|
|
|
92307
92307
|
hidePartOfDay, hideFeatures, hideCuisine, reservationButtonClick, planDate, favoriteLoading, reservationUrl, hideBookingButton, hideTours, getTourInfo, tourProducts, ticketProducts, tourTicketProductsLoading,
|
|
92308
92308
|
// TOUR_PROVIDER_IDS,
|
|
92309
92309
|
// TICKET_PROVIDER_IDS,
|
|
92310
|
-
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: () => {
|
|
92310
|
+
RESTAURANT_RESERVATION_PROVIDER_IDS, myOffers, isLoadingOffer, offerButtonClick, offerCardClicked, hideOffers, loadingFeedback, feedbackSubjects, sendFeedback, placeInfoCallBack, isBookingClicked, onBookableTabClick, timezone, onImageModalChange, t, }) => (react_1.default.createElement(PoiInfo_1.default, { dayNumbers: dayNumbers, poi: step.poi, favorite: favorite, toggleFavorite: toggleFavorite, close: close, addRemoveReplacePoi: () => {
|
|
92311
92311
|
removeStep(step.id);
|
|
92312
92312
|
}, stepOrder: step.order, hideActionButtons: hideActionButtons, hideFavoriteIcon: hideFavoriteIcon,
|
|
92313
92313
|
// hideScore={hideScore}
|
|
92314
92314
|
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,
|
|
92315
92315
|
// TOUR_PROVIDER_IDS={TOUR_PROVIDER_IDS}
|
|
92316
92316
|
// TICKET_PROVIDER_IDS={TICKET_PROVIDER_IDS}
|
|
92317
|
-
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, stepType: step.stepType, t: t }));
|
|
92317
|
+
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, onBookableTabClick: onBookableTabClick, timezone: timezone, onImageModalChange: onImageModalChange, stepType: step.stepType, t: t }));
|
|
92318
92318
|
exports.default = StepInfo;
|
|
92319
92319
|
|
|
92320
92320
|
|
|
@@ -93684,7 +93684,13 @@ const KiwiHotelCard_scss_1 = __importDefault(__webpack_require__(1134));
|
|
|
93684
93684
|
const KiwiHotelCardImage_1 = __importDefault(__webpack_require__(1135));
|
|
93685
93685
|
const KiwiVisaBenefitsModal_1 = __importDefault(__webpack_require__(450));
|
|
93686
93686
|
const currencySymbol_1 = __webpack_require__(123);
|
|
93687
|
-
const
|
|
93687
|
+
const buildBookingUrl = (catalogUrl, checkIn, checkOut, adults, children) => {
|
|
93688
|
+
const base = catalogUrl.replace(/\/$/, '');
|
|
93689
|
+
if (!checkIn || !checkOut)
|
|
93690
|
+
return base;
|
|
93691
|
+
return `${base}/${checkIn}/${checkOut}/${adults !== null && adults !== void 0 ? adults : 2}/${children !== null && children !== void 0 ? children : 0}/1`;
|
|
93692
|
+
};
|
|
93693
|
+
const KiwiHotelCard = ({ hotel, isFavorite, onFavoriteToggle, showVisaBadge, onHover, onSpecialOffersClick, onCardClick, checkIn, checkOut, adults, children, t }) => {
|
|
93688
93694
|
const [visaModalOpen, setVisaModalOpen] = (0, react_1.useState)(false);
|
|
93689
93695
|
const starCount = Math.min(5, Math.round(parseFloat(hotel.starRating) || 0));
|
|
93690
93696
|
const score = parseFloat(hotel.kiwiOverallScore) || 0;
|
|
@@ -93709,10 +93715,7 @@ const KiwiHotelCard = ({ hotel, isFavorite, onFavoriteToggle, showVisaBadge, onH
|
|
|
93709
93715
|
const hasInfoTable = perks.length > 0 || hasSpecialOffer || roomCount || settings || styles;
|
|
93710
93716
|
return (
|
|
93711
93717
|
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
|
|
93712
|
-
react_1.default.createElement("div", { className: KiwiHotelCard_scss_1.default.card, onMouseEnter: () => onHover === null || onHover === void 0 ? void 0 : onHover(hotel.code), onMouseLeave: () => onHover === null || onHover === void 0 ? void 0 : onHover(null), onClick: () =>
|
|
93713
|
-
if (hotel.catalogUrl)
|
|
93714
|
-
window.open(hotel.catalogUrl, '_blank', 'noopener,noreferrer');
|
|
93715
|
-
}, role: hotel.websiteURL ? 'button' : undefined, tabIndex: hotel.websiteURL ? 0 : undefined },
|
|
93718
|
+
react_1.default.createElement("div", { className: KiwiHotelCard_scss_1.default.card, onMouseEnter: () => onHover === null || onHover === void 0 ? void 0 : onHover(hotel.code), onMouseLeave: () => onHover === null || onHover === void 0 ? void 0 : onHover(null), onClick: () => onCardClick === null || onCardClick === void 0 ? void 0 : onCardClick(hotel), role: onCardClick ? 'button' : undefined, tabIndex: onCardClick ? 0 : undefined },
|
|
93716
93719
|
react_1.default.createElement("div", { className: KiwiHotelCard_scss_1.default.imageArea },
|
|
93717
93720
|
react_1.default.createElement(KiwiHotelCardImage_1.default, { images: imageUrls, alt: hotel.title, isFavorite: isFavorite, onFavoriteToggle: onFavoriteToggle ? () => onFavoriteToggle(hotel) : undefined })),
|
|
93718
93721
|
react_1.default.createElement("div", { className: KiwiHotelCard_scss_1.default.content },
|
|
@@ -93729,7 +93732,7 @@ const KiwiHotelCard = ({ hotel, isFavorite, onFavoriteToggle, showVisaBadge, onH
|
|
|
93729
93732
|
react_1.default.createElement("button", { type: "button", className: KiwiHotelCard_scss_1.default.bookBtn, onClick: (e) => {
|
|
93730
93733
|
e.stopPropagation();
|
|
93731
93734
|
if (hotel.catalogUrl)
|
|
93732
|
-
window.open(hotel.catalogUrl, '_blank', 'noopener,noreferrer');
|
|
93735
|
+
window.open(buildBookingUrl(hotel.catalogUrl, checkIn, checkOut, adults, children), '_blank', 'noopener,noreferrer');
|
|
93733
93736
|
} }, t('kiwi.card.book')))),
|
|
93734
93737
|
react_1.default.createElement("div", { className: KiwiHotelCard_scss_1.default.row2 },
|
|
93735
93738
|
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.name }, hotel.title),
|
|
@@ -94806,15 +94809,14 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94806
94809
|
react_1.default.createElement("circle", { cx: "12", cy: "12", r: "10" }),
|
|
94807
94810
|
react_1.default.createElement("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
|
|
94808
94811
|
react_1.default.createElement("line", { x1: "12", y1: "8", x2: "12.01", y2: "8" }))))),
|
|
94809
|
-
|
|
94812
|
+
hotel.catalogUrl && (react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.bookNowBtn, onClick: () => {
|
|
94810
94813
|
if (onBookNowClick)
|
|
94811
94814
|
onBookNowClick(hotel, room, rate);
|
|
94812
|
-
|
|
94813
|
-
|
|
94814
|
-
|
|
94815
|
-
|
|
94816
|
-
|
|
94817
|
-
}
|
|
94815
|
+
const base = hotel.catalogUrl.replace(/\/$/, '');
|
|
94816
|
+
const url = internalCheckIn && internalCheckOut
|
|
94817
|
+
? `${base}/${internalCheckIn}/${internalCheckOut}/${internalAdults}/${internalChildren}/1`
|
|
94818
|
+
: base;
|
|
94819
|
+
window.open(url, '_blank', 'noopener,noreferrer');
|
|
94818
94820
|
} }, t('kiwi.common.bookNow'))))),
|
|
94819
94821
|
(rate.description || (rate.policies && Object.values(rate.policies).some(Boolean))) && (react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.seeMoreBtn, onClick: () => { setRoomRateModal({ roomTitle: room.title, rate, currency: rateCurrency }); if (onSeeMoreDetails)
|
|
94820
94822
|
onSeeMoreDetails(hotel, room, rate); } },
|
|
@@ -94889,17 +94891,13 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94889
94891
|
react_1.default.createElement("polyline", { points: "9 18 15 12 9 6" })))))))),
|
|
94890
94892
|
visaModalOpen && react_1.default.createElement(KiwiVisaBenefitsModal_1.default, { onClose: () => setVisaModalOpen(false), t: t }),
|
|
94891
94893
|
offersModalOpen && (react_1.default.createElement(KiwiSpecialOffersModal_1.default, { hotelName: data.title, specialOffers: loadingDetail ? undefined : ((_b = propertyDetail === null || propertyDetail === void 0 ? void 0 : propertyDetail.specialOffers) !== null && _b !== void 0 ? _b : []), onClose: () => setOffersModalOpen(false), t: t })),
|
|
94892
|
-
roomRateModal && (react_1.default.createElement(KiwiRoomRateModal_1.default, { roomTitle: roomRateModal.roomTitle, rate: roomRateModal.rate, currency: roomRateModal.currency, nightCount: nightCount, onClose: () => setRoomRateModal(undefined), t: t, onBookNow:
|
|
94893
|
-
const { rate: rr, currency: rc } = roomRateModal;
|
|
94894
|
-
const matchingRoom = availabilityData === null || availabilityData === void 0 ? void 0 : availabilityData.rooms.find((r) => { var _a; return (_a = r.rates) === null || _a === void 0 ? void 0 : _a.some((rt) => rt.code === rr.code); });
|
|
94894
|
+
roomRateModal && (react_1.default.createElement(KiwiRoomRateModal_1.default, { roomTitle: roomRateModal.roomTitle, rate: roomRateModal.rate, currency: roomRateModal.currency, nightCount: nightCount, onClose: () => setRoomRateModal(undefined), t: t, onBookNow: hotel.catalogUrl ? () => {
|
|
94895
94895
|
setRoomRateModal(undefined);
|
|
94896
|
-
|
|
94897
|
-
|
|
94898
|
-
|
|
94899
|
-
|
|
94900
|
-
|
|
94901
|
-
onBookNow(hotel, matchingRoom, rr);
|
|
94902
|
-
}
|
|
94896
|
+
const base = hotel.catalogUrl.replace(/\/$/, '');
|
|
94897
|
+
const url = internalCheckIn && internalCheckOut
|
|
94898
|
+
? `${base}/${internalCheckIn}/${internalCheckOut}/${internalAdults}/${internalChildren}/1`
|
|
94899
|
+
: base;
|
|
94900
|
+
window.open(url, '_blank', 'noopener,noreferrer');
|
|
94903
94901
|
} : undefined })),
|
|
94904
94902
|
bookingModal && onCreateReservation && (react_1.default.createElement(KiwiBookingModal_1.default, { hotelName: data.title, roomTitle: bookingModal.room.title, rate: bookingModal.rate, currency: bookingModal.currency, checkIn: internalCheckIn, checkOut: internalCheckOut, nightCount: nightCount, adults: internalAdults, children: internalChildren, propertyCode: hotel.code, roomCode: bookingModal.room.code, generateExternalId: generateExternalId || (() => `${hotel.code}-${Date.now()}`), onClose: () => setBookingModal(undefined), onCreateReservation: async (req) => {
|
|
94905
94903
|
const res = await onCreateReservation(req);
|