@qite/tide-components 1.0.9 → 1.0.10
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 +290 -280
- package/build/build-cjs/src/search-results/types.d.ts +12 -0
- package/build/build-esm/index.js +290 -280
- package/build/build-esm/src/search-results/types.d.ts +12 -0
- package/package.json +2 -2
- package/styles/abstracts/_mixins.scss +74 -74
- package/styles/abstracts/_variables.scss +57 -57
- package/styles/base/_fonts.scss +2 -2
- package/styles/base/_normalize.scss +227 -227
- package/styles/base/_typography.scss +35 -35
- package/styles/booking-joker-variables.scss +596 -596
- package/styles/booking-product-variables.scss +330 -330
- package/styles/booking-product.scss +438 -438
- package/styles/booking-qsm-variables.scss +501 -501
- package/styles/booking-qsm.scss +52 -52
- package/styles/booking-search-results-variables.scss +734 -734
- package/styles/booking-search-results.scss +53 -53
- package/styles/booking-wizard-variables.scss +603 -603
- package/styles/booking-wizard.scss +61 -61
- package/styles/components/_accordion.scss +67 -67
- package/styles/components/_animations.scss +39 -39
- package/styles/components/_base.scss +107 -107
- package/styles/components/_booking.scss +906 -906
- package/styles/components/_breadcrumb.scss +92 -92
- package/styles/components/_button.scss +238 -238
- package/styles/components/_checkbox.scss +230 -230
- package/styles/components/_contact.scss +255 -255
- package/styles/components/_content.scss +336 -336
- package/styles/components/_cta.scss +238 -238
- package/styles/components/_date-list.scss +41 -41
- package/styles/components/_date-range-picker.scss +223 -223
- package/styles/components/_decrement-increment.scss +35 -35
- package/styles/components/_dropdown.scss +77 -77
- package/styles/components/_error.scss +50 -50
- package/styles/components/_faq.scss +30 -30
- package/styles/components/_flight-option.scss +1432 -1432
- package/styles/components/_flyin.scss +830 -830
- package/styles/components/_footer.scss +135 -135
- package/styles/components/_form.scss +1693 -1693
- package/styles/components/_gallery.scss +317 -317
- package/styles/components/_header.scss +113 -113
- package/styles/components/_image-with-text.scss +206 -206
- package/styles/components/_img-slider.scss +175 -175
- package/styles/components/_info-message.scss +75 -75
- package/styles/components/_input.scss +35 -35
- package/styles/components/_list.scss +185 -185
- package/styles/components/_loader.scss +152 -152
- package/styles/components/_login.scss +140 -140
- package/styles/components/_map-view.scss +1100 -1100
- package/styles/components/_mixins.scss +579 -579
- package/styles/components/_navbar.scss +765 -765
- package/styles/components/_passenger-picker.scss +306 -306
- package/styles/components/_phone-input.scss +8 -8
- package/styles/components/_placeholders.scss +165 -165
- package/styles/components/_pricing-summary.scss +163 -163
- package/styles/components/_qsm.scss +17 -17
- package/styles/components/_radiobutton.scss +170 -170
- package/styles/components/_search.scss +2197 -2197
- package/styles/components/_select-wrapper.scss +81 -81
- package/styles/components/_slider.scss +128 -128
- package/styles/components/_spinner.scss +29 -29
- package/styles/components/_step-indicators.scss +187 -187
- package/styles/components/_table.scss +81 -81
- package/styles/components/_tide-form.scss +578 -578
- package/styles/components/_tree.scss +648 -648
- package/styles/components/_typeahead.scss +275 -275
- package/styles/components/_variables.scss +89 -89
- package/styles/content-blocks-variables.scss +543 -543
- package/styles/content-blocks.scss +66 -66
- package/styles/font.scss +2 -2
- package/styles/qsm/_calendar.scss +274 -274
- package/styles/qsm/_qsm.scss +1097 -1097
- package/styles/search.scss +1200 -1200
- package/styles/tide-form-variables.scss +275 -275
- package/styles/tide-form.scss +56 -56
package/build/build-esm/index.js
CHANGED
|
@@ -95,7 +95,7 @@ var PRODUCT$f = {
|
|
|
95
95
|
PER_PERSON_PER_NIGHT: "لكل شخص / لكل ليلة",
|
|
96
96
|
BOOK_NOW: "احجز الآن",
|
|
97
97
|
TO_YOUR_OFFER: "إلى عرضك",
|
|
98
|
-
NOT_AVAILABLE: "غير متاح",
|
|
98
|
+
NOT_AVAILABLE: "غير متاح — يرجى اختيار تاريخ آخر",
|
|
99
99
|
NUMBER_OF_ROOMS: "عدد الغرف",
|
|
100
100
|
AGE_BY_DEPARTURE_DATE: "عمر الأطفال عند تاريخ المغادرة",
|
|
101
101
|
YEAR: "سنة/سنوات",
|
|
@@ -439,7 +439,7 @@ var SRP$f = {
|
|
|
439
439
|
};
|
|
440
440
|
var ITINERARY$f = {
|
|
441
441
|
DAY: "اليوم",
|
|
442
|
-
NO_ITEMS: "
|
|
442
|
+
NO_ITEMS: "لم يتم اختيار أنشطة لهذا اليوم."
|
|
443
443
|
};
|
|
444
444
|
var FORM$f = {
|
|
445
445
|
LOADING: "جاري تحميل النموذج...",
|
|
@@ -542,7 +542,7 @@ var PRODUCT$e = {
|
|
|
542
542
|
PER_PERSON_PER_NIGHT: "Per person / per nat",
|
|
543
543
|
BOOK_NOW: "Book nu",
|
|
544
544
|
TO_YOUR_OFFER: "Til dit tilbud",
|
|
545
|
-
NOT_AVAILABLE: "Ikke tilgængelig",
|
|
545
|
+
NOT_AVAILABLE: "Ikke tilgængelig — vælg venligst en anden dato",
|
|
546
546
|
NUMBER_OF_ROOMS: "Antal værelser",
|
|
547
547
|
AGE_BY_DEPARTURE_DATE: "Børns alder på afrejsedato",
|
|
548
548
|
YEAR: "år",
|
|
@@ -886,7 +886,7 @@ var SRP$e = {
|
|
|
886
886
|
};
|
|
887
887
|
var ITINERARY$e = {
|
|
888
888
|
DAY: "Dag",
|
|
889
|
-
NO_ITEMS: "Ingen
|
|
889
|
+
NO_ITEMS: "Ingen aktiviteter valgt for denne dag."
|
|
890
890
|
};
|
|
891
891
|
var FORM$e = {
|
|
892
892
|
LOADING: "Indlæser formular...",
|
|
@@ -989,7 +989,7 @@ var PRODUCT$d = {
|
|
|
989
989
|
PER_PERSON_PER_NIGHT: "Pro Person / pro Nacht",
|
|
990
990
|
BOOK_NOW: "Jetzt buchen",
|
|
991
991
|
TO_YOUR_OFFER: "Zu Ihrem Angebot",
|
|
992
|
-
NOT_AVAILABLE: "Nicht verfügbar",
|
|
992
|
+
NOT_AVAILABLE: "Nicht verfügbar — bitte wählen Sie ein anderes Datum",
|
|
993
993
|
NUMBER_OF_ROOMS: "Anzahl der Zimmer",
|
|
994
994
|
AGE_BY_DEPARTURE_DATE: "Alter der Kinder am Abreisedatum",
|
|
995
995
|
YEAR: "Jahr(e)",
|
|
@@ -1333,7 +1333,7 @@ var SRP$d = {
|
|
|
1333
1333
|
};
|
|
1334
1334
|
var ITINERARY$d = {
|
|
1335
1335
|
DAY: "Tag",
|
|
1336
|
-
NO_ITEMS: "Keine
|
|
1336
|
+
NO_ITEMS: "Keine Aktivitäten für diesen Tag ausgewählt."
|
|
1337
1337
|
};
|
|
1338
1338
|
var FORM$d = {
|
|
1339
1339
|
LOADING: "Formular wird geladen...",
|
|
@@ -1436,7 +1436,7 @@ var PRODUCT$c = {
|
|
|
1436
1436
|
PER_PERSON_PER_NIGHT: "Per person / per night",
|
|
1437
1437
|
BOOK_NOW: "Book now",
|
|
1438
1438
|
TO_YOUR_OFFER: "To your quote",
|
|
1439
|
-
NOT_AVAILABLE: "Not available",
|
|
1439
|
+
NOT_AVAILABLE: "Not available — please select a different date",
|
|
1440
1440
|
NUMBER_OF_ROOMS: "Number of rooms",
|
|
1441
1441
|
AGE_BY_DEPARTURE_DATE: "Age of children on departure date",
|
|
1442
1442
|
YEAR: "Year(s)",
|
|
@@ -1784,7 +1784,7 @@ var SRP$c = {
|
|
|
1784
1784
|
};
|
|
1785
1785
|
var ITINERARY$c = {
|
|
1786
1786
|
DAY: "Day",
|
|
1787
|
-
NO_ITEMS: "No
|
|
1787
|
+
NO_ITEMS: "No activities selected for this day."
|
|
1788
1788
|
};
|
|
1789
1789
|
var FORM$c = {
|
|
1790
1790
|
LOADING: "Loading form...",
|
|
@@ -1887,7 +1887,7 @@ var PRODUCT$b = {
|
|
|
1887
1887
|
PER_PERSON_PER_NIGHT: "Por persona / por noche",
|
|
1888
1888
|
BOOK_NOW: "Reservar ahora",
|
|
1889
1889
|
TO_YOUR_OFFER: "A su presupuesto",
|
|
1890
|
-
NOT_AVAILABLE: "No disponible",
|
|
1890
|
+
NOT_AVAILABLE: "No disponible — seleccione otra fecha",
|
|
1891
1891
|
NUMBER_OF_ROOMS: "Número de habitaciones",
|
|
1892
1892
|
AGE_BY_DEPARTURE_DATE: "Edad de los niños en la fecha de salida",
|
|
1893
1893
|
YEAR: "Año(s)",
|
|
@@ -2231,7 +2231,7 @@ var SRP$b = {
|
|
|
2231
2231
|
};
|
|
2232
2232
|
var ITINERARY$b = {
|
|
2233
2233
|
DAY: "Día",
|
|
2234
|
-
NO_ITEMS: "No hay
|
|
2234
|
+
NO_ITEMS: "No hay actividades seleccionadas para este día."
|
|
2235
2235
|
};
|
|
2236
2236
|
var FORM$b = {
|
|
2237
2237
|
LOADING: "Cargando formulario...",
|
|
@@ -2334,7 +2334,7 @@ var PRODUCT$a = {
|
|
|
2334
2334
|
PER_PERSON_PER_NIGHT: "Par personne / par nuit",
|
|
2335
2335
|
BOOK_NOW: "Réserver maintenant",
|
|
2336
2336
|
TO_YOUR_OFFER: "Vers votre devis",
|
|
2337
|
-
NOT_AVAILABLE: "Non disponible",
|
|
2337
|
+
NOT_AVAILABLE: "Non disponible — veuillez sélectionner une autre date",
|
|
2338
2338
|
NUMBER_OF_ROOMS: "Nombre de chambres",
|
|
2339
2339
|
AGE_BY_DEPARTURE_DATE: "Âge des enfants à la date de départ",
|
|
2340
2340
|
YEAR: "An(s)",
|
|
@@ -2682,7 +2682,7 @@ var SRP$a = {
|
|
|
2682
2682
|
};
|
|
2683
2683
|
var ITINERARY$a = {
|
|
2684
2684
|
DAY: "Jour",
|
|
2685
|
-
NO_ITEMS: "
|
|
2685
|
+
NO_ITEMS: "Aucune activité sélectionnée pour ce jour."
|
|
2686
2686
|
};
|
|
2687
2687
|
var FORM$a = {
|
|
2688
2688
|
LOADING: "Chargement du formulaire...",
|
|
@@ -2785,7 +2785,7 @@ var PRODUCT$9 = {
|
|
|
2785
2785
|
PER_PERSON_PER_NIGHT: "Par personne / par nuit",
|
|
2786
2786
|
BOOK_NOW: "Réservez maintenant",
|
|
2787
2787
|
TO_YOUR_OFFER: "Vers votre devis",
|
|
2788
|
-
NOT_AVAILABLE: "Indisponible",
|
|
2788
|
+
NOT_AVAILABLE: "Indisponible — veuillez sélectionner une autre date",
|
|
2789
2789
|
NUMBER_OF_ROOMS: "Nombre de chambres",
|
|
2790
2790
|
AGE_BY_DEPARTURE_DATE: "Âge des enfants à la date de départ",
|
|
2791
2791
|
YEAR: "An(s)",
|
|
@@ -3129,7 +3129,7 @@ var SRP$9 = {
|
|
|
3129
3129
|
};
|
|
3130
3130
|
var ITINERARY$9 = {
|
|
3131
3131
|
DAY: "Jour",
|
|
3132
|
-
NO_ITEMS: "
|
|
3132
|
+
NO_ITEMS: "Aucune activité sélectionnée pour ce jour."
|
|
3133
3133
|
};
|
|
3134
3134
|
var FORM$9 = {
|
|
3135
3135
|
LOADING: "Chargement du formulaire...",
|
|
@@ -3232,7 +3232,7 @@ var PRODUCT$8 = {
|
|
|
3232
3232
|
PER_PERSON_PER_NIGHT: "Á mann / á nótt",
|
|
3233
3233
|
BOOK_NOW: "Panta núna",
|
|
3234
3234
|
TO_YOUR_OFFER: "Til tilboðsins þíns",
|
|
3235
|
-
NOT_AVAILABLE: "Ekki í boði",
|
|
3235
|
+
NOT_AVAILABLE: "Ekki í boði — vinsamlegast veldu aðra dagsetningu",
|
|
3236
3236
|
NUMBER_OF_ROOMS: "Fjöldi herbergja",
|
|
3237
3237
|
AGE_BY_DEPARTURE_DATE: "Aldur barna á brottfarardegi",
|
|
3238
3238
|
YEAR: "ár",
|
|
@@ -3576,7 +3576,7 @@ var SRP$8 = {
|
|
|
3576
3576
|
};
|
|
3577
3577
|
var ITINERARY$8 = {
|
|
3578
3578
|
DAY: "Dagur",
|
|
3579
|
-
NO_ITEMS: "
|
|
3579
|
+
NO_ITEMS: "Engin afþreying valin fyrir þennan dag."
|
|
3580
3580
|
};
|
|
3581
3581
|
var FORM$8 = {
|
|
3582
3582
|
LOADING: "Hleður eyðublað...",
|
|
@@ -3679,7 +3679,7 @@ var PRODUCT$7 = {
|
|
|
3679
3679
|
PER_PERSON_PER_NIGHT: "A persona / a notte",
|
|
3680
3680
|
BOOK_NOW: "Prenota ora",
|
|
3681
3681
|
TO_YOUR_OFFER: "Vai al preventivo",
|
|
3682
|
-
NOT_AVAILABLE: "Non disponibile",
|
|
3682
|
+
NOT_AVAILABLE: "Non disponibile — seleziona un'altra data",
|
|
3683
3683
|
NUMBER_OF_ROOMS: "Numero di camere",
|
|
3684
3684
|
AGE_BY_DEPARTURE_DATE: "Età dei bambini alla data di partenza",
|
|
3685
3685
|
YEAR: "Anno/i",
|
|
@@ -4023,7 +4023,7 @@ var SRP$7 = {
|
|
|
4023
4023
|
};
|
|
4024
4024
|
var ITINERARY$7 = {
|
|
4025
4025
|
DAY: "Giorno",
|
|
4026
|
-
NO_ITEMS: "
|
|
4026
|
+
NO_ITEMS: "Nessuna attività selezionata per questo giorno."
|
|
4027
4027
|
};
|
|
4028
4028
|
var FORM$7 = {
|
|
4029
4029
|
LOADING: "Caricamento modulo...",
|
|
@@ -4126,7 +4126,7 @@ var PRODUCT$6 = {
|
|
|
4126
4126
|
PER_PERSON_PER_NIGHT: "Per persoon / per nacht",
|
|
4127
4127
|
BOOK_NOW: "Boek nu",
|
|
4128
4128
|
TO_YOUR_OFFER: "Naar uw offerte",
|
|
4129
|
-
NOT_AVAILABLE: "Niet beschikbaar",
|
|
4129
|
+
NOT_AVAILABLE: "Niet beschikbaar — kies een andere datum",
|
|
4130
4130
|
NUMBER_OF_ROOMS: "Aantal kamers",
|
|
4131
4131
|
AGE_BY_DEPARTURE_DATE: "Leeftijd kinderen op vertrekdatum",
|
|
4132
4132
|
YEAR: "Jaar",
|
|
@@ -4474,7 +4474,7 @@ var SRP$6 = {
|
|
|
4474
4474
|
};
|
|
4475
4475
|
var ITINERARY$6 = {
|
|
4476
4476
|
DAY: "Dag",
|
|
4477
|
-
NO_ITEMS: "Geen
|
|
4477
|
+
NO_ITEMS: "Geen activiteiten geselecteerd voor deze dag."
|
|
4478
4478
|
};
|
|
4479
4479
|
var FORM$6 = {
|
|
4480
4480
|
LOADING: "Formulier laden...",
|
|
@@ -4577,7 +4577,7 @@ var PRODUCT$5 = {
|
|
|
4577
4577
|
PER_PERSON_PER_NIGHT: "Per persoon / per nacht",
|
|
4578
4578
|
BOOK_NOW: "Nu boeken",
|
|
4579
4579
|
TO_YOUR_OFFER: "Naar uw offerte",
|
|
4580
|
-
NOT_AVAILABLE: "Niet beschikbaar",
|
|
4580
|
+
NOT_AVAILABLE: "Niet beschikbaar — kies een andere datum",
|
|
4581
4581
|
NUMBER_OF_ROOMS: "Aantal kamers",
|
|
4582
4582
|
AGE_BY_DEPARTURE_DATE: "Leeftijd van kinderen op vertrekdatum",
|
|
4583
4583
|
YEAR: "Jaar",
|
|
@@ -4921,7 +4921,7 @@ var SRP$5 = {
|
|
|
4921
4921
|
};
|
|
4922
4922
|
var ITINERARY$5 = {
|
|
4923
4923
|
DAY: "Dag",
|
|
4924
|
-
NO_ITEMS: "Geen
|
|
4924
|
+
NO_ITEMS: "Geen activiteiten geselecteerd voor deze dag."
|
|
4925
4925
|
};
|
|
4926
4926
|
var FORM$5 = {
|
|
4927
4927
|
LOADING: "Formulier laden...",
|
|
@@ -5024,7 +5024,7 @@ var PRODUCT$4 = {
|
|
|
5024
5024
|
PER_PERSON_PER_NIGHT: "Per person / per natt",
|
|
5025
5025
|
BOOK_NOW: "Bestill nå",
|
|
5026
5026
|
TO_YOUR_OFFER: "Til ditt tilbud",
|
|
5027
|
-
NOT_AVAILABLE: "Ikke tilgjengelig",
|
|
5027
|
+
NOT_AVAILABLE: "Ikke tilgjengelig — velg en annen dato",
|
|
5028
5028
|
NUMBER_OF_ROOMS: "Antall rom",
|
|
5029
5029
|
AGE_BY_DEPARTURE_DATE: "Barnas alder på avreisedato",
|
|
5030
5030
|
YEAR: "År",
|
|
@@ -5368,7 +5368,7 @@ var SRP$4 = {
|
|
|
5368
5368
|
};
|
|
5369
5369
|
var ITINERARY$4 = {
|
|
5370
5370
|
DAY: "Dag",
|
|
5371
|
-
NO_ITEMS: "Ingen
|
|
5371
|
+
NO_ITEMS: "Ingen aktiviteter valgt for denne dagen."
|
|
5372
5372
|
};
|
|
5373
5373
|
var FORM$4 = {
|
|
5374
5374
|
LOADING: "Laster inn skjema...",
|
|
@@ -5471,7 +5471,7 @@ var PRODUCT$3 = {
|
|
|
5471
5471
|
PER_PERSON_PER_NIGHT: "Za osobę / za noc",
|
|
5472
5472
|
BOOK_NOW: "Zarezerwuj teraz",
|
|
5473
5473
|
TO_YOUR_OFFER: "Do oferty",
|
|
5474
|
-
NOT_AVAILABLE: "Niedostępne",
|
|
5474
|
+
NOT_AVAILABLE: "Niedostępne — wybierz inną datę",
|
|
5475
5475
|
NUMBER_OF_ROOMS: "Liczba pokoi",
|
|
5476
5476
|
AGE_BY_DEPARTURE_DATE: "Wiek dzieci w dniu wyjazdu",
|
|
5477
5477
|
YEAR: "Rok(lata)",
|
|
@@ -5815,7 +5815,7 @@ var SRP$3 = {
|
|
|
5815
5815
|
};
|
|
5816
5816
|
var ITINERARY$3 = {
|
|
5817
5817
|
DAY: "Dzień",
|
|
5818
|
-
NO_ITEMS: "
|
|
5818
|
+
NO_ITEMS: "Nie wybrano atrakcji na ten dzień."
|
|
5819
5819
|
};
|
|
5820
5820
|
var FORM$3 = {
|
|
5821
5821
|
LOADING: "Ładowanie formularza...",
|
|
@@ -5918,7 +5918,7 @@ var PRODUCT$2 = {
|
|
|
5918
5918
|
PER_PERSON_PER_NIGHT: "Por pessoa / por noite",
|
|
5919
5919
|
BOOK_NOW: "Reservar agora",
|
|
5920
5920
|
TO_YOUR_OFFER: "Ir para o orçamento",
|
|
5921
|
-
NOT_AVAILABLE: "Indisponível",
|
|
5921
|
+
NOT_AVAILABLE: "Indisponível — selecione outra data",
|
|
5922
5922
|
NUMBER_OF_ROOMS: "Número de quartos",
|
|
5923
5923
|
AGE_BY_DEPARTURE_DATE: "Idade das crianças à data de partida",
|
|
5924
5924
|
YEAR: "Ano(s)",
|
|
@@ -6262,7 +6262,7 @@ var SRP$2 = {
|
|
|
6262
6262
|
};
|
|
6263
6263
|
var ITINERARY$2 = {
|
|
6264
6264
|
DAY: "Dia",
|
|
6265
|
-
NO_ITEMS: "
|
|
6265
|
+
NO_ITEMS: "Nenhuma atividade selecionada para este dia."
|
|
6266
6266
|
};
|
|
6267
6267
|
var FORM$2 = {
|
|
6268
6268
|
LOADING: "A carregar formulário...",
|
|
@@ -6365,7 +6365,7 @@ var PRODUCT$1 = {
|
|
|
6365
6365
|
PER_PERSON_PER_NIGHT: "Per person / per natt",
|
|
6366
6366
|
BOOK_NOW: "Boka nu",
|
|
6367
6367
|
TO_YOUR_OFFER: "Till din offert",
|
|
6368
|
-
NOT_AVAILABLE: "Ej tillgänglig",
|
|
6368
|
+
NOT_AVAILABLE: "Ej tillgänglig — välj ett annat datum",
|
|
6369
6369
|
NUMBER_OF_ROOMS: "Antal rum",
|
|
6370
6370
|
AGE_BY_DEPARTURE_DATE: "Barnens ålder vid avresedatum",
|
|
6371
6371
|
YEAR: "År",
|
|
@@ -6709,7 +6709,7 @@ var SRP$1 = {
|
|
|
6709
6709
|
};
|
|
6710
6710
|
var ITINERARY$1 = {
|
|
6711
6711
|
DAY: "Dag",
|
|
6712
|
-
NO_ITEMS: "Inga
|
|
6712
|
+
NO_ITEMS: "Inga aktiviteter valda för denna dag."
|
|
6713
6713
|
};
|
|
6714
6714
|
var FORM$1 = {
|
|
6715
6715
|
LOADING: "Laddar formulär...",
|
|
@@ -6812,7 +6812,7 @@ var PRODUCT = {
|
|
|
6812
6812
|
PER_PERSON_PER_NIGHT: "1名・1泊あたり",
|
|
6813
6813
|
BOOK_NOW: "今すぐ予約",
|
|
6814
6814
|
TO_YOUR_OFFER: "見積もりへ",
|
|
6815
|
-
NOT_AVAILABLE: "利用不可",
|
|
6815
|
+
NOT_AVAILABLE: "利用不可 — 別の日付をお選びください",
|
|
6816
6816
|
NUMBER_OF_ROOMS: "客室数",
|
|
6817
6817
|
AGE_BY_DEPARTURE_DATE: "出発日時点での子供の年齢",
|
|
6818
6818
|
YEAR: "歳",
|
|
@@ -7156,7 +7156,7 @@ var SRP = {
|
|
|
7156
7156
|
};
|
|
7157
7157
|
var ITINERARY = {
|
|
7158
7158
|
DAY: "日",
|
|
7159
|
-
NO_ITEMS: "
|
|
7159
|
+
NO_ITEMS: "この日に選択されたアクティビティはありません。"
|
|
7160
7160
|
};
|
|
7161
7161
|
var FORM = {
|
|
7162
7162
|
LOADING: "フォームを読み込んでいます...",
|
|
@@ -21824,6 +21824,7 @@ const OptionRoom = ({ packageRoom, pax, optionPax, onRoomChange, includedService
|
|
|
21824
21824
|
|
|
21825
21825
|
function useOfferPrinter({ bookingPackage, getPax, tagIds = [], printActionId = null, onPrinted }) {
|
|
21826
21826
|
const settings = useContext(SettingsContext);
|
|
21827
|
+
const apiSettings = useSelector(selectApiSettings);
|
|
21827
21828
|
if (!settings)
|
|
21828
21829
|
throw new Error('useOfferPrinter must be used inside <BookingWizard>');
|
|
21829
21830
|
const { language, officeId } = settings;
|
|
@@ -21852,9 +21853,9 @@ function useOfferPrinter({ bookingPackage, getPax, tagIds = [], printActionId =
|
|
|
21852
21853
|
customerRequests: []
|
|
21853
21854
|
}
|
|
21854
21855
|
};
|
|
21855
|
-
const cfg = buildTideClientConfig();
|
|
21856
|
+
const cfg = buildTideClientConfig(apiSettings);
|
|
21856
21857
|
return build.book(cfg, request, undefined, language);
|
|
21857
|
-
}, [agentId, bookingPackage, getPax, language, officeId, tagIds]);
|
|
21858
|
+
}, [agentId, apiSettings, bookingPackage, getPax, language, officeId, tagIds]);
|
|
21858
21859
|
const languageData = [
|
|
21859
21860
|
{ code: 'nl-BE', tideId: 1 },
|
|
21860
21861
|
{ code: 'fr-BE', tideId: 2 },
|
|
@@ -21864,7 +21865,7 @@ function useOfferPrinter({ bookingPackage, getPax, tagIds = [], printActionId =
|
|
|
21864
21865
|
return languageData.find((l) => l.code === code)?.tideId || 1;
|
|
21865
21866
|
}
|
|
21866
21867
|
const printOffer = useCallback(async (offer) => {
|
|
21867
|
-
const cfg = buildTideClientConfig();
|
|
21868
|
+
const cfg = buildTideClientConfig(apiSettings);
|
|
21868
21869
|
const req = {
|
|
21869
21870
|
id: printActionId ?? 0,
|
|
21870
21871
|
dossierNumber: offer.dossierNumber ?? offer.number,
|
|
@@ -21875,7 +21876,7 @@ function useOfferPrinter({ bookingPackage, getPax, tagIds = [], printActionId =
|
|
|
21875
21876
|
const url = URL.createObjectURL(new Blob([buf], { type: 'application/pdf' }));
|
|
21876
21877
|
onPrinted?.(url);
|
|
21877
21878
|
window.open(url);
|
|
21878
|
-
}, [language, onPrinted]);
|
|
21879
|
+
}, [apiSettings, language, onPrinted, printActionId]);
|
|
21879
21880
|
const handlePrint = useCallback(async () => {
|
|
21880
21881
|
try {
|
|
21881
21882
|
setStage('creating');
|
|
@@ -28232,8 +28233,6 @@ const buildTrajectNodeRequest = ({ node, line }, context, productCode, destinati
|
|
|
28232
28233
|
language: context.language,
|
|
28233
28234
|
serviceType: node.serviceType,
|
|
28234
28235
|
fromDate: toDateOnlyString(line.from),
|
|
28235
|
-
// An excursion happens on a day rather than over a span. The traject gives its line an end a day
|
|
28236
|
-
// out, the way a night is counted, which asks the search for a window it does not have.
|
|
28237
28236
|
toDate: toDateOnlyString(node.serviceType === EXCURSION_SERVICE_TYPE ? line.from : line.to),
|
|
28238
28237
|
destination: destination ?? buildDestination(line, node),
|
|
28239
28238
|
productCode,
|
|
@@ -31153,7 +31152,7 @@ const Filters = ({ initialFilters, filters, isOpen, handleSetIsOpen, isLoading,
|
|
|
31153
31152
|
const max = filter.max ?? 100;
|
|
31154
31153
|
const selectedMin = filter.selectedMin ?? min;
|
|
31155
31154
|
const selectedMax = filter.selectedMax ?? max;
|
|
31156
|
-
return (React__default.createElement(MultiRangeFilter, { min: min, max: max, selectedMin: selectedMin, selectedMax: selectedMax, valueFormatter: (value) => `${value}
|
|
31155
|
+
return (React__default.createElement(MultiRangeFilter, { min: min, max: max, selectedMin: selectedMin, selectedMax: selectedMax, valueFormatter: (value) => (filter.property === 'price' ? value.toFixed(2).replace('.', ',') : `${value}`), onChange: (newMin, newMax) => {
|
|
31157
31156
|
handleSliderChange(filter, newMin, newMax);
|
|
31158
31157
|
} }));
|
|
31159
31158
|
})(),
|
|
@@ -31856,7 +31855,7 @@ const FlyIn = ({ srpType, isOpen, setIsOpen, className = '', onPanelRef, details
|
|
|
31856
31855
|
dispatch(setBookPackagingEntry(true));
|
|
31857
31856
|
}
|
|
31858
31857
|
};
|
|
31859
|
-
return (React__default.createElement("div", { className: `flyin ${isOpen ? 'flyin--active' : ''} ${className} ${isPackageEditFlow || flyInType === 'acco-results' || flyInType === 'traject-day-activities' ? 'flyin--large' : ''} ${flyInType === 'excursion-results' || flyInType === 'excursion-details' ? 'flyin--medium' : ''}
|
|
31858
|
+
return (React__default.createElement("div", { className: `flyin ${isOpen ? 'flyin--active' : ''} ${className} ${isPackageEditFlow || flyInType === 'acco-results' || flyInType === 'traject-day-activities' ? 'flyin--large' : ''} ${flyInType === 'excursion-results' || flyInType === 'excursion-details' ? 'flyin--medium' : ''}
|
|
31860
31859
|
${flyInType === 'flight-outward-results' || flyInType === 'flight-return-results' || flyInType === 'traject-flight-results' ? 'flyin--flight' : ''}` },
|
|
31861
31860
|
React__default.createElement("div", { className: `flyin__panel ${isOpen ? 'flyin__panel--active' : ''}`, ref: panelRef },
|
|
31862
31861
|
React__default.createElement("div", { className: "flyin__content" },
|
|
@@ -32645,7 +32644,7 @@ const FlightFilters = ({ isOpen, handleSetIsOpen, isLoading }) => {
|
|
|
32645
32644
|
!isEmpty$1(priceRangeValues) &&
|
|
32646
32645
|
(() => {
|
|
32647
32646
|
return (React__default.createElement("div", { className: "search__filter-rows" },
|
|
32648
|
-
React__default.createElement(MultiRangeFilter, { min: minPrice, max: maxPrice, selectedMin: first(priceRangeValues) ?? minPrice, selectedMax: last(priceRangeValues) ?? maxPrice, valueFormatter: (value) => `€${value}`, onChange: (newMin, newMax) => {
|
|
32647
|
+
React__default.createElement(MultiRangeFilter, { min: minPrice, max: maxPrice, selectedMin: first(priceRangeValues) ?? minPrice, selectedMax: last(priceRangeValues) ?? maxPrice, valueFormatter: (value) => `€${value.toFixed(2).replace('.', ',')}`, onChange: (newMin, newMax) => {
|
|
32649
32648
|
handlePriceSliderChange([newMin, newMax]);
|
|
32650
32649
|
} })));
|
|
32651
32650
|
})()))))));
|
|
@@ -33444,20 +33443,20 @@ const buildFlightHtml = (line) => {
|
|
|
33444
33443
|
*/
|
|
33445
33444
|
const buildFallbackHtml = (item, line) => {
|
|
33446
33445
|
const details = [line?.accommodationName, line?.regimeName].filter(Boolean).join(' — ');
|
|
33447
|
-
return `
|
|
33448
|
-
<div class="itinerary-item__fallback">
|
|
33449
|
-
<h3 class="itinerary-item__fallback-title">${escapeHtml(item.title)}</h3>
|
|
33450
|
-
${line ? buildFlightHtml(line) : ''}
|
|
33451
|
-
${details ? `<p class="itinerary-item__fallback-details">${escapeHtml(details)}</p>` : ''}
|
|
33452
|
-
</div>
|
|
33446
|
+
return `
|
|
33447
|
+
<div class="itinerary-item__fallback">
|
|
33448
|
+
<h3 class="itinerary-item__fallback-title">${escapeHtml(item.title)}</h3>
|
|
33449
|
+
${line ? buildFlightHtml(line) : ''}
|
|
33450
|
+
${details ? `<p class="itinerary-item__fallback-details">${escapeHtml(details)}</p>` : ''}
|
|
33451
|
+
</div>
|
|
33453
33452
|
`;
|
|
33454
33453
|
};
|
|
33455
33454
|
const buildItineraryHtml = (itinerary, translations, lines) => {
|
|
33456
33455
|
if (!itinerary) {
|
|
33457
|
-
return `
|
|
33458
|
-
<div class="itinerary-shell">
|
|
33459
|
-
<div class="itinerary-empty">Geen reisroute beschikbaar.</div>
|
|
33460
|
-
</div>
|
|
33456
|
+
return `
|
|
33457
|
+
<div class="itinerary-shell">
|
|
33458
|
+
<div class="itinerary-empty">Geen reisroute beschikbaar.</div>
|
|
33459
|
+
</div>
|
|
33461
33460
|
`;
|
|
33462
33461
|
}
|
|
33463
33462
|
const allNodes = itinerary.nodes ?? [];
|
|
@@ -33471,70 +33470,70 @@ const buildItineraryHtml = (itinerary, translations, lines) => {
|
|
|
33471
33470
|
const hasAccommodationInCurrentNode = uniqueItems.some(isAccommodationItem);
|
|
33472
33471
|
const activeAccommodation = findAccommodationForDay(allNodes, startDay);
|
|
33473
33472
|
const accommodationBanner = !hasAccommodationInCurrentNode && activeAccommodation
|
|
33474
|
-
? `
|
|
33475
|
-
<div class="itinerary-node__accommodation-banner">
|
|
33476
|
-
Accommodatie voor deze dag: <strong>${escapeHtml(getAccommodationName(activeAccommodation))}</strong>
|
|
33477
|
-
</div>
|
|
33473
|
+
? `
|
|
33474
|
+
<div class="itinerary-node__accommodation-banner">
|
|
33475
|
+
Accommodatie voor deze dag: <strong>${escapeHtml(getAccommodationName(activeAccommodation))}</strong>
|
|
33476
|
+
</div>
|
|
33478
33477
|
`
|
|
33479
33478
|
: '';
|
|
33480
33479
|
const itemsHtml = hasItems
|
|
33481
33480
|
? uniqueItems
|
|
33482
|
-
.map((item) => `
|
|
33483
|
-
<article class="itinerary-item" data-template="${escapeHtml(item.templateName)}">
|
|
33481
|
+
.map((item) => `
|
|
33482
|
+
<article class="itinerary-item" data-template="${escapeHtml(item.templateName)}">
|
|
33484
33483
|
${hasVisibleContent(item.contents)
|
|
33485
33484
|
? item.contents
|
|
33486
|
-
: buildFallbackHtml(item, lines.find((line) => line.guid === item.itemGuid))}
|
|
33487
|
-
</article>
|
|
33485
|
+
: buildFallbackHtml(item, lines.find((line) => line.guid === item.itemGuid))}
|
|
33486
|
+
</article>
|
|
33488
33487
|
`)
|
|
33489
33488
|
.join('')
|
|
33490
33489
|
: `<div class="itinerary-node__empty">${translations.ITINERARY.NO_ITEMS}</div>`;
|
|
33491
|
-
return `
|
|
33492
|
-
<section class="itinerary-node">
|
|
33493
|
-
<header class="itinerary-node__header">
|
|
33494
|
-
|
|
33495
|
-
<div class="itinerary-node__day">
|
|
33496
|
-
<p class="itinerary-node__day-day">${day}</p>
|
|
33497
|
-
<p class="itinerary-node__day-month">${month}</p>
|
|
33498
|
-
</div>
|
|
33499
|
-
|
|
33500
|
-
<div>
|
|
33501
|
-
<h2 class="itinerary-node__title">${escapeHtml(node.title)}</h2>
|
|
33502
|
-
</div>
|
|
33503
|
-
</header>
|
|
33504
|
-
|
|
33505
|
-
<div class="itinerary-node__content">
|
|
33506
|
-
${accommodationBanner}
|
|
33507
|
-
${itemsHtml}
|
|
33508
|
-
</div>
|
|
33509
|
-
</section>
|
|
33490
|
+
return `
|
|
33491
|
+
<section class="itinerary-node">
|
|
33492
|
+
<header class="itinerary-node__header">
|
|
33493
|
+
|
|
33494
|
+
<div class="itinerary-node__day">
|
|
33495
|
+
<p class="itinerary-node__day-day">${day}</p>
|
|
33496
|
+
<p class="itinerary-node__day-month">${month}</p>
|
|
33497
|
+
</div>
|
|
33498
|
+
|
|
33499
|
+
<div>
|
|
33500
|
+
<h2 class="itinerary-node__title">${escapeHtml(node.title)}</h2>
|
|
33501
|
+
</div>
|
|
33502
|
+
</header>
|
|
33503
|
+
|
|
33504
|
+
<div class="itinerary-node__content">
|
|
33505
|
+
${accommodationBanner}
|
|
33506
|
+
${itemsHtml}
|
|
33507
|
+
</div>
|
|
33508
|
+
</section>
|
|
33510
33509
|
`;
|
|
33511
33510
|
})
|
|
33512
33511
|
.join('');
|
|
33513
33512
|
const defaultItemsHtml = itinerary.defaultItems && itinerary.defaultItems.length > 0
|
|
33514
|
-
? `
|
|
33515
|
-
<section class="itinerary-default-items">
|
|
33516
|
-
<h2 class="itinerary-default-items__title">Algemene info</h2>
|
|
33513
|
+
? `
|
|
33514
|
+
<section class="itinerary-default-items">
|
|
33515
|
+
<h2 class="itinerary-default-items__title">Algemene info</h2>
|
|
33517
33516
|
${getUniqueItems(itinerary.defaultItems)
|
|
33518
|
-
.map((item) => `
|
|
33519
|
-
<article class="itinerary-item" data-template="${escapeHtml(item.templateName)}">
|
|
33517
|
+
.map((item) => `
|
|
33518
|
+
<article class="itinerary-item" data-template="${escapeHtml(item.templateName)}">
|
|
33520
33519
|
${hasVisibleContent(item.contents)
|
|
33521
33520
|
? item.contents
|
|
33522
|
-
: buildFallbackHtml(item, lines.find((line) => line.guid === item.itemGuid))}
|
|
33523
|
-
</article>
|
|
33521
|
+
: buildFallbackHtml(item, lines.find((line) => line.guid === item.itemGuid))}
|
|
33522
|
+
</article>
|
|
33524
33523
|
`)
|
|
33525
|
-
.join('')}
|
|
33526
|
-
</section>
|
|
33524
|
+
.join('')}
|
|
33525
|
+
</section>
|
|
33527
33526
|
`
|
|
33528
33527
|
: '';
|
|
33529
|
-
return `
|
|
33530
|
-
<div class="itinerary-shell">
|
|
33531
|
-
${itinerary.title ? `<header class="itinerary-shell__header"><h1 class="itinerary-shell__title">${escapeHtml(itinerary.title)}</h1></header>` : ''}
|
|
33532
|
-
|
|
33533
|
-
<div class="itinerary-shell__content">
|
|
33534
|
-
${nodesHtml}
|
|
33535
|
-
${defaultItemsHtml}
|
|
33536
|
-
</div>
|
|
33537
|
-
</div>
|
|
33528
|
+
return `
|
|
33529
|
+
<div class="itinerary-shell">
|
|
33530
|
+
${itinerary.title ? `<header class="itinerary-shell__header"><h1 class="itinerary-shell__title">${escapeHtml(itinerary.title)}</h1></header>` : ''}
|
|
33531
|
+
|
|
33532
|
+
<div class="itinerary-shell__content">
|
|
33533
|
+
${nodesHtml}
|
|
33534
|
+
${defaultItemsHtml}
|
|
33535
|
+
</div>
|
|
33536
|
+
</div>
|
|
33538
33537
|
`;
|
|
33539
33538
|
};
|
|
33540
33539
|
const FullItinerary = ({ isLoading }) => {
|
|
@@ -33556,170 +33555,170 @@ const FullItinerary = ({ isLoading }) => {
|
|
|
33556
33555
|
}
|
|
33557
33556
|
const shadowRoot = host.shadowRoot ?? host.attachShadow({ mode: 'open' });
|
|
33558
33557
|
shadowRootRef.current = shadowRoot;
|
|
33559
|
-
shadowRoot.innerHTML = `
|
|
33560
|
-
<style>
|
|
33561
|
-
:host {
|
|
33562
|
-
all: initial;
|
|
33563
|
-
display: block;
|
|
33564
|
-
width: 100%;
|
|
33565
|
-
}
|
|
33566
|
-
|
|
33567
|
-
*,
|
|
33568
|
-
*::before,
|
|
33569
|
-
*::after {
|
|
33570
|
-
box-sizing: border-box;
|
|
33571
|
-
}
|
|
33572
|
-
|
|
33573
|
-
.itinerary-shell {
|
|
33574
|
-
width: 100%;
|
|
33575
|
-
margin: 0 auto;
|
|
33576
|
-
font-family: 'Outfit', sans-serif;
|
|
33577
|
-
color: #222;
|
|
33578
|
-
}
|
|
33579
|
-
|
|
33580
|
-
.itinerary-shell__header {
|
|
33581
|
-
margin-bottom: 24px;
|
|
33582
|
-
}
|
|
33583
|
-
|
|
33584
|
-
.itinerary-shell__title {
|
|
33585
|
-
margin: 0;
|
|
33586
|
-
font-size: 32px;
|
|
33587
|
-
line-height: 1.2;
|
|
33588
|
-
}
|
|
33589
|
-
|
|
33590
|
-
.itinerary-shell__content {
|
|
33591
|
-
display: grid;
|
|
33592
|
-
gap: 24px;
|
|
33593
|
-
}
|
|
33594
|
-
|
|
33595
|
-
.itinerary-node {
|
|
33596
|
-
border: 1px solid #e5e7eb;
|
|
33597
|
-
border-radius: 16px;
|
|
33598
|
-
overflow: hidden;
|
|
33599
|
-
background: #fff;
|
|
33600
|
-
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
|
|
33601
|
-
}
|
|
33602
|
-
|
|
33603
|
-
.itinerary-node__header {
|
|
33604
|
-
display: flex;
|
|
33605
|
-
gap: 16px;
|
|
33606
|
-
align-items: center;
|
|
33607
|
-
border-bottom: 1px solid #eef0f2;
|
|
33608
|
-
background: #fafafa;
|
|
33609
|
-
}
|
|
33610
|
-
|
|
33611
|
-
.itinerary-node__day {
|
|
33612
|
-
flex: 50px 0 0;
|
|
33613
|
-
display: flex;
|
|
33614
|
-
flex-flow: column;
|
|
33615
|
-
align-items: center;
|
|
33616
|
-
justify-content: center;
|
|
33617
|
-
background: #1f9470;
|
|
33618
|
-
color: white;
|
|
33619
|
-
border: 1.5px solid var(--tide-booking-color-secondary);
|
|
33620
|
-
}
|
|
33621
|
-
|
|
33622
|
-
.itinerary-node__day-month {
|
|
33623
|
-
margin: 0px;
|
|
33624
|
-
}
|
|
33625
|
-
|
|
33626
|
-
.itinerary-node__day-day {
|
|
33627
|
-
margin: 0px;
|
|
33628
|
-
font-weight: var(--tide-booking-search-results-label-date-month-font-weight);
|
|
33629
|
-
color: var(--tide-booking-search-results-label-date-month-color);
|
|
33630
|
-
font-size: 24px;
|
|
33631
|
-
}
|
|
33632
|
-
|
|
33633
|
-
.itinerary-node__title {
|
|
33634
|
-
margin: 0;
|
|
33635
|
-
font-size: 22px;
|
|
33636
|
-
line-height: 1.25;
|
|
33637
|
-
}
|
|
33638
|
-
|
|
33639
|
-
.itinerary-node__content {
|
|
33640
|
-
display: grid;
|
|
33641
|
-
gap: 20px;
|
|
33642
|
-
padding: 20px;
|
|
33643
|
-
}
|
|
33644
|
-
|
|
33645
|
-
.itinerary-node__accommodation-banner {
|
|
33646
|
-
padding: 12px 16px;
|
|
33647
|
-
border: 1px solid #dbeafe;
|
|
33648
|
-
border-radius: 12px;
|
|
33649
|
-
background: #eff6ff;
|
|
33650
|
-
color: #1e3a8a;
|
|
33651
|
-
font-size: 14px;
|
|
33652
|
-
line-height: 1.4;
|
|
33653
|
-
}
|
|
33654
|
-
|
|
33655
|
-
.itinerary-item {
|
|
33656
|
-
display: block;
|
|
33657
|
-
border-radius: 12px;
|
|
33658
|
-
overflow: hidden;
|
|
33659
|
-
background: #fff;
|
|
33660
|
-
}
|
|
33661
|
-
|
|
33662
|
-
/* An item whose template has no content view of its own still has to read as a service. */
|
|
33663
|
-
.itinerary-item__fallback {
|
|
33664
|
-
padding: 16px 20px;
|
|
33665
|
-
border: 1px solid #e5e7eb;
|
|
33666
|
-
border-radius: 12px;
|
|
33667
|
-
}
|
|
33668
|
-
|
|
33669
|
-
.itinerary-item__fallback-title {
|
|
33670
|
-
margin: 0;
|
|
33671
|
-
font-size: 16px;
|
|
33672
|
-
font-weight: 600;
|
|
33673
|
-
color: #111827;
|
|
33674
|
-
}
|
|
33675
|
-
|
|
33676
|
-
.itinerary-item__legs {
|
|
33677
|
-
margin: 8px 0 0;
|
|
33678
|
-
padding-left: 18px;
|
|
33679
|
-
color: #374151;
|
|
33680
|
-
}
|
|
33681
|
-
|
|
33682
|
-
.itinerary-item__legs li + li {
|
|
33683
|
-
margin-top: 4px;
|
|
33684
|
-
}
|
|
33685
|
-
|
|
33686
|
-
.itinerary-item__fallback-details {
|
|
33687
|
-
margin: 8px 0 0;
|
|
33688
|
-
color: #6b7280;
|
|
33689
|
-
}
|
|
33690
|
-
|
|
33691
|
-
.itinerary-node__empty,
|
|
33692
|
-
.itinerary-empty {
|
|
33693
|
-
padding: 20px;
|
|
33694
|
-
border: 1px dashed #d1d5db;
|
|
33695
|
-
border-radius: 12px;
|
|
33696
|
-
color: #6b7280;
|
|
33697
|
-
background: #fafafa;
|
|
33698
|
-
}
|
|
33699
|
-
|
|
33700
|
-
.itinerary-default-items {
|
|
33701
|
-
border: 1px solid #e5e7eb;
|
|
33702
|
-
border-radius: 16px;
|
|
33703
|
-
padding: 20px;
|
|
33704
|
-
background: #fff;
|
|
33705
|
-
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
|
|
33706
|
-
}
|
|
33707
|
-
|
|
33708
|
-
.itinerary-default-items__title {
|
|
33709
|
-
margin: 0 0 16px;
|
|
33710
|
-
font-size: 22px;
|
|
33711
|
-
}
|
|
33712
|
-
|
|
33713
|
-
@media (max-width: 768px) {
|
|
33714
|
-
.itinerary-shell {
|
|
33715
|
-
padding: 16px;
|
|
33716
|
-
}
|
|
33717
|
-
}
|
|
33718
|
-
|
|
33719
|
-
${itinerary?.styleSheetBody ?? ''}
|
|
33720
|
-
</style>
|
|
33721
|
-
|
|
33722
|
-
${html}
|
|
33558
|
+
shadowRoot.innerHTML = `
|
|
33559
|
+
<style>
|
|
33560
|
+
:host {
|
|
33561
|
+
all: initial;
|
|
33562
|
+
display: block;
|
|
33563
|
+
width: 100%;
|
|
33564
|
+
}
|
|
33565
|
+
|
|
33566
|
+
*,
|
|
33567
|
+
*::before,
|
|
33568
|
+
*::after {
|
|
33569
|
+
box-sizing: border-box;
|
|
33570
|
+
}
|
|
33571
|
+
|
|
33572
|
+
.itinerary-shell {
|
|
33573
|
+
width: 100%;
|
|
33574
|
+
margin: 0 auto;
|
|
33575
|
+
font-family: 'Outfit', sans-serif;
|
|
33576
|
+
color: #222;
|
|
33577
|
+
}
|
|
33578
|
+
|
|
33579
|
+
.itinerary-shell__header {
|
|
33580
|
+
margin-bottom: 24px;
|
|
33581
|
+
}
|
|
33582
|
+
|
|
33583
|
+
.itinerary-shell__title {
|
|
33584
|
+
margin: 0;
|
|
33585
|
+
font-size: 32px;
|
|
33586
|
+
line-height: 1.2;
|
|
33587
|
+
}
|
|
33588
|
+
|
|
33589
|
+
.itinerary-shell__content {
|
|
33590
|
+
display: grid;
|
|
33591
|
+
gap: 24px;
|
|
33592
|
+
}
|
|
33593
|
+
|
|
33594
|
+
.itinerary-node {
|
|
33595
|
+
border: 1px solid #e5e7eb;
|
|
33596
|
+
border-radius: 16px;
|
|
33597
|
+
overflow: hidden;
|
|
33598
|
+
background: #fff;
|
|
33599
|
+
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
|
|
33600
|
+
}
|
|
33601
|
+
|
|
33602
|
+
.itinerary-node__header {
|
|
33603
|
+
display: flex;
|
|
33604
|
+
gap: 16px;
|
|
33605
|
+
align-items: center;
|
|
33606
|
+
border-bottom: 1px solid #eef0f2;
|
|
33607
|
+
background: #fafafa;
|
|
33608
|
+
}
|
|
33609
|
+
|
|
33610
|
+
.itinerary-node__day {
|
|
33611
|
+
flex: 50px 0 0;
|
|
33612
|
+
display: flex;
|
|
33613
|
+
flex-flow: column;
|
|
33614
|
+
align-items: center;
|
|
33615
|
+
justify-content: center;
|
|
33616
|
+
background: #1f9470;
|
|
33617
|
+
color: white;
|
|
33618
|
+
border: 1.5px solid var(--tide-booking-color-secondary);
|
|
33619
|
+
}
|
|
33620
|
+
|
|
33621
|
+
.itinerary-node__day-month {
|
|
33622
|
+
margin: 0px;
|
|
33623
|
+
}
|
|
33624
|
+
|
|
33625
|
+
.itinerary-node__day-day {
|
|
33626
|
+
margin: 0px;
|
|
33627
|
+
font-weight: var(--tide-booking-search-results-label-date-month-font-weight);
|
|
33628
|
+
color: var(--tide-booking-search-results-label-date-month-color);
|
|
33629
|
+
font-size: 24px;
|
|
33630
|
+
}
|
|
33631
|
+
|
|
33632
|
+
.itinerary-node__title {
|
|
33633
|
+
margin: 0;
|
|
33634
|
+
font-size: 22px;
|
|
33635
|
+
line-height: 1.25;
|
|
33636
|
+
}
|
|
33637
|
+
|
|
33638
|
+
.itinerary-node__content {
|
|
33639
|
+
display: grid;
|
|
33640
|
+
gap: 20px;
|
|
33641
|
+
padding: 20px;
|
|
33642
|
+
}
|
|
33643
|
+
|
|
33644
|
+
.itinerary-node__accommodation-banner {
|
|
33645
|
+
padding: 12px 16px;
|
|
33646
|
+
border: 1px solid #dbeafe;
|
|
33647
|
+
border-radius: 12px;
|
|
33648
|
+
background: #eff6ff;
|
|
33649
|
+
color: #1e3a8a;
|
|
33650
|
+
font-size: 14px;
|
|
33651
|
+
line-height: 1.4;
|
|
33652
|
+
}
|
|
33653
|
+
|
|
33654
|
+
.itinerary-item {
|
|
33655
|
+
display: block;
|
|
33656
|
+
border-radius: 12px;
|
|
33657
|
+
overflow: hidden;
|
|
33658
|
+
background: #fff;
|
|
33659
|
+
}
|
|
33660
|
+
|
|
33661
|
+
/* An item whose template has no content view of its own still has to read as a service. */
|
|
33662
|
+
.itinerary-item__fallback {
|
|
33663
|
+
padding: 16px 20px;
|
|
33664
|
+
border: 1px solid #e5e7eb;
|
|
33665
|
+
border-radius: 12px;
|
|
33666
|
+
}
|
|
33667
|
+
|
|
33668
|
+
.itinerary-item__fallback-title {
|
|
33669
|
+
margin: 0;
|
|
33670
|
+
font-size: 16px;
|
|
33671
|
+
font-weight: 600;
|
|
33672
|
+
color: #111827;
|
|
33673
|
+
}
|
|
33674
|
+
|
|
33675
|
+
.itinerary-item__legs {
|
|
33676
|
+
margin: 8px 0 0;
|
|
33677
|
+
padding-left: 18px;
|
|
33678
|
+
color: #374151;
|
|
33679
|
+
}
|
|
33680
|
+
|
|
33681
|
+
.itinerary-item__legs li + li {
|
|
33682
|
+
margin-top: 4px;
|
|
33683
|
+
}
|
|
33684
|
+
|
|
33685
|
+
.itinerary-item__fallback-details {
|
|
33686
|
+
margin: 8px 0 0;
|
|
33687
|
+
color: #6b7280;
|
|
33688
|
+
}
|
|
33689
|
+
|
|
33690
|
+
.itinerary-node__empty,
|
|
33691
|
+
.itinerary-empty {
|
|
33692
|
+
padding: 20px;
|
|
33693
|
+
border: 1px dashed #d1d5db;
|
|
33694
|
+
border-radius: 12px;
|
|
33695
|
+
color: #6b7280;
|
|
33696
|
+
background: #fafafa;
|
|
33697
|
+
}
|
|
33698
|
+
|
|
33699
|
+
.itinerary-default-items {
|
|
33700
|
+
border: 1px solid #e5e7eb;
|
|
33701
|
+
border-radius: 16px;
|
|
33702
|
+
padding: 20px;
|
|
33703
|
+
background: #fff;
|
|
33704
|
+
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
|
|
33705
|
+
}
|
|
33706
|
+
|
|
33707
|
+
.itinerary-default-items__title {
|
|
33708
|
+
margin: 0 0 16px;
|
|
33709
|
+
font-size: 22px;
|
|
33710
|
+
}
|
|
33711
|
+
|
|
33712
|
+
@media (max-width: 768px) {
|
|
33713
|
+
.itinerary-shell {
|
|
33714
|
+
padding: 16px;
|
|
33715
|
+
}
|
|
33716
|
+
}
|
|
33717
|
+
|
|
33718
|
+
${itinerary?.styleSheetBody ?? ''}
|
|
33719
|
+
</style>
|
|
33720
|
+
|
|
33721
|
+
${html}
|
|
33723
33722
|
`;
|
|
33724
33723
|
}, [html, itinerary?.styleSheetBody, isLoading]);
|
|
33725
33724
|
return (React__default.createElement(React__default.Fragment, null,
|
|
@@ -34313,6 +34312,7 @@ const getNodeIcon = (node) => {
|
|
|
34313
34312
|
const isRenderableNode = (node) => node.trajectNodeType === REGULAR_TRAJECT_NODE_TYPE &&
|
|
34314
34313
|
(node.serviceType === ACCOMMODATION_SERVICE_TYPE || node.serviceType === EXCURSION_SERVICE_TYPE || node.serviceType === FLIGHT_SERVICE_TYPE);
|
|
34315
34314
|
const MAX_DAY_ACTIVITIES = 6;
|
|
34315
|
+
const MAX_HOTEL_RESULTS = 6;
|
|
34316
34316
|
const TrajectResults = ({ isLoading }) => {
|
|
34317
34317
|
const context = useContext(SearchResultsConfigurationContext);
|
|
34318
34318
|
const dispatch = useDispatch();
|
|
@@ -34322,6 +34322,8 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
34322
34322
|
const { trajectNodeAvailability, trajectFlightAvailability, trajectDaySuggestions, editablePackagingEntry } = useSelector((state) => state.searchResults);
|
|
34323
34323
|
const trajectEntry = context?.trajectEntry;
|
|
34324
34324
|
const hideShowMoreResults = !!context?.hideShowMoreResults;
|
|
34325
|
+
const loadDayActivitiesOnDemand = !!context?.loadDayActivitiesOnDemand;
|
|
34326
|
+
const showNonPreferredHotels = !!context?.showNonPreferredHotels;
|
|
34325
34327
|
const nodesWithLines = useMemo(() => (trajectEntry ? getTrajectNodesWithLines(trajectEntry) : []), [trajectEntry]);
|
|
34326
34328
|
const lineByNodeId = useMemo(() => new Map(nodesWithLines.map((x) => [x.node.nodeId, x])), [nodesWithLines]);
|
|
34327
34329
|
const nodesByDay = useMemo(() => {
|
|
@@ -34359,13 +34361,14 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
34359
34361
|
/**
|
|
34360
34362
|
* Each day's activities are one more search, and a traject has as many as it has days. They go
|
|
34361
34363
|
* out together, but only once the trip itself has resolved — sharing the connections with the
|
|
34362
|
-
* searches the trip cannot do without would only make those slower.
|
|
34364
|
+
* searches the trip cannot do without would only make those slower. A portal can turn the
|
|
34365
|
+
* automatic load off, and then each day waits for its own "show activities" click instead.
|
|
34363
34366
|
*/
|
|
34364
34367
|
useEffect(() => {
|
|
34365
|
-
if (!trajectEntry || !tripResolved)
|
|
34368
|
+
if (!trajectEntry || !tripResolved || loadDayActivitiesOnDemand)
|
|
34366
34369
|
return;
|
|
34367
34370
|
(trajectEntry.traject.days ?? []).filter((day) => stayByDay.has(day.order)).forEach((day) => loadDay(day));
|
|
34368
|
-
}, [trajectEntry, tripResolved, stayByDay]);
|
|
34371
|
+
}, [trajectEntry, tripResolved, stayByDay, loadDayActivitiesOnDemand]);
|
|
34369
34372
|
if (!context || !trajectEntry)
|
|
34370
34373
|
return null;
|
|
34371
34374
|
const handleSelect = (item, code) => {
|
|
@@ -34439,6 +34442,10 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
34439
34442
|
const selected = results.find((x) => x.code === availability?.selectedCode) ?? null;
|
|
34440
34443
|
const configured = results.filter((x) => x.code !== selected?.code && !!findCandidateForResult(node, x));
|
|
34441
34444
|
const others = results.filter((x) => x.code !== selected?.code && !findCandidateForResult(node, x));
|
|
34445
|
+
// A hotel row holds the hotels configured on the node; a portal can also let it fill up with
|
|
34446
|
+
// non-preferred hotels found in the area, the rest staying behind "show more".
|
|
34447
|
+
const fill = showNonPreferredHotels && node.serviceType === ACCOMMODATION_SERVICE_TYPE ? others.slice(0, Math.max(MAX_HOTEL_RESULTS - 1 - configured.length, 0)) : [];
|
|
34448
|
+
const remaining = others.length - fill.length;
|
|
34442
34449
|
// No entry yet means the node's search has been queued but not dispatched — still loading.
|
|
34443
34450
|
const status = availability?.status ?? 'loading';
|
|
34444
34451
|
return (React__default.createElement(React__default.Fragment, { key: line.guid },
|
|
@@ -34458,12 +34465,12 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
34458
34465
|
node.preferredAccommodationName,
|
|
34459
34466
|
" \u2014 ",
|
|
34460
34467
|
translations.SRP.NO_RESULTS))),
|
|
34461
|
-
React__default.createElement("div", { className: "search__results__cards search__results__cards--scroll" }, [selected, ...configured].map((result) => (React__default.createElement(TrajectNodeCard, { key: result.code, node: node, result: result, isSelected: result.code === selected.code, languageCode: context.languageCode, translations: translations, onSelect: () => handleSelect(item, result.code), onEditOptions: node.serviceType === ACCOMMODATION_SERVICE_TYPE ? () => handleEditOptions(item) : undefined, showNights: node.serviceType === ACCOMMODATION_SERVICE_TYPE })))),
|
|
34462
|
-
|
|
34468
|
+
React__default.createElement("div", { className: "search__results__cards search__results__cards--scroll" }, [selected, ...configured, ...fill].map((result) => (React__default.createElement(TrajectNodeCard, { key: result.code, node: node, result: result, isSelected: result.code === selected.code, languageCode: context.languageCode, translations: translations, onSelect: () => handleSelect(item, result.code), onEditOptions: node.serviceType === ACCOMMODATION_SERVICE_TYPE ? () => handleEditOptions(item) : undefined, showNights: node.serviceType === ACCOMMODATION_SERVICE_TYPE })))),
|
|
34469
|
+
remaining > 0 && !hideShowMoreResults && (React__default.createElement("div", { className: "search__results__cards__actions" },
|
|
34463
34470
|
React__default.createElement("button", { type: "button", className: "cta cta--secondary", onClick: () => handleShowMore(item) },
|
|
34464
34471
|
translations.SRP.SHOW_MORE,
|
|
34465
34472
|
" (",
|
|
34466
|
-
|
|
34473
|
+
remaining,
|
|
34467
34474
|
")")))))));
|
|
34468
34475
|
};
|
|
34469
34476
|
const handleSelectFlight = (item, flight) => {
|
|
@@ -34554,6 +34561,7 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
34554
34561
|
return null;
|
|
34555
34562
|
const visible = cards.slice(0, MAX_DAY_ACTIVITIES);
|
|
34556
34563
|
const hidden = cards.length - visible.length;
|
|
34564
|
+
const awaitsRequest = loadDayActivitiesOnDemand && !suggestions && canSearch && !nodesResolving && hidden === 0;
|
|
34557
34565
|
return (React__default.createElement(React__default.Fragment, { key: `activities-${day.order}` },
|
|
34558
34566
|
React__default.createElement("div", { className: "search__results__label search__results__label--sub" },
|
|
34559
34567
|
React__default.createElement("div", { className: "search__results__label__text" },
|
|
@@ -34563,11 +34571,13 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
34563
34571
|
(nodesResolving || isSearching) && !cards.length && React__default.createElement(Spinner, { label: translations.SRP.LOADING_ACTIVITIES }),
|
|
34564
34572
|
!!cards.length && React__default.createElement("div", { className: "search__results__cards search__results__cards--scroll" }, visible.map(renderActivityCard)),
|
|
34565
34573
|
!nodesResolving && !isSearching && !cards.length && (!!items.length || !!suggestions) && (React__default.createElement("div", { className: "no-results" }, translations.SRP.NO_RESULTS)),
|
|
34566
|
-
React__default.createElement("div", { className: "search__results__cards__actions" },
|
|
34567
|
-
translations.SRP.
|
|
34568
|
-
|
|
34569
|
-
|
|
34570
|
-
|
|
34574
|
+
React__default.createElement("div", { className: "search__results__cards__actions" },
|
|
34575
|
+
awaitsRequest && (React__default.createElement("button", { type: "button", className: "cta cta--secondary", onClick: () => loadDay(day) }, translations.SRP.SHOW_ACTIVITIES)),
|
|
34576
|
+
hidden > 0 && !hideShowMoreResults && (React__default.createElement("button", { type: "button", className: "cta cta--secondary", onClick: () => handleShowMoreActivities(day.order) },
|
|
34577
|
+
translations.SRP.SHOW_MORE,
|
|
34578
|
+
" (",
|
|
34579
|
+
hidden,
|
|
34580
|
+
")")))));
|
|
34571
34581
|
};
|
|
34572
34582
|
/**
|
|
34573
34583
|
* An activity the traject books is swapped for another, the way a hotel is; one the traveller
|
|
@@ -38932,20 +38942,20 @@ function ItineraryMapView({ destinations: propDestinations, adults = 2, dateFrom
|
|
|
38932
38942
|
const isStartEnd = dest.isStart || dest.isEnd;
|
|
38933
38943
|
let iconHtml;
|
|
38934
38944
|
if (isStartEnd) {
|
|
38935
|
-
iconHtml = `
|
|
38936
|
-
<div class="map-view__marker map-view__marker--plane">
|
|
38937
|
-
<svg viewBox="0 0 576 512" fill="currentColor" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
|
|
38938
|
-
<path d="M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10.1-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.3-15.8-20.6l49-196.3L112 288 68.8 377.6c-3 6.1-9.2 10.4-16 10.4l-2.8 0c-9.2 0-16-8.8-13.3-17.6L80 256L36.7 141.6C34 132.8 40.8 124 50 124l2.8 0c6.8 0 13 4.3 16 10.4L112 224l102.9 0-49-196.3C163.5 17.3 171.2 7 181.8 7l56.2 0c11.5 0 22.1 6 27.8 16.1L365.7 192l116.6 0z"/>
|
|
38939
|
-
</svg>
|
|
38945
|
+
iconHtml = `
|
|
38946
|
+
<div class="map-view__marker map-view__marker--plane">
|
|
38947
|
+
<svg viewBox="0 0 576 512" fill="currentColor" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
|
|
38948
|
+
<path d="M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10.1-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.3-15.8-20.6l49-196.3L112 288 68.8 377.6c-3 6.1-9.2 10.4-16 10.4l-2.8 0c-9.2 0-16-8.8-13.3-17.6L80 256L36.7 141.6C34 132.8 40.8 124 50 124l2.8 0c6.8 0 13 4.3 16 10.4L112 224l102.9 0-49-196.3C163.5 17.3 171.2 7 181.8 7l56.2 0c11.5 0 22.1 6 27.8 16.1L365.7 192l116.6 0z"/>
|
|
38949
|
+
</svg>
|
|
38940
38950
|
</div>`;
|
|
38941
38951
|
}
|
|
38942
38952
|
else {
|
|
38943
38953
|
stopIndex++;
|
|
38944
38954
|
const imgStyle = dest.imageUrl ? `style="background-image:url('${dest.imageUrl}')"` : '';
|
|
38945
|
-
iconHtml = `
|
|
38946
|
-
<div class="map-view__marker map-view__marker--stop" ${imgStyle}>
|
|
38947
|
-
${!dest.imageUrl ? `<span class="map-view__marker-number">${stopIndex}</span>` : ''}
|
|
38948
|
-
<span class="map-view__marker-badge">${stopIndex}</span>
|
|
38955
|
+
iconHtml = `
|
|
38956
|
+
<div class="map-view__marker map-view__marker--stop" ${imgStyle}>
|
|
38957
|
+
${!dest.imageUrl ? `<span class="map-view__marker-number">${stopIndex}</span>` : ''}
|
|
38958
|
+
<span class="map-view__marker-badge">${stopIndex}</span>
|
|
38949
38959
|
</div>`;
|
|
38950
38960
|
}
|
|
38951
38961
|
const icon = L.divIcon({
|