@qite/tide-components 1.0.13-preview.0 → 1.0.14-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/build/build-cjs/index.js +4450 -4039
  2. package/build/build-cjs/src/booking-product/types.d.ts +7 -0
  3. package/build/build-cjs/src/booking-wizard/components/build-step-labels.d.ts +2 -1
  4. package/build/build-cjs/src/booking-wizard/features/booking/booking-slice.d.ts +6 -1
  5. package/build/build-cjs/src/booking-wizard/features/booking/constants.d.ts +5 -4
  6. package/build/build-cjs/src/booking-wizard/features/booking/selectors.d.ts +219 -3
  7. package/build/build-cjs/src/booking-wizard/features/subform/index.d.ts +3 -0
  8. package/build/build-cjs/src/booking-wizard/features/subform/subform-entry.d.ts +9 -0
  9. package/build/build-cjs/src/booking-wizard/features/subform/subform-utils.d.ts +15 -0
  10. package/build/build-cjs/src/booking-wizard/types.d.ts +7 -1
  11. package/build/build-cjs/src/search-results/utils/booked-entry-utils.d.ts +5 -0
  12. package/build/build-cjs/src/search-results/utils/query-utils.d.ts +5 -0
  13. package/build/build-cjs/src/search-results/utils/traject-utils.d.ts +15 -1
  14. package/build/build-esm/index.js +4450 -4039
  15. package/build/build-esm/src/booking-product/types.d.ts +7 -0
  16. package/build/build-esm/src/booking-wizard/components/build-step-labels.d.ts +2 -1
  17. package/build/build-esm/src/booking-wizard/features/booking/booking-slice.d.ts +6 -1
  18. package/build/build-esm/src/booking-wizard/features/booking/constants.d.ts +5 -4
  19. package/build/build-esm/src/booking-wizard/features/booking/selectors.d.ts +219 -3
  20. package/build/build-esm/src/booking-wizard/features/subform/index.d.ts +3 -0
  21. package/build/build-esm/src/booking-wizard/features/subform/subform-entry.d.ts +9 -0
  22. package/build/build-esm/src/booking-wizard/features/subform/subform-utils.d.ts +15 -0
  23. package/build/build-esm/src/booking-wizard/types.d.ts +7 -1
  24. package/build/build-esm/src/search-results/utils/booked-entry-utils.d.ts +5 -0
  25. package/build/build-esm/src/search-results/utils/query-utils.d.ts +5 -0
  26. package/build/build-esm/src/search-results/utils/traject-utils.d.ts +15 -1
  27. package/package.json +2 -2
  28. package/styles/components/_flight-option.scss +12 -0
