@qite/tide-booking-component 1.4.36 → 1.4.38
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/booking-product/components/age-select.d.ts +8 -8
- package/build/build-cjs/booking-product/components/amount-input.d.ts +10 -10
- package/build/build-cjs/booking-product/components/date-range-picker/calendar-day.d.ts +12 -12
- package/build/build-cjs/booking-product/components/date-range-picker/calendar.d.ts +19 -19
- package/build/build-cjs/booking-product/components/date-range-picker/index.d.ts +21 -24
- package/build/build-cjs/booking-product/components/dates.d.ts +14 -14
- package/build/build-cjs/booking-product/components/footer.d.ts +10 -10
- package/build/build-cjs/booking-product/components/header.d.ts +11 -11
- package/build/build-cjs/booking-product/components/icon.d.ts +10 -10
- package/build/build-cjs/booking-product/components/list-view.d.ts +8 -8
- package/build/build-cjs/booking-product/components/product.d.ts +9 -9
- package/build/build-cjs/booking-product/components/rating.d.ts +6 -6
- package/build/build-cjs/booking-product/components/rooms.d.ts +10 -10
- package/build/build-cjs/booking-product/constants.d.ts +1 -1
- package/build/build-cjs/booking-product/index.d.ts +10 -10
- package/build/build-cjs/booking-product/settings-context.d.ts +5 -6
- package/build/build-cjs/booking-product/types.d.ts +27 -27
- package/build/build-cjs/booking-product/utils/api.d.ts +16 -7
- package/build/build-cjs/booking-product/utils/price.d.ts +10 -1
- package/build/build-cjs/booking-wizard/api-settings-slice.d.ts +5 -4
- package/build/build-cjs/booking-wizard/components/icon.d.ts +10 -10
- package/build/build-cjs/booking-wizard/components/labeled-input.d.ts +18 -18
- package/build/build-cjs/booking-wizard/components/labeled-select.d.ts +21 -21
- package/build/build-cjs/booking-wizard/components/message.d.ts +9 -9
- package/build/build-cjs/booking-wizard/components/multi-range-filter.d.ts +11 -11
- package/build/build-cjs/booking-wizard/components/phone-input.d.ts +17 -17
- package/build/build-cjs/booking-wizard/components/print-offer-button.d.ts +17 -17
- package/build/build-cjs/booking-wizard/components/product-card.d.ts +8 -8
- package/build/build-cjs/booking-wizard/components/step-indicator.d.ts +6 -6
- package/build/build-cjs/booking-wizard/components/step-route.d.ts +9 -9
- package/build/build-cjs/booking-wizard/features/booking/api.d.ts +26 -10
- package/build/build-cjs/booking-wizard/features/booking/booking-self-contained.d.ts +8 -8
- package/build/build-cjs/booking-wizard/features/booking/booking-slice.d.ts +103 -50
- package/build/build-cjs/booking-wizard/features/booking/booking.d.ts +8 -8
- package/build/build-cjs/booking-wizard/features/booking/constants.d.ts +15 -8
- package/build/build-cjs/booking-wizard/features/booking/selectors.d.ts +283 -195
- package/build/build-cjs/booking-wizard/features/confirmation/confirmation.d.ts +4 -5
- package/build/build-cjs/booking-wizard/features/error/error.d.ts +4 -5
- package/build/build-cjs/booking-wizard/features/flight-options/flight-filter.d.ts +9 -9
- package/build/build-cjs/booking-wizard/features/flight-options/flight-option-flight.d.ts +8 -8
- package/build/build-cjs/booking-wizard/features/flight-options/flight-option-modal.d.ts +3 -3
- package/build/build-cjs/booking-wizard/features/flight-options/flight-option.d.ts +10 -10
- package/build/build-cjs/booking-wizard/features/flight-options/flight-utils.d.ts +13 -6
- package/build/build-cjs/booking-wizard/features/flight-options/index.d.ts +4 -5
- package/build/build-cjs/booking-wizard/features/price-details/price-details-api.d.ts +11 -6
- package/build/build-cjs/booking-wizard/features/price-details/price-details-slice.d.ts +105 -80
- package/build/build-cjs/booking-wizard/features/price-details/util.d.ts +2 -2
- package/build/build-cjs/booking-wizard/features/product-options/no-options.d.ts +3 -3
- package/build/build-cjs/booking-wizard/features/product-options/none-option.d.ts +9 -9
- package/build/build-cjs/booking-wizard/features/product-options/option-booking-airline-group.d.ts +8 -8
- package/build/build-cjs/booking-wizard/features/product-options/option-booking-group.d.ts +12 -12
- package/build/build-cjs/booking-wizard/features/product-options/option-item.d.ts +11 -11
- package/build/build-cjs/booking-wizard/features/product-options/option-pax-card.d.ts +10 -10
- package/build/build-cjs/booking-wizard/features/product-options/option-pax-group.d.ts +13 -13
- package/build/build-cjs/booking-wizard/features/product-options/option-room.d.ts +11 -11
- package/build/build-cjs/booking-wizard/features/product-options/option-unit-group.d.ts +13 -13
- package/build/build-cjs/booking-wizard/features/product-options/option-units-card.d.ts +9 -9
- package/build/build-cjs/booking-wizard/features/product-options/options-form.d.ts +4 -5
- package/build/build-cjs/booking-wizard/features/room-options/index.d.ts +4 -5
- package/build/build-cjs/booking-wizard/features/room-options/room-utils.d.ts +22 -9
- package/build/build-cjs/booking-wizard/features/room-options/room.d.ts +12 -12
- package/build/build-cjs/booking-wizard/features/room-options/traveler-rooms.d.ts +9 -9
- package/build/build-cjs/booking-wizard/features/sidebar/index.d.ts +7 -7
- package/build/build-cjs/booking-wizard/features/sidebar/sidebar-flight.d.ts +8 -8
- package/build/build-cjs/booking-wizard/features/sidebar/sidebar-util.d.ts +14 -12
- package/build/build-cjs/booking-wizard/features/sidebar/sidebar.d.ts +27 -27
- package/build/build-cjs/booking-wizard/features/summary/summary-booking-option-pax.d.ts +7 -7
- package/build/build-cjs/booking-wizard/features/summary/summary-booking-option-unit.d.ts +7 -7
- package/build/build-cjs/booking-wizard/features/summary/summary-flight.d.ts +8 -8
- package/build/build-cjs/booking-wizard/features/summary/summary-per-booking-option-group.d.ts +7 -7
- package/build/build-cjs/booking-wizard/features/summary/summary-per-pax-option-group.d.ts +7 -7
- package/build/build-cjs/booking-wizard/features/summary/summary-per-unit-option-group.d.ts +7 -7
- package/build/build-cjs/booking-wizard/features/summary/summary-slice.d.ts +8 -8
- package/build/build-cjs/booking-wizard/features/summary/summary.d.ts +4 -5
- package/build/build-cjs/booking-wizard/features/travelers-form/controls/gender-control.d.ts +5 -5
- package/build/build-cjs/booking-wizard/features/travelers-form/travelers-form-slice.d.ts +62 -50
- package/build/build-cjs/booking-wizard/features/travelers-form/travelers-form-util.d.ts +7 -7
- package/build/build-cjs/booking-wizard/features/travelers-form/travelers-form.d.ts +4 -5
- package/build/build-cjs/booking-wizard/features/travelers-form/type-ahead-input.d.ts +16 -16
- package/build/build-cjs/booking-wizard/features/travelers-form/validate-form.d.ts +11 -4
- package/build/build-cjs/booking-wizard/index.d.ts +12 -12
- package/build/build-cjs/booking-wizard/settings-context.d.ts +5 -6
- package/build/build-cjs/booking-wizard/store.d.ts +39 -24
- package/build/build-cjs/booking-wizard/types.d.ts +284 -284
- package/build/build-cjs/booking-wizard/use-offer-printer.d.ts +13 -13
- package/build/build-cjs/content/components/LanguageSwitcher.d.ts +12 -12
- package/build/build-cjs/content/components/accordion.d.ts +9 -9
- package/build/build-cjs/content/components/breadcrumb.d.ts +16 -16
- package/build/build-cjs/content/components/contact.d.ts +3 -3
- package/build/build-cjs/content/components/faq.d.ts +10 -10
- package/build/build-cjs/content/components/gallery.d.ts +12 -12
- package/build/build-cjs/content/components/icon.d.ts +10 -10
- package/build/build-cjs/content/components/image-with-text.d.ts +28 -28
- package/build/build-cjs/content/components/personal-contact-form.d.ts +3 -3
- package/build/build-cjs/content/components/slider.d.ts +10 -10
- package/build/build-cjs/content/features/content-page/content-page-self-contained.d.ts +6 -6
- package/build/build-cjs/content/footer/index.d.ts +4 -4
- package/build/build-cjs/content/footer/types.d.ts +27 -27
- package/build/build-cjs/content/header/index.d.ts +4 -4
- package/build/build-cjs/content/header/types.d.ts +25 -22
- package/build/build-cjs/content/navbar/index.d.ts +4 -4
- package/build/build-cjs/content/navbar/placeholderData.d.ts +10 -10
- package/build/build-cjs/content/navbar/types.d.ts +27 -27
- package/build/build-cjs/index.d.ts +8 -8
- package/build/build-cjs/index.js +33131 -21080
- package/build/build-cjs/qsm/components/QSMContainer/qsm-container.d.ts +3 -3
- package/build/build-cjs/qsm/components/date-picker/index.d.ts +3 -3
- package/build/build-cjs/qsm/components/date-range-picker/calendar-day.d.ts +12 -12
- package/build/build-cjs/qsm/components/date-range-picker/calendar.d.ts +24 -24
- package/build/build-cjs/qsm/components/date-range-picker/index.d.ts +10 -10
- package/build/build-cjs/qsm/components/double-search-input-group/index.d.ts +7 -7
- package/build/build-cjs/qsm/components/icon.d.ts +10 -10
- package/build/build-cjs/qsm/components/item-picker/index.d.ts +12 -12
- package/build/build-cjs/qsm/components/mobile-filter-modal/index.d.ts +3 -3
- package/build/build-cjs/qsm/components/search-input/index.d.ts +13 -13
- package/build/build-cjs/qsm/components/search-input-group/index.d.ts +11 -11
- package/build/build-cjs/qsm/components/travel-class-picker/index.d.ts +3 -3
- package/build/build-cjs/qsm/components/travel-input/index.d.ts +3 -3
- package/build/build-cjs/qsm/components/travel-input-group/index.d.ts +3 -3
- package/build/build-cjs/qsm/components/travel-nationality-picker/index.d.ts +3 -3
- package/build/build-cjs/qsm/components/travel-type-picker/index.d.ts +3 -3
- package/build/build-cjs/qsm/index.d.ts +7 -7
- package/build/build-cjs/qsm/qsm-configuration-context.d.ts +4 -4
- package/build/build-cjs/qsm/store/qsm-slice.d.ts +120 -70
- package/build/build-cjs/qsm/store/qsm-store.d.ts +18 -8
- package/build/build-cjs/qsm/types.d.ts +110 -109
- package/build/build-cjs/search-results/components/filters/filters.d.ts +11 -11
- package/build/build-cjs/search-results/components/filters/utility.d.ts +3 -3
- package/build/build-cjs/search-results/components/flight/flight-accommodation-results.d.ts +4 -5
- package/build/build-cjs/search-results/components/flight/flight-banner.d.ts +8 -8
- package/build/build-cjs/search-results/components/flight/flight-card.d.ts +7 -7
- package/build/build-cjs/search-results/components/flight/flight-leg.d.ts +7 -7
- package/build/build-cjs/search-results/components/flight/flight-path.d.ts +6 -6
- package/build/build-cjs/search-results/components/flight/flight-results.d.ts +8 -8
- package/build/build-cjs/search-results/components/hotel/hotel-accommodation-results.d.ts +8 -8
- package/build/build-cjs/search-results/components/hotel/hotel-card.d.ts +8 -8
- package/build/build-cjs/search-results/components/icon.d.ts +10 -10
- package/build/build-cjs/search-results/components/item-picker/index.d.ts +12 -12
- package/build/build-cjs/search-results/components/itinerary/index.d.ts +8 -8
- package/build/build-cjs/search-results/components/multi-range-filter.d.ts +11 -11
- package/build/build-cjs/search-results/components/round-trip/round-trip-results.d.ts +4 -5
- package/build/build-cjs/search-results/components/search-results-container/search-results-container.d.ts +3 -3
- package/build/build-cjs/search-results/components/spinner/spinner.d.ts +3 -3
- package/build/build-cjs/search-results/components/tab-views/index.d.ts +4 -5
- package/build/build-cjs/search-results/features/flights/flight-search-results-self-contained.d.ts +4 -5
- package/build/build-cjs/search-results/features/hotels/hotel-flight-search-results-self-contained.d.ts +4 -5
- package/build/build-cjs/search-results/features/hotels/hotel-search-results-self-contained.d.ts +4 -5
- package/build/build-cjs/search-results/features/roundtrips/roundtrip-search-results-self-contained.d.ts +4 -5
- package/build/build-cjs/search-results/index.d.ts +7 -7
- package/build/build-cjs/search-results/search-results-configuration-context.d.ts +4 -4
- package/build/build-cjs/search-results/store/search-results-slice.d.ts +48 -25
- package/build/build-cjs/search-results/store/search-results-store.d.ts +18 -8
- package/build/build-cjs/search-results/types.d.ts +111 -110
- package/build/build-cjs/shared/components/loader.d.ts +6 -6
- package/build/build-cjs/shared/types.d.ts +4 -4
- package/build/build-cjs/shared/utils/class-util.d.ts +1 -1
- package/build/build-cjs/shared/utils/localization-util.d.ts +275 -275
- package/build/build-cjs/shared/utils/query-string-util.d.ts +8 -8
- package/build/build-cjs/shared/utils/tide-api-utils.d.ts +4 -4
- package/build/build-cjs/shared/utils/use-media-query-util.d.ts +2 -2
- package/build/build-esm/booking-product/components/age-select.d.ts +8 -8
- package/build/build-esm/booking-product/components/amount-input.d.ts +10 -10
- package/build/build-esm/booking-product/components/date-range-picker/calendar-day.d.ts +12 -12
- package/build/build-esm/booking-product/components/date-range-picker/calendar.d.ts +19 -19
- package/build/build-esm/booking-product/components/date-range-picker/index.d.ts +21 -24
- package/build/build-esm/booking-product/components/dates.d.ts +14 -14
- package/build/build-esm/booking-product/components/footer.d.ts +10 -10
- package/build/build-esm/booking-product/components/header.d.ts +11 -11
- package/build/build-esm/booking-product/components/icon.d.ts +10 -10
- package/build/build-esm/booking-product/components/list-view.d.ts +8 -8
- package/build/build-esm/booking-product/components/product.d.ts +9 -9
- package/build/build-esm/booking-product/components/rating.d.ts +6 -6
- package/build/build-esm/booking-product/components/rooms.d.ts +10 -10
- package/build/build-esm/booking-product/constants.d.ts +1 -1
- package/build/build-esm/booking-product/index.d.ts +10 -10
- package/build/build-esm/booking-product/settings-context.d.ts +5 -6
- package/build/build-esm/booking-product/types.d.ts +27 -27
- package/build/build-esm/booking-product/utils/api.d.ts +16 -7
- package/build/build-esm/booking-product/utils/price.d.ts +10 -1
- package/build/build-esm/booking-wizard/api-settings-slice.d.ts +5 -4
- package/build/build-esm/booking-wizard/components/icon.d.ts +10 -10
- package/build/build-esm/booking-wizard/components/labeled-input.d.ts +18 -18
- package/build/build-esm/booking-wizard/components/labeled-select.d.ts +21 -21
- package/build/build-esm/booking-wizard/components/message.d.ts +9 -9
- package/build/build-esm/booking-wizard/components/multi-range-filter.d.ts +11 -11
- package/build/build-esm/booking-wizard/components/phone-input.d.ts +17 -17
- package/build/build-esm/booking-wizard/components/print-offer-button.d.ts +17 -17
- package/build/build-esm/booking-wizard/components/product-card.d.ts +8 -8
- package/build/build-esm/booking-wizard/components/step-indicator.d.ts +6 -6
- package/build/build-esm/booking-wizard/components/step-route.d.ts +9 -9
- package/build/build-esm/booking-wizard/features/booking/api.d.ts +26 -10
- package/build/build-esm/booking-wizard/features/booking/booking-self-contained.d.ts +8 -8
- package/build/build-esm/booking-wizard/features/booking/booking-slice.d.ts +103 -50
- package/build/build-esm/booking-wizard/features/booking/booking.d.ts +8 -8
- package/build/build-esm/booking-wizard/features/booking/constants.d.ts +15 -8
- package/build/build-esm/booking-wizard/features/booking/selectors.d.ts +283 -195
- package/build/build-esm/booking-wizard/features/confirmation/confirmation.d.ts +4 -5
- package/build/build-esm/booking-wizard/features/error/error.d.ts +4 -5
- package/build/build-esm/booking-wizard/features/flight-options/flight-filter.d.ts +9 -9
- package/build/build-esm/booking-wizard/features/flight-options/flight-option-flight.d.ts +8 -8
- package/build/build-esm/booking-wizard/features/flight-options/flight-option-modal.d.ts +3 -3
- package/build/build-esm/booking-wizard/features/flight-options/flight-option.d.ts +10 -10
- package/build/build-esm/booking-wizard/features/flight-options/flight-utils.d.ts +13 -6
- package/build/build-esm/booking-wizard/features/flight-options/index.d.ts +4 -5
- package/build/build-esm/booking-wizard/features/price-details/price-details-api.d.ts +11 -6
- package/build/build-esm/booking-wizard/features/price-details/price-details-slice.d.ts +105 -80
- package/build/build-esm/booking-wizard/features/price-details/util.d.ts +2 -2
- package/build/build-esm/booking-wizard/features/product-options/no-options.d.ts +3 -3
- package/build/build-esm/booking-wizard/features/product-options/none-option.d.ts +9 -9
- package/build/build-esm/booking-wizard/features/product-options/option-booking-airline-group.d.ts +8 -8
- package/build/build-esm/booking-wizard/features/product-options/option-booking-group.d.ts +12 -12
- package/build/build-esm/booking-wizard/features/product-options/option-item.d.ts +11 -11
- package/build/build-esm/booking-wizard/features/product-options/option-pax-card.d.ts +10 -10
- package/build/build-esm/booking-wizard/features/product-options/option-pax-group.d.ts +13 -13
- package/build/build-esm/booking-wizard/features/product-options/option-room.d.ts +11 -11
- package/build/build-esm/booking-wizard/features/product-options/option-unit-group.d.ts +13 -13
- package/build/build-esm/booking-wizard/features/product-options/option-units-card.d.ts +9 -9
- package/build/build-esm/booking-wizard/features/product-options/options-form.d.ts +4 -5
- package/build/build-esm/booking-wizard/features/room-options/index.d.ts +4 -5
- package/build/build-esm/booking-wizard/features/room-options/room-utils.d.ts +22 -9
- package/build/build-esm/booking-wizard/features/room-options/room.d.ts +12 -12
- package/build/build-esm/booking-wizard/features/room-options/traveler-rooms.d.ts +9 -9
- package/build/build-esm/booking-wizard/features/sidebar/index.d.ts +7 -7
- package/build/build-esm/booking-wizard/features/sidebar/sidebar-flight.d.ts +8 -8
- package/build/build-esm/booking-wizard/features/sidebar/sidebar-util.d.ts +14 -12
- package/build/build-esm/booking-wizard/features/sidebar/sidebar.d.ts +27 -27
- package/build/build-esm/booking-wizard/features/summary/summary-booking-option-pax.d.ts +7 -7
- package/build/build-esm/booking-wizard/features/summary/summary-booking-option-unit.d.ts +7 -7
- package/build/build-esm/booking-wizard/features/summary/summary-flight.d.ts +8 -8
- package/build/build-esm/booking-wizard/features/summary/summary-per-booking-option-group.d.ts +7 -7
- package/build/build-esm/booking-wizard/features/summary/summary-per-pax-option-group.d.ts +7 -7
- package/build/build-esm/booking-wizard/features/summary/summary-per-unit-option-group.d.ts +7 -7
- package/build/build-esm/booking-wizard/features/summary/summary-slice.d.ts +8 -8
- package/build/build-esm/booking-wizard/features/summary/summary.d.ts +4 -5
- package/build/build-esm/booking-wizard/features/travelers-form/controls/gender-control.d.ts +5 -5
- package/build/build-esm/booking-wizard/features/travelers-form/travelers-form-slice.d.ts +62 -50
- package/build/build-esm/booking-wizard/features/travelers-form/travelers-form-util.d.ts +7 -7
- package/build/build-esm/booking-wizard/features/travelers-form/travelers-form.d.ts +4 -5
- package/build/build-esm/booking-wizard/features/travelers-form/type-ahead-input.d.ts +16 -16
- package/build/build-esm/booking-wizard/features/travelers-form/validate-form.d.ts +11 -4
- package/build/build-esm/booking-wizard/index.d.ts +12 -12
- package/build/build-esm/booking-wizard/settings-context.d.ts +5 -6
- package/build/build-esm/booking-wizard/store.d.ts +39 -24
- package/build/build-esm/booking-wizard/types.d.ts +284 -284
- package/build/build-esm/booking-wizard/use-offer-printer.d.ts +13 -13
- package/build/build-esm/content/components/LanguageSwitcher.d.ts +12 -12
- package/build/build-esm/content/components/accordion.d.ts +9 -9
- package/build/build-esm/content/components/breadcrumb.d.ts +16 -16
- package/build/build-esm/content/components/contact.d.ts +3 -3
- package/build/build-esm/content/components/faq.d.ts +10 -10
- package/build/build-esm/content/components/gallery.d.ts +12 -12
- package/build/build-esm/content/components/icon.d.ts +10 -10
- package/build/build-esm/content/components/image-with-text.d.ts +28 -28
- package/build/build-esm/content/components/personal-contact-form.d.ts +3 -3
- package/build/build-esm/content/components/slider.d.ts +10 -10
- package/build/build-esm/content/features/content-page/content-page-self-contained.d.ts +6 -6
- package/build/build-esm/content/footer/index.d.ts +4 -4
- package/build/build-esm/content/footer/types.d.ts +27 -27
- package/build/build-esm/content/header/index.d.ts +4 -4
- package/build/build-esm/content/header/types.d.ts +25 -22
- package/build/build-esm/content/navbar/index.d.ts +4 -4
- package/build/build-esm/content/navbar/placeholderData.d.ts +10 -10
- package/build/build-esm/content/navbar/types.d.ts +27 -27
- package/build/build-esm/index.d.ts +8 -8
- package/build/build-esm/index.js +32791 -21076
- package/build/build-esm/qsm/components/QSMContainer/qsm-container.d.ts +3 -3
- package/build/build-esm/qsm/components/date-picker/index.d.ts +3 -3
- package/build/build-esm/qsm/components/date-range-picker/calendar-day.d.ts +12 -12
- package/build/build-esm/qsm/components/date-range-picker/calendar.d.ts +24 -24
- package/build/build-esm/qsm/components/date-range-picker/index.d.ts +10 -10
- package/build/build-esm/qsm/components/double-search-input-group/index.d.ts +7 -7
- package/build/build-esm/qsm/components/icon.d.ts +10 -10
- package/build/build-esm/qsm/components/item-picker/index.d.ts +12 -12
- package/build/build-esm/qsm/components/mobile-filter-modal/index.d.ts +3 -3
- package/build/build-esm/qsm/components/search-input/index.d.ts +13 -13
- package/build/build-esm/qsm/components/search-input-group/index.d.ts +11 -11
- package/build/build-esm/qsm/components/travel-class-picker/index.d.ts +3 -3
- package/build/build-esm/qsm/components/travel-input/index.d.ts +3 -3
- package/build/build-esm/qsm/components/travel-input-group/index.d.ts +3 -3
- package/build/build-esm/qsm/components/travel-nationality-picker/index.d.ts +3 -3
- package/build/build-esm/qsm/components/travel-type-picker/index.d.ts +3 -3
- package/build/build-esm/qsm/index.d.ts +7 -7
- package/build/build-esm/qsm/qsm-configuration-context.d.ts +4 -4
- package/build/build-esm/qsm/store/qsm-slice.d.ts +120 -70
- package/build/build-esm/qsm/store/qsm-store.d.ts +18 -8
- package/build/build-esm/qsm/types.d.ts +110 -109
- package/build/build-esm/search-results/components/filters/filters.d.ts +11 -11
- package/build/build-esm/search-results/components/filters/utility.d.ts +3 -3
- package/build/build-esm/search-results/components/flight/flight-accommodation-results.d.ts +4 -5
- package/build/build-esm/search-results/components/flight/flight-banner.d.ts +8 -8
- package/build/build-esm/search-results/components/flight/flight-card.d.ts +7 -7
- package/build/build-esm/search-results/components/flight/flight-leg.d.ts +7 -7
- package/build/build-esm/search-results/components/flight/flight-path.d.ts +6 -6
- package/build/build-esm/search-results/components/flight/flight-results.d.ts +8 -8
- package/build/build-esm/search-results/components/hotel/hotel-accommodation-results.d.ts +8 -8
- package/build/build-esm/search-results/components/hotel/hotel-card.d.ts +8 -8
- package/build/build-esm/search-results/components/icon.d.ts +10 -10
- package/build/build-esm/search-results/components/item-picker/index.d.ts +12 -12
- package/build/build-esm/search-results/components/itinerary/index.d.ts +8 -8
- package/build/build-esm/search-results/components/multi-range-filter.d.ts +11 -11
- package/build/build-esm/search-results/components/round-trip/round-trip-results.d.ts +4 -5
- package/build/build-esm/search-results/components/search-results-container/search-results-container.d.ts +3 -3
- package/build/build-esm/search-results/components/spinner/spinner.d.ts +3 -3
- package/build/build-esm/search-results/components/tab-views/index.d.ts +4 -5
- package/build/build-esm/search-results/features/flights/flight-search-results-self-contained.d.ts +4 -5
- package/build/build-esm/search-results/features/hotels/hotel-flight-search-results-self-contained.d.ts +4 -5
- package/build/build-esm/search-results/features/hotels/hotel-search-results-self-contained.d.ts +4 -5
- package/build/build-esm/search-results/features/roundtrips/roundtrip-search-results-self-contained.d.ts +4 -5
- package/build/build-esm/search-results/index.d.ts +7 -7
- package/build/build-esm/search-results/search-results-configuration-context.d.ts +4 -4
- package/build/build-esm/search-results/store/search-results-slice.d.ts +48 -25
- package/build/build-esm/search-results/store/search-results-store.d.ts +18 -8
- package/build/build-esm/search-results/types.d.ts +111 -110
- package/build/build-esm/shared/components/loader.d.ts +6 -6
- package/build/build-esm/shared/types.d.ts +4 -4
- package/build/build-esm/shared/utils/class-util.d.ts +1 -1
- package/build/build-esm/shared/utils/localization-util.d.ts +275 -275
- package/build/build-esm/shared/utils/query-string-util.d.ts +8 -8
- package/build/build-esm/shared/utils/tide-api-utils.d.ts +4 -4
- package/build/build-esm/shared/utils/use-media-query-util.d.ts +2 -2
- package/package.json +2 -2
- package/src/qsm/components/mobile-filter-modal/index.tsx +67 -42
- package/src/qsm/components/search-input/index.tsx +2 -1
- package/src/qsm/components/search-input-group/index.tsx +21 -4
- package/src/qsm/types.ts +1 -0
- package/src/search-results/components/flight/flight-results.tsx +115 -113
- package/src/search-results/components/hotel/hotel-accommodation-results.tsx +85 -0
- package/src/search-results/components/search-results-container/search-results-container.tsx +294 -146
- package/src/search-results/types.ts +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useContext, useEffect, useRef, useState } from 'react';
|
|
1
|
+
import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
2
2
|
import { useDispatch, useSelector } from 'react-redux';
|
|
3
3
|
import {
|
|
4
4
|
closeMobileFilter,
|
|
@@ -6,7 +6,8 @@ import {
|
|
|
6
6
|
setFieldValue,
|
|
7
7
|
setFromDate,
|
|
8
8
|
setToDate,
|
|
9
|
-
setSearchResults as setSearchResultsAction
|
|
9
|
+
setSearchResults as setSearchResultsAction,
|
|
10
|
+
setSearchResults
|
|
10
11
|
} from '../../store/qsm-slice';
|
|
11
12
|
import { QSMRootState } from '../../store/qsm-store';
|
|
12
13
|
import SearchInput from '../search-input';
|
|
@@ -14,18 +15,16 @@ import DateRangePicker from '../date-range-picker';
|
|
|
14
15
|
import TravelInput from '../travel-input';
|
|
15
16
|
import { format } from 'date-fns';
|
|
16
17
|
import QSMConfigurationContext from '../../qsm-configuration-context';
|
|
17
|
-
import { TypeaheadOption } from '../../types';
|
|
18
|
+
import { BaseFieldConfig, FieldConfig, TypeaheadOption } from '../../types';
|
|
18
19
|
import { getTranslations } from '../../../shared/utils/localization-util';
|
|
19
20
|
|
|
20
21
|
const MobileFilterModal: React.FC = () => {
|
|
21
|
-
const { datesIcon, languageCode } = useContext(QSMConfigurationContext);
|
|
22
|
+
const { datesIcon, languageCode, searchFields } = useContext(QSMConfigurationContext);
|
|
22
23
|
const translations = getTranslations(languageCode ?? 'en-GB');
|
|
23
24
|
const dispatch = useDispatch();
|
|
24
|
-
const { mobileFilterType, mobileDatePickerMode, activeSearchFieldProps, fromDate, toDate } = useSelector((state: QSMRootState) => state.qsm);
|
|
25
|
+
const { mobileFilterType, mobileDatePickerMode, activeSearchFieldProps, fromDate, toDate, searchResults } = useSelector((state: QSMRootState) => state.qsm);
|
|
25
26
|
|
|
26
27
|
const [inputValue, setInputValue] = useState('');
|
|
27
|
-
const [searchResultsLocal, setSearchResultsLocal] = useState<TypeaheadOption[]>([]);
|
|
28
|
-
const hasTypedRef = useRef(false);
|
|
29
28
|
|
|
30
29
|
/* ---------------------------------------------------------------- */
|
|
31
30
|
/* Sync local state when a new field is opened */
|
|
@@ -33,8 +32,8 @@ const MobileFilterModal: React.FC = () => {
|
|
|
33
32
|
useEffect(() => {
|
|
34
33
|
if (activeSearchFieldProps) {
|
|
35
34
|
setInputValue(activeSearchFieldProps.value || '');
|
|
36
|
-
setSearchResultsLocal([]);
|
|
37
|
-
hasTypedRef.current = false;
|
|
35
|
+
// setSearchResultsLocal([]);
|
|
36
|
+
// hasTypedRef.current = false;
|
|
38
37
|
}
|
|
39
38
|
}, [activeSearchFieldProps]);
|
|
40
39
|
|
|
@@ -42,45 +41,69 @@ const MobileFilterModal: React.FC = () => {
|
|
|
42
41
|
/* Helpers */
|
|
43
42
|
/* ---------------------------------------------------------------- */
|
|
44
43
|
const closeModal = () => {
|
|
45
|
-
hasTypedRef.current = false;
|
|
44
|
+
// hasTypedRef.current = false;
|
|
46
45
|
dispatch(closeMobileFilter());
|
|
47
46
|
};
|
|
48
47
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
const findConfig = (all: FieldConfig[], key: string): BaseFieldConfig | undefined => {
|
|
49
|
+
for (const config of all) {
|
|
50
|
+
if (config.type === 'single' && config.fieldKey === key) {
|
|
51
|
+
return config;
|
|
52
|
+
}
|
|
53
|
+
if (config.type === 'double') {
|
|
54
|
+
const field = config.fields.find((x) => x.fieldKey === key);
|
|
55
|
+
if (field) return field;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
59
|
+
};
|
|
52
60
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
// setSearchResultsLocal(filtered);
|
|
56
|
-
// } else {
|
|
57
|
-
// setSearchResultsLocal([]);
|
|
58
|
-
// }
|
|
59
|
-
// };
|
|
61
|
+
const config = useMemo<BaseFieldConfig | undefined>(() => {
|
|
62
|
+
if (!activeSearchFieldProps) return undefined;
|
|
60
63
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
hasTypedRef.current = true;
|
|
64
|
+
return findConfig(searchFields, activeSearchFieldProps.fieldKey);
|
|
65
|
+
}, [searchFields, activeSearchFieldProps]);
|
|
64
66
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
+
const match = useCallback(
|
|
68
|
+
(input: string) => {
|
|
69
|
+
if (!input) {
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
67
72
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
+
const lowered = input.toLowerCase();
|
|
74
|
+
return activeSearchFieldProps?.options.filter(
|
|
75
|
+
(option) => option.value.toLowerCase().includes(lowered) || option.iataCode?.toLowerCase().includes(lowered)
|
|
76
|
+
);
|
|
77
|
+
},
|
|
78
|
+
[activeSearchFieldProps?.options]
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
const handleInputChange = useCallback(
|
|
82
|
+
(input: string) => {
|
|
83
|
+
setInputValue(input);
|
|
84
|
+
if (!activeSearchFieldProps) return;
|
|
73
85
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
dispatch(setFieldValue({ fieldKey: activeSearchFieldProps.fieldKey, value: input }));
|
|
87
|
+
dispatch(setSearchResults([]));
|
|
88
|
+
dispatch(setActiveSearchField(activeSearchFieldProps.fieldKey));
|
|
89
|
+
|
|
90
|
+
if (config?.onChange) {
|
|
91
|
+
config.onChange(input);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const filtered = match(input) ?? [];
|
|
96
|
+
dispatch(setSearchResults(filtered));
|
|
97
|
+
},
|
|
98
|
+
[dispatch, activeSearchFieldProps, match]
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
useEffect(() => {
|
|
102
|
+
if (!activeSearchFieldProps) return;
|
|
103
|
+
if (!inputValue) return;
|
|
81
104
|
|
|
82
|
-
|
|
83
|
-
|
|
105
|
+
dispatch(setSearchResults(match(inputValue) ?? []));
|
|
106
|
+
}, [activeSearchFieldProps?.options]);
|
|
84
107
|
|
|
85
108
|
const handleLocationSelect = (option: TypeaheadOption) => {
|
|
86
109
|
if (activeSearchFieldProps) {
|
|
@@ -202,13 +225,15 @@ const MobileFilterModal: React.FC = () => {
|
|
|
202
225
|
type="text"
|
|
203
226
|
id="search"
|
|
204
227
|
value={inputValue}
|
|
205
|
-
|
|
228
|
+
onClick={(e) => e.stopPropagation()}
|
|
229
|
+
onChange={(e) => handleInputChange(e.target.value)}
|
|
230
|
+
// onChange={(e) => handleLocationChange(e.target.value)}
|
|
206
231
|
className="qsm__input qsm__input--modal qsm__from-to u-ps-2"
|
|
207
232
|
placeholder={activeSearchFieldProps.placeholder}
|
|
208
233
|
/>
|
|
209
234
|
<SearchInput
|
|
210
|
-
onChange={
|
|
211
|
-
searchResults={
|
|
235
|
+
onChange={handleInputChange}
|
|
236
|
+
searchResults={searchResults}
|
|
212
237
|
onOptionSelect={handleLocationSelect}
|
|
213
238
|
highlightTarget={inputValue}
|
|
214
239
|
label={activeSearchFieldProps.label}
|
|
@@ -55,7 +55,8 @@ const SearchInput: React.FC<SearchInputProps> = ({ searchResults, onOptionSelect
|
|
|
55
55
|
role="option"
|
|
56
56
|
aria-selected={false}>
|
|
57
57
|
<div className="qsm__double-input-option-content">
|
|
58
|
-
<Icon name={option.type
|
|
58
|
+
<Icon name={option.type === 'hotel' ? 'ui-hotel' : option.type === 'airport' ? 'ui-flight' : 'ui-location'} height={16} />
|
|
59
|
+
|
|
59
60
|
<div className="qsm__double-input-option-content-text">
|
|
60
61
|
{highlightMatch(option, highlightTarget)}
|
|
61
62
|
{option.country && <span className="qsm__double-input-option-content-country">{option.country}</span>}
|
|
@@ -6,7 +6,7 @@ import QSMConfigurationContext from '../../qsm-configuration-context';
|
|
|
6
6
|
import useMediaQuery from '../../../shared/utils/use-media-query-util';
|
|
7
7
|
import SearchInput from '../search-input';
|
|
8
8
|
import Icon from '../icon';
|
|
9
|
-
import { FieldConfig, BaseFieldConfig, DoubleFieldConfig, TypeaheadOption } from '../../types';
|
|
9
|
+
import { FieldConfig, BaseFieldConfig, DoubleFieldConfig, TypeaheadOption, OptionType } from '../../types';
|
|
10
10
|
|
|
11
11
|
const findConfig = (all: FieldConfig[], key: string): BaseFieldConfig | undefined => {
|
|
12
12
|
for (const config of all) {
|
|
@@ -55,6 +55,9 @@ const SearchInputGroup: React.FC<Props> = ({
|
|
|
55
55
|
const value = useSelector(selector);
|
|
56
56
|
const { searchResults, activeSearchField } = useSelector((state: QSMRootState) => state.qsm);
|
|
57
57
|
|
|
58
|
+
const selectedOption = options.find((option) => option.value === value);
|
|
59
|
+
const typeOfSelectedOption: OptionType = selectedOption?.type ?? 'other';
|
|
60
|
+
|
|
58
61
|
const match = useCallback(
|
|
59
62
|
(input: string) => {
|
|
60
63
|
if (!input) {
|
|
@@ -62,7 +65,7 @@ const SearchInputGroup: React.FC<Props> = ({
|
|
|
62
65
|
}
|
|
63
66
|
|
|
64
67
|
const lowered = input.toLowerCase();
|
|
65
|
-
return options.filter((option) => option.value.toLowerCase().includes(lowered));
|
|
68
|
+
return options.filter((option) => option.value.toLowerCase().includes(lowered) || option.iataCode?.toLowerCase().includes(lowered));
|
|
66
69
|
},
|
|
67
70
|
[options]
|
|
68
71
|
);
|
|
@@ -75,11 +78,25 @@ const SearchInputGroup: React.FC<Props> = ({
|
|
|
75
78
|
if (small) return;
|
|
76
79
|
|
|
77
80
|
dispatch(setActiveSearchField(fieldKey));
|
|
81
|
+
|
|
82
|
+
// if field has custom onChange (API search)
|
|
83
|
+
if (config.onChange) {
|
|
84
|
+
config.onChange(input);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// fallback to local filtering
|
|
78
89
|
dispatch(setSearchResults(match(input)));
|
|
79
90
|
},
|
|
80
|
-
[dispatch, fieldKey, small, match,
|
|
91
|
+
[dispatch, fieldKey, small, match, config]
|
|
81
92
|
);
|
|
82
93
|
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
if (!value || activeSearchField !== fieldKey) return;
|
|
96
|
+
|
|
97
|
+
dispatch(setSearchResults(match(value)));
|
|
98
|
+
}, [options, value, activeSearchField, config, fieldKey]);
|
|
99
|
+
|
|
83
100
|
const handleKeyDown = useCallback(
|
|
84
101
|
(e: React.KeyboardEvent<HTMLInputElement>) => {
|
|
85
102
|
if (!['Tab', 'Enter'].includes(e.key)) return;
|
|
@@ -151,7 +168,7 @@ const SearchInputGroup: React.FC<Props> = ({
|
|
|
151
168
|
|
|
152
169
|
return (
|
|
153
170
|
<label className="qsm__single-input-wrapper" ref={ref}>
|
|
154
|
-
<Icon name=
|
|
171
|
+
<Icon name={typeOfSelectedOption === 'hotel' ? 'ui-hotel' : typeOfSelectedOption === 'airport' ? 'ui-flight' : 'ui-location'} height={16} />
|
|
155
172
|
|
|
156
173
|
<span className={`qsm__label${isSecondInput ? ' qsm__label--second-input-label qsm__label--splittable' : ''}`}>{label}</span>
|
|
157
174
|
|
package/src/qsm/types.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { getTranslations } from '../../../shared/utils/localization-util';
|
|
|
8
8
|
import SearchResultsConfigurationContext from '../../search-results-configuration-context';
|
|
9
9
|
|
|
10
10
|
interface FlightResultsProps {
|
|
11
|
-
flights
|
|
11
|
+
flights?: BookingPackageFlight[];
|
|
12
12
|
isDeparture?: boolean;
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -55,145 +55,147 @@ const FlightResults: React.FC<FlightResultsProps> = ({ flights, isDeparture }) =
|
|
|
55
55
|
</div>
|
|
56
56
|
</div>
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
<div className="
|
|
68
|
-
<div className="
|
|
69
|
-
<div className="
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
<div className="
|
|
73
|
-
<div className="
|
|
74
|
-
|
|
75
|
-
<
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
58
|
+
{flights && flights.length > 0 && (
|
|
59
|
+
<div className="search__results__cards search__results__cards--extended">
|
|
60
|
+
{flights.map((flight, index) => {
|
|
61
|
+
const lines = flight.flightMetaData.flightLines;
|
|
62
|
+
const firstLine = lines[0];
|
|
63
|
+
const lastLine = lines[lines.length - 1];
|
|
64
|
+
const stops = lines.length - 1;
|
|
65
|
+
|
|
66
|
+
return (
|
|
67
|
+
<div className="flight" key={`flight-${flight.flightId}-${index}`}>
|
|
68
|
+
<div className="flight__option">
|
|
69
|
+
<div className="flight__content">
|
|
70
|
+
<div className="flight__flights">
|
|
71
|
+
{/* HEADER */}
|
|
72
|
+
<div className="flight__flight">
|
|
73
|
+
<div className="flight__flight__header">
|
|
74
|
+
<div className="flight__status__container" />
|
|
75
|
+
<div className="flight__price">
|
|
76
|
+
<span className="price">€ {flight.price.toFixed(2)}</span>
|
|
77
|
+
|
|
78
|
+
<button
|
|
79
|
+
type="button"
|
|
80
|
+
className={`cta ${flight.isSelected ? 'cta--selected' : 'cta--select'}`}
|
|
81
|
+
onClick={() => dispatch(selectFlight({ flightOptionId: flight.flightOptionId, isDeparture: !!isDeparture }))}>
|
|
82
|
+
{flight.isSelected ? 'Selected' : 'Select'}
|
|
83
|
+
</button>
|
|
84
|
+
</div>
|
|
83
85
|
</div>
|
|
84
86
|
</div>
|
|
85
|
-
</div>
|
|
86
|
-
|
|
87
|
-
{/* SUMMARY */}
|
|
88
|
-
<div className="flight__flight">
|
|
89
|
-
<div className="flight__flight__container">
|
|
90
|
-
<div className="flight__flight__wrapper">
|
|
91
|
-
<div className="flight__logo__wrapper">
|
|
92
|
-
<img
|
|
93
|
-
src={`https://media.tidesoftware.be/media/shared/Airlines/${firstLine.airlineCode}.png?height=256`}
|
|
94
|
-
alt={flight.airlineDescription}
|
|
95
|
-
className="flight__logo"
|
|
96
|
-
/>
|
|
97
|
-
<span>{flight.airlineDescription}</span>
|
|
98
|
-
</div>
|
|
99
87
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
<
|
|
88
|
+
{/* SUMMARY */}
|
|
89
|
+
<div className="flight__flight">
|
|
90
|
+
<div className="flight__flight__container">
|
|
91
|
+
<div className="flight__flight__wrapper">
|
|
92
|
+
<div className="flight__logo__wrapper">
|
|
93
|
+
<img
|
|
94
|
+
src={`https://media.tidesoftware.be/media/shared/Airlines/${firstLine.airlineCode}.png?height=256`}
|
|
95
|
+
alt={flight.airlineDescription}
|
|
96
|
+
className="flight__logo"
|
|
97
|
+
/>
|
|
98
|
+
<span>{flight.airlineDescription}</span>
|
|
106
99
|
</div>
|
|
107
100
|
|
|
108
|
-
<div className="
|
|
109
|
-
<
|
|
101
|
+
<div className="flight__info">
|
|
102
|
+
<div className="flight__info__times">
|
|
103
|
+
<strong>
|
|
104
|
+
{firstLine.departureTime} {firstLine.departureAirport}
|
|
105
|
+
</strong>
|
|
106
|
+
<p>{format(parseISO(firstLine.departureDate), 'EEE dd MMM yyyy')}</p>
|
|
107
|
+
</div>
|
|
110
108
|
|
|
111
|
-
<div className="
|
|
109
|
+
<div className="flight__info__duration">
|
|
110
|
+
<p>{formatDuration(flight.flightMetaData.durationInTicks)}</p>
|
|
112
111
|
|
|
113
|
-
|
|
114
|
-
|
|
112
|
+
<div className="flight__info__duration__stops">{stops > 0 && <div className="flight__info__duration__stop" />}</div>
|
|
113
|
+
|
|
114
|
+
<span>{stops === 0 ? translations.SRP.DIRECT : `${stops} ${translations.SRP.STOP}${stops > 1 ? 's' : ''}`}</span>
|
|
115
|
+
</div>
|
|
115
116
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
117
|
+
<div className="flight__info__times flight__info__times--arrival">
|
|
118
|
+
<strong>
|
|
119
|
+
{lastLine.arrivalTime} {lastLine.arrivalAirport}
|
|
120
|
+
</strong>
|
|
121
|
+
<p>{format(parseISO(lastLine.arrivalDate), 'EEE dd MMM yyyy')}</p>
|
|
122
|
+
</div>
|
|
121
123
|
</div>
|
|
122
124
|
</div>
|
|
123
|
-
</div>
|
|
124
125
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
126
|
+
<div className="flight__detail__btn__wrapper">
|
|
127
|
+
<div
|
|
128
|
+
className={`flight__detail__btn ${activeDetailId === flight.flightOptionId ? 'flight__detail__btn--active' : ''}`}
|
|
129
|
+
onClick={() => handleDetailClick(flight.flightOptionId)}>
|
|
130
|
+
<Icon name="ui-chevron" className="flight__detail__btn__arrow" width={16} height={16} />
|
|
131
|
+
</div>
|
|
130
132
|
</div>
|
|
131
133
|
</div>
|
|
132
|
-
</div>
|
|
133
134
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
return (
|
|
140
|
-
<React.Fragment key={index}>
|
|
141
|
-
{/* Flight line */}
|
|
142
|
-
<div className="flight__info">
|
|
143
|
-
<div className="flight__info__times__wrapper">
|
|
144
|
-
<div className="flight__info__times">
|
|
145
|
-
<p>{line.departureTime}</p>
|
|
146
|
-
<strong>{line.departureAirport}</strong>
|
|
147
|
-
<p>{format(parseISO(line.departureDate), 'EEE dd MMM yyyy')}</p>
|
|
148
|
-
</div>
|
|
135
|
+
{/* DETAILS */}
|
|
136
|
+
<div className={`flight__detail ${activeDetailId === flight.flightOptionId ? 'flight__detail--active' : ''}`}>
|
|
137
|
+
{lines.map((line, index) => {
|
|
138
|
+
const nextLine = lines[index + 1];
|
|
149
139
|
|
|
150
|
-
|
|
151
|
-
|
|
140
|
+
return (
|
|
141
|
+
<React.Fragment key={index}>
|
|
142
|
+
{/* Flight line */}
|
|
143
|
+
<div className="flight__info">
|
|
144
|
+
<div className="flight__info__times__wrapper">
|
|
145
|
+
<div className="flight__info__times">
|
|
146
|
+
<p>{line.departureTime}</p>
|
|
147
|
+
<strong>{line.departureAirport}</strong>
|
|
148
|
+
<p>{format(parseISO(line.departureDate), 'EEE dd MMM yyyy')}</p>
|
|
149
|
+
</div>
|
|
152
150
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
<span>
|
|
156
|
-
{line.airline} {line.number}
|
|
157
|
-
</span>
|
|
158
|
-
</div>
|
|
151
|
+
<Icon name="ui-plane-depart" width={30} height={20} />
|
|
152
|
+
</div>
|
|
159
153
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
<p>{format(parseISO(line.arrivalDate), 'EEE dd MMM yyyy')}</p>
|
|
154
|
+
<div className="flight__info__duration">
|
|
155
|
+
<p>{formatDuration(line.durationInTicks)}</p>
|
|
156
|
+
<span>
|
|
157
|
+
{line.airline} {line.number}
|
|
158
|
+
</span>
|
|
166
159
|
</div>
|
|
167
|
-
</div>
|
|
168
|
-
</div>
|
|
169
160
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
<
|
|
175
|
-
|
|
176
|
-
<div className="flight__info__duration__stoptime">
|
|
177
|
-
<span>{translations.SRP.STOP_TIME}</span>
|
|
178
|
-
<strong>{formatDuration(parseISO(nextLine.departureDate).getTime() - parseISO(line.arrivalDate).getTime())}</strong>
|
|
161
|
+
<div className="flight__info__times__wrapper flight__info__times__wrapper--arrival">
|
|
162
|
+
<Icon name="ui-plane-arrive" width={30} height={20} />
|
|
163
|
+
<div className="flight__info__times flight__info__times--arrival">
|
|
164
|
+
<p>{line.arrivalTime}</p>
|
|
165
|
+
<strong>{line.arrivalAirport}</strong>
|
|
166
|
+
<p>{format(parseISO(line.arrivalDate), 'EEE dd MMM yyyy')}</p>
|
|
179
167
|
</div>
|
|
180
168
|
</div>
|
|
181
169
|
</div>
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
170
|
+
|
|
171
|
+
{nextLine && (
|
|
172
|
+
<div className="flight__info">
|
|
173
|
+
<div className="flight__info__duration flight__info__duration--waittime">
|
|
174
|
+
<div className="flight__info__duration__stops flight__info__duration__stops--stoptime">
|
|
175
|
+
<Icon name="ui-clock" width={24} height={24} />
|
|
176
|
+
</div>
|
|
177
|
+
<div className="flight__info__duration__stoptime">
|
|
178
|
+
<span>{translations.SRP.STOP_TIME}</span>
|
|
179
|
+
<strong>{formatDuration(parseISO(nextLine.departureDate).getTime() - parseISO(line.arrivalDate).getTime())}</strong>
|
|
180
|
+
</div>
|
|
181
|
+
</div>
|
|
182
|
+
</div>
|
|
183
|
+
)}
|
|
184
|
+
</React.Fragment>
|
|
185
|
+
);
|
|
186
|
+
})}
|
|
187
|
+
</div>
|
|
186
188
|
</div>
|
|
187
189
|
</div>
|
|
188
|
-
</div>
|
|
189
190
|
|
|
190
|
-
|
|
191
|
+
<div className="flight__rate" />
|
|
192
|
+
</div>
|
|
191
193
|
</div>
|
|
192
194
|
</div>
|
|
193
|
-
|
|
194
|
-
)
|
|
195
|
-
|
|
196
|
-
|
|
195
|
+
);
|
|
196
|
+
})}
|
|
197
|
+
</div>
|
|
198
|
+
)}
|
|
197
199
|
|
|
198
200
|
{/* <div className="search__results__options">
|
|
199
201
|
<p>There are more transports at your disposal</p>
|
|
@@ -63,6 +63,10 @@ const calculateNights = (fromDate: Date, toDate: Date, translations?: any): stri
|
|
|
63
63
|
};
|
|
64
64
|
|
|
65
65
|
const HotelAccommodationResults: React.FC<HotelAccommodationResultsProps> = ({ isLoading, context }) => {
|
|
66
|
+
if (context.showMockup) {
|
|
67
|
+
return showMocukups(context);
|
|
68
|
+
}
|
|
69
|
+
|
|
66
70
|
const translations = getTranslations(context?.languageCode ?? 'en-GB');
|
|
67
71
|
|
|
68
72
|
if (isLoading) {
|
|
@@ -109,3 +113,84 @@ const HotelAccommodationResults: React.FC<HotelAccommodationResultsProps> = ({ i
|
|
|
109
113
|
};
|
|
110
114
|
|
|
111
115
|
export default HotelAccommodationResults;
|
|
116
|
+
|
|
117
|
+
const showMocukups = (context: any) => {
|
|
118
|
+
const mockedHotelResults = [
|
|
119
|
+
{
|
|
120
|
+
type: 'hotel',
|
|
121
|
+
id: 2,
|
|
122
|
+
title: 'HTFSWILLCARL',
|
|
123
|
+
image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
|
|
124
|
+
description: '2 persoons kamer',
|
|
125
|
+
location: 'Tenerif, Spanje',
|
|
126
|
+
price: '$2244',
|
|
127
|
+
ctaText: 'Bekijk details',
|
|
128
|
+
days: '7 nights',
|
|
129
|
+
flightInfo: null,
|
|
130
|
+
accommodation: 'Hotel XYZ',
|
|
131
|
+
regime: 'All-inclusive',
|
|
132
|
+
stars: 5
|
|
133
|
+
} as HotelResult,
|
|
134
|
+
{
|
|
135
|
+
type: 'hotel',
|
|
136
|
+
id: 3,
|
|
137
|
+
title: 'HTFSSOFTROCK',
|
|
138
|
+
image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
|
|
139
|
+
description: '3 persoons kamer',
|
|
140
|
+
location: 'Tenerif, Spanje',
|
|
141
|
+
price: '$2244',
|
|
142
|
+
ctaText: 'Bekijk details',
|
|
143
|
+
days: '7 nights',
|
|
144
|
+
flightInfo: null,
|
|
145
|
+
accommodation: 'Hotel ABC',
|
|
146
|
+
regime: 'Half-board',
|
|
147
|
+
stars: 4
|
|
148
|
+
} as HotelResult,
|
|
149
|
+
{
|
|
150
|
+
type: 'hotel',
|
|
151
|
+
id: 4,
|
|
152
|
+
title: 'HTFSROYGAR',
|
|
153
|
+
image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
|
|
154
|
+
description: '4 persoons kamer',
|
|
155
|
+
location: 'Tenerif, Spanje',
|
|
156
|
+
price: '$2496',
|
|
157
|
+
ctaText: 'Bekijk details',
|
|
158
|
+
days: '7 nights',
|
|
159
|
+
flightInfo: null,
|
|
160
|
+
accommodation: 'Hotel DEF',
|
|
161
|
+
regime: 'Full-board',
|
|
162
|
+
stars: 5
|
|
163
|
+
} as HotelResult,
|
|
164
|
+
{
|
|
165
|
+
type: 'hotel',
|
|
166
|
+
id: 5,
|
|
167
|
+
title: 'HTFSCONBEL',
|
|
168
|
+
image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
|
|
169
|
+
description: '5 persoons kamer',
|
|
170
|
+
location: 'Tenerif, Spanje',
|
|
171
|
+
price: '$6784.8',
|
|
172
|
+
ctaText: 'Bekijk details',
|
|
173
|
+
days: '7 nights',
|
|
174
|
+
flightInfo: null,
|
|
175
|
+
accommodation: 'Hotel GHI',
|
|
176
|
+
regime: 'All-inclusive',
|
|
177
|
+
stars: 5
|
|
178
|
+
} as HotelResult
|
|
179
|
+
] as HotelResult[];
|
|
180
|
+
return <>{renderMockupResults(mockedHotelResults, context)}</>;
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
const renderMockupResults = (results: any[], context: any) => {
|
|
184
|
+
const renderedResults = results.map((result, index) => {
|
|
185
|
+
if (context?.showCustomCards && context?.customCardRenderer) {
|
|
186
|
+
return (
|
|
187
|
+
<div key={`${result.id}-${index}`} className="search__result-card">
|
|
188
|
+
{context.customCardRenderer(result)}
|
|
189
|
+
</div>
|
|
190
|
+
);
|
|
191
|
+
}
|
|
192
|
+
return <HotelCard key={`${result.id}-${index}`} result={result} />;
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
return <div className="search__results__cards">{renderedResults}</div>;
|
|
196
|
+
};
|