@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.
Files changed (75) hide show
  1. package/build/build-cjs/index.js +290 -280
  2. package/build/build-cjs/src/search-results/types.d.ts +12 -0
  3. package/build/build-esm/index.js +290 -280
  4. package/build/build-esm/src/search-results/types.d.ts +12 -0
  5. package/package.json +2 -2
  6. package/styles/abstracts/_mixins.scss +74 -74
  7. package/styles/abstracts/_variables.scss +57 -57
  8. package/styles/base/_fonts.scss +2 -2
  9. package/styles/base/_normalize.scss +227 -227
  10. package/styles/base/_typography.scss +35 -35
  11. package/styles/booking-joker-variables.scss +596 -596
  12. package/styles/booking-product-variables.scss +330 -330
  13. package/styles/booking-product.scss +438 -438
  14. package/styles/booking-qsm-variables.scss +501 -501
  15. package/styles/booking-qsm.scss +52 -52
  16. package/styles/booking-search-results-variables.scss +734 -734
  17. package/styles/booking-search-results.scss +53 -53
  18. package/styles/booking-wizard-variables.scss +603 -603
  19. package/styles/booking-wizard.scss +61 -61
  20. package/styles/components/_accordion.scss +67 -67
  21. package/styles/components/_animations.scss +39 -39
  22. package/styles/components/_base.scss +107 -107
  23. package/styles/components/_booking.scss +906 -906
  24. package/styles/components/_breadcrumb.scss +92 -92
  25. package/styles/components/_button.scss +238 -238
  26. package/styles/components/_checkbox.scss +230 -230
  27. package/styles/components/_contact.scss +255 -255
  28. package/styles/components/_content.scss +336 -336
  29. package/styles/components/_cta.scss +238 -238
  30. package/styles/components/_date-list.scss +41 -41
  31. package/styles/components/_date-range-picker.scss +223 -223
  32. package/styles/components/_decrement-increment.scss +35 -35
  33. package/styles/components/_dropdown.scss +77 -77
  34. package/styles/components/_error.scss +50 -50
  35. package/styles/components/_faq.scss +30 -30
  36. package/styles/components/_flight-option.scss +1432 -1432
  37. package/styles/components/_flyin.scss +830 -830
  38. package/styles/components/_footer.scss +135 -135
  39. package/styles/components/_form.scss +1693 -1693
  40. package/styles/components/_gallery.scss +317 -317
  41. package/styles/components/_header.scss +113 -113
  42. package/styles/components/_image-with-text.scss +206 -206
  43. package/styles/components/_img-slider.scss +175 -175
  44. package/styles/components/_info-message.scss +75 -75
  45. package/styles/components/_input.scss +35 -35
  46. package/styles/components/_list.scss +185 -185
  47. package/styles/components/_loader.scss +152 -152
  48. package/styles/components/_login.scss +140 -140
  49. package/styles/components/_map-view.scss +1100 -1100
  50. package/styles/components/_mixins.scss +579 -579
  51. package/styles/components/_navbar.scss +765 -765
  52. package/styles/components/_passenger-picker.scss +306 -306
  53. package/styles/components/_phone-input.scss +8 -8
  54. package/styles/components/_placeholders.scss +165 -165
  55. package/styles/components/_pricing-summary.scss +163 -163
  56. package/styles/components/_qsm.scss +17 -17
  57. package/styles/components/_radiobutton.scss +170 -170
  58. package/styles/components/_search.scss +2197 -2197
  59. package/styles/components/_select-wrapper.scss +81 -81
  60. package/styles/components/_slider.scss +128 -128
  61. package/styles/components/_spinner.scss +29 -29
  62. package/styles/components/_step-indicators.scss +187 -187
  63. package/styles/components/_table.scss +81 -81
  64. package/styles/components/_tide-form.scss +578 -578
  65. package/styles/components/_tree.scss +648 -648
  66. package/styles/components/_typeahead.scss +275 -275
  67. package/styles/components/_variables.scss +89 -89
  68. package/styles/content-blocks-variables.scss +543 -543
  69. package/styles/content-blocks.scss +66 -66
  70. package/styles/font.scss +2 -2
  71. package/styles/qsm/_calendar.scss +274 -274
  72. package/styles/qsm/_qsm.scss +1097 -1097
  73. package/styles/search.scss +1200 -1200
  74. package/styles/tide-form-variables.scss +275 -275
  75. package/styles/tide-form.scss +56 -56
@@ -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 elementer for denne dag."
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 Elemente für diesen Tag."
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 items for this day."
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 elementos para este día."
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: "Aucun élément pour ce jour."
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: "Aucun élément pour ce jour."
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: "Engar upplýsingar fyrir þennan dag."
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: "Nessun elemento per questo giorno."
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 elementen voor deze dag."
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 elementen voor deze dag."
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 elementer for denne dagen."
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: "Brak elementów dla tego dnia."
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: "Nenhum item para este dia."
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 element för denna dag."
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}`, onChange: (newMin, newMax) => {
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
- others.length > 0 && !hideShowMoreResults && (React__default.createElement("div", { className: "search__results__cards__actions" },
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
- others.length,
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" }, hidden > 0 && !hideShowMoreResults && (React__default.createElement("button", { type: "button", className: "cta cta--secondary", onClick: () => handleShowMoreActivities(day.order) },
34567
- translations.SRP.SHOW_MORE,
34568
- " (",
34569
- hidden,
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({