@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-cjs/index.js
CHANGED
|
@@ -124,7 +124,7 @@ var PRODUCT$f = {
|
|
|
124
124
|
PER_PERSON_PER_NIGHT: "لكل شخص / لكل ليلة",
|
|
125
125
|
BOOK_NOW: "احجز الآن",
|
|
126
126
|
TO_YOUR_OFFER: "إلى عرضك",
|
|
127
|
-
NOT_AVAILABLE: "غير متاح",
|
|
127
|
+
NOT_AVAILABLE: "غير متاح — يرجى اختيار تاريخ آخر",
|
|
128
128
|
NUMBER_OF_ROOMS: "عدد الغرف",
|
|
129
129
|
AGE_BY_DEPARTURE_DATE: "عمر الأطفال عند تاريخ المغادرة",
|
|
130
130
|
YEAR: "سنة/سنوات",
|
|
@@ -468,7 +468,7 @@ var SRP$f = {
|
|
|
468
468
|
};
|
|
469
469
|
var ITINERARY$f = {
|
|
470
470
|
DAY: "اليوم",
|
|
471
|
-
NO_ITEMS: "
|
|
471
|
+
NO_ITEMS: "لم يتم اختيار أنشطة لهذا اليوم."
|
|
472
472
|
};
|
|
473
473
|
var FORM$f = {
|
|
474
474
|
LOADING: "جاري تحميل النموذج...",
|
|
@@ -571,7 +571,7 @@ var PRODUCT$e = {
|
|
|
571
571
|
PER_PERSON_PER_NIGHT: "Per person / per nat",
|
|
572
572
|
BOOK_NOW: "Book nu",
|
|
573
573
|
TO_YOUR_OFFER: "Til dit tilbud",
|
|
574
|
-
NOT_AVAILABLE: "Ikke tilgængelig",
|
|
574
|
+
NOT_AVAILABLE: "Ikke tilgængelig — vælg venligst en anden dato",
|
|
575
575
|
NUMBER_OF_ROOMS: "Antal værelser",
|
|
576
576
|
AGE_BY_DEPARTURE_DATE: "Børns alder på afrejsedato",
|
|
577
577
|
YEAR: "år",
|
|
@@ -915,7 +915,7 @@ var SRP$e = {
|
|
|
915
915
|
};
|
|
916
916
|
var ITINERARY$e = {
|
|
917
917
|
DAY: "Dag",
|
|
918
|
-
NO_ITEMS: "Ingen
|
|
918
|
+
NO_ITEMS: "Ingen aktiviteter valgt for denne dag."
|
|
919
919
|
};
|
|
920
920
|
var FORM$e = {
|
|
921
921
|
LOADING: "Indlæser formular...",
|
|
@@ -1018,7 +1018,7 @@ var PRODUCT$d = {
|
|
|
1018
1018
|
PER_PERSON_PER_NIGHT: "Pro Person / pro Nacht",
|
|
1019
1019
|
BOOK_NOW: "Jetzt buchen",
|
|
1020
1020
|
TO_YOUR_OFFER: "Zu Ihrem Angebot",
|
|
1021
|
-
NOT_AVAILABLE: "Nicht verfügbar",
|
|
1021
|
+
NOT_AVAILABLE: "Nicht verfügbar — bitte wählen Sie ein anderes Datum",
|
|
1022
1022
|
NUMBER_OF_ROOMS: "Anzahl der Zimmer",
|
|
1023
1023
|
AGE_BY_DEPARTURE_DATE: "Alter der Kinder am Abreisedatum",
|
|
1024
1024
|
YEAR: "Jahr(e)",
|
|
@@ -1362,7 +1362,7 @@ var SRP$d = {
|
|
|
1362
1362
|
};
|
|
1363
1363
|
var ITINERARY$d = {
|
|
1364
1364
|
DAY: "Tag",
|
|
1365
|
-
NO_ITEMS: "Keine
|
|
1365
|
+
NO_ITEMS: "Keine Aktivitäten für diesen Tag ausgewählt."
|
|
1366
1366
|
};
|
|
1367
1367
|
var FORM$d = {
|
|
1368
1368
|
LOADING: "Formular wird geladen...",
|
|
@@ -1465,7 +1465,7 @@ var PRODUCT$c = {
|
|
|
1465
1465
|
PER_PERSON_PER_NIGHT: "Per person / per night",
|
|
1466
1466
|
BOOK_NOW: "Book now",
|
|
1467
1467
|
TO_YOUR_OFFER: "To your quote",
|
|
1468
|
-
NOT_AVAILABLE: "Not available",
|
|
1468
|
+
NOT_AVAILABLE: "Not available — please select a different date",
|
|
1469
1469
|
NUMBER_OF_ROOMS: "Number of rooms",
|
|
1470
1470
|
AGE_BY_DEPARTURE_DATE: "Age of children on departure date",
|
|
1471
1471
|
YEAR: "Year(s)",
|
|
@@ -1813,7 +1813,7 @@ var SRP$c = {
|
|
|
1813
1813
|
};
|
|
1814
1814
|
var ITINERARY$c = {
|
|
1815
1815
|
DAY: "Day",
|
|
1816
|
-
NO_ITEMS: "No
|
|
1816
|
+
NO_ITEMS: "No activities selected for this day."
|
|
1817
1817
|
};
|
|
1818
1818
|
var FORM$c = {
|
|
1819
1819
|
LOADING: "Loading form...",
|
|
@@ -1916,7 +1916,7 @@ var PRODUCT$b = {
|
|
|
1916
1916
|
PER_PERSON_PER_NIGHT: "Por persona / por noche",
|
|
1917
1917
|
BOOK_NOW: "Reservar ahora",
|
|
1918
1918
|
TO_YOUR_OFFER: "A su presupuesto",
|
|
1919
|
-
NOT_AVAILABLE: "No disponible",
|
|
1919
|
+
NOT_AVAILABLE: "No disponible — seleccione otra fecha",
|
|
1920
1920
|
NUMBER_OF_ROOMS: "Número de habitaciones",
|
|
1921
1921
|
AGE_BY_DEPARTURE_DATE: "Edad de los niños en la fecha de salida",
|
|
1922
1922
|
YEAR: "Año(s)",
|
|
@@ -2260,7 +2260,7 @@ var SRP$b = {
|
|
|
2260
2260
|
};
|
|
2261
2261
|
var ITINERARY$b = {
|
|
2262
2262
|
DAY: "Día",
|
|
2263
|
-
NO_ITEMS: "No hay
|
|
2263
|
+
NO_ITEMS: "No hay actividades seleccionadas para este día."
|
|
2264
2264
|
};
|
|
2265
2265
|
var FORM$b = {
|
|
2266
2266
|
LOADING: "Cargando formulario...",
|
|
@@ -2363,7 +2363,7 @@ var PRODUCT$a = {
|
|
|
2363
2363
|
PER_PERSON_PER_NIGHT: "Par personne / par nuit",
|
|
2364
2364
|
BOOK_NOW: "Réserver maintenant",
|
|
2365
2365
|
TO_YOUR_OFFER: "Vers votre devis",
|
|
2366
|
-
NOT_AVAILABLE: "Non disponible",
|
|
2366
|
+
NOT_AVAILABLE: "Non disponible — veuillez sélectionner une autre date",
|
|
2367
2367
|
NUMBER_OF_ROOMS: "Nombre de chambres",
|
|
2368
2368
|
AGE_BY_DEPARTURE_DATE: "Âge des enfants à la date de départ",
|
|
2369
2369
|
YEAR: "An(s)",
|
|
@@ -2711,7 +2711,7 @@ var SRP$a = {
|
|
|
2711
2711
|
};
|
|
2712
2712
|
var ITINERARY$a = {
|
|
2713
2713
|
DAY: "Jour",
|
|
2714
|
-
NO_ITEMS: "
|
|
2714
|
+
NO_ITEMS: "Aucune activité sélectionnée pour ce jour."
|
|
2715
2715
|
};
|
|
2716
2716
|
var FORM$a = {
|
|
2717
2717
|
LOADING: "Chargement du formulaire...",
|
|
@@ -2814,7 +2814,7 @@ var PRODUCT$9 = {
|
|
|
2814
2814
|
PER_PERSON_PER_NIGHT: "Par personne / par nuit",
|
|
2815
2815
|
BOOK_NOW: "Réservez maintenant",
|
|
2816
2816
|
TO_YOUR_OFFER: "Vers votre devis",
|
|
2817
|
-
NOT_AVAILABLE: "Indisponible",
|
|
2817
|
+
NOT_AVAILABLE: "Indisponible — veuillez sélectionner une autre date",
|
|
2818
2818
|
NUMBER_OF_ROOMS: "Nombre de chambres",
|
|
2819
2819
|
AGE_BY_DEPARTURE_DATE: "Âge des enfants à la date de départ",
|
|
2820
2820
|
YEAR: "An(s)",
|
|
@@ -3158,7 +3158,7 @@ var SRP$9 = {
|
|
|
3158
3158
|
};
|
|
3159
3159
|
var ITINERARY$9 = {
|
|
3160
3160
|
DAY: "Jour",
|
|
3161
|
-
NO_ITEMS: "
|
|
3161
|
+
NO_ITEMS: "Aucune activité sélectionnée pour ce jour."
|
|
3162
3162
|
};
|
|
3163
3163
|
var FORM$9 = {
|
|
3164
3164
|
LOADING: "Chargement du formulaire...",
|
|
@@ -3261,7 +3261,7 @@ var PRODUCT$8 = {
|
|
|
3261
3261
|
PER_PERSON_PER_NIGHT: "Á mann / á nótt",
|
|
3262
3262
|
BOOK_NOW: "Panta núna",
|
|
3263
3263
|
TO_YOUR_OFFER: "Til tilboðsins þíns",
|
|
3264
|
-
NOT_AVAILABLE: "Ekki í boði",
|
|
3264
|
+
NOT_AVAILABLE: "Ekki í boði — vinsamlegast veldu aðra dagsetningu",
|
|
3265
3265
|
NUMBER_OF_ROOMS: "Fjöldi herbergja",
|
|
3266
3266
|
AGE_BY_DEPARTURE_DATE: "Aldur barna á brottfarardegi",
|
|
3267
3267
|
YEAR: "ár",
|
|
@@ -3605,7 +3605,7 @@ var SRP$8 = {
|
|
|
3605
3605
|
};
|
|
3606
3606
|
var ITINERARY$8 = {
|
|
3607
3607
|
DAY: "Dagur",
|
|
3608
|
-
NO_ITEMS: "
|
|
3608
|
+
NO_ITEMS: "Engin afþreying valin fyrir þennan dag."
|
|
3609
3609
|
};
|
|
3610
3610
|
var FORM$8 = {
|
|
3611
3611
|
LOADING: "Hleður eyðublað...",
|
|
@@ -3708,7 +3708,7 @@ var PRODUCT$7 = {
|
|
|
3708
3708
|
PER_PERSON_PER_NIGHT: "A persona / a notte",
|
|
3709
3709
|
BOOK_NOW: "Prenota ora",
|
|
3710
3710
|
TO_YOUR_OFFER: "Vai al preventivo",
|
|
3711
|
-
NOT_AVAILABLE: "Non disponibile",
|
|
3711
|
+
NOT_AVAILABLE: "Non disponibile — seleziona un'altra data",
|
|
3712
3712
|
NUMBER_OF_ROOMS: "Numero di camere",
|
|
3713
3713
|
AGE_BY_DEPARTURE_DATE: "Età dei bambini alla data di partenza",
|
|
3714
3714
|
YEAR: "Anno/i",
|
|
@@ -4052,7 +4052,7 @@ var SRP$7 = {
|
|
|
4052
4052
|
};
|
|
4053
4053
|
var ITINERARY$7 = {
|
|
4054
4054
|
DAY: "Giorno",
|
|
4055
|
-
NO_ITEMS: "
|
|
4055
|
+
NO_ITEMS: "Nessuna attività selezionata per questo giorno."
|
|
4056
4056
|
};
|
|
4057
4057
|
var FORM$7 = {
|
|
4058
4058
|
LOADING: "Caricamento modulo...",
|
|
@@ -4155,7 +4155,7 @@ var PRODUCT$6 = {
|
|
|
4155
4155
|
PER_PERSON_PER_NIGHT: "Per persoon / per nacht",
|
|
4156
4156
|
BOOK_NOW: "Boek nu",
|
|
4157
4157
|
TO_YOUR_OFFER: "Naar uw offerte",
|
|
4158
|
-
NOT_AVAILABLE: "Niet beschikbaar",
|
|
4158
|
+
NOT_AVAILABLE: "Niet beschikbaar — kies een andere datum",
|
|
4159
4159
|
NUMBER_OF_ROOMS: "Aantal kamers",
|
|
4160
4160
|
AGE_BY_DEPARTURE_DATE: "Leeftijd kinderen op vertrekdatum",
|
|
4161
4161
|
YEAR: "Jaar",
|
|
@@ -4503,7 +4503,7 @@ var SRP$6 = {
|
|
|
4503
4503
|
};
|
|
4504
4504
|
var ITINERARY$6 = {
|
|
4505
4505
|
DAY: "Dag",
|
|
4506
|
-
NO_ITEMS: "Geen
|
|
4506
|
+
NO_ITEMS: "Geen activiteiten geselecteerd voor deze dag."
|
|
4507
4507
|
};
|
|
4508
4508
|
var FORM$6 = {
|
|
4509
4509
|
LOADING: "Formulier laden...",
|
|
@@ -4606,7 +4606,7 @@ var PRODUCT$5 = {
|
|
|
4606
4606
|
PER_PERSON_PER_NIGHT: "Per persoon / per nacht",
|
|
4607
4607
|
BOOK_NOW: "Nu boeken",
|
|
4608
4608
|
TO_YOUR_OFFER: "Naar uw offerte",
|
|
4609
|
-
NOT_AVAILABLE: "Niet beschikbaar",
|
|
4609
|
+
NOT_AVAILABLE: "Niet beschikbaar — kies een andere datum",
|
|
4610
4610
|
NUMBER_OF_ROOMS: "Aantal kamers",
|
|
4611
4611
|
AGE_BY_DEPARTURE_DATE: "Leeftijd van kinderen op vertrekdatum",
|
|
4612
4612
|
YEAR: "Jaar",
|
|
@@ -4950,7 +4950,7 @@ var SRP$5 = {
|
|
|
4950
4950
|
};
|
|
4951
4951
|
var ITINERARY$5 = {
|
|
4952
4952
|
DAY: "Dag",
|
|
4953
|
-
NO_ITEMS: "Geen
|
|
4953
|
+
NO_ITEMS: "Geen activiteiten geselecteerd voor deze dag."
|
|
4954
4954
|
};
|
|
4955
4955
|
var FORM$5 = {
|
|
4956
4956
|
LOADING: "Formulier laden...",
|
|
@@ -5053,7 +5053,7 @@ var PRODUCT$4 = {
|
|
|
5053
5053
|
PER_PERSON_PER_NIGHT: "Per person / per natt",
|
|
5054
5054
|
BOOK_NOW: "Bestill nå",
|
|
5055
5055
|
TO_YOUR_OFFER: "Til ditt tilbud",
|
|
5056
|
-
NOT_AVAILABLE: "Ikke tilgjengelig",
|
|
5056
|
+
NOT_AVAILABLE: "Ikke tilgjengelig — velg en annen dato",
|
|
5057
5057
|
NUMBER_OF_ROOMS: "Antall rom",
|
|
5058
5058
|
AGE_BY_DEPARTURE_DATE: "Barnas alder på avreisedato",
|
|
5059
5059
|
YEAR: "År",
|
|
@@ -5397,7 +5397,7 @@ var SRP$4 = {
|
|
|
5397
5397
|
};
|
|
5398
5398
|
var ITINERARY$4 = {
|
|
5399
5399
|
DAY: "Dag",
|
|
5400
|
-
NO_ITEMS: "Ingen
|
|
5400
|
+
NO_ITEMS: "Ingen aktiviteter valgt for denne dagen."
|
|
5401
5401
|
};
|
|
5402
5402
|
var FORM$4 = {
|
|
5403
5403
|
LOADING: "Laster inn skjema...",
|
|
@@ -5500,7 +5500,7 @@ var PRODUCT$3 = {
|
|
|
5500
5500
|
PER_PERSON_PER_NIGHT: "Za osobę / za noc",
|
|
5501
5501
|
BOOK_NOW: "Zarezerwuj teraz",
|
|
5502
5502
|
TO_YOUR_OFFER: "Do oferty",
|
|
5503
|
-
NOT_AVAILABLE: "Niedostępne",
|
|
5503
|
+
NOT_AVAILABLE: "Niedostępne — wybierz inną datę",
|
|
5504
5504
|
NUMBER_OF_ROOMS: "Liczba pokoi",
|
|
5505
5505
|
AGE_BY_DEPARTURE_DATE: "Wiek dzieci w dniu wyjazdu",
|
|
5506
5506
|
YEAR: "Rok(lata)",
|
|
@@ -5844,7 +5844,7 @@ var SRP$3 = {
|
|
|
5844
5844
|
};
|
|
5845
5845
|
var ITINERARY$3 = {
|
|
5846
5846
|
DAY: "Dzień",
|
|
5847
|
-
NO_ITEMS: "
|
|
5847
|
+
NO_ITEMS: "Nie wybrano atrakcji na ten dzień."
|
|
5848
5848
|
};
|
|
5849
5849
|
var FORM$3 = {
|
|
5850
5850
|
LOADING: "Ładowanie formularza...",
|
|
@@ -5947,7 +5947,7 @@ var PRODUCT$2 = {
|
|
|
5947
5947
|
PER_PERSON_PER_NIGHT: "Por pessoa / por noite",
|
|
5948
5948
|
BOOK_NOW: "Reservar agora",
|
|
5949
5949
|
TO_YOUR_OFFER: "Ir para o orçamento",
|
|
5950
|
-
NOT_AVAILABLE: "Indisponível",
|
|
5950
|
+
NOT_AVAILABLE: "Indisponível — selecione outra data",
|
|
5951
5951
|
NUMBER_OF_ROOMS: "Número de quartos",
|
|
5952
5952
|
AGE_BY_DEPARTURE_DATE: "Idade das crianças à data de partida",
|
|
5953
5953
|
YEAR: "Ano(s)",
|
|
@@ -6291,7 +6291,7 @@ var SRP$2 = {
|
|
|
6291
6291
|
};
|
|
6292
6292
|
var ITINERARY$2 = {
|
|
6293
6293
|
DAY: "Dia",
|
|
6294
|
-
NO_ITEMS: "
|
|
6294
|
+
NO_ITEMS: "Nenhuma atividade selecionada para este dia."
|
|
6295
6295
|
};
|
|
6296
6296
|
var FORM$2 = {
|
|
6297
6297
|
LOADING: "A carregar formulário...",
|
|
@@ -6394,7 +6394,7 @@ var PRODUCT$1 = {
|
|
|
6394
6394
|
PER_PERSON_PER_NIGHT: "Per person / per natt",
|
|
6395
6395
|
BOOK_NOW: "Boka nu",
|
|
6396
6396
|
TO_YOUR_OFFER: "Till din offert",
|
|
6397
|
-
NOT_AVAILABLE: "Ej tillgänglig",
|
|
6397
|
+
NOT_AVAILABLE: "Ej tillgänglig — välj ett annat datum",
|
|
6398
6398
|
NUMBER_OF_ROOMS: "Antal rum",
|
|
6399
6399
|
AGE_BY_DEPARTURE_DATE: "Barnens ålder vid avresedatum",
|
|
6400
6400
|
YEAR: "År",
|
|
@@ -6738,7 +6738,7 @@ var SRP$1 = {
|
|
|
6738
6738
|
};
|
|
6739
6739
|
var ITINERARY$1 = {
|
|
6740
6740
|
DAY: "Dag",
|
|
6741
|
-
NO_ITEMS: "Inga
|
|
6741
|
+
NO_ITEMS: "Inga aktiviteter valda för denna dag."
|
|
6742
6742
|
};
|
|
6743
6743
|
var FORM$1 = {
|
|
6744
6744
|
LOADING: "Laddar formulär...",
|
|
@@ -6841,7 +6841,7 @@ var PRODUCT = {
|
|
|
6841
6841
|
PER_PERSON_PER_NIGHT: "1名・1泊あたり",
|
|
6842
6842
|
BOOK_NOW: "今すぐ予約",
|
|
6843
6843
|
TO_YOUR_OFFER: "見積もりへ",
|
|
6844
|
-
NOT_AVAILABLE: "利用不可",
|
|
6844
|
+
NOT_AVAILABLE: "利用不可 — 別の日付をお選びください",
|
|
6845
6845
|
NUMBER_OF_ROOMS: "客室数",
|
|
6846
6846
|
AGE_BY_DEPARTURE_DATE: "出発日時点での子供の年齢",
|
|
6847
6847
|
YEAR: "歳",
|
|
@@ -7185,7 +7185,7 @@ var SRP = {
|
|
|
7185
7185
|
};
|
|
7186
7186
|
var ITINERARY = {
|
|
7187
7187
|
DAY: "日",
|
|
7188
|
-
NO_ITEMS: "
|
|
7188
|
+
NO_ITEMS: "この日に選択されたアクティビティはありません。"
|
|
7189
7189
|
};
|
|
7190
7190
|
var FORM = {
|
|
7191
7191
|
LOADING: "フォームを読み込んでいます...",
|
|
@@ -21853,6 +21853,7 @@ const OptionRoom = ({ packageRoom, pax, optionPax, onRoomChange, includedService
|
|
|
21853
21853
|
|
|
21854
21854
|
function useOfferPrinter({ bookingPackage, getPax, tagIds = [], printActionId = null, onPrinted }) {
|
|
21855
21855
|
const settings = React.useContext(SettingsContext);
|
|
21856
|
+
const apiSettings = reactRedux.useSelector(selectApiSettings);
|
|
21856
21857
|
if (!settings)
|
|
21857
21858
|
throw new Error('useOfferPrinter must be used inside <BookingWizard>');
|
|
21858
21859
|
const { language, officeId } = settings;
|
|
@@ -21881,9 +21882,9 @@ function useOfferPrinter({ bookingPackage, getPax, tagIds = [], printActionId =
|
|
|
21881
21882
|
customerRequests: []
|
|
21882
21883
|
}
|
|
21883
21884
|
};
|
|
21884
|
-
const cfg = buildTideClientConfig();
|
|
21885
|
+
const cfg = buildTideClientConfig(apiSettings);
|
|
21885
21886
|
return build.book(cfg, request, undefined, language);
|
|
21886
|
-
}, [agentId, bookingPackage, getPax, language, officeId, tagIds]);
|
|
21887
|
+
}, [agentId, apiSettings, bookingPackage, getPax, language, officeId, tagIds]);
|
|
21887
21888
|
const languageData = [
|
|
21888
21889
|
{ code: 'nl-BE', tideId: 1 },
|
|
21889
21890
|
{ code: 'fr-BE', tideId: 2 },
|
|
@@ -21893,7 +21894,7 @@ function useOfferPrinter({ bookingPackage, getPax, tagIds = [], printActionId =
|
|
|
21893
21894
|
return languageData.find((l) => l.code === code)?.tideId || 1;
|
|
21894
21895
|
}
|
|
21895
21896
|
const printOffer = React.useCallback(async (offer) => {
|
|
21896
|
-
const cfg = buildTideClientConfig();
|
|
21897
|
+
const cfg = buildTideClientConfig(apiSettings);
|
|
21897
21898
|
const req = {
|
|
21898
21899
|
id: printActionId ?? 0,
|
|
21899
21900
|
dossierNumber: offer.dossierNumber ?? offer.number,
|
|
@@ -21904,7 +21905,7 @@ function useOfferPrinter({ bookingPackage, getPax, tagIds = [], printActionId =
|
|
|
21904
21905
|
const url = URL.createObjectURL(new Blob([buf], { type: 'application/pdf' }));
|
|
21905
21906
|
onPrinted?.(url);
|
|
21906
21907
|
window.open(url);
|
|
21907
|
-
}, [language, onPrinted]);
|
|
21908
|
+
}, [apiSettings, language, onPrinted, printActionId]);
|
|
21908
21909
|
const handlePrint = React.useCallback(async () => {
|
|
21909
21910
|
try {
|
|
21910
21911
|
setStage('creating');
|
|
@@ -28261,8 +28262,6 @@ const buildTrajectNodeRequest = ({ node, line }, context, productCode, destinati
|
|
|
28261
28262
|
language: context.language,
|
|
28262
28263
|
serviceType: node.serviceType,
|
|
28263
28264
|
fromDate: toDateOnlyString(line.from),
|
|
28264
|
-
// An excursion happens on a day rather than over a span. The traject gives its line an end a day
|
|
28265
|
-
// out, the way a night is counted, which asks the search for a window it does not have.
|
|
28266
28265
|
toDate: toDateOnlyString(node.serviceType === EXCURSION_SERVICE_TYPE ? line.from : line.to),
|
|
28267
28266
|
destination: destination ?? buildDestination(line, node),
|
|
28268
28267
|
productCode,
|
|
@@ -31182,7 +31181,7 @@ const Filters = ({ initialFilters, filters, isOpen, handleSetIsOpen, isLoading,
|
|
|
31182
31181
|
const max = filter.max ?? 100;
|
|
31183
31182
|
const selectedMin = filter.selectedMin ?? min;
|
|
31184
31183
|
const selectedMax = filter.selectedMax ?? max;
|
|
31185
|
-
return (React__default["default"].createElement(MultiRangeFilter, { min: min, max: max, selectedMin: selectedMin, selectedMax: selectedMax, valueFormatter: (value) => `${value}
|
|
31184
|
+
return (React__default["default"].createElement(MultiRangeFilter, { min: min, max: max, selectedMin: selectedMin, selectedMax: selectedMax, valueFormatter: (value) => (filter.property === 'price' ? value.toFixed(2).replace('.', ',') : `${value}`), onChange: (newMin, newMax) => {
|
|
31186
31185
|
handleSliderChange(filter, newMin, newMax);
|
|
31187
31186
|
} }));
|
|
31188
31187
|
})(),
|
|
@@ -31885,7 +31884,7 @@ const FlyIn = ({ srpType, isOpen, setIsOpen, className = '', onPanelRef, details
|
|
|
31885
31884
|
dispatch(setBookPackagingEntry(true));
|
|
31886
31885
|
}
|
|
31887
31886
|
};
|
|
31888
|
-
return (React__default["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' : ''}
|
|
31887
|
+
return (React__default["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' : ''}
|
|
31889
31888
|
${flyInType === 'flight-outward-results' || flyInType === 'flight-return-results' || flyInType === 'traject-flight-results' ? 'flyin--flight' : ''}` },
|
|
31890
31889
|
React__default["default"].createElement("div", { className: `flyin__panel ${isOpen ? 'flyin__panel--active' : ''}`, ref: panelRef },
|
|
31891
31890
|
React__default["default"].createElement("div", { className: "flyin__content" },
|
|
@@ -32674,7 +32673,7 @@ const FlightFilters = ({ isOpen, handleSetIsOpen, isLoading }) => {
|
|
|
32674
32673
|
!lodash.isEmpty(priceRangeValues) &&
|
|
32675
32674
|
(() => {
|
|
32676
32675
|
return (React__default["default"].createElement("div", { className: "search__filter-rows" },
|
|
32677
|
-
React__default["default"].createElement(MultiRangeFilter, { min: minPrice, max: maxPrice, selectedMin: lodash.first(priceRangeValues) ?? minPrice, selectedMax: lodash.last(priceRangeValues) ?? maxPrice, valueFormatter: (value) => `€${value}`, onChange: (newMin, newMax) => {
|
|
32676
|
+
React__default["default"].createElement(MultiRangeFilter, { min: minPrice, max: maxPrice, selectedMin: lodash.first(priceRangeValues) ?? minPrice, selectedMax: lodash.last(priceRangeValues) ?? maxPrice, valueFormatter: (value) => `€${value.toFixed(2).replace('.', ',')}`, onChange: (newMin, newMax) => {
|
|
32678
32677
|
handlePriceSliderChange([newMin, newMax]);
|
|
32679
32678
|
} })));
|
|
32680
32679
|
})()))))));
|
|
@@ -33473,20 +33472,20 @@ const buildFlightHtml = (line) => {
|
|
|
33473
33472
|
*/
|
|
33474
33473
|
const buildFallbackHtml = (item, line) => {
|
|
33475
33474
|
const details = [line?.accommodationName, line?.regimeName].filter(Boolean).join(' — ');
|
|
33476
|
-
return `
|
|
33477
|
-
<div class="itinerary-item__fallback">
|
|
33478
|
-
<h3 class="itinerary-item__fallback-title">${escapeHtml(item.title)}</h3>
|
|
33479
|
-
${line ? buildFlightHtml(line) : ''}
|
|
33480
|
-
${details ? `<p class="itinerary-item__fallback-details">${escapeHtml(details)}</p>` : ''}
|
|
33481
|
-
</div>
|
|
33475
|
+
return `
|
|
33476
|
+
<div class="itinerary-item__fallback">
|
|
33477
|
+
<h3 class="itinerary-item__fallback-title">${escapeHtml(item.title)}</h3>
|
|
33478
|
+
${line ? buildFlightHtml(line) : ''}
|
|
33479
|
+
${details ? `<p class="itinerary-item__fallback-details">${escapeHtml(details)}</p>` : ''}
|
|
33480
|
+
</div>
|
|
33482
33481
|
`;
|
|
33483
33482
|
};
|
|
33484
33483
|
const buildItineraryHtml = (itinerary, translations, lines) => {
|
|
33485
33484
|
if (!itinerary) {
|
|
33486
|
-
return `
|
|
33487
|
-
<div class="itinerary-shell">
|
|
33488
|
-
<div class="itinerary-empty">Geen reisroute beschikbaar.</div>
|
|
33489
|
-
</div>
|
|
33485
|
+
return `
|
|
33486
|
+
<div class="itinerary-shell">
|
|
33487
|
+
<div class="itinerary-empty">Geen reisroute beschikbaar.</div>
|
|
33488
|
+
</div>
|
|
33490
33489
|
`;
|
|
33491
33490
|
}
|
|
33492
33491
|
const allNodes = itinerary.nodes ?? [];
|
|
@@ -33500,70 +33499,70 @@ const buildItineraryHtml = (itinerary, translations, lines) => {
|
|
|
33500
33499
|
const hasAccommodationInCurrentNode = uniqueItems.some(isAccommodationItem);
|
|
33501
33500
|
const activeAccommodation = findAccommodationForDay(allNodes, startDay);
|
|
33502
33501
|
const accommodationBanner = !hasAccommodationInCurrentNode && activeAccommodation
|
|
33503
|
-
? `
|
|
33504
|
-
<div class="itinerary-node__accommodation-banner">
|
|
33505
|
-
Accommodatie voor deze dag: <strong>${escapeHtml(getAccommodationName(activeAccommodation))}</strong>
|
|
33506
|
-
</div>
|
|
33502
|
+
? `
|
|
33503
|
+
<div class="itinerary-node__accommodation-banner">
|
|
33504
|
+
Accommodatie voor deze dag: <strong>${escapeHtml(getAccommodationName(activeAccommodation))}</strong>
|
|
33505
|
+
</div>
|
|
33507
33506
|
`
|
|
33508
33507
|
: '';
|
|
33509
33508
|
const itemsHtml = hasItems
|
|
33510
33509
|
? uniqueItems
|
|
33511
|
-
.map((item) => `
|
|
33512
|
-
<article class="itinerary-item" data-template="${escapeHtml(item.templateName)}">
|
|
33510
|
+
.map((item) => `
|
|
33511
|
+
<article class="itinerary-item" data-template="${escapeHtml(item.templateName)}">
|
|
33513
33512
|
${hasVisibleContent(item.contents)
|
|
33514
33513
|
? item.contents
|
|
33515
|
-
: buildFallbackHtml(item, lines.find((line) => line.guid === item.itemGuid))}
|
|
33516
|
-
</article>
|
|
33514
|
+
: buildFallbackHtml(item, lines.find((line) => line.guid === item.itemGuid))}
|
|
33515
|
+
</article>
|
|
33517
33516
|
`)
|
|
33518
33517
|
.join('')
|
|
33519
33518
|
: `<div class="itinerary-node__empty">${translations.ITINERARY.NO_ITEMS}</div>`;
|
|
33520
|
-
return `
|
|
33521
|
-
<section class="itinerary-node">
|
|
33522
|
-
<header class="itinerary-node__header">
|
|
33523
|
-
|
|
33524
|
-
<div class="itinerary-node__day">
|
|
33525
|
-
<p class="itinerary-node__day-day">${day}</p>
|
|
33526
|
-
<p class="itinerary-node__day-month">${month}</p>
|
|
33527
|
-
</div>
|
|
33528
|
-
|
|
33529
|
-
<div>
|
|
33530
|
-
<h2 class="itinerary-node__title">${escapeHtml(node.title)}</h2>
|
|
33531
|
-
</div>
|
|
33532
|
-
</header>
|
|
33533
|
-
|
|
33534
|
-
<div class="itinerary-node__content">
|
|
33535
|
-
${accommodationBanner}
|
|
33536
|
-
${itemsHtml}
|
|
33537
|
-
</div>
|
|
33538
|
-
</section>
|
|
33519
|
+
return `
|
|
33520
|
+
<section class="itinerary-node">
|
|
33521
|
+
<header class="itinerary-node__header">
|
|
33522
|
+
|
|
33523
|
+
<div class="itinerary-node__day">
|
|
33524
|
+
<p class="itinerary-node__day-day">${day}</p>
|
|
33525
|
+
<p class="itinerary-node__day-month">${month}</p>
|
|
33526
|
+
</div>
|
|
33527
|
+
|
|
33528
|
+
<div>
|
|
33529
|
+
<h2 class="itinerary-node__title">${escapeHtml(node.title)}</h2>
|
|
33530
|
+
</div>
|
|
33531
|
+
</header>
|
|
33532
|
+
|
|
33533
|
+
<div class="itinerary-node__content">
|
|
33534
|
+
${accommodationBanner}
|
|
33535
|
+
${itemsHtml}
|
|
33536
|
+
</div>
|
|
33537
|
+
</section>
|
|
33539
33538
|
`;
|
|
33540
33539
|
})
|
|
33541
33540
|
.join('');
|
|
33542
33541
|
const defaultItemsHtml = itinerary.defaultItems && itinerary.defaultItems.length > 0
|
|
33543
|
-
? `
|
|
33544
|
-
<section class="itinerary-default-items">
|
|
33545
|
-
<h2 class="itinerary-default-items__title">Algemene info</h2>
|
|
33542
|
+
? `
|
|
33543
|
+
<section class="itinerary-default-items">
|
|
33544
|
+
<h2 class="itinerary-default-items__title">Algemene info</h2>
|
|
33546
33545
|
${getUniqueItems(itinerary.defaultItems)
|
|
33547
|
-
.map((item) => `
|
|
33548
|
-
<article class="itinerary-item" data-template="${escapeHtml(item.templateName)}">
|
|
33546
|
+
.map((item) => `
|
|
33547
|
+
<article class="itinerary-item" data-template="${escapeHtml(item.templateName)}">
|
|
33549
33548
|
${hasVisibleContent(item.contents)
|
|
33550
33549
|
? item.contents
|
|
33551
|
-
: buildFallbackHtml(item, lines.find((line) => line.guid === item.itemGuid))}
|
|
33552
|
-
</article>
|
|
33550
|
+
: buildFallbackHtml(item, lines.find((line) => line.guid === item.itemGuid))}
|
|
33551
|
+
</article>
|
|
33553
33552
|
`)
|
|
33554
|
-
.join('')}
|
|
33555
|
-
</section>
|
|
33553
|
+
.join('')}
|
|
33554
|
+
</section>
|
|
33556
33555
|
`
|
|
33557
33556
|
: '';
|
|
33558
|
-
return `
|
|
33559
|
-
<div class="itinerary-shell">
|
|
33560
|
-
${itinerary.title ? `<header class="itinerary-shell__header"><h1 class="itinerary-shell__title">${escapeHtml(itinerary.title)}</h1></header>` : ''}
|
|
33561
|
-
|
|
33562
|
-
<div class="itinerary-shell__content">
|
|
33563
|
-
${nodesHtml}
|
|
33564
|
-
${defaultItemsHtml}
|
|
33565
|
-
</div>
|
|
33566
|
-
</div>
|
|
33557
|
+
return `
|
|
33558
|
+
<div class="itinerary-shell">
|
|
33559
|
+
${itinerary.title ? `<header class="itinerary-shell__header"><h1 class="itinerary-shell__title">${escapeHtml(itinerary.title)}</h1></header>` : ''}
|
|
33560
|
+
|
|
33561
|
+
<div class="itinerary-shell__content">
|
|
33562
|
+
${nodesHtml}
|
|
33563
|
+
${defaultItemsHtml}
|
|
33564
|
+
</div>
|
|
33565
|
+
</div>
|
|
33567
33566
|
`;
|
|
33568
33567
|
};
|
|
33569
33568
|
const FullItinerary = ({ isLoading }) => {
|
|
@@ -33585,170 +33584,170 @@ const FullItinerary = ({ isLoading }) => {
|
|
|
33585
33584
|
}
|
|
33586
33585
|
const shadowRoot = host.shadowRoot ?? host.attachShadow({ mode: 'open' });
|
|
33587
33586
|
shadowRootRef.current = shadowRoot;
|
|
33588
|
-
shadowRoot.innerHTML = `
|
|
33589
|
-
<style>
|
|
33590
|
-
:host {
|
|
33591
|
-
all: initial;
|
|
33592
|
-
display: block;
|
|
33593
|
-
width: 100%;
|
|
33594
|
-
}
|
|
33595
|
-
|
|
33596
|
-
*,
|
|
33597
|
-
*::before,
|
|
33598
|
-
*::after {
|
|
33599
|
-
box-sizing: border-box;
|
|
33600
|
-
}
|
|
33601
|
-
|
|
33602
|
-
.itinerary-shell {
|
|
33603
|
-
width: 100%;
|
|
33604
|
-
margin: 0 auto;
|
|
33605
|
-
font-family: 'Outfit', sans-serif;
|
|
33606
|
-
color: #222;
|
|
33607
|
-
}
|
|
33608
|
-
|
|
33609
|
-
.itinerary-shell__header {
|
|
33610
|
-
margin-bottom: 24px;
|
|
33611
|
-
}
|
|
33612
|
-
|
|
33613
|
-
.itinerary-shell__title {
|
|
33614
|
-
margin: 0;
|
|
33615
|
-
font-size: 32px;
|
|
33616
|
-
line-height: 1.2;
|
|
33617
|
-
}
|
|
33618
|
-
|
|
33619
|
-
.itinerary-shell__content {
|
|
33620
|
-
display: grid;
|
|
33621
|
-
gap: 24px;
|
|
33622
|
-
}
|
|
33623
|
-
|
|
33624
|
-
.itinerary-node {
|
|
33625
|
-
border: 1px solid #e5e7eb;
|
|
33626
|
-
border-radius: 16px;
|
|
33627
|
-
overflow: hidden;
|
|
33628
|
-
background: #fff;
|
|
33629
|
-
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
|
|
33630
|
-
}
|
|
33631
|
-
|
|
33632
|
-
.itinerary-node__header {
|
|
33633
|
-
display: flex;
|
|
33634
|
-
gap: 16px;
|
|
33635
|
-
align-items: center;
|
|
33636
|
-
border-bottom: 1px solid #eef0f2;
|
|
33637
|
-
background: #fafafa;
|
|
33638
|
-
}
|
|
33639
|
-
|
|
33640
|
-
.itinerary-node__day {
|
|
33641
|
-
flex: 50px 0 0;
|
|
33642
|
-
display: flex;
|
|
33643
|
-
flex-flow: column;
|
|
33644
|
-
align-items: center;
|
|
33645
|
-
justify-content: center;
|
|
33646
|
-
background: #1f9470;
|
|
33647
|
-
color: white;
|
|
33648
|
-
border: 1.5px solid var(--tide-booking-color-secondary);
|
|
33649
|
-
}
|
|
33650
|
-
|
|
33651
|
-
.itinerary-node__day-month {
|
|
33652
|
-
margin: 0px;
|
|
33653
|
-
}
|
|
33654
|
-
|
|
33655
|
-
.itinerary-node__day-day {
|
|
33656
|
-
margin: 0px;
|
|
33657
|
-
font-weight: var(--tide-booking-search-results-label-date-month-font-weight);
|
|
33658
|
-
color: var(--tide-booking-search-results-label-date-month-color);
|
|
33659
|
-
font-size: 24px;
|
|
33660
|
-
}
|
|
33661
|
-
|
|
33662
|
-
.itinerary-node__title {
|
|
33663
|
-
margin: 0;
|
|
33664
|
-
font-size: 22px;
|
|
33665
|
-
line-height: 1.25;
|
|
33666
|
-
}
|
|
33667
|
-
|
|
33668
|
-
.itinerary-node__content {
|
|
33669
|
-
display: grid;
|
|
33670
|
-
gap: 20px;
|
|
33671
|
-
padding: 20px;
|
|
33672
|
-
}
|
|
33673
|
-
|
|
33674
|
-
.itinerary-node__accommodation-banner {
|
|
33675
|
-
padding: 12px 16px;
|
|
33676
|
-
border: 1px solid #dbeafe;
|
|
33677
|
-
border-radius: 12px;
|
|
33678
|
-
background: #eff6ff;
|
|
33679
|
-
color: #1e3a8a;
|
|
33680
|
-
font-size: 14px;
|
|
33681
|
-
line-height: 1.4;
|
|
33682
|
-
}
|
|
33683
|
-
|
|
33684
|
-
.itinerary-item {
|
|
33685
|
-
display: block;
|
|
33686
|
-
border-radius: 12px;
|
|
33687
|
-
overflow: hidden;
|
|
33688
|
-
background: #fff;
|
|
33689
|
-
}
|
|
33690
|
-
|
|
33691
|
-
/* An item whose template has no content view of its own still has to read as a service. */
|
|
33692
|
-
.itinerary-item__fallback {
|
|
33693
|
-
padding: 16px 20px;
|
|
33694
|
-
border: 1px solid #e5e7eb;
|
|
33695
|
-
border-radius: 12px;
|
|
33696
|
-
}
|
|
33697
|
-
|
|
33698
|
-
.itinerary-item__fallback-title {
|
|
33699
|
-
margin: 0;
|
|
33700
|
-
font-size: 16px;
|
|
33701
|
-
font-weight: 600;
|
|
33702
|
-
color: #111827;
|
|
33703
|
-
}
|
|
33704
|
-
|
|
33705
|
-
.itinerary-item__legs {
|
|
33706
|
-
margin: 8px 0 0;
|
|
33707
|
-
padding-left: 18px;
|
|
33708
|
-
color: #374151;
|
|
33709
|
-
}
|
|
33710
|
-
|
|
33711
|
-
.itinerary-item__legs li + li {
|
|
33712
|
-
margin-top: 4px;
|
|
33713
|
-
}
|
|
33714
|
-
|
|
33715
|
-
.itinerary-item__fallback-details {
|
|
33716
|
-
margin: 8px 0 0;
|
|
33717
|
-
color: #6b7280;
|
|
33718
|
-
}
|
|
33719
|
-
|
|
33720
|
-
.itinerary-node__empty,
|
|
33721
|
-
.itinerary-empty {
|
|
33722
|
-
padding: 20px;
|
|
33723
|
-
border: 1px dashed #d1d5db;
|
|
33724
|
-
border-radius: 12px;
|
|
33725
|
-
color: #6b7280;
|
|
33726
|
-
background: #fafafa;
|
|
33727
|
-
}
|
|
33728
|
-
|
|
33729
|
-
.itinerary-default-items {
|
|
33730
|
-
border: 1px solid #e5e7eb;
|
|
33731
|
-
border-radius: 16px;
|
|
33732
|
-
padding: 20px;
|
|
33733
|
-
background: #fff;
|
|
33734
|
-
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
|
|
33735
|
-
}
|
|
33736
|
-
|
|
33737
|
-
.itinerary-default-items__title {
|
|
33738
|
-
margin: 0 0 16px;
|
|
33739
|
-
font-size: 22px;
|
|
33740
|
-
}
|
|
33741
|
-
|
|
33742
|
-
@media (max-width: 768px) {
|
|
33743
|
-
.itinerary-shell {
|
|
33744
|
-
padding: 16px;
|
|
33745
|
-
}
|
|
33746
|
-
}
|
|
33747
|
-
|
|
33748
|
-
${itinerary?.styleSheetBody ?? ''}
|
|
33749
|
-
</style>
|
|
33750
|
-
|
|
33751
|
-
${html}
|
|
33587
|
+
shadowRoot.innerHTML = `
|
|
33588
|
+
<style>
|
|
33589
|
+
:host {
|
|
33590
|
+
all: initial;
|
|
33591
|
+
display: block;
|
|
33592
|
+
width: 100%;
|
|
33593
|
+
}
|
|
33594
|
+
|
|
33595
|
+
*,
|
|
33596
|
+
*::before,
|
|
33597
|
+
*::after {
|
|
33598
|
+
box-sizing: border-box;
|
|
33599
|
+
}
|
|
33600
|
+
|
|
33601
|
+
.itinerary-shell {
|
|
33602
|
+
width: 100%;
|
|
33603
|
+
margin: 0 auto;
|
|
33604
|
+
font-family: 'Outfit', sans-serif;
|
|
33605
|
+
color: #222;
|
|
33606
|
+
}
|
|
33607
|
+
|
|
33608
|
+
.itinerary-shell__header {
|
|
33609
|
+
margin-bottom: 24px;
|
|
33610
|
+
}
|
|
33611
|
+
|
|
33612
|
+
.itinerary-shell__title {
|
|
33613
|
+
margin: 0;
|
|
33614
|
+
font-size: 32px;
|
|
33615
|
+
line-height: 1.2;
|
|
33616
|
+
}
|
|
33617
|
+
|
|
33618
|
+
.itinerary-shell__content {
|
|
33619
|
+
display: grid;
|
|
33620
|
+
gap: 24px;
|
|
33621
|
+
}
|
|
33622
|
+
|
|
33623
|
+
.itinerary-node {
|
|
33624
|
+
border: 1px solid #e5e7eb;
|
|
33625
|
+
border-radius: 16px;
|
|
33626
|
+
overflow: hidden;
|
|
33627
|
+
background: #fff;
|
|
33628
|
+
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
|
|
33629
|
+
}
|
|
33630
|
+
|
|
33631
|
+
.itinerary-node__header {
|
|
33632
|
+
display: flex;
|
|
33633
|
+
gap: 16px;
|
|
33634
|
+
align-items: center;
|
|
33635
|
+
border-bottom: 1px solid #eef0f2;
|
|
33636
|
+
background: #fafafa;
|
|
33637
|
+
}
|
|
33638
|
+
|
|
33639
|
+
.itinerary-node__day {
|
|
33640
|
+
flex: 50px 0 0;
|
|
33641
|
+
display: flex;
|
|
33642
|
+
flex-flow: column;
|
|
33643
|
+
align-items: center;
|
|
33644
|
+
justify-content: center;
|
|
33645
|
+
background: #1f9470;
|
|
33646
|
+
color: white;
|
|
33647
|
+
border: 1.5px solid var(--tide-booking-color-secondary);
|
|
33648
|
+
}
|
|
33649
|
+
|
|
33650
|
+
.itinerary-node__day-month {
|
|
33651
|
+
margin: 0px;
|
|
33652
|
+
}
|
|
33653
|
+
|
|
33654
|
+
.itinerary-node__day-day {
|
|
33655
|
+
margin: 0px;
|
|
33656
|
+
font-weight: var(--tide-booking-search-results-label-date-month-font-weight);
|
|
33657
|
+
color: var(--tide-booking-search-results-label-date-month-color);
|
|
33658
|
+
font-size: 24px;
|
|
33659
|
+
}
|
|
33660
|
+
|
|
33661
|
+
.itinerary-node__title {
|
|
33662
|
+
margin: 0;
|
|
33663
|
+
font-size: 22px;
|
|
33664
|
+
line-height: 1.25;
|
|
33665
|
+
}
|
|
33666
|
+
|
|
33667
|
+
.itinerary-node__content {
|
|
33668
|
+
display: grid;
|
|
33669
|
+
gap: 20px;
|
|
33670
|
+
padding: 20px;
|
|
33671
|
+
}
|
|
33672
|
+
|
|
33673
|
+
.itinerary-node__accommodation-banner {
|
|
33674
|
+
padding: 12px 16px;
|
|
33675
|
+
border: 1px solid #dbeafe;
|
|
33676
|
+
border-radius: 12px;
|
|
33677
|
+
background: #eff6ff;
|
|
33678
|
+
color: #1e3a8a;
|
|
33679
|
+
font-size: 14px;
|
|
33680
|
+
line-height: 1.4;
|
|
33681
|
+
}
|
|
33682
|
+
|
|
33683
|
+
.itinerary-item {
|
|
33684
|
+
display: block;
|
|
33685
|
+
border-radius: 12px;
|
|
33686
|
+
overflow: hidden;
|
|
33687
|
+
background: #fff;
|
|
33688
|
+
}
|
|
33689
|
+
|
|
33690
|
+
/* An item whose template has no content view of its own still has to read as a service. */
|
|
33691
|
+
.itinerary-item__fallback {
|
|
33692
|
+
padding: 16px 20px;
|
|
33693
|
+
border: 1px solid #e5e7eb;
|
|
33694
|
+
border-radius: 12px;
|
|
33695
|
+
}
|
|
33696
|
+
|
|
33697
|
+
.itinerary-item__fallback-title {
|
|
33698
|
+
margin: 0;
|
|
33699
|
+
font-size: 16px;
|
|
33700
|
+
font-weight: 600;
|
|
33701
|
+
color: #111827;
|
|
33702
|
+
}
|
|
33703
|
+
|
|
33704
|
+
.itinerary-item__legs {
|
|
33705
|
+
margin: 8px 0 0;
|
|
33706
|
+
padding-left: 18px;
|
|
33707
|
+
color: #374151;
|
|
33708
|
+
}
|
|
33709
|
+
|
|
33710
|
+
.itinerary-item__legs li + li {
|
|
33711
|
+
margin-top: 4px;
|
|
33712
|
+
}
|
|
33713
|
+
|
|
33714
|
+
.itinerary-item__fallback-details {
|
|
33715
|
+
margin: 8px 0 0;
|
|
33716
|
+
color: #6b7280;
|
|
33717
|
+
}
|
|
33718
|
+
|
|
33719
|
+
.itinerary-node__empty,
|
|
33720
|
+
.itinerary-empty {
|
|
33721
|
+
padding: 20px;
|
|
33722
|
+
border: 1px dashed #d1d5db;
|
|
33723
|
+
border-radius: 12px;
|
|
33724
|
+
color: #6b7280;
|
|
33725
|
+
background: #fafafa;
|
|
33726
|
+
}
|
|
33727
|
+
|
|
33728
|
+
.itinerary-default-items {
|
|
33729
|
+
border: 1px solid #e5e7eb;
|
|
33730
|
+
border-radius: 16px;
|
|
33731
|
+
padding: 20px;
|
|
33732
|
+
background: #fff;
|
|
33733
|
+
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
|
|
33734
|
+
}
|
|
33735
|
+
|
|
33736
|
+
.itinerary-default-items__title {
|
|
33737
|
+
margin: 0 0 16px;
|
|
33738
|
+
font-size: 22px;
|
|
33739
|
+
}
|
|
33740
|
+
|
|
33741
|
+
@media (max-width: 768px) {
|
|
33742
|
+
.itinerary-shell {
|
|
33743
|
+
padding: 16px;
|
|
33744
|
+
}
|
|
33745
|
+
}
|
|
33746
|
+
|
|
33747
|
+
${itinerary?.styleSheetBody ?? ''}
|
|
33748
|
+
</style>
|
|
33749
|
+
|
|
33750
|
+
${html}
|
|
33752
33751
|
`;
|
|
33753
33752
|
}, [html, itinerary?.styleSheetBody, isLoading]);
|
|
33754
33753
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
@@ -34342,6 +34341,7 @@ const getNodeIcon = (node) => {
|
|
|
34342
34341
|
const isRenderableNode = (node) => node.trajectNodeType === REGULAR_TRAJECT_NODE_TYPE &&
|
|
34343
34342
|
(node.serviceType === ACCOMMODATION_SERVICE_TYPE || node.serviceType === EXCURSION_SERVICE_TYPE || node.serviceType === FLIGHT_SERVICE_TYPE);
|
|
34344
34343
|
const MAX_DAY_ACTIVITIES = 6;
|
|
34344
|
+
const MAX_HOTEL_RESULTS = 6;
|
|
34345
34345
|
const TrajectResults = ({ isLoading }) => {
|
|
34346
34346
|
const context = React.useContext(SearchResultsConfigurationContext);
|
|
34347
34347
|
const dispatch = reactRedux.useDispatch();
|
|
@@ -34351,6 +34351,8 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
34351
34351
|
const { trajectNodeAvailability, trajectFlightAvailability, trajectDaySuggestions, editablePackagingEntry } = reactRedux.useSelector((state) => state.searchResults);
|
|
34352
34352
|
const trajectEntry = context?.trajectEntry;
|
|
34353
34353
|
const hideShowMoreResults = !!context?.hideShowMoreResults;
|
|
34354
|
+
const loadDayActivitiesOnDemand = !!context?.loadDayActivitiesOnDemand;
|
|
34355
|
+
const showNonPreferredHotels = !!context?.showNonPreferredHotels;
|
|
34354
34356
|
const nodesWithLines = React.useMemo(() => (trajectEntry ? getTrajectNodesWithLines(trajectEntry) : []), [trajectEntry]);
|
|
34355
34357
|
const lineByNodeId = React.useMemo(() => new Map(nodesWithLines.map((x) => [x.node.nodeId, x])), [nodesWithLines]);
|
|
34356
34358
|
const nodesByDay = React.useMemo(() => {
|
|
@@ -34388,13 +34390,14 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
34388
34390
|
/**
|
|
34389
34391
|
* Each day's activities are one more search, and a traject has as many as it has days. They go
|
|
34390
34392
|
* out together, but only once the trip itself has resolved — sharing the connections with the
|
|
34391
|
-
* searches the trip cannot do without would only make those slower.
|
|
34393
|
+
* searches the trip cannot do without would only make those slower. A portal can turn the
|
|
34394
|
+
* automatic load off, and then each day waits for its own "show activities" click instead.
|
|
34392
34395
|
*/
|
|
34393
34396
|
React.useEffect(() => {
|
|
34394
|
-
if (!trajectEntry || !tripResolved)
|
|
34397
|
+
if (!trajectEntry || !tripResolved || loadDayActivitiesOnDemand)
|
|
34395
34398
|
return;
|
|
34396
34399
|
(trajectEntry.traject.days ?? []).filter((day) => stayByDay.has(day.order)).forEach((day) => loadDay(day));
|
|
34397
|
-
}, [trajectEntry, tripResolved, stayByDay]);
|
|
34400
|
+
}, [trajectEntry, tripResolved, stayByDay, loadDayActivitiesOnDemand]);
|
|
34398
34401
|
if (!context || !trajectEntry)
|
|
34399
34402
|
return null;
|
|
34400
34403
|
const handleSelect = (item, code) => {
|
|
@@ -34468,6 +34471,10 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
34468
34471
|
const selected = results.find((x) => x.code === availability?.selectedCode) ?? null;
|
|
34469
34472
|
const configured = results.filter((x) => x.code !== selected?.code && !!findCandidateForResult(node, x));
|
|
34470
34473
|
const others = results.filter((x) => x.code !== selected?.code && !findCandidateForResult(node, x));
|
|
34474
|
+
// A hotel row holds the hotels configured on the node; a portal can also let it fill up with
|
|
34475
|
+
// non-preferred hotels found in the area, the rest staying behind "show more".
|
|
34476
|
+
const fill = showNonPreferredHotels && node.serviceType === ACCOMMODATION_SERVICE_TYPE ? others.slice(0, Math.max(MAX_HOTEL_RESULTS - 1 - configured.length, 0)) : [];
|
|
34477
|
+
const remaining = others.length - fill.length;
|
|
34471
34478
|
// No entry yet means the node's search has been queued but not dispatched — still loading.
|
|
34472
34479
|
const status = availability?.status ?? 'loading';
|
|
34473
34480
|
return (React__default["default"].createElement(React__default["default"].Fragment, { key: line.guid },
|
|
@@ -34487,12 +34494,12 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
34487
34494
|
node.preferredAccommodationName,
|
|
34488
34495
|
" \u2014 ",
|
|
34489
34496
|
translations.SRP.NO_RESULTS))),
|
|
34490
|
-
React__default["default"].createElement("div", { className: "search__results__cards search__results__cards--scroll" }, [selected, ...configured].map((result) => (React__default["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 })))),
|
|
34491
|
-
|
|
34497
|
+
React__default["default"].createElement("div", { className: "search__results__cards search__results__cards--scroll" }, [selected, ...configured, ...fill].map((result) => (React__default["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 })))),
|
|
34498
|
+
remaining > 0 && !hideShowMoreResults && (React__default["default"].createElement("div", { className: "search__results__cards__actions" },
|
|
34492
34499
|
React__default["default"].createElement("button", { type: "button", className: "cta cta--secondary", onClick: () => handleShowMore(item) },
|
|
34493
34500
|
translations.SRP.SHOW_MORE,
|
|
34494
34501
|
" (",
|
|
34495
|
-
|
|
34502
|
+
remaining,
|
|
34496
34503
|
")")))))));
|
|
34497
34504
|
};
|
|
34498
34505
|
const handleSelectFlight = (item, flight) => {
|
|
@@ -34583,6 +34590,7 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
34583
34590
|
return null;
|
|
34584
34591
|
const visible = cards.slice(0, MAX_DAY_ACTIVITIES);
|
|
34585
34592
|
const hidden = cards.length - visible.length;
|
|
34593
|
+
const awaitsRequest = loadDayActivitiesOnDemand && !suggestions && canSearch && !nodesResolving && hidden === 0;
|
|
34586
34594
|
return (React__default["default"].createElement(React__default["default"].Fragment, { key: `activities-${day.order}` },
|
|
34587
34595
|
React__default["default"].createElement("div", { className: "search__results__label search__results__label--sub" },
|
|
34588
34596
|
React__default["default"].createElement("div", { className: "search__results__label__text" },
|
|
@@ -34592,11 +34600,13 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
34592
34600
|
(nodesResolving || isSearching) && !cards.length && React__default["default"].createElement(Spinner, { label: translations.SRP.LOADING_ACTIVITIES }),
|
|
34593
34601
|
!!cards.length && React__default["default"].createElement("div", { className: "search__results__cards search__results__cards--scroll" }, visible.map(renderActivityCard)),
|
|
34594
34602
|
!nodesResolving && !isSearching && !cards.length && (!!items.length || !!suggestions) && (React__default["default"].createElement("div", { className: "no-results" }, translations.SRP.NO_RESULTS)),
|
|
34595
|
-
React__default["default"].createElement("div", { className: "search__results__cards__actions" },
|
|
34596
|
-
translations.SRP.
|
|
34597
|
-
|
|
34598
|
-
|
|
34599
|
-
|
|
34603
|
+
React__default["default"].createElement("div", { className: "search__results__cards__actions" },
|
|
34604
|
+
awaitsRequest && (React__default["default"].createElement("button", { type: "button", className: "cta cta--secondary", onClick: () => loadDay(day) }, translations.SRP.SHOW_ACTIVITIES)),
|
|
34605
|
+
hidden > 0 && !hideShowMoreResults && (React__default["default"].createElement("button", { type: "button", className: "cta cta--secondary", onClick: () => handleShowMoreActivities(day.order) },
|
|
34606
|
+
translations.SRP.SHOW_MORE,
|
|
34607
|
+
" (",
|
|
34608
|
+
hidden,
|
|
34609
|
+
")")))));
|
|
34600
34610
|
};
|
|
34601
34611
|
/**
|
|
34602
34612
|
* An activity the traject books is swapped for another, the way a hotel is; one the traveller
|
|
@@ -38961,20 +38971,20 @@ function ItineraryMapView({ destinations: propDestinations, adults = 2, dateFrom
|
|
|
38961
38971
|
const isStartEnd = dest.isStart || dest.isEnd;
|
|
38962
38972
|
let iconHtml;
|
|
38963
38973
|
if (isStartEnd) {
|
|
38964
|
-
iconHtml = `
|
|
38965
|
-
<div class="map-view__marker map-view__marker--plane">
|
|
38966
|
-
<svg viewBox="0 0 576 512" fill="currentColor" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
|
|
38967
|
-
<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"/>
|
|
38968
|
-
</svg>
|
|
38974
|
+
iconHtml = `
|
|
38975
|
+
<div class="map-view__marker map-view__marker--plane">
|
|
38976
|
+
<svg viewBox="0 0 576 512" fill="currentColor" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
|
|
38977
|
+
<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"/>
|
|
38978
|
+
</svg>
|
|
38969
38979
|
</div>`;
|
|
38970
38980
|
}
|
|
38971
38981
|
else {
|
|
38972
38982
|
stopIndex++;
|
|
38973
38983
|
const imgStyle = dest.imageUrl ? `style="background-image:url('${dest.imageUrl}')"` : '';
|
|
38974
|
-
iconHtml = `
|
|
38975
|
-
<div class="map-view__marker map-view__marker--stop" ${imgStyle}>
|
|
38976
|
-
${!dest.imageUrl ? `<span class="map-view__marker-number">${stopIndex}</span>` : ''}
|
|
38977
|
-
<span class="map-view__marker-badge">${stopIndex}</span>
|
|
38984
|
+
iconHtml = `
|
|
38985
|
+
<div class="map-view__marker map-view__marker--stop" ${imgStyle}>
|
|
38986
|
+
${!dest.imageUrl ? `<span class="map-view__marker-number">${stopIndex}</span>` : ''}
|
|
38987
|
+
<span class="map-view__marker-badge">${stopIndex}</span>
|
|
38978
38988
|
</div>`;
|
|
38979
38989
|
}
|
|
38980
38990
|
const icon = L.divIcon({
|