@qite/tide-booking-component 1.4.125 → 1.4.127
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.
- package/build/build-cjs/index.js +86 -63
- package/build/build-cjs/src/booking-wizard/components/build-step-labels.d.ts +8 -0
- package/build/build-cjs/src/booking-wizard/features/booking/booking-slice.d.ts +1 -2
- package/build/build-cjs/src/booking-wizard/features/booking/selectors.d.ts +1 -1
- package/build/build-cjs/src/booking-wizard/types.d.ts +1 -0
- package/build/build-cjs/src/shared/booking/travelers-form.d.ts +1 -1
- package/build/build-esm/index.js +86 -63
- package/build/build-esm/src/booking-wizard/components/build-step-labels.d.ts +8 -0
- package/build/build-esm/src/booking-wizard/features/booking/booking-slice.d.ts +1 -2
- package/build/build-esm/src/booking-wizard/features/booking/selectors.d.ts +1 -1
- package/build/build-esm/src/booking-wizard/types.d.ts +1 -0
- package/build/build-esm/src/shared/booking/travelers-form.d.ts +1 -1
- package/package.json +1 -1
package/build/build-cjs/index.js
CHANGED
|
@@ -17658,14 +17658,14 @@ const updateBookingGroups = (groups, changedLines) => {
|
|
|
17658
17658
|
};
|
|
17659
17659
|
|
|
17660
17660
|
const fetchPriceDetails = toolkit.createAsyncThunk('priceDetails/fetchPriceDetails', async (_, { dispatch, getState, signal }) => {
|
|
17661
|
-
dispatch(setFetchingPriceDetails(true));
|
|
17662
|
-
dispatch(resetPriceDetails());
|
|
17663
17661
|
const state = getState();
|
|
17664
17662
|
const languageCode = selectLanguageCode(state);
|
|
17665
17663
|
const request = selectBookingPackageBookRequest(state);
|
|
17666
17664
|
if (!request) {
|
|
17667
17665
|
throw Error('Product not available.');
|
|
17668
17666
|
}
|
|
17667
|
+
dispatch(setFetchingPriceDetails(true));
|
|
17668
|
+
dispatch(resetPriceDetails());
|
|
17669
17669
|
const priceDetails = await priceDetailsApi.fetchPriceDetails(state.apiSettings, request, signal, languageCode);
|
|
17670
17670
|
dispatch(setFetchingPriceDetails(false));
|
|
17671
17671
|
const packageDetails = selectPackageDetails(state);
|
|
@@ -17702,6 +17702,9 @@ const priceDetailsSlice = toolkit.createSlice({
|
|
|
17702
17702
|
state.notifications = action.payload.notifications;
|
|
17703
17703
|
}
|
|
17704
17704
|
});
|
|
17705
|
+
builder.addCase(fetchPriceDetails.rejected, (state) => {
|
|
17706
|
+
state.isBusy = false;
|
|
17707
|
+
});
|
|
17705
17708
|
}
|
|
17706
17709
|
});
|
|
17707
17710
|
const { setFetchingPriceDetails } = priceDetailsSlice.actions;
|
|
@@ -17710,7 +17713,6 @@ const selectNotifications = (state) => state.priceDetails.notifications;
|
|
|
17710
17713
|
var priceDetailsReducer = priceDetailsSlice.reducer;
|
|
17711
17714
|
|
|
17712
17715
|
const selectHasMounted = (state) => state.booking.hasMounted;
|
|
17713
|
-
const selectIsFetching = (state) => state.booking.isFetching;
|
|
17714
17716
|
const selectGeneratePaymentUrl = (state) => state.booking.generatePaymentUrl;
|
|
17715
17717
|
const selectSkipPaymentWithAgent = (state) => state.booking.skipPaymentWithAgent;
|
|
17716
17718
|
const selectIsFetchingProductOptions = (state) => state.booking.isBusy;
|
|
@@ -17786,6 +17788,7 @@ const selectCalculateDeposit = (state) => state.booking.calculateDeposit;
|
|
|
17786
17788
|
const selectShowCommission = (state) => state.booking.showCommission;
|
|
17787
17789
|
const selectIsRetry = (state) => state.booking.isRetry;
|
|
17788
17790
|
const selectStartDate = (state) => state.booking.package?.options.find((x) => x.isSelected)?.fromDate;
|
|
17791
|
+
const selectEndDate = (state) => state.booking.package?.options.find((x) => x.isSelected)?.toDate;
|
|
17789
17792
|
const selectAgents = (state) => state.booking.agents;
|
|
17790
17793
|
const selectCountries = (state) => state.booking.countries;
|
|
17791
17794
|
const selectProductCode = (state) => state.booking.productAttributes?.productCode;
|
|
@@ -18001,7 +18004,6 @@ const initialState$5 = {
|
|
|
18001
18004
|
currentStep: OPTIONS_FORM_STEP,
|
|
18002
18005
|
translations: undefined,
|
|
18003
18006
|
travelersFirstStep: false,
|
|
18004
|
-
isFetching: false,
|
|
18005
18007
|
hasMounted: false,
|
|
18006
18008
|
countries: undefined
|
|
18007
18009
|
};
|
|
@@ -18220,9 +18222,6 @@ const bookingSlice = toolkit.createSlice({
|
|
|
18220
18222
|
setHasMounted(state, action) {
|
|
18221
18223
|
state.hasMounted = action.payload;
|
|
18222
18224
|
},
|
|
18223
|
-
setIsFetching(state, action) {
|
|
18224
|
-
state.isFetching = action.payload;
|
|
18225
|
-
},
|
|
18226
18225
|
setOfficeId(state, action) {
|
|
18227
18226
|
state.officeId = action.payload;
|
|
18228
18227
|
},
|
|
@@ -18436,7 +18435,7 @@ const bookingSlice = toolkit.createSlice({
|
|
|
18436
18435
|
});
|
|
18437
18436
|
}
|
|
18438
18437
|
});
|
|
18439
|
-
const { setOfficeId, setLanguageCode, setTranslations, setBookingOptions, setBookingType, setProductAttributes, setBookingAttributes, setCalculateDeposit, setShowCommission, setBookingNumber: setBookingNumber$1, setIsRetry, setFetchingPackage,
|
|
18438
|
+
const { setOfficeId, setLanguageCode, setTranslations, setBookingOptions, setBookingType, setProductAttributes, setBookingAttributes, setCalculateDeposit, setShowCommission, setBookingNumber: setBookingNumber$1, setIsRetry, setFetchingPackage, setHasMounted, setPackage, setPackageRooms, setPackageOptionPax, setPackageOptionUnits, setPackageGroups, setSkipPayment, setGeneratePaymentUrl, setTagIds, setAgentAdressId, setBookingRemarks, setVoucherCodes, setCurrentStep: setCurrentStep$1, setPackageAirlineGroups, setPackageAirportGroups, setFlights, setAccommodationViewId, setIsOption, setTravelersFirstStep, setIsUnavailable } = bookingSlice.actions;
|
|
18440
18439
|
var bookingReducer = bookingSlice.reducer;
|
|
18441
18440
|
|
|
18442
18441
|
const SettingsContext = React__default["default"].createContext({
|
|
@@ -18508,18 +18507,19 @@ const StepIndicators$1 = ({ currentStep, stepLabels }) => {
|
|
|
18508
18507
|
React__default["default"].createElement("div", { className: "step-indicators__text" }, stepName)))))));
|
|
18509
18508
|
};
|
|
18510
18509
|
|
|
18511
|
-
|
|
18512
|
-
|
|
18513
|
-
|
|
18514
|
-
|
|
18510
|
+
// Single source of truth for the ordered step labels shown in the indicator and
|
|
18511
|
+
// the panel title. Kept in one place so step-route.tsx and step-indicator.tsx
|
|
18512
|
+
// can never drift out of sync. The ERROR step is intentionally excluded — it is
|
|
18513
|
+
// not part of the indicator sequence.
|
|
18514
|
+
const buildStepLabels = ({ travelersFirstStep, flightOptionsHidden, roomOptionsHidden, translations }) => {
|
|
18515
18515
|
const stepLabels = [];
|
|
18516
18516
|
if (travelersFirstStep) {
|
|
18517
18517
|
stepLabels.push(translations.STEPS.PERSONAL_DETAILS);
|
|
18518
18518
|
}
|
|
18519
|
-
if (!
|
|
18519
|
+
if (!flightOptionsHidden) {
|
|
18520
18520
|
stepLabels.push(translations.STEPS.FLIGHT_OPTIONS);
|
|
18521
18521
|
}
|
|
18522
|
-
if (!
|
|
18522
|
+
if (!roomOptionsHidden) {
|
|
18523
18523
|
stepLabels.push(translations.STEPS.ROOM_OPTIONS);
|
|
18524
18524
|
}
|
|
18525
18525
|
stepLabels.push(translations.STEPS.EXTRA_OPTIONS);
|
|
@@ -18528,6 +18528,19 @@ const StepIndicators = ({ currentStep }) => {
|
|
|
18528
18528
|
}
|
|
18529
18529
|
stepLabels.push(translations.STEPS.SUMMARY);
|
|
18530
18530
|
stepLabels.push(translations.STEPS.CONFIRMATION);
|
|
18531
|
+
return stepLabels;
|
|
18532
|
+
};
|
|
18533
|
+
|
|
18534
|
+
const StepIndicators = ({ currentStep }) => {
|
|
18535
|
+
const { flightOptions, roomOptions } = React.useContext(SettingsContext);
|
|
18536
|
+
const translations = reactRedux.useSelector(selectTranslations);
|
|
18537
|
+
const travelersFirstStep = reactRedux.useSelector(selectTravelersFirstStep);
|
|
18538
|
+
const stepLabels = buildStepLabels({
|
|
18539
|
+
travelersFirstStep,
|
|
18540
|
+
flightOptionsHidden: flightOptions.isHidden,
|
|
18541
|
+
roomOptionsHidden: roomOptions.isHidden,
|
|
18542
|
+
translations
|
|
18543
|
+
});
|
|
18531
18544
|
return React__default["default"].createElement(StepIndicators$1, { currentStep: currentStep, stepLabels: stepLabels });
|
|
18532
18545
|
};
|
|
18533
18546
|
|
|
@@ -18544,22 +18557,12 @@ const StepRoute = ({ number, title, component }) => {
|
|
|
18544
18557
|
const { flightOptions, roomOptions } = React.useContext(SettingsContext);
|
|
18545
18558
|
const translations = reactRedux.useSelector(selectTranslations);
|
|
18546
18559
|
const travelersFirstStep = reactRedux.useSelector(selectTravelersFirstStep);
|
|
18547
|
-
const stepLabels =
|
|
18548
|
-
|
|
18549
|
-
|
|
18550
|
-
|
|
18551
|
-
|
|
18552
|
-
|
|
18553
|
-
}
|
|
18554
|
-
if (!roomOptions.isHidden) {
|
|
18555
|
-
stepLabels.push(translations.STEPS.ROOM_OPTIONS);
|
|
18556
|
-
}
|
|
18557
|
-
stepLabels.push(translations.STEPS.EXTRA_OPTIONS);
|
|
18558
|
-
if (!travelersFirstStep) {
|
|
18559
|
-
stepLabels.push(translations.STEPS.PERSONAL_DETAILS);
|
|
18560
|
-
}
|
|
18561
|
-
stepLabels.push(translations.STEPS.SUMMARY);
|
|
18562
|
-
stepLabels.push(translations.STEPS.CONFIRMATION);
|
|
18560
|
+
const stepLabels = buildStepLabels({
|
|
18561
|
+
travelersFirstStep,
|
|
18562
|
+
flightOptionsHidden: flightOptions.isHidden,
|
|
18563
|
+
roomOptionsHidden: roomOptions.isHidden,
|
|
18564
|
+
translations
|
|
18565
|
+
});
|
|
18563
18566
|
return (React__default["default"].createElement(BookingPanel, { currentStep: number, stepLabels: stepLabels, StepIndicatorsComponent: StepIndicators, renderTitle: (step) => (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
18564
18567
|
step + 1,
|
|
18565
18568
|
". ",
|
|
@@ -21659,6 +21662,7 @@ const Summary = () => {
|
|
|
21659
21662
|
const [remarks, setRemarks] = React.useState('');
|
|
21660
21663
|
const [voucher, setVoucher] = React.useState({});
|
|
21661
21664
|
const bookingQueryString = reactRedux.useSelector(selectBookingQueryString);
|
|
21665
|
+
const travelersFirstStep = reactRedux.useSelector(selectTravelersFirstStep);
|
|
21662
21666
|
const travelerFormValues = reactRedux.useSelector(selectTravelersFormValues);
|
|
21663
21667
|
const packageDetails = reactRedux.useSelector(selectPackageDetails);
|
|
21664
21668
|
const activeOption = reactRedux.useSelector(selectActiveOption);
|
|
@@ -21808,7 +21812,7 @@ const Summary = () => {
|
|
|
21808
21812
|
dispatch(fetchPriceDetails());
|
|
21809
21813
|
};
|
|
21810
21814
|
const goPrevious = () => {
|
|
21811
|
-
dispatch(setCurrentStep$1(TRAVELERS_FORM_STEP));
|
|
21815
|
+
dispatch(setCurrentStep$1(travelersFirstStep ? OPTIONS_FORM_STEP : TRAVELERS_FORM_STEP));
|
|
21812
21816
|
};
|
|
21813
21817
|
const translations = reactRedux.useSelector(selectTranslations);
|
|
21814
21818
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
@@ -21968,7 +21972,7 @@ const Summary = () => {
|
|
|
21968
21972
|
__html: checkbox.text
|
|
21969
21973
|
} }))))))))))),
|
|
21970
21974
|
React__default["default"].createElement("div", { className: "booking__navigator" },
|
|
21971
|
-
settings.skipRouter ? (React__default["default"].createElement("button", { type: "button", title: translations.STEPS.PREVIOUS, onClick: () => goPrevious(), className: "cta cta--secondary" }, translations.STEPS.PREVIOUS)) : (React__default["default"].createElement(Link, { to: `${!settings.skipBasePathInRouting ? settings.basePath : ''}${settings.travellers.pathSuffix}?${bookingQueryString}`, title: translations.STEPS.PREVIOUS, className: "cta cta--secondary" }, translations.STEPS.PREVIOUS)),
|
|
21975
|
+
settings.skipRouter ? (React__default["default"].createElement("button", { type: "button", title: translations.STEPS.PREVIOUS, onClick: () => goPrevious(), className: "cta cta--secondary" }, translations.STEPS.PREVIOUS)) : (React__default["default"].createElement(Link, { to: `${!settings.skipBasePathInRouting ? settings.basePath : ''}${travelersFirstStep ? settings.options.pathSuffix : settings.travellers.pathSuffix}?${bookingQueryString}`, title: translations.STEPS.PREVIOUS, className: "cta cta--secondary" }, translations.STEPS.PREVIOUS)),
|
|
21972
21976
|
settings.allowOption && (React__default["default"].createElement("button", { title: translations.STEPS.SUBMIT_OPTION, className: buildClassName(['cta', !userValidated && 'cta--disabled']), disabled: !userValidated, name: "option" }, translations.STEPS.SUBMIT_OPTION)),
|
|
21973
21977
|
React__default["default"].createElement("button", { title: settings.isOffer ? translations.STEPS.SUBMIT_OFFER : translations.STEPS.SUBMIT_BOOKING, className: buildClassName(['cta', !userValidated && 'cta--disabled']), disabled: !userValidated, name: "default" }, settings.isOffer ? translations.STEPS.SUBMIT_OFFER : translations.STEPS.SUBMIT_BOOKING))))));
|
|
21974
21978
|
};
|
|
@@ -22023,8 +22027,9 @@ const validateForm$1 = (values, agentRequired, bookingType, translations, formFi
|
|
|
22023
22027
|
if (lodash.isEmpty(adult.birthDate)) {
|
|
22024
22028
|
lodash.set(errors, `rooms[${rIndex}].adults[${index}].birthDate`, formatTravelerField(rIndex + 1, index + 1, translations.TRAVELERS_FORM.BIRTHDATE));
|
|
22025
22029
|
}
|
|
22026
|
-
else if (values.
|
|
22027
|
-
|
|
22030
|
+
else if (values.endDate) {
|
|
22031
|
+
// If you are younger than the maxChildAge at the end of the trip, you are considered a child, so we check the endDate here instead of the startDate
|
|
22032
|
+
const age = getAge(adult.birthDate, values.endDate);
|
|
22028
22033
|
if (age <= maxChildAge) {
|
|
22029
22034
|
lodash.set(errors, `rooms[${rIndex}].adults[${index}].birthDate`, formatTravelerIsNoAdult(rIndex + 1, index + 1));
|
|
22030
22035
|
}
|
|
@@ -22045,8 +22050,9 @@ const validateForm$1 = (values, agentRequired, bookingType, translations, formFi
|
|
|
22045
22050
|
if (lodash.isEmpty(child.birthDate)) {
|
|
22046
22051
|
lodash.set(errors, `rooms[${rIndex}].children[${index}].birthDate`, formatTravelerField(rIndex + 1, r.adults.length + index + 1, translations.TRAVELERS_FORM.BIRTHDATE));
|
|
22047
22052
|
}
|
|
22048
|
-
else if (values.
|
|
22049
|
-
|
|
22053
|
+
else if (values.endDate) {
|
|
22054
|
+
// You need to be under the maxChildAge until the end of the trip, so we check the endDate here instead of the startDate
|
|
22055
|
+
const age = getAge(child.birthDate, values.endDate);
|
|
22050
22056
|
if (age > maxChildAge) {
|
|
22051
22057
|
lodash.set(errors, `rooms[${rIndex}].children[${index}].birthDate`, formatTravelerIsNoChild(rIndex + 1, r.adults.length + index + 1));
|
|
22052
22058
|
}
|
|
@@ -22270,10 +22276,11 @@ function createTraveler(traveler, followNumber, personTranslation, isCompact) {
|
|
|
22270
22276
|
gender: ''
|
|
22271
22277
|
};
|
|
22272
22278
|
}
|
|
22273
|
-
function createInitialValuesFromRooms(formRooms, startDate, agentAdressId, personTranslation, isCompact) {
|
|
22279
|
+
function createInitialValuesFromRooms(formRooms, startDate, endDate, agentAdressId, personTranslation, isCompact) {
|
|
22274
22280
|
const followNumber = { number: 1 };
|
|
22275
22281
|
const initialValues = {
|
|
22276
22282
|
startDate,
|
|
22283
|
+
endDate,
|
|
22277
22284
|
rooms: formRooms.map((room) => ({
|
|
22278
22285
|
adults: room.adults.map((traveler) => createTraveler(traveler, followNumber, personTranslation, isCompact)),
|
|
22279
22286
|
children: room.children.map((traveler) => createTraveler(traveler, followNumber, personTranslation, isCompact))
|
|
@@ -22323,7 +22330,7 @@ function createInitialValuesFromEditablePackagingEntry(editablePackagingEntry, a
|
|
|
22323
22330
|
})
|
|
22324
22331
|
};
|
|
22325
22332
|
});
|
|
22326
|
-
const values = createInitialValuesFromRooms(rooms.map((room) => ({ adults: room.adults, children: room.children })), editablePackagingEntry?.lines?.
|
|
22333
|
+
const values = createInitialValuesFromRooms(rooms.map((room) => ({ adults: room.adults, children: room.children })), lodash.first(editablePackagingEntry?.lines)?.from, lodash.last(editablePackagingEntry?.lines)?.to, agentAdressId);
|
|
22327
22334
|
values.rooms = rooms;
|
|
22328
22335
|
values.mainBookerId = pax.find((x) => x.isMainBooker)?.id ?? rooms[0]?.adults?.[0]?.id ?? -1;
|
|
22329
22336
|
const address = editablePackagingEntry?.address;
|
|
@@ -22601,6 +22608,7 @@ const TravelersForm = () => {
|
|
|
22601
22608
|
const navigate = settings.skipRouter ? () => { } : reactRouter.useNavigate();
|
|
22602
22609
|
const bookingQueryString = reactRedux.useSelector(selectBookingQueryString);
|
|
22603
22610
|
const startDate = reactRedux.useSelector(selectStartDate);
|
|
22611
|
+
const endDate = reactRedux.useSelector(selectEndDate);
|
|
22604
22612
|
const selectFormRooms = React.useMemo(() => makeSelectFormRooms(settings.maxChildAge), [settings.maxChildAge]);
|
|
22605
22613
|
const formRooms = reactRedux.useSelector(selectFormRooms);
|
|
22606
22614
|
const bookingType = reactRedux.useSelector(selectBookingType);
|
|
@@ -22610,13 +22618,14 @@ const TravelersForm = () => {
|
|
|
22610
22618
|
const travelersFirstStep = reactRedux.useSelector(selectTravelersFirstStep);
|
|
22611
22619
|
const isUnavailable = reactRedux.useSelector(selectIsUnavailable);
|
|
22612
22620
|
const bookingAttributes = reactRedux.useSelector(selectBookingAttributes);
|
|
22613
|
-
const isFetching = reactRedux.useSelector(selectIsFetching);
|
|
22614
22621
|
const hasMounted = reactRedux.useSelector(selectHasMounted);
|
|
22615
22622
|
const countries = reactRedux.useSelector(selectCountries);
|
|
22623
|
+
const inFlight = React.useRef(false);
|
|
22624
|
+
const pendingRefetch = React.useRef(false);
|
|
22616
22625
|
const useCompactForm = !!settings.travellers.compactForm && !!settings.agentAdressId;
|
|
22617
22626
|
const showAllCountries = !!settings.travellers.showAllCountries;
|
|
22618
22627
|
const initialValues = reactRedux.useSelector(selectTravelersFormValues) ??
|
|
22619
|
-
createInitialValuesFromRooms(formRooms, startDate, agentAdressId, translations.TRAVELERS_FORM.PERSON, useCompactForm);
|
|
22628
|
+
createInitialValuesFromRooms(formRooms, startDate, endDate, agentAdressId, translations.TRAVELERS_FORM.PERSON, useCompactForm);
|
|
22620
22629
|
const [showAgentSelection, setShowAgentSelection] = React.useState(!settings.agentAdressId && !settings.hideAgentSelection);
|
|
22621
22630
|
const formik$1 = formik.useFormik({
|
|
22622
22631
|
initialValues,
|
|
@@ -22644,40 +22653,46 @@ const TravelersForm = () => {
|
|
|
22644
22653
|
dispatch(fetchPriceDetails());
|
|
22645
22654
|
}, [dispatch]);
|
|
22646
22655
|
React.useEffect(() => {
|
|
22647
|
-
if (!bookingAttributes?.rooms?.length
|
|
22656
|
+
if (!bookingAttributes?.rooms?.length)
|
|
22648
22657
|
return;
|
|
22649
22658
|
if (!hasMounted) {
|
|
22650
22659
|
dispatch(setHasMounted(true));
|
|
22651
22660
|
return;
|
|
22652
22661
|
}
|
|
22662
|
+
if (inFlight.current) {
|
|
22663
|
+
pendingRefetch.current = true;
|
|
22664
|
+
return;
|
|
22665
|
+
}
|
|
22653
22666
|
const fetchAll = async () => {
|
|
22654
|
-
|
|
22667
|
+
inFlight.current = true;
|
|
22655
22668
|
try {
|
|
22656
|
-
|
|
22657
|
-
|
|
22669
|
+
do {
|
|
22670
|
+
pendingRefetch.current = false;
|
|
22671
|
+
await dispatch(fetchPackage());
|
|
22672
|
+
await dispatch(fetchPriceDetails());
|
|
22673
|
+
} while (pendingRefetch.current);
|
|
22658
22674
|
}
|
|
22659
22675
|
finally {
|
|
22660
|
-
|
|
22676
|
+
inFlight.current = false;
|
|
22661
22677
|
}
|
|
22662
22678
|
};
|
|
22663
22679
|
fetchAll();
|
|
22664
|
-
}, [bookingAttributes?.rooms, dispatch, hasMounted
|
|
22680
|
+
}, [bookingAttributes?.rooms, dispatch, hasMounted]);
|
|
22681
|
+
const roomsQuery = React.useMemo(() => formik$1.values.rooms
|
|
22682
|
+
.map((room) => {
|
|
22683
|
+
const adults = room.adults ? room.adults.length : 0;
|
|
22684
|
+
const childAges = room.children?.length ? room.children.map((child) => child.age).join(',') : '';
|
|
22685
|
+
return `(adults:${adults},childAges:(${childAges}))`;
|
|
22686
|
+
})
|
|
22687
|
+
.join(','), [formik$1.values.rooms]);
|
|
22665
22688
|
React.useEffect(() => {
|
|
22666
|
-
if (settings.skipRouter || !travelersFirstStep)
|
|
22689
|
+
if (settings.skipRouter || !travelersFirstStep || !bookingQueryString)
|
|
22667
22690
|
return;
|
|
22668
22691
|
const params = new URLSearchParams(bookingQueryString);
|
|
22669
22692
|
params.delete('rooms');
|
|
22670
|
-
const
|
|
22671
|
-
.map((room) => {
|
|
22672
|
-
const adults = room.adults ? room.adults.length : 0;
|
|
22673
|
-
const childAges = room.children?.length ? room.children.map((child) => child.age).join(',') : '';
|
|
22674
|
-
return `adults:${adults},childAges:(${childAges})`;
|
|
22675
|
-
})
|
|
22676
|
-
.map((room) => `(${room})`)
|
|
22677
|
-
.join(',');
|
|
22678
|
-
const nextQuery = `${params.toString()}${params.toString() ? '&' : ''}rooms=(${roomsString})`;
|
|
22693
|
+
const nextQuery = `${params.toString()}${params.toString() ? '&' : ''}rooms=(${roomsQuery})`;
|
|
22679
22694
|
navigate(`${window.location.pathname}?${nextQuery}`, { replace: true });
|
|
22680
|
-
}, [
|
|
22695
|
+
}, [roomsQuery, bookingQueryString, navigate, settings.skipRouter, travelersFirstStep]);
|
|
22681
22696
|
React.useEffect(() => {
|
|
22682
22697
|
if (!agents || !settings.affiliateSlug)
|
|
22683
22698
|
return;
|
|
@@ -22892,10 +22907,17 @@ const Booking = ({ productCode, productName, thumbnailUrl }) => {
|
|
|
22892
22907
|
promise.abort();
|
|
22893
22908
|
};
|
|
22894
22909
|
}, [productAttributes]);
|
|
22895
|
-
let numberIndex =
|
|
22896
|
-
|
|
22897
|
-
|
|
22898
|
-
|
|
22910
|
+
let numberIndex = 0;
|
|
22911
|
+
const getFirstStep = () => {
|
|
22912
|
+
if (travelersFirstStep)
|
|
22913
|
+
return { path: travellers.pathSuffix, title: translations.STEPS.PERSONAL_DETAILS, component: React__default["default"].createElement(TravelersForm, null) };
|
|
22914
|
+
if (!flightOptions.isHidden && flightOptions.pathSuffix)
|
|
22915
|
+
return { path: flightOptions.pathSuffix, title: translations.STEPS.FLIGHT_OPTIONS, component: React__default["default"].createElement(FlightOptionsForm, null) };
|
|
22916
|
+
if (!roomOptions.isHidden && roomOptions.pathSuffix)
|
|
22917
|
+
return { path: roomOptions.pathSuffix, title: translations.STEPS.ROOM_OPTIONS, component: React__default["default"].createElement(RoomOptionsForm, null) };
|
|
22918
|
+
return { path: options.pathSuffix, title: translations.STEPS.EXTRA_OPTIONS, component: React__default["default"].createElement(OptionsForm, null) };
|
|
22919
|
+
};
|
|
22920
|
+
const firstStep = getFirstStep();
|
|
22899
22921
|
if (!translationsReady) {
|
|
22900
22922
|
return null;
|
|
22901
22923
|
}
|
|
@@ -22904,8 +22926,9 @@ const Booking = ({ productCode, productName, thumbnailUrl }) => {
|
|
|
22904
22926
|
React__default["default"].createElement("div", { className: "booking__content" },
|
|
22905
22927
|
React__default["default"].createElement("div", { className: "booking__panel" },
|
|
22906
22928
|
React__default["default"].createElement(reactRouter.Routes, null,
|
|
22907
|
-
|
|
22908
|
-
|
|
22929
|
+
firstStep.path !== '/' && React__default["default"].createElement(reactRouter.Route, { path: "/", element: React__default["default"].createElement(StepRoute, { number: 0, title: firstStep.title, component: firstStep.component }) }),
|
|
22930
|
+
travelersFirstStep && (React__default["default"].createElement(reactRouter.Route, { path: travellers.pathSuffix, element: React__default["default"].createElement(StepRoute, { number: numberIndex++, title: translations.STEPS.PERSONAL_DETAILS, component: React__default["default"].createElement(TravelersForm, null) }) })),
|
|
22931
|
+
!flightOptions.isHidden && flightOptions.pathSuffix && (React__default["default"].createElement(reactRouter.Route, { path: flightOptions.pathSuffix, element: React__default["default"].createElement(StepRoute, { number: numberIndex++, title: translations.STEPS.FLIGHT_OPTIONS, component: React__default["default"].createElement(FlightOptionsForm, null) }) })),
|
|
22909
22932
|
!roomOptions.isHidden && roomOptions.pathSuffix && (React__default["default"].createElement(reactRouter.Route, { path: roomOptions.pathSuffix, element: React__default["default"].createElement(StepRoute, { number: numberIndex++, title: translations.STEPS.ROOM_OPTIONS, component: React__default["default"].createElement(RoomOptionsForm, null) }) })),
|
|
22910
22933
|
React__default["default"].createElement(reactRouter.Route, { path: options.pathSuffix, element: React__default["default"].createElement(StepRoute, { number: numberIndex++, title: translations.STEPS.EXTRA_OPTIONS, component: React__default["default"].createElement(OptionsForm, null) }) }),
|
|
22911
22934
|
!travelersFirstStep && (React__default["default"].createElement(reactRouter.Route, { path: travellers.pathSuffix, element: React__default["default"].createElement(StepRoute, { number: numberIndex++, title: translations.STEPS.PERSONAL_DETAILS, component: React__default["default"].createElement(TravelersForm, null) }) })),
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface BuildStepLabelsParams {
|
|
2
|
+
travelersFirstStep: boolean;
|
|
3
|
+
flightOptionsHidden?: boolean | null;
|
|
4
|
+
roomOptionsHidden?: boolean | null;
|
|
5
|
+
translations: Record<string, any>;
|
|
6
|
+
}
|
|
7
|
+
export declare const buildStepLabels: ({ travelersFirstStep, flightOptionsHidden, roomOptionsHidden, translations }: BuildStepLabelsParams) => string[];
|
|
8
|
+
export {};
|
|
@@ -33,7 +33,6 @@ export interface BookingState {
|
|
|
33
33
|
};
|
|
34
34
|
isOption?: boolean;
|
|
35
35
|
travelersFirstStep: boolean;
|
|
36
|
-
isFetching?: boolean;
|
|
37
36
|
hasMounted: boolean;
|
|
38
37
|
countries?: CountryItem[];
|
|
39
38
|
}
|
|
@@ -57,6 +56,6 @@ export declare const fetchCountries: import("@reduxjs/toolkit").AsyncThunk<impor
|
|
|
57
56
|
fulfilledMeta?: unknown;
|
|
58
57
|
rejectedMeta?: unknown;
|
|
59
58
|
}>;
|
|
60
|
-
export declare const setOfficeId: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "booking/setOfficeId">, setLanguageCode: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setLanguageCode">, setTranslations: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "booking/setTranslations">, setBookingOptions: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptions, "booking/setBookingOptions">, setBookingType: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setBookingType">, setProductAttributes: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<ProductAttributes | undefined, "booking/setProductAttributes">, setBookingAttributes: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<BookingAttributes | undefined, "booking/setBookingAttributes">, setCalculateDeposit: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setCalculateDeposit">, setShowCommission: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<boolean | undefined, "booking/setShowCommission">, setBookingNumber: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setBookingNumber">, setIsRetry: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setIsRetry">, setFetchingPackage: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setFetchingPackage">,
|
|
59
|
+
export declare const setOfficeId: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "booking/setOfficeId">, setLanguageCode: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setLanguageCode">, setTranslations: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "booking/setTranslations">, setBookingOptions: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptions, "booking/setBookingOptions">, setBookingType: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setBookingType">, setProductAttributes: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<ProductAttributes | undefined, "booking/setProductAttributes">, setBookingAttributes: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<BookingAttributes | undefined, "booking/setBookingAttributes">, setCalculateDeposit: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setCalculateDeposit">, setShowCommission: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<boolean | undefined, "booking/setShowCommission">, setBookingNumber: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setBookingNumber">, setIsRetry: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setIsRetry">, setFetchingPackage: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setFetchingPackage">, setHasMounted: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setHasMounted">, setPackage: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<BookingPackage | undefined, "booking/setPackage">, setPackageRooms: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingPackageRoom[], "booking/setPackageRooms">, setPackageOptionPax: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptionPax[], "booking/setPackageOptionPax">, setPackageOptionUnits: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptionUnit[], "booking/setPackageOptionUnits">, setPackageGroups: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptionGroup<PerBookingPackageOption>[], "booking/setPackageGroups">, setSkipPayment: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setSkipPayment">, setGeneratePaymentUrl: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setGeneratePaymentUrl">, setTagIds: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<number[] | undefined, "booking/setTagIds">, setAgentAdressId: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<number | undefined, "booking/setAgentAdressId">, setBookingRemarks: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setBookingRemarks">, setVoucherCodes: import("@reduxjs/toolkit").ActionCreatorWithPayload<string[], "booking/setVoucherCodes">, setCurrentStep: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingStep, "booking/setCurrentStep">, setPackageAirlineGroups: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingAirlineGroup<AirlineBookingPackageOption>[], "booking/setPackageAirlineGroups">, setPackageAirportGroups: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingAirportGroup<AirportBookingPackageOption>[], "booking/setPackageAirportGroups">, setFlights: import("@reduxjs/toolkit").ActionCreatorWithPayload<GroupedFlights, "booking/setFlights">, setAccommodationViewId: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "booking/setAccommodationViewId">, setIsOption: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setIsOption">, setTravelersFirstStep: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setTravelersFirstStep">, setIsUnavailable: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setIsUnavailable">;
|
|
61
60
|
declare const _default: import("@reduxjs/toolkit").Reducer<BookingState>;
|
|
62
61
|
export default _default;
|
|
@@ -2,7 +2,6 @@ import { BookingPackageAddress, BookingPackageBookRequest, BookingPackagePax, Bo
|
|
|
2
2
|
import { RootState } from '../../store';
|
|
3
3
|
import { Room } from '../../types';
|
|
4
4
|
export declare const selectHasMounted: (state: RootState) => boolean;
|
|
5
|
-
export declare const selectIsFetching: (state: RootState) => boolean | undefined;
|
|
6
5
|
export declare const selectCurrentStep: (state: RootState) => import("./constants").BookingStep;
|
|
7
6
|
export declare const selectGeneratePaymentUrl: (state: RootState) => boolean;
|
|
8
7
|
export declare const selectSkipPaymentWithAgent: (state: RootState) => boolean;
|
|
@@ -257,6 +256,7 @@ export declare const selectCalculateDeposit: (state: RootState) => boolean;
|
|
|
257
256
|
export declare const selectShowCommission: (state: RootState) => boolean | undefined;
|
|
258
257
|
export declare const selectIsRetry: (state: RootState) => boolean;
|
|
259
258
|
export declare const selectStartDate: (state: RootState) => string | undefined;
|
|
259
|
+
export declare const selectEndDate: (state: RootState) => string | undefined;
|
|
260
260
|
export declare const selectAgents: (state: RootState) => import("@qite/tide-client").BookingTravelAgent[] | undefined;
|
|
261
261
|
export declare const selectCountries: (state: RootState) => import("@qite/tide-client").CountryItem[] | undefined;
|
|
262
262
|
export declare const selectProductCode: (state: RootState) => string | undefined;
|
|
@@ -44,7 +44,7 @@ export declare function createTraveler(traveler: RoomTraveler, followNumber: {
|
|
|
44
44
|
export declare function createInitialValuesFromRooms(formRooms: {
|
|
45
45
|
adults: RoomTraveler[];
|
|
46
46
|
children: RoomTraveler[];
|
|
47
|
-
}[], startDate?: string, agentAdressId?: number, personTranslation?: string, isCompact?: boolean): TravelersFormValues;
|
|
47
|
+
}[], startDate?: string, endDate?: string, agentAdressId?: number, personTranslation?: string, isCompact?: boolean): TravelersFormValues;
|
|
48
48
|
export declare function createInitialValuesFromEditablePackagingEntry(editablePackagingEntry: PackagingEntry, agentAdressId?: number): TravelersFormValues;
|
|
49
49
|
export declare function applyTravelersFormValuesToEditablePackagingEntry(editablePackagingEntry: PackagingEntry, values: TravelersFormValues): {
|
|
50
50
|
pax: PackagingEntryPax[];
|
package/build/build-esm/index.js
CHANGED
|
@@ -17629,14 +17629,14 @@ const updateBookingGroups = (groups, changedLines) => {
|
|
|
17629
17629
|
};
|
|
17630
17630
|
|
|
17631
17631
|
const fetchPriceDetails = createAsyncThunk('priceDetails/fetchPriceDetails', async (_, { dispatch, getState, signal }) => {
|
|
17632
|
-
dispatch(setFetchingPriceDetails(true));
|
|
17633
|
-
dispatch(resetPriceDetails());
|
|
17634
17632
|
const state = getState();
|
|
17635
17633
|
const languageCode = selectLanguageCode(state);
|
|
17636
17634
|
const request = selectBookingPackageBookRequest(state);
|
|
17637
17635
|
if (!request) {
|
|
17638
17636
|
throw Error('Product not available.');
|
|
17639
17637
|
}
|
|
17638
|
+
dispatch(setFetchingPriceDetails(true));
|
|
17639
|
+
dispatch(resetPriceDetails());
|
|
17640
17640
|
const priceDetails = await priceDetailsApi.fetchPriceDetails(state.apiSettings, request, signal, languageCode);
|
|
17641
17641
|
dispatch(setFetchingPriceDetails(false));
|
|
17642
17642
|
const packageDetails = selectPackageDetails(state);
|
|
@@ -17673,6 +17673,9 @@ const priceDetailsSlice = createSlice({
|
|
|
17673
17673
|
state.notifications = action.payload.notifications;
|
|
17674
17674
|
}
|
|
17675
17675
|
});
|
|
17676
|
+
builder.addCase(fetchPriceDetails.rejected, (state) => {
|
|
17677
|
+
state.isBusy = false;
|
|
17678
|
+
});
|
|
17676
17679
|
}
|
|
17677
17680
|
});
|
|
17678
17681
|
const { setFetchingPriceDetails } = priceDetailsSlice.actions;
|
|
@@ -17681,7 +17684,6 @@ const selectNotifications = (state) => state.priceDetails.notifications;
|
|
|
17681
17684
|
var priceDetailsReducer = priceDetailsSlice.reducer;
|
|
17682
17685
|
|
|
17683
17686
|
const selectHasMounted = (state) => state.booking.hasMounted;
|
|
17684
|
-
const selectIsFetching = (state) => state.booking.isFetching;
|
|
17685
17687
|
const selectGeneratePaymentUrl = (state) => state.booking.generatePaymentUrl;
|
|
17686
17688
|
const selectSkipPaymentWithAgent = (state) => state.booking.skipPaymentWithAgent;
|
|
17687
17689
|
const selectIsFetchingProductOptions = (state) => state.booking.isBusy;
|
|
@@ -17757,6 +17759,7 @@ const selectCalculateDeposit = (state) => state.booking.calculateDeposit;
|
|
|
17757
17759
|
const selectShowCommission = (state) => state.booking.showCommission;
|
|
17758
17760
|
const selectIsRetry = (state) => state.booking.isRetry;
|
|
17759
17761
|
const selectStartDate = (state) => state.booking.package?.options.find((x) => x.isSelected)?.fromDate;
|
|
17762
|
+
const selectEndDate = (state) => state.booking.package?.options.find((x) => x.isSelected)?.toDate;
|
|
17760
17763
|
const selectAgents = (state) => state.booking.agents;
|
|
17761
17764
|
const selectCountries = (state) => state.booking.countries;
|
|
17762
17765
|
const selectProductCode = (state) => state.booking.productAttributes?.productCode;
|
|
@@ -17972,7 +17975,6 @@ const initialState$5 = {
|
|
|
17972
17975
|
currentStep: OPTIONS_FORM_STEP,
|
|
17973
17976
|
translations: undefined,
|
|
17974
17977
|
travelersFirstStep: false,
|
|
17975
|
-
isFetching: false,
|
|
17976
17978
|
hasMounted: false,
|
|
17977
17979
|
countries: undefined
|
|
17978
17980
|
};
|
|
@@ -18191,9 +18193,6 @@ const bookingSlice = createSlice({
|
|
|
18191
18193
|
setHasMounted(state, action) {
|
|
18192
18194
|
state.hasMounted = action.payload;
|
|
18193
18195
|
},
|
|
18194
|
-
setIsFetching(state, action) {
|
|
18195
|
-
state.isFetching = action.payload;
|
|
18196
|
-
},
|
|
18197
18196
|
setOfficeId(state, action) {
|
|
18198
18197
|
state.officeId = action.payload;
|
|
18199
18198
|
},
|
|
@@ -18407,7 +18406,7 @@ const bookingSlice = createSlice({
|
|
|
18407
18406
|
});
|
|
18408
18407
|
}
|
|
18409
18408
|
});
|
|
18410
|
-
const { setOfficeId, setLanguageCode, setTranslations, setBookingOptions, setBookingType, setProductAttributes, setBookingAttributes, setCalculateDeposit, setShowCommission, setBookingNumber: setBookingNumber$1, setIsRetry, setFetchingPackage,
|
|
18409
|
+
const { setOfficeId, setLanguageCode, setTranslations, setBookingOptions, setBookingType, setProductAttributes, setBookingAttributes, setCalculateDeposit, setShowCommission, setBookingNumber: setBookingNumber$1, setIsRetry, setFetchingPackage, setHasMounted, setPackage, setPackageRooms, setPackageOptionPax, setPackageOptionUnits, setPackageGroups, setSkipPayment, setGeneratePaymentUrl, setTagIds, setAgentAdressId, setBookingRemarks, setVoucherCodes, setCurrentStep: setCurrentStep$1, setPackageAirlineGroups, setPackageAirportGroups, setFlights, setAccommodationViewId, setIsOption, setTravelersFirstStep, setIsUnavailable } = bookingSlice.actions;
|
|
18411
18410
|
var bookingReducer = bookingSlice.reducer;
|
|
18412
18411
|
|
|
18413
18412
|
const SettingsContext = React__default.createContext({
|
|
@@ -18479,18 +18478,19 @@ const StepIndicators$1 = ({ currentStep, stepLabels }) => {
|
|
|
18479
18478
|
React__default.createElement("div", { className: "step-indicators__text" }, stepName)))))));
|
|
18480
18479
|
};
|
|
18481
18480
|
|
|
18482
|
-
|
|
18483
|
-
|
|
18484
|
-
|
|
18485
|
-
|
|
18481
|
+
// Single source of truth for the ordered step labels shown in the indicator and
|
|
18482
|
+
// the panel title. Kept in one place so step-route.tsx and step-indicator.tsx
|
|
18483
|
+
// can never drift out of sync. The ERROR step is intentionally excluded — it is
|
|
18484
|
+
// not part of the indicator sequence.
|
|
18485
|
+
const buildStepLabels = ({ travelersFirstStep, flightOptionsHidden, roomOptionsHidden, translations }) => {
|
|
18486
18486
|
const stepLabels = [];
|
|
18487
18487
|
if (travelersFirstStep) {
|
|
18488
18488
|
stepLabels.push(translations.STEPS.PERSONAL_DETAILS);
|
|
18489
18489
|
}
|
|
18490
|
-
if (!
|
|
18490
|
+
if (!flightOptionsHidden) {
|
|
18491
18491
|
stepLabels.push(translations.STEPS.FLIGHT_OPTIONS);
|
|
18492
18492
|
}
|
|
18493
|
-
if (!
|
|
18493
|
+
if (!roomOptionsHidden) {
|
|
18494
18494
|
stepLabels.push(translations.STEPS.ROOM_OPTIONS);
|
|
18495
18495
|
}
|
|
18496
18496
|
stepLabels.push(translations.STEPS.EXTRA_OPTIONS);
|
|
@@ -18499,6 +18499,19 @@ const StepIndicators = ({ currentStep }) => {
|
|
|
18499
18499
|
}
|
|
18500
18500
|
stepLabels.push(translations.STEPS.SUMMARY);
|
|
18501
18501
|
stepLabels.push(translations.STEPS.CONFIRMATION);
|
|
18502
|
+
return stepLabels;
|
|
18503
|
+
};
|
|
18504
|
+
|
|
18505
|
+
const StepIndicators = ({ currentStep }) => {
|
|
18506
|
+
const { flightOptions, roomOptions } = useContext(SettingsContext);
|
|
18507
|
+
const translations = useSelector(selectTranslations);
|
|
18508
|
+
const travelersFirstStep = useSelector(selectTravelersFirstStep);
|
|
18509
|
+
const stepLabels = buildStepLabels({
|
|
18510
|
+
travelersFirstStep,
|
|
18511
|
+
flightOptionsHidden: flightOptions.isHidden,
|
|
18512
|
+
roomOptionsHidden: roomOptions.isHidden,
|
|
18513
|
+
translations
|
|
18514
|
+
});
|
|
18502
18515
|
return React__default.createElement(StepIndicators$1, { currentStep: currentStep, stepLabels: stepLabels });
|
|
18503
18516
|
};
|
|
18504
18517
|
|
|
@@ -18515,22 +18528,12 @@ const StepRoute = ({ number, title, component }) => {
|
|
|
18515
18528
|
const { flightOptions, roomOptions } = useContext(SettingsContext);
|
|
18516
18529
|
const translations = useSelector(selectTranslations);
|
|
18517
18530
|
const travelersFirstStep = useSelector(selectTravelersFirstStep);
|
|
18518
|
-
const stepLabels =
|
|
18519
|
-
|
|
18520
|
-
|
|
18521
|
-
|
|
18522
|
-
|
|
18523
|
-
|
|
18524
|
-
}
|
|
18525
|
-
if (!roomOptions.isHidden) {
|
|
18526
|
-
stepLabels.push(translations.STEPS.ROOM_OPTIONS);
|
|
18527
|
-
}
|
|
18528
|
-
stepLabels.push(translations.STEPS.EXTRA_OPTIONS);
|
|
18529
|
-
if (!travelersFirstStep) {
|
|
18530
|
-
stepLabels.push(translations.STEPS.PERSONAL_DETAILS);
|
|
18531
|
-
}
|
|
18532
|
-
stepLabels.push(translations.STEPS.SUMMARY);
|
|
18533
|
-
stepLabels.push(translations.STEPS.CONFIRMATION);
|
|
18531
|
+
const stepLabels = buildStepLabels({
|
|
18532
|
+
travelersFirstStep,
|
|
18533
|
+
flightOptionsHidden: flightOptions.isHidden,
|
|
18534
|
+
roomOptionsHidden: roomOptions.isHidden,
|
|
18535
|
+
translations
|
|
18536
|
+
});
|
|
18534
18537
|
return (React__default.createElement(BookingPanel, { currentStep: number, stepLabels: stepLabels, StepIndicatorsComponent: StepIndicators, renderTitle: (step) => (React__default.createElement(React__default.Fragment, null,
|
|
18535
18538
|
step + 1,
|
|
18536
18539
|
". ",
|
|
@@ -21630,6 +21633,7 @@ const Summary = () => {
|
|
|
21630
21633
|
const [remarks, setRemarks] = useState('');
|
|
21631
21634
|
const [voucher, setVoucher] = useState({});
|
|
21632
21635
|
const bookingQueryString = useSelector(selectBookingQueryString);
|
|
21636
|
+
const travelersFirstStep = useSelector(selectTravelersFirstStep);
|
|
21633
21637
|
const travelerFormValues = useSelector(selectTravelersFormValues);
|
|
21634
21638
|
const packageDetails = useSelector(selectPackageDetails);
|
|
21635
21639
|
const activeOption = useSelector(selectActiveOption);
|
|
@@ -21779,7 +21783,7 @@ const Summary = () => {
|
|
|
21779
21783
|
dispatch(fetchPriceDetails());
|
|
21780
21784
|
};
|
|
21781
21785
|
const goPrevious = () => {
|
|
21782
|
-
dispatch(setCurrentStep$1(TRAVELERS_FORM_STEP));
|
|
21786
|
+
dispatch(setCurrentStep$1(travelersFirstStep ? OPTIONS_FORM_STEP : TRAVELERS_FORM_STEP));
|
|
21783
21787
|
};
|
|
21784
21788
|
const translations = useSelector(selectTranslations);
|
|
21785
21789
|
return (React__default.createElement(React__default.Fragment, null,
|
|
@@ -21939,7 +21943,7 @@ const Summary = () => {
|
|
|
21939
21943
|
__html: checkbox.text
|
|
21940
21944
|
} }))))))))))),
|
|
21941
21945
|
React__default.createElement("div", { className: "booking__navigator" },
|
|
21942
|
-
settings.skipRouter ? (React__default.createElement("button", { type: "button", title: translations.STEPS.PREVIOUS, onClick: () => goPrevious(), className: "cta cta--secondary" }, translations.STEPS.PREVIOUS)) : (React__default.createElement(Link, { to: `${!settings.skipBasePathInRouting ? settings.basePath : ''}${settings.travellers.pathSuffix}?${bookingQueryString}`, title: translations.STEPS.PREVIOUS, className: "cta cta--secondary" }, translations.STEPS.PREVIOUS)),
|
|
21946
|
+
settings.skipRouter ? (React__default.createElement("button", { type: "button", title: translations.STEPS.PREVIOUS, onClick: () => goPrevious(), className: "cta cta--secondary" }, translations.STEPS.PREVIOUS)) : (React__default.createElement(Link, { to: `${!settings.skipBasePathInRouting ? settings.basePath : ''}${travelersFirstStep ? settings.options.pathSuffix : settings.travellers.pathSuffix}?${bookingQueryString}`, title: translations.STEPS.PREVIOUS, className: "cta cta--secondary" }, translations.STEPS.PREVIOUS)),
|
|
21943
21947
|
settings.allowOption && (React__default.createElement("button", { title: translations.STEPS.SUBMIT_OPTION, className: buildClassName(['cta', !userValidated && 'cta--disabled']), disabled: !userValidated, name: "option" }, translations.STEPS.SUBMIT_OPTION)),
|
|
21944
21948
|
React__default.createElement("button", { title: settings.isOffer ? translations.STEPS.SUBMIT_OFFER : translations.STEPS.SUBMIT_BOOKING, className: buildClassName(['cta', !userValidated && 'cta--disabled']), disabled: !userValidated, name: "default" }, settings.isOffer ? translations.STEPS.SUBMIT_OFFER : translations.STEPS.SUBMIT_BOOKING))))));
|
|
21945
21949
|
};
|
|
@@ -21994,8 +21998,9 @@ const validateForm$1 = (values, agentRequired, bookingType, translations, formFi
|
|
|
21994
21998
|
if (isEmpty$1(adult.birthDate)) {
|
|
21995
21999
|
set(errors, `rooms[${rIndex}].adults[${index}].birthDate`, formatTravelerField(rIndex + 1, index + 1, translations.TRAVELERS_FORM.BIRTHDATE));
|
|
21996
22000
|
}
|
|
21997
|
-
else if (values.
|
|
21998
|
-
|
|
22001
|
+
else if (values.endDate) {
|
|
22002
|
+
// If you are younger than the maxChildAge at the end of the trip, you are considered a child, so we check the endDate here instead of the startDate
|
|
22003
|
+
const age = getAge(adult.birthDate, values.endDate);
|
|
21999
22004
|
if (age <= maxChildAge) {
|
|
22000
22005
|
set(errors, `rooms[${rIndex}].adults[${index}].birthDate`, formatTravelerIsNoAdult(rIndex + 1, index + 1));
|
|
22001
22006
|
}
|
|
@@ -22016,8 +22021,9 @@ const validateForm$1 = (values, agentRequired, bookingType, translations, formFi
|
|
|
22016
22021
|
if (isEmpty$1(child.birthDate)) {
|
|
22017
22022
|
set(errors, `rooms[${rIndex}].children[${index}].birthDate`, formatTravelerField(rIndex + 1, r.adults.length + index + 1, translations.TRAVELERS_FORM.BIRTHDATE));
|
|
22018
22023
|
}
|
|
22019
|
-
else if (values.
|
|
22020
|
-
|
|
22024
|
+
else if (values.endDate) {
|
|
22025
|
+
// You need to be under the maxChildAge until the end of the trip, so we check the endDate here instead of the startDate
|
|
22026
|
+
const age = getAge(child.birthDate, values.endDate);
|
|
22021
22027
|
if (age > maxChildAge) {
|
|
22022
22028
|
set(errors, `rooms[${rIndex}].children[${index}].birthDate`, formatTravelerIsNoChild(rIndex + 1, r.adults.length + index + 1));
|
|
22023
22029
|
}
|
|
@@ -22241,10 +22247,11 @@ function createTraveler(traveler, followNumber, personTranslation, isCompact) {
|
|
|
22241
22247
|
gender: ''
|
|
22242
22248
|
};
|
|
22243
22249
|
}
|
|
22244
|
-
function createInitialValuesFromRooms(formRooms, startDate, agentAdressId, personTranslation, isCompact) {
|
|
22250
|
+
function createInitialValuesFromRooms(formRooms, startDate, endDate, agentAdressId, personTranslation, isCompact) {
|
|
22245
22251
|
const followNumber = { number: 1 };
|
|
22246
22252
|
const initialValues = {
|
|
22247
22253
|
startDate,
|
|
22254
|
+
endDate,
|
|
22248
22255
|
rooms: formRooms.map((room) => ({
|
|
22249
22256
|
adults: room.adults.map((traveler) => createTraveler(traveler, followNumber, personTranslation, isCompact)),
|
|
22250
22257
|
children: room.children.map((traveler) => createTraveler(traveler, followNumber, personTranslation, isCompact))
|
|
@@ -22294,7 +22301,7 @@ function createInitialValuesFromEditablePackagingEntry(editablePackagingEntry, a
|
|
|
22294
22301
|
})
|
|
22295
22302
|
};
|
|
22296
22303
|
});
|
|
22297
|
-
const values = createInitialValuesFromRooms(rooms.map((room) => ({ adults: room.adults, children: room.children })), editablePackagingEntry?.lines?.
|
|
22304
|
+
const values = createInitialValuesFromRooms(rooms.map((room) => ({ adults: room.adults, children: room.children })), first(editablePackagingEntry?.lines)?.from, last(editablePackagingEntry?.lines)?.to, agentAdressId);
|
|
22298
22305
|
values.rooms = rooms;
|
|
22299
22306
|
values.mainBookerId = pax.find((x) => x.isMainBooker)?.id ?? rooms[0]?.adults?.[0]?.id ?? -1;
|
|
22300
22307
|
const address = editablePackagingEntry?.address;
|
|
@@ -22572,6 +22579,7 @@ const TravelersForm = () => {
|
|
|
22572
22579
|
const navigate = settings.skipRouter ? () => { } : useNavigate();
|
|
22573
22580
|
const bookingQueryString = useSelector(selectBookingQueryString);
|
|
22574
22581
|
const startDate = useSelector(selectStartDate);
|
|
22582
|
+
const endDate = useSelector(selectEndDate);
|
|
22575
22583
|
const selectFormRooms = useMemo(() => makeSelectFormRooms(settings.maxChildAge), [settings.maxChildAge]);
|
|
22576
22584
|
const formRooms = useSelector(selectFormRooms);
|
|
22577
22585
|
const bookingType = useSelector(selectBookingType);
|
|
@@ -22581,13 +22589,14 @@ const TravelersForm = () => {
|
|
|
22581
22589
|
const travelersFirstStep = useSelector(selectTravelersFirstStep);
|
|
22582
22590
|
const isUnavailable = useSelector(selectIsUnavailable);
|
|
22583
22591
|
const bookingAttributes = useSelector(selectBookingAttributes);
|
|
22584
|
-
const isFetching = useSelector(selectIsFetching);
|
|
22585
22592
|
const hasMounted = useSelector(selectHasMounted);
|
|
22586
22593
|
const countries = useSelector(selectCountries);
|
|
22594
|
+
const inFlight = useRef(false);
|
|
22595
|
+
const pendingRefetch = useRef(false);
|
|
22587
22596
|
const useCompactForm = !!settings.travellers.compactForm && !!settings.agentAdressId;
|
|
22588
22597
|
const showAllCountries = !!settings.travellers.showAllCountries;
|
|
22589
22598
|
const initialValues = useSelector(selectTravelersFormValues) ??
|
|
22590
|
-
createInitialValuesFromRooms(formRooms, startDate, agentAdressId, translations.TRAVELERS_FORM.PERSON, useCompactForm);
|
|
22599
|
+
createInitialValuesFromRooms(formRooms, startDate, endDate, agentAdressId, translations.TRAVELERS_FORM.PERSON, useCompactForm);
|
|
22591
22600
|
const [showAgentSelection, setShowAgentSelection] = useState(!settings.agentAdressId && !settings.hideAgentSelection);
|
|
22592
22601
|
const formik = useFormik({
|
|
22593
22602
|
initialValues,
|
|
@@ -22615,40 +22624,46 @@ const TravelersForm = () => {
|
|
|
22615
22624
|
dispatch(fetchPriceDetails());
|
|
22616
22625
|
}, [dispatch]);
|
|
22617
22626
|
useEffect(() => {
|
|
22618
|
-
if (!bookingAttributes?.rooms?.length
|
|
22627
|
+
if (!bookingAttributes?.rooms?.length)
|
|
22619
22628
|
return;
|
|
22620
22629
|
if (!hasMounted) {
|
|
22621
22630
|
dispatch(setHasMounted(true));
|
|
22622
22631
|
return;
|
|
22623
22632
|
}
|
|
22633
|
+
if (inFlight.current) {
|
|
22634
|
+
pendingRefetch.current = true;
|
|
22635
|
+
return;
|
|
22636
|
+
}
|
|
22624
22637
|
const fetchAll = async () => {
|
|
22625
|
-
|
|
22638
|
+
inFlight.current = true;
|
|
22626
22639
|
try {
|
|
22627
|
-
|
|
22628
|
-
|
|
22640
|
+
do {
|
|
22641
|
+
pendingRefetch.current = false;
|
|
22642
|
+
await dispatch(fetchPackage());
|
|
22643
|
+
await dispatch(fetchPriceDetails());
|
|
22644
|
+
} while (pendingRefetch.current);
|
|
22629
22645
|
}
|
|
22630
22646
|
finally {
|
|
22631
|
-
|
|
22647
|
+
inFlight.current = false;
|
|
22632
22648
|
}
|
|
22633
22649
|
};
|
|
22634
22650
|
fetchAll();
|
|
22635
|
-
}, [bookingAttributes?.rooms, dispatch, hasMounted
|
|
22651
|
+
}, [bookingAttributes?.rooms, dispatch, hasMounted]);
|
|
22652
|
+
const roomsQuery = useMemo(() => formik.values.rooms
|
|
22653
|
+
.map((room) => {
|
|
22654
|
+
const adults = room.adults ? room.adults.length : 0;
|
|
22655
|
+
const childAges = room.children?.length ? room.children.map((child) => child.age).join(',') : '';
|
|
22656
|
+
return `(adults:${adults},childAges:(${childAges}))`;
|
|
22657
|
+
})
|
|
22658
|
+
.join(','), [formik.values.rooms]);
|
|
22636
22659
|
useEffect(() => {
|
|
22637
|
-
if (settings.skipRouter || !travelersFirstStep)
|
|
22660
|
+
if (settings.skipRouter || !travelersFirstStep || !bookingQueryString)
|
|
22638
22661
|
return;
|
|
22639
22662
|
const params = new URLSearchParams(bookingQueryString);
|
|
22640
22663
|
params.delete('rooms');
|
|
22641
|
-
const
|
|
22642
|
-
.map((room) => {
|
|
22643
|
-
const adults = room.adults ? room.adults.length : 0;
|
|
22644
|
-
const childAges = room.children?.length ? room.children.map((child) => child.age).join(',') : '';
|
|
22645
|
-
return `adults:${adults},childAges:(${childAges})`;
|
|
22646
|
-
})
|
|
22647
|
-
.map((room) => `(${room})`)
|
|
22648
|
-
.join(',');
|
|
22649
|
-
const nextQuery = `${params.toString()}${params.toString() ? '&' : ''}rooms=(${roomsString})`;
|
|
22664
|
+
const nextQuery = `${params.toString()}${params.toString() ? '&' : ''}rooms=(${roomsQuery})`;
|
|
22650
22665
|
navigate(`${window.location.pathname}?${nextQuery}`, { replace: true });
|
|
22651
|
-
}, [
|
|
22666
|
+
}, [roomsQuery, bookingQueryString, navigate, settings.skipRouter, travelersFirstStep]);
|
|
22652
22667
|
useEffect(() => {
|
|
22653
22668
|
if (!agents || !settings.affiliateSlug)
|
|
22654
22669
|
return;
|
|
@@ -22863,10 +22878,17 @@ const Booking = ({ productCode, productName, thumbnailUrl }) => {
|
|
|
22863
22878
|
promise.abort();
|
|
22864
22879
|
};
|
|
22865
22880
|
}, [productAttributes]);
|
|
22866
|
-
let numberIndex =
|
|
22867
|
-
|
|
22868
|
-
|
|
22869
|
-
|
|
22881
|
+
let numberIndex = 0;
|
|
22882
|
+
const getFirstStep = () => {
|
|
22883
|
+
if (travelersFirstStep)
|
|
22884
|
+
return { path: travellers.pathSuffix, title: translations.STEPS.PERSONAL_DETAILS, component: React__default.createElement(TravelersForm, null) };
|
|
22885
|
+
if (!flightOptions.isHidden && flightOptions.pathSuffix)
|
|
22886
|
+
return { path: flightOptions.pathSuffix, title: translations.STEPS.FLIGHT_OPTIONS, component: React__default.createElement(FlightOptionsForm, null) };
|
|
22887
|
+
if (!roomOptions.isHidden && roomOptions.pathSuffix)
|
|
22888
|
+
return { path: roomOptions.pathSuffix, title: translations.STEPS.ROOM_OPTIONS, component: React__default.createElement(RoomOptionsForm, null) };
|
|
22889
|
+
return { path: options.pathSuffix, title: translations.STEPS.EXTRA_OPTIONS, component: React__default.createElement(OptionsForm, null) };
|
|
22890
|
+
};
|
|
22891
|
+
const firstStep = getFirstStep();
|
|
22870
22892
|
if (!translationsReady) {
|
|
22871
22893
|
return null;
|
|
22872
22894
|
}
|
|
@@ -22875,8 +22897,9 @@ const Booking = ({ productCode, productName, thumbnailUrl }) => {
|
|
|
22875
22897
|
React__default.createElement("div", { className: "booking__content" },
|
|
22876
22898
|
React__default.createElement("div", { className: "booking__panel" },
|
|
22877
22899
|
React__default.createElement(Routes, null,
|
|
22878
|
-
|
|
22879
|
-
|
|
22900
|
+
firstStep.path !== '/' && React__default.createElement(Route, { path: "/", element: React__default.createElement(StepRoute, { number: 0, title: firstStep.title, component: firstStep.component }) }),
|
|
22901
|
+
travelersFirstStep && (React__default.createElement(Route, { path: travellers.pathSuffix, element: React__default.createElement(StepRoute, { number: numberIndex++, title: translations.STEPS.PERSONAL_DETAILS, component: React__default.createElement(TravelersForm, null) }) })),
|
|
22902
|
+
!flightOptions.isHidden && flightOptions.pathSuffix && (React__default.createElement(Route, { path: flightOptions.pathSuffix, element: React__default.createElement(StepRoute, { number: numberIndex++, title: translations.STEPS.FLIGHT_OPTIONS, component: React__default.createElement(FlightOptionsForm, null) }) })),
|
|
22880
22903
|
!roomOptions.isHidden && roomOptions.pathSuffix && (React__default.createElement(Route, { path: roomOptions.pathSuffix, element: React__default.createElement(StepRoute, { number: numberIndex++, title: translations.STEPS.ROOM_OPTIONS, component: React__default.createElement(RoomOptionsForm, null) }) })),
|
|
22881
22904
|
React__default.createElement(Route, { path: options.pathSuffix, element: React__default.createElement(StepRoute, { number: numberIndex++, title: translations.STEPS.EXTRA_OPTIONS, component: React__default.createElement(OptionsForm, null) }) }),
|
|
22882
22905
|
!travelersFirstStep && (React__default.createElement(Route, { path: travellers.pathSuffix, element: React__default.createElement(StepRoute, { number: numberIndex++, title: translations.STEPS.PERSONAL_DETAILS, component: React__default.createElement(TravelersForm, null) }) })),
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface BuildStepLabelsParams {
|
|
2
|
+
travelersFirstStep: boolean;
|
|
3
|
+
flightOptionsHidden?: boolean | null;
|
|
4
|
+
roomOptionsHidden?: boolean | null;
|
|
5
|
+
translations: Record<string, any>;
|
|
6
|
+
}
|
|
7
|
+
export declare const buildStepLabels: ({ travelersFirstStep, flightOptionsHidden, roomOptionsHidden, translations }: BuildStepLabelsParams) => string[];
|
|
8
|
+
export {};
|
|
@@ -33,7 +33,6 @@ export interface BookingState {
|
|
|
33
33
|
};
|
|
34
34
|
isOption?: boolean;
|
|
35
35
|
travelersFirstStep: boolean;
|
|
36
|
-
isFetching?: boolean;
|
|
37
36
|
hasMounted: boolean;
|
|
38
37
|
countries?: CountryItem[];
|
|
39
38
|
}
|
|
@@ -57,6 +56,6 @@ export declare const fetchCountries: import("@reduxjs/toolkit").AsyncThunk<impor
|
|
|
57
56
|
fulfilledMeta?: unknown;
|
|
58
57
|
rejectedMeta?: unknown;
|
|
59
58
|
}>;
|
|
60
|
-
export declare const setOfficeId: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "booking/setOfficeId">, setLanguageCode: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setLanguageCode">, setTranslations: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "booking/setTranslations">, setBookingOptions: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptions, "booking/setBookingOptions">, setBookingType: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setBookingType">, setProductAttributes: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<ProductAttributes | undefined, "booking/setProductAttributes">, setBookingAttributes: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<BookingAttributes | undefined, "booking/setBookingAttributes">, setCalculateDeposit: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setCalculateDeposit">, setShowCommission: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<boolean | undefined, "booking/setShowCommission">, setBookingNumber: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setBookingNumber">, setIsRetry: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setIsRetry">, setFetchingPackage: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setFetchingPackage">,
|
|
59
|
+
export declare const setOfficeId: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "booking/setOfficeId">, setLanguageCode: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setLanguageCode">, setTranslations: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "booking/setTranslations">, setBookingOptions: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptions, "booking/setBookingOptions">, setBookingType: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setBookingType">, setProductAttributes: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<ProductAttributes | undefined, "booking/setProductAttributes">, setBookingAttributes: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<BookingAttributes | undefined, "booking/setBookingAttributes">, setCalculateDeposit: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setCalculateDeposit">, setShowCommission: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<boolean | undefined, "booking/setShowCommission">, setBookingNumber: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setBookingNumber">, setIsRetry: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setIsRetry">, setFetchingPackage: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setFetchingPackage">, setHasMounted: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setHasMounted">, setPackage: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<BookingPackage | undefined, "booking/setPackage">, setPackageRooms: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingPackageRoom[], "booking/setPackageRooms">, setPackageOptionPax: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptionPax[], "booking/setPackageOptionPax">, setPackageOptionUnits: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptionUnit[], "booking/setPackageOptionUnits">, setPackageGroups: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptionGroup<PerBookingPackageOption>[], "booking/setPackageGroups">, setSkipPayment: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setSkipPayment">, setGeneratePaymentUrl: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setGeneratePaymentUrl">, setTagIds: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<number[] | undefined, "booking/setTagIds">, setAgentAdressId: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<number | undefined, "booking/setAgentAdressId">, setBookingRemarks: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setBookingRemarks">, setVoucherCodes: import("@reduxjs/toolkit").ActionCreatorWithPayload<string[], "booking/setVoucherCodes">, setCurrentStep: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingStep, "booking/setCurrentStep">, setPackageAirlineGroups: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingAirlineGroup<AirlineBookingPackageOption>[], "booking/setPackageAirlineGroups">, setPackageAirportGroups: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingAirportGroup<AirportBookingPackageOption>[], "booking/setPackageAirportGroups">, setFlights: import("@reduxjs/toolkit").ActionCreatorWithPayload<GroupedFlights, "booking/setFlights">, setAccommodationViewId: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "booking/setAccommodationViewId">, setIsOption: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setIsOption">, setTravelersFirstStep: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setTravelersFirstStep">, setIsUnavailable: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setIsUnavailable">;
|
|
61
60
|
declare const _default: import("@reduxjs/toolkit").Reducer<BookingState>;
|
|
62
61
|
export default _default;
|
|
@@ -2,7 +2,6 @@ import { BookingPackageAddress, BookingPackageBookRequest, BookingPackagePax, Bo
|
|
|
2
2
|
import { RootState } from '../../store';
|
|
3
3
|
import { Room } from '../../types';
|
|
4
4
|
export declare const selectHasMounted: (state: RootState) => boolean;
|
|
5
|
-
export declare const selectIsFetching: (state: RootState) => boolean | undefined;
|
|
6
5
|
export declare const selectCurrentStep: (state: RootState) => import("./constants").BookingStep;
|
|
7
6
|
export declare const selectGeneratePaymentUrl: (state: RootState) => boolean;
|
|
8
7
|
export declare const selectSkipPaymentWithAgent: (state: RootState) => boolean;
|
|
@@ -257,6 +256,7 @@ export declare const selectCalculateDeposit: (state: RootState) => boolean;
|
|
|
257
256
|
export declare const selectShowCommission: (state: RootState) => boolean | undefined;
|
|
258
257
|
export declare const selectIsRetry: (state: RootState) => boolean;
|
|
259
258
|
export declare const selectStartDate: (state: RootState) => string | undefined;
|
|
259
|
+
export declare const selectEndDate: (state: RootState) => string | undefined;
|
|
260
260
|
export declare const selectAgents: (state: RootState) => import("@qite/tide-client").BookingTravelAgent[] | undefined;
|
|
261
261
|
export declare const selectCountries: (state: RootState) => import("@qite/tide-client").CountryItem[] | undefined;
|
|
262
262
|
export declare const selectProductCode: (state: RootState) => string | undefined;
|
|
@@ -44,7 +44,7 @@ export declare function createTraveler(traveler: RoomTraveler, followNumber: {
|
|
|
44
44
|
export declare function createInitialValuesFromRooms(formRooms: {
|
|
45
45
|
adults: RoomTraveler[];
|
|
46
46
|
children: RoomTraveler[];
|
|
47
|
-
}[], startDate?: string, agentAdressId?: number, personTranslation?: string, isCompact?: boolean): TravelersFormValues;
|
|
47
|
+
}[], startDate?: string, endDate?: string, agentAdressId?: number, personTranslation?: string, isCompact?: boolean): TravelersFormValues;
|
|
48
48
|
export declare function createInitialValuesFromEditablePackagingEntry(editablePackagingEntry: PackagingEntry, agentAdressId?: number): TravelersFormValues;
|
|
49
49
|
export declare function applyTravelersFormValuesToEditablePackagingEntry(editablePackagingEntry: PackagingEntry, values: TravelersFormValues): {
|
|
50
50
|
pax: PackagingEntryPax[];
|
package/package.json
CHANGED