@@ -13,6 +13,13 @@ export interface Settings {
13
13
  isOffer?: boolean;
14
14
  displayMode?: 'list' | 'calendar';
15
15
  searchType?: number;
16
+ /**
17
+ * Identifies which portal search configuration this product is being booked
18
+ * through. Required by the search/details requests. Forwarded as-is on
19
+ * those requests and, on "Book", appended to the booking-wizard redirect
20
+ * URL so it survives the handoff.
21
+ */
22
+ searchConfigurationId: number;
16
23
  /**
17
24
  * When true, hides the "Rooms" heading, the number-of-rooms stepper,
18
25
  * the per-room "Room N" sub-heading and the Edit/Apply gate. The
@@ -2,7 +2,8 @@ interface BuildStepLabelsParams {
2
2
  travelersFirstStep: boolean;
3
3
  flightOptionsHidden?: boolean | null;
4
4
  roomOptionsHidden?: boolean | null;
5
+ subFormHidden?: boolean | null;
5
6
  translations: Record<string, any>;
6
7
  }
7
- export declare const buildStepLabels: ({ travelersFirstStep, flightOptionsHidden, roomOptionsHidden, translations }: BuildStepLabelsParams) => string[];
8
+ export declare const buildStepLabels: ({ travelersFirstStep, flightOptionsHidden, roomOptionsHidden, subFormHidden, translations }: BuildStepLabelsParams) => string[];
8
9
  export {};
@@ -1,5 +1,6 @@
1
1
  import { BookingAttributes, BookingOptions, GroupedFlights, ProductAttributes } from '../../types';
2
2
  import { AirlineBookingPackageOption, AirportBookingPackageOption, BookingAirlineGroup, BookingAirportGroup, BookingOptionGroup, BookingOptionPax, BookingOptionUnit, BookingPackage, BookingPackageRoom, BookingTravelAgent, CountryItem, PerBookingPackageOption } from '@qite/tide-client/build/types';
3
+ import { FormValues } from '../../../form/form-types';
3
4
  import { BookingStep } from './constants';
4
5
  export interface BookingState {
5
6
  officeId: number;
@@ -35,6 +36,7 @@ export interface BookingState {
35
36
  travelersFirstStep: boolean;
36
37
  hasMounted: boolean;
37
38
  countries?: CountryItem[];
39
+ subFormAnswers: Record<string, FormValues>;
38
40
  }
39
41
  export declare const fetchPackage: import("@reduxjs/toolkit").AsyncThunk<void, void, {
40
42
  state?: unknown;
@@ -56,6 +58,9 @@ export declare const fetchCountries: import("@reduxjs/toolkit").AsyncThunk<impor
56
58
  fulfilledMeta?: unknown;
57
59
  rejectedMeta?: unknown;
58
60
  }>;
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
+ 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">, setSubFormAnswer: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
62
+ entryLineGuid: string;
63
+ values: FormValues;
64
+ }, "booking/setSubFormAnswer">;
60
65
  declare const _default: import("@reduxjs/toolkit").Reducer<BookingState>;
61
66
  export default _default;
@@ -2,7 +2,8 @@ export declare const ROOM_OPTIONS_FORM_STEP = 1;
2
2
  export declare const FLIGHT_OPTIONS_FORM_STEP = 2;
3
3
  export declare const OPTIONS_FORM_STEP = 3;
4
4
  export declare const TRAVELERS_FORM_STEP = 4;
5
- export declare const SUMMARY_STEP = 5;
6
- export declare const CONFIRMATION_STEP = 6;
7
- export declare const ERROR_STEP = 7;
8
- export type BookingStep = typeof ROOM_OPTIONS_FORM_STEP | typeof FLIGHT_OPTIONS_FORM_STEP | typeof OPTIONS_FORM_STEP | typeof TRAVELERS_FORM_STEP | typeof SUMMARY_STEP | typeof CONFIRMATION_STEP | typeof ERROR_STEP;
5
+ export declare const SUBFORM_STEP = 5;
6
+ export declare const SUMMARY_STEP = 6;
7
+ export declare const CONFIRMATION_STEP = 7;
8
+ export declare const ERROR_STEP = 8;
9
+ export type BookingStep = typeof ROOM_OPTIONS_FORM_STEP | typeof FLIGHT_OPTIONS_FORM_STEP | typeof OPTIONS_FORM_STEP | typeof TRAVELERS_FORM_STEP | typeof SUBFORM_STEP | typeof SUMMARY_STEP | typeof CONFIRMATION_STEP | typeof ERROR_STEP;
@@ -401,6 +401,152 @@ export declare const selectBookingAddress: ((state: {
401
401
  argsMemoize: typeof import("reselect").weakMapMemoize;
402
402
  memoize: typeof import("reselect").weakMapMemoize;
403
403
  };
404
+ export declare const selectSubFormAnswers: (state: RootState) => Record<string, import("../../../form/form-types").FormValues>;
405
+ export declare const selectInEffectSubFormLines: ((state: {
406
+ booking: import("./booking-slice").BookingState;
407
+ travelersForm: import("../travelers-form/travelers-form-slice").TravelersFormState;
408
+ priceDetails: import("../price-details/price-details-slice").PriceDetailsState;
409
+ summary: import("../summary/summary-slice").SummaryState;
410
+ apiSettings: import("../../..").ApiSettingsState;
411
+ }) => import("../subform/subform-utils").SubFormLine[]) & {
412
+ clearCache: () => void;
413
+ resultsCount: () => number;
414
+ resetResultsCount: () => void;
415
+ } & {
416
+ resultFunc: (resultFuncArgs_0: import("@qite/tide-client").BookingPackageRoom[] | undefined, resultFuncArgs_1: import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, resultFuncArgs_2: import("@qite/tide-client").BookingOptionUnit[] | undefined, resultFuncArgs_3: import("@qite/tide-client").BookingOptionPax[] | undefined) => import("../subform/subform-utils").SubFormLine[];
417
+ memoizedResultFunc: ((resultFuncArgs_0: import("@qite/tide-client").BookingPackageRoom[] | undefined, resultFuncArgs_1: import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, resultFuncArgs_2: import("@qite/tide-client").BookingOptionUnit[] | undefined, resultFuncArgs_3: import("@qite/tide-client").BookingOptionPax[] | undefined) => import("../subform/subform-utils").SubFormLine[]) & {
418
+ clearCache: () => void;
419
+ resultsCount: () => number;
420
+ resetResultsCount: () => void;
421
+ };
422
+ lastResult: () => import("../subform/subform-utils").SubFormLine[];
423
+ dependencies: [(state: RootState) => import("@qite/tide-client").BookingPackageRoom[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionUnit[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionPax[] | undefined];
424
+ recomputations: () => number;
425
+ resetRecomputations: () => void;
426
+ dependencyRecomputations: () => number;
427
+ resetDependencyRecomputations: () => void;
428
+ } & {
429
+ argsMemoize: typeof import("reselect").weakMapMemoize;
430
+ memoize: typeof import("reselect").weakMapMemoize;
431
+ };
432
+ export declare const selectHasInEffectSubForms: ((state: {
433
+ booking: import("./booking-slice").BookingState;
434
+ travelersForm: import("../travelers-form/travelers-form-slice").TravelersFormState;
435
+ priceDetails: import("../price-details/price-details-slice").PriceDetailsState;
436
+ summary: import("../summary/summary-slice").SummaryState;
437
+ apiSettings: import("../../..").ApiSettingsState;
438
+ }) => boolean) & {
439
+ clearCache: () => void;
440
+ resultsCount: () => number;
441
+ resetResultsCount: () => void;
442
+ } & {
443
+ resultFunc: (resultFuncArgs_0: import("../subform/subform-utils").SubFormLine[]) => boolean;
444
+ memoizedResultFunc: ((resultFuncArgs_0: import("../subform/subform-utils").SubFormLine[]) => boolean) & {
445
+ clearCache: () => void;
446
+ resultsCount: () => number;
447
+ resetResultsCount: () => void;
448
+ };
449
+ lastResult: () => boolean;
450
+ dependencies: [((state: {
451
+ booking: import("./booking-slice").BookingState;
452
+ travelersForm: import("../travelers-form/travelers-form-slice").TravelersFormState;
453
+ priceDetails: import("../price-details/price-details-slice").PriceDetailsState;
454
+ summary: import("../summary/summary-slice").SummaryState;
455
+ apiSettings: import("../../..").ApiSettingsState;
456
+ }) => import("../subform/subform-utils").SubFormLine[]) & {
457
+ clearCache: () => void;
458
+ resultsCount: () => number;
459
+ resetResultsCount: () => void;
460
+ } & {
461
+ resultFunc: (resultFuncArgs_0: import("@qite/tide-client").BookingPackageRoom[] | undefined, resultFuncArgs_1: import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, resultFuncArgs_2: import("@qite/tide-client").BookingOptionUnit[] | undefined, resultFuncArgs_3: import("@qite/tide-client").BookingOptionPax[] | undefined) => import("../subform/subform-utils").SubFormLine[];
462
+ memoizedResultFunc: ((resultFuncArgs_0: import("@qite/tide-client").BookingPackageRoom[] | undefined, resultFuncArgs_1: import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, resultFuncArgs_2: import("@qite/tide-client").BookingOptionUnit[] | undefined, resultFuncArgs_3: import("@qite/tide-client").BookingOptionPax[] | undefined) => import("../subform/subform-utils").SubFormLine[]) & {
463
+ clearCache: () => void;
464
+ resultsCount: () => number;
465
+ resetResultsCount: () => void;
466
+ };
467
+ lastResult: () => import("../subform/subform-utils").SubFormLine[];
468
+ dependencies: [(state: RootState) => import("@qite/tide-client").BookingPackageRoom[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionUnit[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionPax[] | undefined];
469
+ recomputations: () => number;
470
+ resetRecomputations: () => void;
471
+ dependencyRecomputations: () => number;
472
+ resetDependencyRecomputations: () => void;
473
+ } & {
474
+ argsMemoize: typeof import("reselect").weakMapMemoize;
475
+ memoize: typeof import("reselect").weakMapMemoize;
476
+ }];
477
+ recomputations: () => number;
478
+ resetRecomputations: () => void;
479
+ dependencyRecomputations: () => number;
480
+ resetDependencyRecomputations: () => void;
481
+ } & {
482
+ argsMemoize: typeof import("reselect").weakMapMemoize;
483
+ memoize: typeof import("reselect").weakMapMemoize;
484
+ };
485
+ export declare const selectSubFormSubmissions: ((state: {
486
+ booking: import("./booking-slice").BookingState;
487
+ travelersForm: import("../travelers-form/travelers-form-slice").TravelersFormState;
488
+ priceDetails: import("../price-details/price-details-slice").PriceDetailsState;
489
+ summary: import("../summary/summary-slice").SummaryState;
490
+ apiSettings: import("../../..").ApiSettingsState;
491
+ }) => {
492
+ entryLineGuid: string;
493
+ data: Record<string, unknown>;
494
+ }[]) & {
495
+ clearCache: () => void;
496
+ resultsCount: () => number;
497
+ resetResultsCount: () => void;
498
+ } & {
499
+ resultFunc: (resultFuncArgs_0: import("../subform/subform-utils").SubFormLine[], resultFuncArgs_1: Record<string, import("../../../form/form-types").FormValues>) => {
500
+ entryLineGuid: string;
501
+ data: Record<string, unknown>;
502
+ }[];
503
+ memoizedResultFunc: ((resultFuncArgs_0: import("../subform/subform-utils").SubFormLine[], resultFuncArgs_1: Record<string, import("../../../form/form-types").FormValues>) => {
504
+ entryLineGuid: string;
505
+ data: Record<string, unknown>;
506
+ }[]) & {
507
+ clearCache: () => void;
508
+ resultsCount: () => number;
509
+ resetResultsCount: () => void;
510
+ };
511
+ lastResult: () => {
512
+ entryLineGuid: string;
513
+ data: Record<string, unknown>;
514
+ }[];
515
+ dependencies: [((state: {
516
+ booking: import("./booking-slice").BookingState;
517
+ travelersForm: import("../travelers-form/travelers-form-slice").TravelersFormState;
518
+ priceDetails: import("../price-details/price-details-slice").PriceDetailsState;
519
+ summary: import("../summary/summary-slice").SummaryState;
520
+ apiSettings: import("../../..").ApiSettingsState;
521
+ }) => import("../subform/subform-utils").SubFormLine[]) & {
522
+ clearCache: () => void;
523
+ resultsCount: () => number;
524
+ resetResultsCount: () => void;
525
+ } & {
526
+ resultFunc: (resultFuncArgs_0: import("@qite/tide-client").BookingPackageRoom[] | undefined, resultFuncArgs_1: import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, resultFuncArgs_2: import("@qite/tide-client").BookingOptionUnit[] | undefined, resultFuncArgs_3: import("@qite/tide-client").BookingOptionPax[] | undefined) => import("../subform/subform-utils").SubFormLine[];
527
+ memoizedResultFunc: ((resultFuncArgs_0: import("@qite/tide-client").BookingPackageRoom[] | undefined, resultFuncArgs_1: import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, resultFuncArgs_2: import("@qite/tide-client").BookingOptionUnit[] | undefined, resultFuncArgs_3: import("@qite/tide-client").BookingOptionPax[] | undefined) => import("../subform/subform-utils").SubFormLine[]) & {
528
+ clearCache: () => void;
529
+ resultsCount: () => number;
530
+ resetResultsCount: () => void;
531
+ };
532
+ lastResult: () => import("../subform/subform-utils").SubFormLine[];
533
+ dependencies: [(state: RootState) => import("@qite/tide-client").BookingPackageRoom[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionUnit[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionPax[] | undefined];
534
+ recomputations: () => number;
535
+ resetRecomputations: () => void;
536
+ dependencyRecomputations: () => number;
537
+ resetDependencyRecomputations: () => void;
538
+ } & {
539
+ argsMemoize: typeof import("reselect").weakMapMemoize;
540
+ memoize: typeof import("reselect").weakMapMemoize;
541
+ }, (state: RootState) => Record<string, import("../../../form/form-types").FormValues>];
542
+ recomputations: () => number;
543
+ resetRecomputations: () => void;
544
+ dependencyRecomputations: () => number;
545
+ resetDependencyRecomputations: () => void;
546
+ } & {
547
+ argsMemoize: typeof import("reselect").weakMapMemoize;
548
+ memoize: typeof import("reselect").weakMapMemoize;
549
+ };
404
550
  export declare const selectBookingPackageRequest: ((state: {
405
551
  booking: import("./booking-slice").BookingState;
406
552
  travelersForm: import("../travelers-form/travelers-form-slice").TravelersFormState;
@@ -465,8 +611,14 @@ export declare const selectBookingPackageBookRequest: ((state: {
465
611
  resultsCount: () => number;
466
612
  resetResultsCount: () => void;
467
613
  } & {
468
- resultFunc: (resultFuncArgs_0: BookingPackageRequest<any>, resultFuncArgs_1: import("../../types").BookingOptions, resultFuncArgs_2: string, resultFuncArgs_3: BookingPackagePax[], resultFuncArgs_4: BookingPackageAddress | undefined, resultFuncArgs_5: import("@qite/tide-client").BookingPackage | undefined, resultFuncArgs_6: boolean, resultFuncArgs_7: boolean | undefined, resultFuncArgs_8: number | undefined, resultFuncArgs_9: boolean, resultFuncArgs_10: boolean, resultFuncArgs_11: import("@qite/tide-client").BookingProductNotification[], resultFuncArgs_12: number[] | undefined, resultFuncArgs_13: string | undefined, resultFuncArgs_14: string[] | undefined) => BookingPackageRequest<BookingPackageBookRequest> | null;
469
- memoizedResultFunc: ((resultFuncArgs_0: BookingPackageRequest<any>, resultFuncArgs_1: import("../../types").BookingOptions, resultFuncArgs_2: string, resultFuncArgs_3: BookingPackagePax[], resultFuncArgs_4: BookingPackageAddress | undefined, resultFuncArgs_5: import("@qite/tide-client").BookingPackage | undefined, resultFuncArgs_6: boolean, resultFuncArgs_7: boolean | undefined, resultFuncArgs_8: number | undefined, resultFuncArgs_9: boolean, resultFuncArgs_10: boolean, resultFuncArgs_11: import("@qite/tide-client").BookingProductNotification[], resultFuncArgs_12: number[] | undefined, resultFuncArgs_13: string | undefined, resultFuncArgs_14: string[] | undefined) => BookingPackageRequest<BookingPackageBookRequest> | null) & {
614
+ resultFunc: (resultFuncArgs_0: BookingPackageRequest<any>, resultFuncArgs_1: import("../../types").BookingOptions, resultFuncArgs_2: string, resultFuncArgs_3: BookingPackagePax[], resultFuncArgs_4: BookingPackageAddress | undefined, resultFuncArgs_5: import("@qite/tide-client").BookingPackage | undefined, resultFuncArgs_6: boolean, resultFuncArgs_7: boolean | undefined, resultFuncArgs_8: number | undefined, resultFuncArgs_9: boolean, resultFuncArgs_10: boolean, resultFuncArgs_11: import("@qite/tide-client").BookingProductNotification[], resultFuncArgs_12: number[] | undefined, resultFuncArgs_13: string | undefined, resultFuncArgs_14: string[] | undefined, resultFuncArgs_15: {
615
+ entryLineGuid: string;
616
+ data: Record<string, unknown>;
617
+ }[]) => BookingPackageRequest<BookingPackageBookRequest> | null;
618
+ memoizedResultFunc: ((resultFuncArgs_0: BookingPackageRequest<any>, resultFuncArgs_1: import("../../types").BookingOptions, resultFuncArgs_2: string, resultFuncArgs_3: BookingPackagePax[], resultFuncArgs_4: BookingPackageAddress | undefined, resultFuncArgs_5: import("@qite/tide-client").BookingPackage | undefined, resultFuncArgs_6: boolean, resultFuncArgs_7: boolean | undefined, resultFuncArgs_8: number | undefined, resultFuncArgs_9: boolean, resultFuncArgs_10: boolean, resultFuncArgs_11: import("@qite/tide-client").BookingProductNotification[], resultFuncArgs_12: number[] | undefined, resultFuncArgs_13: string | undefined, resultFuncArgs_14: string[] | undefined, resultFuncArgs_15: {
619
+ entryLineGuid: string;
620
+ data: Record<string, unknown>;
621
+ }[]) => BookingPackageRequest<BookingPackageBookRequest> | null) & {
470
622
  clearCache: () => void;
471
623
  resultsCount: () => number;
472
624
  resetResultsCount: () => void;
@@ -628,7 +780,71 @@ export declare const selectBookingPackageBookRequest: ((state: {
628
780
  } & {
629
781
  argsMemoize: typeof import("reselect").weakMapMemoize;
630
782
  memoize: typeof import("reselect").weakMapMemoize;
631
- }, (state: RootState) => boolean, (state: RootState) => boolean, (state: RootState) => import("@qite/tide-client").BookingProductNotification[], (state: RootState) => number[] | undefined, (state: RootState) => string | undefined, (state: RootState) => string[] | undefined];
783
+ }, (state: RootState) => boolean, (state: RootState) => boolean, (state: RootState) => import("@qite/tide-client").BookingProductNotification[], (state: RootState) => number[] | undefined, (state: RootState) => string | undefined, (state: RootState) => string[] | undefined, ((state: {
784
+ booking: import("./booking-slice").BookingState;
785
+ travelersForm: import("../travelers-form/travelers-form-slice").TravelersFormState;
786
+ priceDetails: import("../price-details/price-details-slice").PriceDetailsState;
787
+ summary: import("../summary/summary-slice").SummaryState;
788
+ apiSettings: import("../../..").ApiSettingsState;
789
+ }) => {
790
+ entryLineGuid: string;
791
+ data: Record<string, unknown>;
792
+ }[]) & {
793
+ clearCache: () => void;
794
+ resultsCount: () => number;
795
+ resetResultsCount: () => void;
796
+ } & {
797
+ resultFunc: (resultFuncArgs_0: import("../subform/subform-utils").SubFormLine[], resultFuncArgs_1: Record<string, import("../../../form/form-types").FormValues>) => {
798
+ entryLineGuid: string;
799
+ data: Record<string, unknown>;
800
+ }[];
801
+ memoizedResultFunc: ((resultFuncArgs_0: import("../subform/subform-utils").SubFormLine[], resultFuncArgs_1: Record<string, import("../../../form/form-types").FormValues>) => {
802
+ entryLineGuid: string;
803
+ data: Record<string, unknown>;
804
+ }[]) & {
805
+ clearCache: () => void;
806
+ resultsCount: () => number;
807
+ resetResultsCount: () => void;
808
+ };
809
+ lastResult: () => {
810
+ entryLineGuid: string;
811
+ data: Record<string, unknown>;
812
+ }[];
813
+ dependencies: [((state: {
814
+ booking: import("./booking-slice").BookingState;
815
+ travelersForm: import("../travelers-form/travelers-form-slice").TravelersFormState;
816
+ priceDetails: import("../price-details/price-details-slice").PriceDetailsState;
817
+ summary: import("../summary/summary-slice").SummaryState;
818
+ apiSettings: import("../../..").ApiSettingsState;
819
+ }) => import("../subform/subform-utils").SubFormLine[]) & {
820
+ clearCache: () => void;
821
+ resultsCount: () => number;
822
+ resetResultsCount: () => void;
823
+ } & {
824
+ resultFunc: (resultFuncArgs_0: import("@qite/tide-client").BookingPackageRoom[] | undefined, resultFuncArgs_1: import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, resultFuncArgs_2: import("@qite/tide-client").BookingOptionUnit[] | undefined, resultFuncArgs_3: import("@qite/tide-client").BookingOptionPax[] | undefined) => import("../subform/subform-utils").SubFormLine[];
825
+ memoizedResultFunc: ((resultFuncArgs_0: import("@qite/tide-client").BookingPackageRoom[] | undefined, resultFuncArgs_1: import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, resultFuncArgs_2: import("@qite/tide-client").BookingOptionUnit[] | undefined, resultFuncArgs_3: import("@qite/tide-client").BookingOptionPax[] | undefined) => import("../subform/subform-utils").SubFormLine[]) & {
826
+ clearCache: () => void;
827
+ resultsCount: () => number;
828
+ resetResultsCount: () => void;
829
+ };
830
+ lastResult: () => import("../subform/subform-utils").SubFormLine[];
831
+ dependencies: [(state: RootState) => import("@qite/tide-client").BookingPackageRoom[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionUnit[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionPax[] | undefined];
832
+ recomputations: () => number;
833
+ resetRecomputations: () => void;
834
+ dependencyRecomputations: () => number;
835
+ resetDependencyRecomputations: () => void;
836
+ } & {
837
+ argsMemoize: typeof import("reselect").weakMapMemoize;
838
+ memoize: typeof import("reselect").weakMapMemoize;
839
+ }, (state: RootState) => Record<string, import("../../../form/form-types").FormValues>];
840
+ recomputations: () => number;
841
+ resetRecomputations: () => void;
842
+ dependencyRecomputations: () => number;
843
+ resetDependencyRecomputations: () => void;
844
+ } & {
845
+ argsMemoize: typeof import("reselect").weakMapMemoize;
846
+ memoize: typeof import("reselect").weakMapMemoize;
847
+ }];
632
848
  recomputations: () => number;
633
849
  resetRecomputations: () => void;
634
850
  dependencyRecomputations: () => number;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const SubFormStep: React.FC;
3
+ export default SubFormStep;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { FormState } from '../../../form/hooks/use-form-state';
3
+ import { SubFormLine } from './subform-utils';
4
+ interface SubFormEntryProps {
5
+ line: SubFormLine;
6
+ formState: FormState;
7
+ }
8
+ declare const SubFormEntry: React.FC<SubFormEntryProps>;
9
+ export default SubFormEntry;
@@ -0,0 +1,15 @@
1
+ import { BookingOptionGroup, BookingOptionPax, BookingOptionUnit, BookingPackageRoom, PerBookingPackageOption, TideWebForm } from '@qite/tide-client/build/types';
2
+ export interface SubFormLine {
3
+ entryLineGuid: string;
4
+ subForm: TideWebForm;
5
+ productName: string;
6
+ startDate: string;
7
+ endDate: string;
8
+ }
9
+ export declare function collectInEffectSubFormLines(rooms: BookingPackageRoom[] | undefined, groups: BookingOptionGroup<PerBookingPackageOption>[] | undefined, optionUnits: BookingOptionUnit[] | undefined, optionPax: BookingOptionPax[] | undefined): SubFormLine[];
10
+ interface SubFormVisibilitySettings {
11
+ isHidden?: boolean | null;
12
+ pathSuffix?: string | null;
13
+ }
14
+ export declare function isSubFormStepVisible(settings: SubFormVisibilitySettings, hasInEffectSubForms: boolean, requirePathSuffix?: boolean): boolean;
15
+ export {};
@@ -14,6 +14,10 @@ export interface Settings {
14
14
  isHidden?: boolean | null;
15
15
  pathSuffix?: string | null;
16
16
  };
17
+ subForm: {
18
+ isHidden?: boolean | null;
19
+ pathSuffix?: string | null;
20
+ };
17
21
  options: {
18
22
  pathSuffix: string;
19
23
  showRoomOptions?: boolean | null;
@@ -62,6 +66,7 @@ export interface Settings {
62
66
  apiUrl?: string;
63
67
  apiKey?: string;
64
68
  hideTags?: boolean;
69
+ searchConfigurationId?: number;
65
70
  translationFiles?: {
66
71
  language: string;
67
72
  path: string;
@@ -240,7 +245,7 @@ export interface BookingAttributes {
240
245
  includeFlights?: boolean;
241
246
  flightRouteId?: string | null;
242
247
  vendorConfigurationId?: number | null;
243
- searchConfigurationId?: number | null;
248
+ searchConfigurationId: number;
244
249
  productCode?: string;
245
250
  productName?: string;
246
251
  }
@@ -336,6 +341,7 @@ export interface FlightFilterOptions {
336
341
  airports: FlightFilterOption[];
337
342
  airlines: FlightFilterOption[];
338
343
  numberOfStops: FlightFilterOption[];
344
+ travelClasses: FlightFilterOption[];
339
345
  outward: FlightDirectionFilter;
340
346
  return: FlightDirectionFilter;
341
347
  }
@@ -9,6 +9,11 @@ import { PackagingAccommodationResponse, PackagingEntry, PackagingEntryLine, Pac
9
9
  * rest of the component tells this mode apart from a real traject: see isBookedEntryTraject.
10
10
  */
11
11
  export declare const isBookedEntryTraject: (trajectEntry?: PackagingTrajectResponse | null) => boolean;
12
+ /**
13
+ * Whether saving the entry would change the dossier: a line was swapped for a search result, or
14
+ * the active member of a line group moved (which swaps no line and so stamps no isChanged).
15
+ */
16
+ export declare const hasBookedEntryChanges: (original: PackagingEntry | null | undefined, editable: PackagingEntry | null | undefined) => boolean;
12
17
  export declare const buildBookedTrajectEntry: (entry: PackagingEntry) => PackagingTrajectResponse;
13
18
  /**
14
19
  * The card for a booked service when no search result carries it any more (sold out, delisted).
@@ -3,6 +3,11 @@ export declare const GROUP_TOUR_SERVICE_TYPE = 1;
3
3
  export declare const ACCOMMODATION_SERVICE_TYPE = 3;
4
4
  export declare const EXCURSION_SERVICE_TYPE = 4;
5
5
  export declare const FLIGHT_SERVICE_TYPE = 7;
6
+ /**
7
+ * Tide can group entry lines (a couple of hotels under one group key) of which one is active and
8
+ * the others are kept on the dossier as alternatives. A line without the flag counts as active.
9
+ */
10
+ export declare const isActiveEntryLine: (line: PackagingEntryLine) => boolean;
6
11
  export declare const toDateOnlyString: (value: string | Date) => string;
7
12
  export declare const getPrimaryAccommodationLine: (lines: PackagingEntryLine[]) => PackagingEntryLine | undefined;
8
13
  export declare const getDepartureAirportFromEntry: (lines: PackagingEntryLine[]) => string | null;
@@ -74,7 +74,21 @@ export declare const getPackagingRoomsFromEntry: (entry: PackagingEntry) => Pack
74
74
  export declare const pickCheapest: (results: PackagingAccommodationResponse[]) => PackagingAccommodationResponse | null;
75
75
  export declare const applyResultToLines: (lines: PackagingEntryLine[], result: PackagingAccommodationResponse) => PackagingEntryLine[];
76
76
  export declare const applyResultToLine: (line: PackagingEntryLine, result: PackagingAccommodationResponse, roomIndex?: number) => PackagingEntryLine;
77
- export declare const buildNodeSelectionLines: (item: TrajectNodeWithLine, result: PackagingAccommodationResponse, bookedMode: boolean) => PackagingEntryLine[];
77
+ export declare const getLineGroupKey: (line: PackagingEntryLine) => string;
78
+ /**
79
+ * The extra room lines of a service: the same product hanging off it. A transfer or flight that
80
+ * points at the hotel as its parent is not a room of it.
81
+ */
82
+ export declare const isRoomLineOf: (line: PackagingEntryLine, root: PackagingEntryLine) => boolean;
83
+ /** Every member of a line group with its room lines — the active member first, then dossier order. */
84
+ export declare const getGroupLines: (lines: PackagingEntryLine[], groupKey: string) => PackagingEntryLine[][];
85
+ /**
86
+ * Picking a result that is another member of the line's group moves the active flag to that
87
+ * member instead of rewriting the line: every member stays on the dossier as it is. Null when the
88
+ * result is not a member of the group.
89
+ */
90
+ export declare const buildGroupSelectionLines: (entryLines: PackagingEntryLine[], item: TrajectNodeWithLine, result: PackagingAccommodationResponse) => PackagingEntryLine[] | null;
91
+ export declare const buildNodeSelectionLines: (item: TrajectNodeWithLine, result: PackagingAccommodationResponse, bookedMode: boolean, entryLines?: PackagingEntryLine[]) => PackagingEntryLine[];
78
92
  export declare const buildFlightSelectionLine: (item: TrajectNodeWithLine, flight: PackagingFlightResponse, bookedMode: boolean) => PackagingEntryLine;
79
93
  export declare const buildTrajectFlightRequest: ({ node, line }: TrajectNodeWithLine, context: TrajectSearchContext, pax: FlightSearchRequest["pax"]) => FlightSearchRequest;
80
94
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qite/tide-components",
3
- "version": "1.0.13-preview.0",
3
+ "version": "1.0.14-preview.1",
4
4
  "description": "React components for Tide (booking, product availability, form, ...)",
5
5
  "main": "build/build-cjs/index.js",
6
6
  "types": "build/build-cjs/src/index.d.ts",
@@ -36,7 +36,7 @@
36
36
  "devDependencies": {
37
37
  "@jsonurl/jsonurl": "^1.1.4",
38
38
  "@popperjs/core": "^2.10.2",
39
- "@qite/tide-client": "^2.0.21-preview.1",
39
+ "@qite/tide-client": "^2.0.21-preview.2",
40
40
  "@reduxjs/toolkit": "^2.8.2",
41
41
  "@rollup/plugin-commonjs": "^19.0.1",
42
42
  "@rollup/plugin-json": "^4.1.0",
@@ -995,6 +995,18 @@
995
995
  &--pub {
996
996
  background: var(--tide-booking-price-decrease);
997
997
  }
998
+
999
+ &__badge {
1000
+ display: inline-flex;
1001
+ align-items: center;
1002
+ color: #fff;
1003
+ background: var(--tide-booking-color-primary);
1004
+ border-radius: 20px;
1005
+ padding: 5px 12px;
1006
+ font-size: 12px;
1007
+ font-weight: 300;
1008
+ white-space: nowrap;
1009
+ }
998
1010
  }
999
1011
 
1000
1012
  &__airport {