@qite/tide-booking-component 1.4.68 → 1.4.70

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 (62) hide show
  1. package/build/build-cjs/index.js +658 -463
  2. package/build/build-cjs/src/qsm/store/qsm-slice.d.ts +4 -4
  3. package/build/build-cjs/src/qsm/types.d.ts +2 -3
  4. package/build/build-cjs/src/search-results/components/filters/filters.d.ts +1 -1
  5. package/build/build-cjs/src/search-results/components/filters/utility.d.ts +2 -2
  6. package/build/build-cjs/src/search-results/components/group-tour/group-tour-card.d.ts +8 -0
  7. package/build/build-cjs/src/search-results/components/group-tour/group-tour-results.d.ts +6 -0
  8. package/build/build-cjs/src/search-results/components/hotel/hotel-accommodation-results.d.ts +0 -2
  9. package/build/build-cjs/src/search-results/store/search-results-slice.d.ts +3 -6
  10. package/build/build-cjs/src/search-results/types.d.ts +7 -2
  11. package/build/build-cjs/src/search-results/utils/search-results-utils.d.ts +3 -0
  12. package/build/build-cjs/src/shared/components/flyin.d.ts +1 -1
  13. package/build/build-cjs/src/shared/types.d.ts +12 -0
  14. package/build/build-cjs/src/shared/utils/localization-util.d.ts +4 -0
  15. package/build/build-esm/index.js +656 -462
  16. package/build/build-esm/src/qsm/store/qsm-slice.d.ts +4 -4
  17. package/build/build-esm/src/qsm/types.d.ts +2 -3
  18. package/build/build-esm/src/search-results/components/filters/filters.d.ts +1 -1
  19. package/build/build-esm/src/search-results/components/filters/utility.d.ts +2 -2
  20. package/build/build-esm/src/search-results/components/group-tour/group-tour-card.d.ts +8 -0
  21. package/build/build-esm/src/search-results/components/group-tour/group-tour-results.d.ts +6 -0
  22. package/build/build-esm/src/search-results/components/hotel/hotel-accommodation-results.d.ts +0 -2
  23. package/build/build-esm/src/search-results/store/search-results-slice.d.ts +3 -6
  24. package/build/build-esm/src/search-results/types.d.ts +7 -2
  25. package/build/build-esm/src/search-results/utils/search-results-utils.d.ts +3 -0
  26. package/build/build-esm/src/shared/components/flyin.d.ts +1 -1
  27. package/build/build-esm/src/shared/types.d.ts +12 -0
  28. package/build/build-esm/src/shared/utils/localization-util.d.ts +4 -0
  29. package/package.json +1 -1
  30. package/src/qsm/components/QSMContainer/qsm-container.tsx +18 -7
  31. package/src/qsm/components/icon.tsx +16 -0
  32. package/src/qsm/store/qsm-slice.ts +4 -4
  33. package/src/qsm/types.ts +2 -4
  34. package/src/search-results/components/filters/filters.tsx +136 -293
  35. package/src/search-results/components/filters/utility.tsx +61 -2
  36. package/src/search-results/components/group-tour/group-tour-card.tsx +86 -0
  37. package/src/search-results/components/group-tour/group-tour-results.tsx +40 -0
  38. package/src/search-results/components/hotel/hotel-accommodation-results.tsx +13 -16
  39. package/src/search-results/components/icon.tsx +18 -0
  40. package/src/search-results/components/search-results-container/search-results-container.tsx +31 -19
  41. package/src/search-results/store/search-results-slice.ts +8 -2
  42. package/src/search-results/types.ts +9 -2
  43. package/src/search-results/utils/search-results-utils.ts +42 -0
  44. package/src/shared/components/flyin.tsx +2 -1
  45. package/src/shared/translations/ar-SA.json +4 -2
  46. package/src/shared/translations/da-DK.json +4 -2
  47. package/src/shared/translations/de-DE.json +4 -2
  48. package/src/shared/translations/en-GB.json +4 -2
  49. package/src/shared/translations/es-ES.json +4 -2
  50. package/src/shared/translations/fr-BE.json +4 -2
  51. package/src/shared/translations/fr-FR.json +4 -2
  52. package/src/shared/translations/is-IS.json +4 -2
  53. package/src/shared/translations/it-IT.json +4 -2
  54. package/src/shared/translations/ja-JP.json +4 -2
  55. package/src/shared/translations/nl-BE.json +4 -2
  56. package/src/shared/translations/nl-NL.json +4 -2
  57. package/src/shared/translations/no-NO.json +4 -2
  58. package/src/shared/translations/pl-PL.json +4 -2
  59. package/src/shared/translations/pt-PT.json +4 -2
  60. package/src/shared/translations/sv-SE.json +4 -2
  61. package/src/shared/types.ts +13 -0
  62. package/src/shared/utils/localization-util.ts +16 -0
@@ -571,7 +571,8 @@ var QSM$g = {
571
571
  DEPARTURE_DATE: 'تاريخ المغادرة',
572
572
  RETURN_DATE: 'تاريخ العودة',
573
573
  CONFIRM: 'تأكيد',
574
- TRAVELERS: 'المسافرون'
574
+ TRAVELERS: 'المسافرون',
575
+ GROUP_TOUR: 'جولة جماعية'
575
576
  };
576
577
  var SRP$f = {
577
578
  NO_RESULTS: 'لم يتم العثور على نتائج.',
@@ -619,7 +620,8 @@ var SRP$f = {
619
620
  DEPARTURE_TIME_ASC: 'وقت المغادرة تصاعدياً',
620
621
  DEPARTURE_TIME_DESC: 'وقت المغادرة تنازلياً',
621
622
  DURATION_ASC: 'المدة تصاعدياً',
622
- DURATION_DESC: 'المدة تنازلياً'
623
+ DURATION_DESC: 'المدة تنازلياً',
624
+ TRAVEL_GROUP: 'مجموعة المسافرين'
623
625
  };
624
626
  var arJson = {
625
627
  STEPS: STEPS$f,
@@ -969,7 +971,8 @@ var QSM$f = {
969
971
  DEPARTURE_DATE: 'Afrejsedato',
970
972
  RETURN_DATE: 'Hjemrejsedato',
971
973
  CONFIRM: 'Bekræft',
972
- TRAVELERS: 'Rejsende'
974
+ TRAVELERS: 'Rejsende',
975
+ GROUP_TOUR: 'Grupperejse'
973
976
  };
974
977
  var SRP$e = {
975
978
  NO_RESULTS: 'Ingen resultater fundet.',
@@ -1017,7 +1020,8 @@ var SRP$e = {
1017
1020
  DEPARTURE_TIME_ASC: 'Afgangstid stigende',
1018
1021
  DEPARTURE_TIME_DESC: 'Afgangstid faldende',
1019
1022
  DURATION_ASC: 'Varighed stigende',
1020
- DURATION_DESC: 'Varighed faldende'
1023
+ DURATION_DESC: 'Varighed faldende',
1024
+ TRAVEL_GROUP: 'Rejseselskab'
1021
1025
  };
1022
1026
  var daJson = {
1023
1027
  STEPS: STEPS$e,
@@ -1368,7 +1372,8 @@ var QSM$e = {
1368
1372
  DEPARTURE_DATE: 'Abreisedatum',
1369
1373
  RETURN_DATE: 'Rückreisedatum',
1370
1374
  CONFIRM: 'Bestätigen',
1371
- TRAVELERS: 'Reisende'
1375
+ TRAVELERS: 'Reisende',
1376
+ GROUP_TOUR: 'Gruppentour'
1372
1377
  };
1373
1378
  var SRP$d = {
1374
1379
  NO_RESULTS: 'Keine Ergebnisse gefunden.',
@@ -1416,7 +1421,8 @@ var SRP$d = {
1416
1421
  DEPARTURE_RANGE: 'Abflugzeitraum',
1417
1422
  DEPARTURE_AIRPORTS: 'Abflughäfen',
1418
1423
  ARRIVAL_AIRPORTS: 'Ankunftsflughäfen',
1419
- PRICE: 'Preis'
1424
+ PRICE: 'Preis',
1425
+ TRAVEL_GROUP: 'Reisegruppe'
1420
1426
  };
1421
1427
  var deJson = {
1422
1428
  STEPS: STEPS$d,
@@ -1770,7 +1776,8 @@ var QSM$d = {
1770
1776
  DEPARTURE_DATE: 'Departure date',
1771
1777
  RETURN_DATE: 'Return date',
1772
1778
  CONFIRM: 'Confirm',
1773
- TRAVELERS: 'Travelers'
1779
+ TRAVELERS: 'Travelers',
1780
+ GROUP_TOUR: 'Group tour'
1774
1781
  };
1775
1782
  var SRP$c = {
1776
1783
  NO_RESULTS: 'No results found.',
@@ -1818,7 +1825,8 @@ var SRP$c = {
1818
1825
  NIGHT_RANGE: 'Night',
1819
1826
  DEPARTURE_RANGE: 'Departure range',
1820
1827
  DEPARTURE_AIRPORTS: 'Departure airports',
1821
- ARRIVAL_AIRPORTS: 'Arrival airports'
1828
+ ARRIVAL_AIRPORTS: 'Arrival airports',
1829
+ TRAVEL_GROUP: 'Travel group'
1822
1830
  };
1823
1831
  var enJson = {
1824
1832
  STEPS: STEPS$c,
@@ -2169,7 +2177,8 @@ var QSM$c = {
2169
2177
  DEPARTURE_DATE: 'Fecha de salida',
2170
2178
  RETURN_DATE: 'Fecha de regreso',
2171
2179
  CONFIRM: 'Confirmar',
2172
- TRAVELERS: 'Viajeros'
2180
+ TRAVELERS: 'Viajeros',
2181
+ GROUP_TOUR: 'Tour grupal'
2173
2182
  };
2174
2183
  var SRP$b = {
2175
2184
  NO_RESULTS: 'No se han encontrado resultados.',
@@ -2217,7 +2226,8 @@ var SRP$b = {
2217
2226
  DEPARTURE_RANGE: 'Franja de salida',
2218
2227
  DEPARTURE_AIRPORTS: 'Aeropuertos de salida',
2219
2228
  ARRIVAL_AIRPORTS: 'Aeropuertos de llegada',
2220
- PRICE: 'Precio'
2229
+ PRICE: 'Precio',
2230
+ TRAVEL_GROUP: 'Grupo de viaje'
2221
2231
  };
2222
2232
  var esJson = {
2223
2233
  STEPS: STEPS$b,
@@ -2572,7 +2582,8 @@ var QSM$b = {
2572
2582
  DEPARTURE_DATE: 'Date de départ',
2573
2583
  RETURN_DATE: 'Date de retour',
2574
2584
  CONFIRM: 'Confirmer',
2575
- TRAVELERS: 'Voyageurs'
2585
+ TRAVELERS: 'Voyageurs',
2586
+ GROUP_TOUR: 'Tour en groupe'
2576
2587
  };
2577
2588
  var SRP$a = {
2578
2589
  NO_RESULTS: 'Aucun résultat trouvé.',
@@ -2620,7 +2631,8 @@ var SRP$a = {
2620
2631
  DEPARTURE_RANGE: 'Plage de départ',
2621
2632
  DEPARTURE_AIRPORTS: 'Aéroports de départ',
2622
2633
  ARRIVAL_AIRPORTS: 'Aéroports d’arrivée',
2623
- PRICE: 'Prix'
2634
+ PRICE: 'Prix',
2635
+ TRAVEL_GROUP: 'Groupe de voyageurs'
2624
2636
  };
2625
2637
  var frBeJson = {
2626
2638
  STEPS: STEPS$a,
@@ -2970,7 +2982,8 @@ var QSM$a = {
2970
2982
  DEPARTURE_DATE: 'Date de départ',
2971
2983
  RETURN_DATE: 'Date de retour',
2972
2984
  CONFIRM: 'Confirmer',
2973
- TRAVELERS: 'Voyageurs'
2985
+ TRAVELERS: 'Voyageurs',
2986
+ GROUP_TOUR: 'Tour en groupe'
2974
2987
  };
2975
2988
  var SRP$9 = {
2976
2989
  NO_RESULTS: 'Aucun résultat trouvé.',
@@ -3018,7 +3031,8 @@ var SRP$9 = {
3018
3031
  DEPARTURE_RANGE: 'Plage de départ',
3019
3032
  DEPARTURE_AIRPORTS: 'Aéroports de départ',
3020
3033
  ARRIVAL_AIRPORTS: 'Aéroports d’arrivée',
3021
- PRICE: 'Prix'
3034
+ PRICE: 'Prix',
3035
+ TRAVEL_GROUP: 'Groupe de voyageurs'
3022
3036
  };
3023
3037
  var frFrJson = {
3024
3038
  STEPS: STEPS$9,
@@ -3368,7 +3382,8 @@ var QSM$9 = {
3368
3382
  DEPARTURE_DATE: 'Brottfarardagur',
3369
3383
  RETURN_DATE: 'Heimkomudagur',
3370
3384
  CONFIRM: 'Staðfesta',
3371
- TRAVELERS: 'Ferðalangar'
3385
+ TRAVELERS: 'Ferðalangar',
3386
+ GROUP_TOUR: 'Ferð í hóp'
3372
3387
  };
3373
3388
  var SRP$8 = {
3374
3389
  NO_RESULTS: 'Engar niðurstöður fundust.',
@@ -3416,7 +3431,8 @@ var SRP$8 = {
3416
3431
  DEPARTURE_RANGE: 'Brottfarartímabil',
3417
3432
  DEPARTURE_AIRPORTS: 'Brottfararflugvellir',
3418
3433
  ARRIVAL_AIRPORTS: 'Komuflugvellir',
3419
- PRICE: 'Verð'
3434
+ PRICE: 'Verð',
3435
+ TRAVEL_GROUP: 'Ferðahópur'
3420
3436
  };
3421
3437
  var isJson = {
3422
3438
  STEPS: STEPS$8,
@@ -3767,7 +3783,8 @@ var QSM$8 = {
3767
3783
  DEPARTURE_DATE: 'Data di partenza',
3768
3784
  RETURN_DATE: 'Data di ritorno',
3769
3785
  CONFIRM: 'Conferma',
3770
- TRAVELERS: 'Viaggiatori'
3786
+ TRAVELERS: 'Viaggiatori',
3787
+ GROUP_TOUR: 'Tour di gruppo'
3771
3788
  };
3772
3789
  var SRP$7 = {
3773
3790
  NO_RESULTS: 'Nessun risultato trovato.',
@@ -3815,7 +3832,8 @@ var SRP$7 = {
3815
3832
  DEPARTURE_RANGE: 'Fascia di partenza',
3816
3833
  DEPARTURE_AIRPORTS: 'Aeroporti di partenza',
3817
3834
  ARRIVAL_AIRPORTS: 'Aeroporti di arrivo',
3818
- PRICE: 'Prezzo'
3835
+ PRICE: 'Prezzo',
3836
+ TRAVEL_GROUP: 'Gruppo di viaggio'
3819
3837
  };
3820
3838
  var itJson = {
3821
3839
  STEPS: STEPS$7,
@@ -4170,7 +4188,8 @@ var QSM$7 = {
4170
4188
  DEPARTURE_DATE: 'Vertrekdatum',
4171
4189
  RETURN_DATE: 'Terugkeerdatum',
4172
4190
  CONFIRM: 'Bevestigen',
4173
- TRAVELERS: 'Reizigers'
4191
+ TRAVELERS: 'Reizigers',
4192
+ GROUP_TOUR: 'Groepsreis'
4174
4193
  };
4175
4194
  var SRP$6 = {
4176
4195
  NO_RESULTS: 'Geen resultaten gevonden.',
@@ -4218,7 +4237,8 @@ var SRP$6 = {
4218
4237
  DEPARTURE_RANGE: 'Vertrektijdstip',
4219
4238
  DEPARTURE_AIRPORTS: 'Vertrekluchthavens',
4220
4239
  ARRIVAL_AIRPORTS: 'Aankomstluchthavens',
4221
- PRICE: 'Prijs'
4240
+ PRICE: 'Prijs',
4241
+ TRAVEL_GROUP: 'Reisgezelschap'
4222
4242
  };
4223
4243
  var nlBeJson = {
4224
4244
  STEPS: STEPS$6,
@@ -4569,7 +4589,8 @@ var QSM$6 = {
4569
4589
  DEPARTURE_DATE: 'Vertrekdatum',
4570
4590
  RETURN_DATE: 'Terugkeerdatum',
4571
4591
  CONFIRM: 'Bevestigen',
4572
- TRAVELERS: 'Reizigers'
4592
+ TRAVELERS: 'Reizigers',
4593
+ GROUP_TOUR: 'Groepsreis'
4573
4594
  };
4574
4595
  var SRP$5 = {
4575
4596
  NO_RESULTS: 'Geen resultaten gevonden.',
@@ -4617,7 +4638,8 @@ var SRP$5 = {
4617
4638
  DEPARTURE_RANGE: 'Vertrektijdstip',
4618
4639
  DEPARTURE_AIRPORTS: 'Vertrekluchthavens',
4619
4640
  ARRIVAL_AIRPORTS: 'Aankomstluchthavens',
4620
- PRICE: 'Prijs'
4641
+ PRICE: 'Prijs',
4642
+ TRAVEL_GROUP: 'Reisgezelschap'
4621
4643
  };
4622
4644
  var nlNlJson = {
4623
4645
  STEPS: STEPS$5,
@@ -4968,7 +4990,8 @@ var QSM$5 = {
4968
4990
  DEPARTURE_DATE: 'Avreisedato',
4969
4991
  RETURN_DATE: 'Returdato',
4970
4992
  CONFIRM: 'Bekreft',
4971
- TRAVELERS: 'Reisende'
4993
+ TRAVELERS: 'Reisende',
4994
+ GROUP_TOUR: 'Gruppetur'
4972
4995
  };
4973
4996
  var SRP$4 = {
4974
4997
  NO_RESULTS: 'Ingen resultater funnet.',
@@ -5016,7 +5039,8 @@ var SRP$4 = {
5016
5039
  DEPARTURE_RANGE: 'Avgangsperiode',
5017
5040
  DEPARTURE_AIRPORTS: 'Avgangsflyplasser',
5018
5041
  ARRIVAL_AIRPORTS: 'Ankomstflyplasser',
5019
- PRICE: 'Pris'
5042
+ PRICE: 'Pris',
5043
+ TRAVEL_GROUP: 'Reisefølge'
5020
5044
  };
5021
5045
  var noJson = {
5022
5046
  STEPS: STEPS$4,
@@ -5367,7 +5391,8 @@ var QSM$4 = {
5367
5391
  DEPARTURE_DATE: 'Data wyjazdu',
5368
5392
  RETURN_DATE: 'Data powrotu',
5369
5393
  CONFIRM: 'Potwierdź',
5370
- TRAVELERS: 'Podróżni'
5394
+ TRAVELERS: 'Podróżni',
5395
+ GROUP_TOUR: 'Tour w grupie'
5371
5396
  };
5372
5397
  var SRP$3 = {
5373
5398
  NO_RESULTS: 'Nie znaleziono wyników.',
@@ -5415,7 +5440,8 @@ var SRP$3 = {
5415
5440
  DEPARTURE_RANGE: 'Zakres wylotu',
5416
5441
  DEPARTURE_AIRPORTS: 'Lotniska wylotu',
5417
5442
  ARRIVAL_AIRPORTS: 'Lotniska przylotu',
5418
- PRICE: 'Cena'
5443
+ PRICE: 'Cena',
5444
+ TRAVEL_GROUP: 'Grupa podróżnych'
5419
5445
  };
5420
5446
  var plJson = {
5421
5447
  STEPS: STEPS$3,
@@ -5766,7 +5792,8 @@ var QSM$3 = {
5766
5792
  DEPARTURE_DATE: 'Data de partida',
5767
5793
  RETURN_DATE: 'Data de regresso',
5768
5794
  CONFIRM: 'Confirmar',
5769
- TRAVELERS: 'Viajantes'
5795
+ TRAVELERS: 'Viajantes',
5796
+ GROUP_TOUR: 'Tour em grupo'
5770
5797
  };
5771
5798
  var SRP$2 = {
5772
5799
  NO_RESULTS: 'Nenhum resultado encontrado.',
@@ -5814,7 +5841,8 @@ var SRP$2 = {
5814
5841
  DEPARTURE_RANGE: 'Intervalo de partida',
5815
5842
  DEPARTURE_AIRPORTS: 'Aeroportos de partida',
5816
5843
  ARRIVAL_AIRPORTS: 'Aeroportos de chegada',
5817
- PRICE: 'Preço'
5844
+ PRICE: 'Preço',
5845
+ TRAVEL_GROUP: 'Grupo de viajantes'
5818
5846
  };
5819
5847
  var ptJson = {
5820
5848
  STEPS: STEPS$2,
@@ -6165,7 +6193,8 @@ var QSM$2 = {
6165
6193
  DEPARTURE_DATE: 'Avresedatum',
6166
6194
  RETURN_DATE: 'Hemresedatum',
6167
6195
  CONFIRM: 'Bekräfta',
6168
- TRAVELERS: 'Resenärer'
6196
+ TRAVELERS: 'Resenärer',
6197
+ GROUP_TOUR: 'Gruppresa'
6169
6198
  };
6170
6199
  var SRP$1 = {
6171
6200
  NO_RESULTS: 'Inga resultat hittades.',
@@ -6213,7 +6242,8 @@ var SRP$1 = {
6213
6242
  DEPARTURE_RANGE: 'Avgångsintervall',
6214
6243
  DEPARTURE_AIRPORTS: 'Avgångsflygplatser',
6215
6244
  ARRIVAL_AIRPORTS: 'Ankomstflygplatser',
6216
- PRICE: 'Pris'
6245
+ PRICE: 'Pris',
6246
+ TRAVEL_GROUP: 'Resesällskap'
6217
6247
  };
6218
6248
  var svJson = {
6219
6249
  STEPS: STEPS$1,
@@ -6562,7 +6592,8 @@ var QSM$1 = {
6562
6592
  DEPARTURE_DATE: '出発日',
6563
6593
  RETURN_DATE: '帰着日',
6564
6594
  CONFIRM: '確認',
6565
- TRAVELERS: '旅行者'
6595
+ TRAVELERS: '旅行者',
6596
+ GROUP_TOUR: 'グループツアー'
6566
6597
  };
6567
6598
  var SRP = {
6568
6599
  NO_RESULTS: '結果が見つかりませんでした。',
@@ -6610,7 +6641,8 @@ var SRP = {
6610
6641
  DEPARTURE_RANGE: '出発時間帯',
6611
6642
  DEPARTURE_AIRPORTS: '出発空港',
6612
6643
  ARRIVAL_AIRPORTS: '到着空港',
6613
- PRICE: '価格'
6644
+ PRICE: '価格',
6645
+ TRAVEL_GROUP: '旅行グループ'
6614
6646
  };
6615
6647
  var jaJson = {
6616
6648
  STEPS: STEPS,
@@ -6817,6 +6849,18 @@ var rangeFromDateTimeInMinutes = function (dateTime) {
6817
6849
  return exports.DepartureRange.Night;
6818
6850
  }
6819
6851
  };
6852
+ var calculateNights = function (fromDate, toDate) {
6853
+ var from = new Date(fromDate);
6854
+ var to = new Date(toDate);
6855
+ // Normalize to midnight to avoid time issues
6856
+ from.setHours(0, 0, 0, 0);
6857
+ to.setHours(0, 0, 0, 0);
6858
+ var diffTime = to.getTime() - from.getTime();
6859
+ return diffTime / (1000 * 60 * 60 * 24);
6860
+ };
6861
+ var calculateDays = function (fromDate, toDate) {
6862
+ return calculateNights(fromDate, toDate) + 1;
6863
+ };
6820
6864
 
6821
6865
  var getDateFromParams = function (params, name) {
6822
6866
  var dateString = params.get(name);
@@ -30993,6 +31037,28 @@ var Icon$2 = function (_a) {
30993
31037
  fill: 'currentColor'
30994
31038
  })
30995
31039
  );
31040
+ case 'ui-group':
31041
+ return React__default['default'].createElement(
31042
+ 'svg',
31043
+ {
31044
+ className: ['icon', 'icon--'.concat(name), className]
31045
+ .filter(function (className) {
31046
+ return !lodash.isEmpty(className);
31047
+ })
31048
+ .join(' '),
31049
+ width: width,
31050
+ height: height,
31051
+ viewBox: '0 0 640 512'
31052
+ },
31053
+ React__default['default'].createElement(HTMLComment, {
31054
+ text: '!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.'
31055
+ }),
31056
+ title && React__default['default'].createElement('title', null, title),
31057
+ React__default['default'].createElement('path', {
31058
+ d: 'M72 88a56 56 0 1 1 112 0A56 56 0 1 1 72 88zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3l0-84.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5l0 21.5c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-26.8C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112l32 0c24 0 46.2 7.5 64.4 20.3zM448 416l0-21.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176l32 0c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2l0 26.8c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32zm8-328a56 56 0 1 1 112 0A56 56 0 1 1 456 88zM576 245.7l0 84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM240 304c0 16.2 6 31 16 42.3l0-84.7c-10 11.3-16 26.1-16 42.3zm144-42.3l0 84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2l0 42.8c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-42.8c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112l32 0c61.9 0 112 50.1 112 112z',
31059
+ fill: 'currentColor'
31060
+ })
31061
+ );
30996
31062
  default:
30997
31063
  return null;
30998
31064
  }
@@ -33110,6 +33176,22 @@ var QSMContainer = function () {
33110
33176
  ),
33111
33177
  translations.QSM.TRANSPORTS
33112
33178
  ),
33179
+ React__default['default'].createElement(
33180
+ 'button',
33181
+ {
33182
+ type: 'button',
33183
+ className: 'qsm__tab '.concat(qsmType == 'groupTour' ? 'qsm__tab--active' : ''),
33184
+ onClick: function () {
33185
+ return handleQsmTypeChange('groupTour');
33186
+ }
33187
+ },
33188
+ React__default['default'].createElement(
33189
+ 'span',
33190
+ { className: 'qsm__tab__icons' },
33191
+ React__default['default'].createElement(Icon$2, { name: 'ui-group', height: 16 })
33192
+ ),
33193
+ translations.QSM.GROUP_TOUR
33194
+ ),
33113
33195
  React__default['default'].createElement(
33114
33196
  'button',
33115
33197
  {
@@ -33178,7 +33260,7 @@ var QSMContainer = function () {
33178
33260
  React__default['default'].createElement(
33179
33261
  'div',
33180
33262
  { className: 'qsm__filter' },
33181
- (qsmType === 'hotel' || qsmType === 'hotel-flight') &&
33263
+ (qsmType === 'hotel' || qsmType === 'hotel-flight' || qsmType === 'groupTour') &&
33182
33264
  React__default['default'].createElement(
33183
33265
  'div',
33184
33266
  { className: 'radiobutton-group qsm__filter__inputgroup' },
@@ -33293,6 +33375,7 @@ var QSMContainer = function () {
33293
33375
  qsmType !== 'ticket' &&
33294
33376
  qsmType !== 'cruises' &&
33295
33377
  qsmType !== 'transfers' &&
33378
+ qsmType !== 'groupTour' &&
33296
33379
  askTravelClass &&
33297
33380
  React__default['default'].createElement(TravelClassPicker, null),
33298
33381
  qsmType !== 'multidestination' &&
@@ -33320,7 +33403,7 @@ var QSMContainer = function () {
33320
33403
  fieldConfig: openJawReturnDestinationField,
33321
33404
  showReverse: openJawReturnDestinationField.showReverse
33322
33405
  }),
33323
- (qsmType == 'hotel' || qsmType == 'hotel-flight') &&
33406
+ (qsmType == 'hotel' || qsmType == 'hotel-flight' || qsmType == 'groupTour') &&
33324
33407
  destination &&
33325
33408
  React__default['default'].createElement(SearchInputGroup, { fieldConfig: destination }),
33326
33409
  React__default['default'].createElement(Dates, { value: dateRange, onChange: handleDateChange }),
@@ -33370,6 +33453,7 @@ var SearchResultsConfigurationContext = React__default['default'].createContext(
33370
33453
  var _a;
33371
33454
  var initialState$1 = {
33372
33455
  results: [],
33456
+ filteredResults: [],
33373
33457
  selectedHotelId: null,
33374
33458
  selectedFlight: null,
33375
33459
  selectedFlightDetails: null,
@@ -33387,7 +33471,10 @@ var searchResultsSlice = toolkit.createSlice({
33387
33471
  initialState: initialState$1,
33388
33472
  reducers: {
33389
33473
  setResults: function (state, action) {
33390
- state.results = action.payload.results;
33474
+ state.results = action.payload;
33475
+ },
33476
+ setFilteredResults: function (state, action) {
33477
+ state.filteredResults = action.payload;
33391
33478
  },
33392
33479
  setSelectedHotel: function (state, action) {
33393
33480
  state.selectedHotelId = action.payload;
@@ -33456,6 +33543,7 @@ var searchResultsSlice = toolkit.createSlice({
33456
33543
  }
33457
33544
  });
33458
33545
  var setResults = ((_a = searchResultsSlice.actions), _a.setResults),
33546
+ setFilteredResults = _a.setFilteredResults,
33459
33547
  setSelectedHotel = _a.setSelectedHotel,
33460
33548
  setSelectedFlight = _a.setSelectedFlight,
33461
33549
  setSelectedFlightDetails = _a.setSelectedFlightDetails,
@@ -34472,6 +34560,27 @@ var Icon$1 = function (_a) {
34472
34560
  fill: 'currentColor'
34473
34561
  })
34474
34562
  );
34563
+ case 'ui-other':
34564
+ return React__default['default'].createElement(
34565
+ 'svg',
34566
+ {
34567
+ className: ['icon', 'icon--'.concat(name), className]
34568
+ .filter(function (className) {
34569
+ return !lodash.isEmpty(className);
34570
+ })
34571
+ .join(' '),
34572
+ width: width,
34573
+ height: height,
34574
+ viewBox: '0 0 640 512',
34575
+ fill: fill !== null && fill !== void 0 ? fill : 'currentColor'
34576
+ },
34577
+ React__default['default'].createElement(HTMLComment, { text: '!Font Awesome Free 6.7.2 - mars-and-venus' }),
34578
+ title && React__default['default'].createElement('title', null, title),
34579
+ React__default['default'].createElement('path', {
34580
+ d: 'M320 32c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-50.7-64.2 64.2c19.5 28.4 31 62.7 31 99.8 0 97.2-78.8 176-176 176S32 401.2 32 304s78.8-176 176-176c37.1 0 71.4 11.5 99.8 31l64.2-64.2L320 96c-17.7 0-32-14.3-32-32zM208 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224z',
34581
+ fill: 'currentColor'
34582
+ })
34583
+ );
34475
34584
  default:
34476
34585
  return null;
34477
34586
  }
@@ -37981,7 +38090,9 @@ var mapSearchResult = function (searchResult, cmsItem, languageCode, translation
37981
38090
  : ((_h = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.parentItem) === null || _h === void 0 ? void 0 : _h.name) || '',
37982
38091
  price: formatPrice(searchResult.price, searchResult.currencyCode, languageCode),
37983
38092
  ctaText: translations === null || translations === void 0 ? void 0 : translations.SRP.VIEW_DETAILS,
37984
- days: calculateNights(searchResult.stayFromDate, searchResult.stayToDate, translations),
38093
+ days: ''
38094
+ .concat(calculateNights(searchResult.stayFromDate, searchResult.stayToDate), ' ')
38095
+ .concat(translations === null || translations === void 0 ? void 0 : translations.SRP.NIGHTS),
37985
38096
  accommodation: searchResult.accommodationName,
37986
38097
  regime: searchResult.regimeName,
37987
38098
  stars:
@@ -37990,17 +38101,13 @@ var mapSearchResult = function (searchResult, cmsItem, languageCode, translation
37990
38101
  : _k.stars) || searchResult.hotelStars
37991
38102
  };
37992
38103
  };
37993
- var calculateNights = function (fromDate, toDate, translations) {
37994
- var from = new Date(fromDate).getTime(); // returns a number
37995
- var to = new Date(toDate).getTime(); // returns a number
37996
- var diffTime = Math.abs(to - from);
37997
- var diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
37998
- return ''.concat(diffDays, ' ').concat(translations === null || translations === void 0 ? void 0 : translations.SRP.NIGHTS);
37999
- };
38000
38104
  var HotelAccommodationResults = function (_a) {
38001
38105
  var _b, _c;
38002
- var isLoading = _a.isLoading,
38003
- context = _a.context;
38106
+ var isLoading = _a.isLoading;
38107
+ var context = React.useContext(SearchResultsConfigurationContext);
38108
+ if (!context) {
38109
+ return;
38110
+ }
38004
38111
  if (context.showMockup) {
38005
38112
  return showMocukups(context);
38006
38113
  }
@@ -38017,9 +38124,9 @@ var HotelAccommodationResults = function (_a) {
38017
38124
  var _d = reactRedux.useSelector(function (state) {
38018
38125
  return state.searchResults;
38019
38126
  }),
38020
- results = _d.results,
38127
+ filteredResults = _d.filteredResults,
38021
38128
  activeTab = _d.activeTab;
38022
- if (!results.length) {
38129
+ if (!filteredResults.length) {
38023
38130
  return React__default['default'].createElement('div', { className: 'no-results' }, translations.SRP.NO_RESULTS);
38024
38131
  }
38025
38132
  var cmsMap = React__default['default'].useMemo(
@@ -38043,7 +38150,7 @@ var HotelAccommodationResults = function (_a) {
38043
38150
  },
38044
38151
  [context.cmsHotelData]
38045
38152
  );
38046
- var firstResult = results === null || results === void 0 ? void 0 : results[0];
38153
+ var firstResult = filteredResults === null || filteredResults === void 0 ? void 0 : filteredResults[0];
38047
38154
  var firstResultDay = (firstResult === null || firstResult === void 0 ? void 0 : firstResult.fromDate)
38048
38155
  ? dateFns.format(dateFns.parseISO(firstResult.fromDate), 'd')
38049
38156
  : null;
@@ -38074,7 +38181,7 @@ var HotelAccommodationResults = function (_a) {
38074
38181
  )
38075
38182
  )
38076
38183
  ),
38077
- renderResults(results, context, cmsMap, activeTab, translations)
38184
+ renderResults(filteredResults, context, cmsMap, activeTab, translations)
38078
38185
  );
38079
38186
  };
38080
38187
  var showMocukups = function (context) {
@@ -38417,12 +38524,11 @@ var RoundTripResults = function () {
38417
38524
  );
38418
38525
  };
38419
38526
 
38420
- var enrichFiltersWithResults = function (results, filters) {
38527
+ var enrichFiltersWithResults = function (results, filters, tags) {
38421
38528
  if (!results || results.length === 0 || !filters) {
38422
38529
  return filters !== null && filters !== void 0 ? filters : [];
38423
38530
  }
38424
- for (var _i = 0, filters_1 = filters; _i < filters_1.length; _i++) {
38425
- var filter = filters_1[_i];
38531
+ var _loop_1 = function (filter) {
38426
38532
  if (filter.property === 'price' && (filter.min == null || filter.max == null)) {
38427
38533
  var prices = results
38428
38534
  .map(function (r) {
@@ -38437,6 +38543,72 @@ var enrichFiltersWithResults = function (results, filters) {
38437
38543
  filter.max = Math.ceil(Math.max.apply(Math, prices));
38438
38544
  }
38439
38545
  }
38546
+ if (filter.property === 'accommodation') {
38547
+ var map_1 = new Map();
38548
+ results.forEach(function (r) {
38549
+ if (r.accommodationCode) {
38550
+ map_1.set(r.accommodationCode, {
38551
+ name: r.accommodationName,
38552
+ code: r.accommodationCode
38553
+ });
38554
+ }
38555
+ });
38556
+ console.log('map', map_1);
38557
+ filter.options = Array.from(map_1.values()).map(function (accommodation) {
38558
+ var _a;
38559
+ return {
38560
+ label: (_a = accommodation.name) !== null && _a !== void 0 ? _a : accommodation.code,
38561
+ value: accommodation.code,
38562
+ isChecked: false
38563
+ };
38564
+ });
38565
+ }
38566
+ if (filter.property === 'regime') {
38567
+ var map_2 = new Map();
38568
+ results.forEach(function (r) {
38569
+ if (r.regimeCode) {
38570
+ map_2.set(r.regimeCode, {
38571
+ name: r.regimeName,
38572
+ code: r.regimeCode
38573
+ });
38574
+ }
38575
+ });
38576
+ filter.options = Array.from(map_2.values()).map(function (regime) {
38577
+ var _a;
38578
+ return {
38579
+ label: (_a = regime.name) !== null && _a !== void 0 ? _a : regime.code,
38580
+ value: regime.code,
38581
+ isChecked: false
38582
+ };
38583
+ });
38584
+ }
38585
+ if (filter.property === 'theme') {
38586
+ var map_3 = new Map();
38587
+ results.forEach(function (r) {
38588
+ var _a;
38589
+ (_a = r.tagIds) === null || _a === void 0
38590
+ ? void 0
38591
+ : _a.forEach(function (tagId) {
38592
+ var tag = tags.find(function (t) {
38593
+ return t.id === tagId;
38594
+ });
38595
+ if (tag && tag.id != null && tag.name != null) {
38596
+ map_3.set(tag.id, { name: tag.name, id: tag.id });
38597
+ }
38598
+ });
38599
+ });
38600
+ filter.options = Array.from(map_3.values()).map(function (theme) {
38601
+ return {
38602
+ label: theme.name,
38603
+ value: theme.id,
38604
+ isChecked: false
38605
+ };
38606
+ });
38607
+ }
38608
+ };
38609
+ for (var _i = 0, filters_1 = filters; _i < filters_1.length; _i++) {
38610
+ var filter = filters_1[_i];
38611
+ _loop_1(filter);
38440
38612
  }
38441
38613
  return filters;
38442
38614
  };
@@ -40808,101 +40980,21 @@ var FlightResultsContainer = function (_a) {
40808
40980
  );
40809
40981
  };
40810
40982
 
40811
- var initialFilters = [
40812
- {
40813
- property: 'regime',
40814
- label: 'Regime',
40815
- type: 'checkbox',
40816
- options: [
40817
- {
40818
- label: 'Room only',
40819
- value: ['RO', 'LO', 'OB'],
40820
- isChecked: false
40821
- },
40822
- {
40823
- label: 'Bed & Beakfast',
40824
- value: ['BB', 'KO'],
40825
- isChecked: false
40826
- },
40827
- {
40828
- label: 'Half board',
40829
- value: ['HB'],
40830
- isChecked: false
40831
- },
40832
- {
40833
- label: 'Full board',
40834
- value: ['FB'],
40835
- isChecked: false
40836
- }
40837
- ],
40838
- isFrontendFilter: false
40839
- },
40840
- {
40841
- property: 'price',
40842
- label: 'Prijs',
40843
- type: 'slider',
40844
- isFrontendFilter: false,
40845
- min: 2244,
40846
- max: 6785
40847
- },
40848
- {
40849
- property: 'rating',
40850
- label: 'Rating',
40851
- type: 'star-rating',
40852
- isFrontendFilter: true
40853
- },
40854
- {
40855
- property: 'theme',
40856
- label: "Thema's",
40857
- type: 'toggle',
40858
- options: [
40859
- {
40860
- label: 'Adults',
40861
- value: 1,
40862
- isChecked: false
40863
- },
40864
- {
40865
- label: 'Luxury',
40866
- value: 2,
40867
- isChecked: false
40868
- },
40869
- {
40870
- label: 'Welness & Spa',
40871
- value: 3,
40872
- isChecked: false
40873
- },
40874
- {
40875
- label: 'familie',
40876
- value: 4,
40877
- isChecked: false
40878
- }
40879
- ],
40880
- isFrontendFilter: false
40881
- }
40882
- ];
40883
40983
  var Filters = function (_a) {
40884
40984
  var _b;
40885
- var filters = _a.filters,
40985
+ var initialFilters = _a.initialFilters,
40986
+ filters = _a.filters,
40886
40987
  isOpen = _a.isOpen,
40887
40988
  handleSetIsOpen = _a.handleSetIsOpen,
40888
- handleApplyFilters = _a.handleApplyFilters,
40889
40989
  isLoading = _a.isLoading;
40890
40990
  var context = React.useContext(SearchResultsConfigurationContext);
40991
+ if (!context || !context.showFilters) {
40992
+ return null;
40993
+ }
40891
40994
  var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
40892
40995
  var _c = React.useState({}),
40893
40996
  visibleFilters = _c[0],
40894
40997
  setVisibleFilters = _c[1];
40895
- var _d = React.useState([]),
40896
- pendingFilters = _d[0],
40897
- setPendingFilters = _d[1];
40898
- React.useEffect(
40899
- function () {
40900
- if (initialFilters.length > 0) {
40901
- setPendingFilters(initialFilters);
40902
- }
40903
- },
40904
- [initialFilters]
40905
- );
40906
40998
  var dispatch = reactRedux.useDispatch();
40907
40999
  var toggleFilterVisibility = function (filterId) {
40908
41000
  setVisibleFilters(function (prev) {
@@ -40910,331 +41002,429 @@ var Filters = function (_a) {
40910
41002
  return __assign(__assign({}, prev), ((_a = {}), (_a[filterId] = !prev[filterId]), _a));
40911
41003
  });
40912
41004
  };
40913
- var updatePendingFilter = function (updatedFilter) {
40914
- setPendingFilters(function (prevFilters) {
40915
- var index = prevFilters.findIndex(function (f) {
40916
- return f.property === updatedFilter.property;
40917
- });
40918
- if (index !== -1) {
40919
- var newFilters = __spreadArray([], prevFilters, true);
40920
- newFilters[index] = updatedFilter;
40921
- return newFilters;
40922
- } else {
40923
- return __spreadArray(__spreadArray([], prevFilters, true), [updatedFilter], false);
40924
- }
40925
- });
40926
- };
40927
41005
  var handleCheckBoxFilter = function (filter, option) {
40928
- setPendingFilters(function (prev) {
41006
+ var updated = filters.map(function (f) {
40929
41007
  var _a;
40930
- var updated = prev.map(function (f) {
40931
- var _a;
40932
- if (f.property !== filter.property) {
40933
- return f;
40934
- }
40935
- return __assign(__assign({}, f), {
40936
- options:
40937
- (_a = f.options) === null || _a === void 0
40938
- ? void 0
40939
- : _a.map(function (opt) {
40940
- return opt.value === option.value ? __assign(__assign({}, opt), { isChecked: !opt.isChecked }) : opt;
40941
- })
40942
- });
41008
+ if (f.property !== filter.property) return f;
41009
+ return __assign(__assign({}, f), {
41010
+ options:
41011
+ (_a = f.options) === null || _a === void 0
41012
+ ? void 0
41013
+ : _a.map(function (opt) {
41014
+ return opt.value === option.value ? __assign(__assign({}, opt), { isChecked: !opt.isChecked }) : opt;
41015
+ })
40943
41016
  });
40944
- if (!(context === null || context === void 0 ? void 0 : context.useGlobalApplyFilterButton) && !filter.useApplyFilterButton) {
40945
- dispatch(setFilters(updated));
40946
- (_a = context === null || context === void 0 ? void 0 : context.onFilterChange) === null || _a === void 0 ? void 0 : _a.call(context, updated);
40947
- }
40948
- return updated;
40949
41017
  });
41018
+ dispatch(setFilters(updated));
40950
41019
  };
40951
- var handleSliderMinChange = function (filter, value) {
40952
- var _a, _b;
40953
- if (value < ((_b = (_a = filter.selectedMax) !== null && _a !== void 0 ? _a : filter.max) !== null && _b !== void 0 ? _b : 100)) {
40954
- var updatedFilter = __assign(__assign({}, filter), { selectedMin: value });
40955
- updatePendingFilter(updatedFilter);
40956
- if (!(context === null || context === void 0 ? void 0 : context.useGlobalApplyFilterButton) && !filter.useApplyFilterButton) {
40957
- applyFilters();
40958
- }
40959
- }
40960
- };
40961
- var handleSliderMaxChange = function (filter, value) {
40962
- var _a, _b;
40963
- if (value > ((_b = (_a = filter.selectedMin) !== null && _a !== void 0 ? _a : filter.min) !== null && _b !== void 0 ? _b : 0)) {
40964
- var updatedFilter = __assign(__assign({}, filter), { selectedMax: value });
40965
- updatePendingFilter(updatedFilter);
40966
- if (!(context === null || context === void 0 ? void 0 : context.useGlobalApplyFilterButton) && !filter.useApplyFilterButton) {
40967
- applyFilters();
40968
- }
40969
- }
40970
- };
40971
- var applyFilters = function () {
40972
- var _a;
40973
- dispatch(setFilters(pendingFilters));
40974
- (_a = context === null || context === void 0 ? void 0 : context.onFilterChange) === null || _a === void 0 ? void 0 : _a.call(context, pendingFilters);
40975
- handleApplyFilters();
40976
- if (isOpen) {
40977
- handleSetIsOpen();
40978
- }
41020
+ var handleSliderChange = function (filter, newMin, newMax) {
41021
+ var updated = filters.map(function (f) {
41022
+ if (f.property !== filter.property) return f;
41023
+ return __assign(__assign({}, f), { selectedMin: newMin, selectedMax: newMax });
41024
+ });
41025
+ dispatch(setFilters(updated));
40979
41026
  };
40980
41027
  var handleFullReset = function () {
40981
41028
  if (!isLoading) {
40982
- setPendingFilters(initialFilters);
40983
41029
  dispatch(resetFilters(initialFilters));
40984
41030
  }
40985
41031
  };
40986
- var handleResetPendingChanges = function () {
40987
- setPendingFilters(filters); // ← back to last applied
40988
- };
40989
- var hasPendingChanges = function () {
40990
- return JSON.stringify(pendingFilters) !== JSON.stringify(filters);
40991
- };
40992
- if (!context || !context.showFilters) {
40993
- return null;
40994
- }
40995
41032
  return React__default['default'].createElement(
40996
- React__default['default'].Fragment,
40997
- null,
41033
+ 'div',
41034
+ { className: 'search__filters--modal '.concat(isOpen ? 'is-open' : '') },
41035
+ React__default['default'].createElement('div', {
41036
+ className: 'search__filters--background',
41037
+ onClick: function () {
41038
+ return handleSetIsOpen();
41039
+ }
41040
+ }),
40998
41041
  React__default['default'].createElement(
40999
- 'div',
41000
- { className: 'search__filters--modal '.concat(isOpen ? 'is-open' : '') },
41001
- React__default['default'].createElement('div', {
41002
- className: 'search__filters--background',
41042
+ 'button',
41043
+ {
41044
+ className: 'search__filters--close',
41003
41045
  onClick: function () {
41004
41046
  return handleSetIsOpen();
41005
41047
  }
41006
- }),
41007
- React__default['default'].createElement(
41008
- 'button',
41009
- {
41010
- className: 'search__filters--close',
41011
- onClick: function () {
41012
- return handleSetIsOpen();
41013
- }
41014
- },
41015
- React__default['default'].createElement(Icon$1, { name: 'ui-close', height: 24 })
41016
- ),
41048
+ },
41049
+ React__default['default'].createElement(Icon$1, { name: 'ui-close', height: 24 })
41050
+ ),
41051
+ React__default['default'].createElement(
41052
+ 'div',
41053
+ { className: 'search__filters' },
41017
41054
  React__default['default'].createElement(
41018
41055
  'div',
41019
- { className: 'search__filters' },
41056
+ { className: 'search__filter-row search__filter__header' },
41020
41057
  React__default['default'].createElement(
41021
41058
  'div',
41022
- { className: 'search__filter-row search__filter__header' },
41059
+ { className: 'search__filter-row-flex-title' },
41060
+ React__default['default'].createElement('p', { className: 'search__filter-small-title' }, translations.SRP.FILTERS)
41061
+ ),
41062
+ !isLoading &&
41023
41063
  React__default['default'].createElement(
41024
- 'div',
41025
- { className: 'search__filter-row-flex-title' },
41026
- React__default['default'].createElement('p', { className: 'search__filter-small-title' }, translations.SRP.FILTERS)
41027
- ),
41028
- !isLoading &&
41064
+ 'a',
41065
+ {
41066
+ className: 'search__filter-reset',
41067
+ onClick: function () {
41068
+ return handleFullReset();
41069
+ }
41070
+ },
41071
+ translations.SRP.RESET
41072
+ )
41073
+ ),
41074
+ isLoading
41075
+ ? React__default['default'].createElement(Spinner, null)
41076
+ : React__default['default'].createElement(
41077
+ React__default['default'].Fragment,
41078
+ null,
41029
41079
  React__default['default'].createElement(
41030
- 'a',
41031
- {
41032
- className: 'search__filter-reset',
41033
- onClick: function () {
41034
- return handleFullReset();
41035
- }
41036
- },
41037
- translations.SRP.RESET
41038
- )
41039
- ),
41040
- isLoading
41041
- ? React__default['default'].createElement(Spinner, null)
41042
- : React__default['default'].createElement(
41043
- React__default['default'].Fragment,
41044
- null,
41045
- React__default['default'].createElement(
41046
- 'div',
41047
- { className: 'search__filters__group-container' },
41048
- pendingFilters.map(function (filter, index) {
41049
- var _a, _b;
41050
- var isVisible = (_a = visibleFilters[filter.property]) !== null && _a !== void 0 ? _a : true;
41051
- return React__default['default'].createElement(
41080
+ 'div',
41081
+ { className: 'search__filters__group-container' },
41082
+ filters.map(function (filter, index) {
41083
+ var _a, _b;
41084
+ var isVisible = (_a = visibleFilters[filter.property]) !== null && _a !== void 0 ? _a : true;
41085
+ return React__default['default'].createElement(
41086
+ 'div',
41087
+ { key: ''.concat(filter.property, '-').concat(index), className: 'search__filter-group' },
41088
+ React__default['default'].createElement(
41052
41089
  'div',
41053
- { key: ''.concat(filter.property, '-').concat(index), className: 'search__filter-group' },
41090
+ {
41091
+ className: 'search__filter-row search__filter-row--underline',
41092
+ onClick: function () {
41093
+ return toggleFilterVisibility(filter.property);
41094
+ },
41095
+ role: 'button',
41096
+ tabIndex: 0
41097
+ },
41098
+ React__default['default'].createElement('h6', { className: 'search__filter-large-title' }, filter.label),
41054
41099
  React__default['default'].createElement(
41055
- 'div',
41100
+ 'svg',
41056
41101
  {
41057
- className: 'search__filter-row search__filter-row--underline',
41058
- onClick: function () {
41059
- return toggleFilterVisibility(filter.property);
41060
- },
41061
- role: 'button',
41062
- tabIndex: 0
41102
+ id: 'search-chevron-up-icon',
41103
+ className: 'search__filter-chevron-icon '.concat(isVisible ? 'search__filter-chevron-icon--flipped' : '', ' '),
41104
+ viewBox: '0 0 10 6.063',
41105
+ width: 10,
41106
+ height: 6.063
41063
41107
  },
41064
- React__default['default'].createElement('h6', { className: 'search__filter-large-title' }, filter.label),
41065
- React__default['default'].createElement(
41066
- 'svg',
41067
- {
41068
- id: 'search-chevron-up-icon',
41069
- className: 'search__filter-chevron-icon '.concat(isVisible ? 'search__filter-chevron-icon--flipped' : '', ' '),
41070
- viewBox: '0 0 10 6.063',
41071
- width: 10,
41072
- height: 6.063
41073
- },
41074
- React__default['default'].createElement('path', {
41075
- id: 'Path_62',
41076
- 'data-name': 'Path 62',
41077
- d: 'M245-617.937l-5-5L241.063-624,245-620.062,248.938-624,250-622.937Z',
41078
- transform: 'translate(-240 624)',
41079
- fill: '#707070'
41108
+ React__default['default'].createElement('path', {
41109
+ id: 'Path_62',
41110
+ 'data-name': 'Path 62',
41111
+ d: 'M245-617.937l-5-5L241.063-624,245-620.062,248.938-624,250-622.937Z',
41112
+ transform: 'translate(-240 624)',
41113
+ fill: '#707070'
41114
+ })
41115
+ )
41116
+ ),
41117
+ isVisible &&
41118
+ filter.type === 'checkbox' &&
41119
+ React__default['default'].createElement(
41120
+ 'div',
41121
+ { className: 'search__filter-rows' },
41122
+ filter.options &&
41123
+ filter.options.map(function (option, optionIndex) {
41124
+ return React__default['default'].createElement(
41125
+ 'div',
41126
+ { className: 'search__filter-row search__filter-row--checkbox', key: ''.concat(option.label, '-').concat(optionIndex) },
41127
+ React__default['default'].createElement(
41128
+ 'div',
41129
+ { className: 'checkbox' },
41130
+ React__default['default'].createElement(
41131
+ 'label',
41132
+ { className: 'checkbox__label' },
41133
+ React__default['default'].createElement('input', {
41134
+ type: 'checkbox',
41135
+ className: 'checkbox__input checkbox__input--parent',
41136
+ checked: option.isChecked,
41137
+ onChange: function (e) {
41138
+ return handleCheckBoxFilter(filter, option);
41139
+ }
41140
+ }),
41141
+ React__default['default'].createElement('span', { className: 'radiobutton__label-text' }, option.label)
41142
+ )
41143
+ )
41144
+ );
41080
41145
  })
41081
- )
41082
41146
  ),
41083
- isVisible &&
41084
- filter.type === 'checkbox' &&
41085
- React__default['default'].createElement(
41086
- 'div',
41087
- { className: 'search__filter-rows' },
41088
- filter.options &&
41089
- filter.options.map(function (option, optionIndex) {
41147
+ isVisible &&
41148
+ filter.type === 'toggle' &&
41149
+ React__default['default'].createElement(
41150
+ 'div',
41151
+ { className: 'search__filter-rows' },
41152
+ (_b = filter.options) === null || _b === void 0
41153
+ ? void 0
41154
+ : _b.map(function (option, optionIndex) {
41090
41155
  return React__default['default'].createElement(
41091
41156
  'div',
41092
- { className: 'search__filter-row search__filter-row--checkbox', key: ''.concat(option.label, '-').concat(optionIndex) },
41157
+ { className: 'search__filter-row', key: ''.concat(option.label, '-').concat(optionIndex) },
41158
+ React__default['default'].createElement('span', { className: 'search__filter-toggle-label' }, option.label),
41159
+ React__default['default'].createElement('div', { className: 'checkbox' }),
41093
41160
  React__default['default'].createElement(
41094
- 'div',
41095
- { className: 'checkbox' },
41096
- React__default['default'].createElement(
41097
- 'label',
41098
- { className: 'checkbox__label' },
41099
- React__default['default'].createElement('input', {
41100
- type: 'checkbox',
41101
- className: 'checkbox__input checkbox__input--parent',
41102
- checked: option.isChecked,
41103
- onChange: function (e) {
41104
- return handleCheckBoxFilter(filter, option);
41105
- }
41106
- }),
41107
- React__default['default'].createElement('span', { className: 'radiobutton__label-text' }, option.label)
41108
- )
41161
+ 'label',
41162
+ { className: 'checkbox__label' },
41163
+ React__default['default'].createElement('input', {
41164
+ type: 'checkbox',
41165
+ className: 'checkbox__input',
41166
+ checked: option.isChecked,
41167
+ onChange: function () {
41168
+ return handleCheckBoxFilter(filter, option);
41169
+ }
41170
+ })
41109
41171
  )
41110
41172
  );
41111
41173
  })
41112
- ),
41113
- isVisible &&
41114
- filter.type === 'toggle' &&
41115
- React__default['default'].createElement(
41116
- 'div',
41117
- { className: 'search__filter-rows' },
41118
- (_b = filter.options) === null || _b === void 0
41119
- ? void 0
41120
- : _b.map(function (option, optionIndex) {
41121
- return React__default['default'].createElement(
41122
- 'div',
41123
- { className: 'search__filter-row', key: ''.concat(option.label, '-').concat(optionIndex) },
41124
- React__default['default'].createElement('span', { className: 'search__filter-toggle-label' }, option.label),
41125
- React__default['default'].createElement('div', { className: 'checkbox' }),
41126
- React__default['default'].createElement(
41127
- 'label',
41128
- { className: 'checkbox__label' },
41129
- React__default['default'].createElement('input', {
41130
- type: 'checkbox',
41131
- className: 'checkbox__input',
41132
- checked: option.isChecked,
41133
- onChange: function () {
41134
- return handleCheckBoxFilter(filter, option);
41135
- }
41136
- })
41137
- )
41138
- );
41139
- })
41140
- ),
41141
- isVisible &&
41142
- filter &&
41143
- filter.type === 'slider' &&
41144
- (function () {
41145
- var _a, _b, _c, _d;
41146
- var min = (_a = filter.min) !== null && _a !== void 0 ? _a : 0;
41147
- var max = (_b = filter.max) !== null && _b !== void 0 ? _b : 100;
41148
- var selectedMin = (_c = filter.selectedMin) !== null && _c !== void 0 ? _c : min;
41149
- var selectedMax = (_d = filter.selectedMax) !== null && _d !== void 0 ? _d : max;
41150
- return React__default['default'].createElement(MultiRangeFilter, {
41151
- min: min,
41152
- max: max,
41153
- selectedMin: selectedMin,
41154
- selectedMax: selectedMax,
41155
- valueFormatter: function (value) {
41156
- return ''.concat(value);
41157
- },
41158
- onChange: function (newMin, newMax) {
41159
- handleSliderMinChange(filter, newMin);
41160
- handleSliderMaxChange(filter, newMax);
41161
- }
41162
- });
41163
- })(),
41164
- isVisible &&
41165
- filter.property === 'rating' &&
41166
- filter.type === 'star-rating' &&
41167
- (function () {
41168
- var _a;
41169
- var selectedRating = (_a = filter.selectedRating) !== null && _a !== void 0 ? _a : 0;
41170
- var handleRatingChange = function (rating) {
41171
- var updatedFilter = __assign(__assign({}, filter), { selectedRating: rating });
41172
- updatePendingFilter(updatedFilter);
41173
- if (!(context === null || context === void 0 ? void 0 : context.useGlobalApplyFilterButton) && !filter.useApplyFilterButton) {
41174
- applyFilters();
41175
- }
41176
- };
41177
- return React__default['default'].createElement(
41178
- 'div',
41179
- { className: 'search__filter-row star-rating-filter' },
41180
- [5, 4, 3, 2, 1].map(function (star) {
41181
- return React__default['default'].createElement(
41182
- 'span',
41183
- {
41184
- key: star,
41185
- className: 'star '.concat(star <= selectedRating ? 'filled' : ''),
41186
- onClick: function () {
41187
- return handleRatingChange(star);
41188
- },
41189
- role: 'button',
41190
- tabIndex: 0,
41191
- onKeyDown: function (e) {
41192
- if (e.key === 'Enter' || e.key === ' ') handleRatingChange(star);
41193
- }
41194
- },
41195
- '\u2605'
41196
- );
41197
- })
41198
- );
41199
- })()
41200
- );
41201
- }),
41202
- context.useGlobalApplyFilterButton &&
41203
- hasPendingChanges() &&
41204
- React__default['default'].createElement(
41205
- 'div',
41206
- { className: 'search__filters__actions' },
41207
- React__default['default'].createElement(
41208
- 'button',
41209
- {
41210
- className: 'cta--secondary ',
41211
- onClick: function () {
41212
- handleResetPendingChanges();
41213
- handleSetIsOpen();
41214
- },
41215
- disabled: isLoading
41216
- },
41217
- translations.SRP.CANCEL
41218
41174
  ),
41219
- React__default['default'].createElement(
41220
- 'button',
41221
- {
41222
- className: 'cta',
41223
- onClick: function () {
41224
- return applyFilters();
41175
+ isVisible &&
41176
+ filter &&
41177
+ filter.type === 'slider' &&
41178
+ (function () {
41179
+ var _a, _b, _c, _d;
41180
+ var min = (_a = filter.min) !== null && _a !== void 0 ? _a : 0;
41181
+ var max = (_b = filter.max) !== null && _b !== void 0 ? _b : 100;
41182
+ var selectedMin = (_c = filter.selectedMin) !== null && _c !== void 0 ? _c : min;
41183
+ var selectedMax = (_d = filter.selectedMax) !== null && _d !== void 0 ? _d : max;
41184
+ return React__default['default'].createElement(MultiRangeFilter, {
41185
+ min: min,
41186
+ max: max,
41187
+ selectedMin: selectedMin,
41188
+ selectedMax: selectedMax,
41189
+ valueFormatter: function (value) {
41190
+ return ''.concat(value);
41225
41191
  },
41226
- disabled: isLoading
41227
- },
41228
- translations.SRP.APPLY
41229
- )
41230
- )
41192
+ onChange: function (newMin, newMax) {
41193
+ handleSliderChange(filter, newMin, newMax);
41194
+ }
41195
+ });
41196
+ })()
41197
+ );
41198
+ })
41199
+ )
41200
+ )
41201
+ )
41202
+ );
41203
+ };
41204
+
41205
+ var GroupTourCard = function (_a) {
41206
+ var _b;
41207
+ var result = _a.result,
41208
+ languageCode = _a.languageCode;
41209
+ var translations = getTranslations(languageCode !== null && languageCode !== void 0 ? languageCode : 'en-GB');
41210
+ var genders = ((_b = result.allotment) === null || _b === void 0 ? void 0 : _b.travellerGenders) || [];
41211
+ var maleCount = genders.filter(function (g) {
41212
+ return g === 0;
41213
+ }).length;
41214
+ var femaleCount = genders.filter(function (g) {
41215
+ return g === 1;
41216
+ }).length;
41217
+ var otherCount = genders.filter(function (g) {
41218
+ return g === 2;
41219
+ }).length;
41220
+ return React__default['default'].createElement(
41221
+ 'div',
41222
+ { className: 'search__result-card' },
41223
+ React__default['default'].createElement(
41224
+ 'div',
41225
+ { className: 'search__result-card__allotment' },
41226
+ React__default['default'].createElement(
41227
+ 'div',
41228
+ { className: 'search__result-card__allotment__title__wrapper' },
41229
+ React__default['default'].createElement(
41230
+ 'h3',
41231
+ { className: 'search__result-card__allotment__title' },
41232
+ result.name,
41233
+ React__default['default'].createElement(
41234
+ 'span',
41235
+ { className: 'search__result-card__allotment__badge' },
41236
+ React__default['default'].createElement(Icon$1, { name: 'ui-circle-check', width: 14, height: 14 }),
41237
+ 'GAR'
41238
+ )
41239
+ ),
41240
+ React__default['default'].createElement(
41241
+ 'div',
41242
+ { className: 'search__result-card__allotment__container' },
41243
+ React__default['default'].createElement(
41244
+ 'div',
41245
+ { className: 'search__result-card__allotment__header' },
41246
+ React__default['default'].createElement(
41247
+ 'div',
41248
+ { className: 'search__result-card__allotment__wrapper' },
41249
+ React__default['default'].createElement(
41250
+ 'div',
41251
+ { className: 'search__result-card__allotment__date' },
41252
+ React__default['default'].createElement(Icon$1, { name: 'ui-plane', height: 16 }),
41253
+ React__default['default'].createElement(
41254
+ 'div',
41255
+ { className: 'search__result-card__allotment__date--from' },
41256
+ dateFns.format(new Date(result.fromDate), 'dd/MM/yyyy')
41257
+ )
41258
+ ),
41259
+ React__default['default'].createElement(
41260
+ 'div',
41261
+ { className: 'search__result-card__allotment__info' },
41262
+ React__default['default'].createElement('span', null, React__default['default'].createElement(Icon$1, { name: 'ui-calendar', height: 16 })),
41263
+ ' ',
41264
+ calculateDays(result.stayFromDate, result.stayToDate),
41265
+ ' ',
41266
+ translations.PRODUCT.DAYS,
41267
+ ' -',
41268
+ ' ',
41269
+ React__default['default'].createElement('span', null, React__default['default'].createElement(Icon$1, { name: 'ui-moon', height: 16 })),
41270
+ calculateNights(result.stayFromDate, result.stayToDate),
41271
+ ' ',
41272
+ translations.SRP.NIGHTS
41273
+ )
41274
+ )
41275
+ ),
41276
+ result.allotment &&
41277
+ React__default['default'].createElement(
41278
+ 'div',
41279
+ { className: 'search__result-card__allotment__info' },
41280
+ React__default['default'].createElement(
41281
+ 'span',
41282
+ { className: 'search__result-card__allotment__info__group' },
41283
+ translations === null || translations === void 0 ? void 0 : translations.SRP.TRAVEL_GROUP
41284
+ ),
41285
+ React__default['default'].createElement(
41286
+ 'div',
41287
+ { className: 'search__result-card__allotment__persons' },
41288
+ React__default['default'].createElement(
41289
+ 'div',
41290
+ { className: 'search__result-card__allotment__person' },
41291
+ React__default['default'].createElement(Icon$1, { name: 'ui-men', width: 16, height: 16 }),
41292
+ React__default['default'].createElement('span', null, maleCount, ' p.')
41293
+ ),
41294
+ React__default['default'].createElement(
41295
+ 'div',
41296
+ { className: 'search__result-card__allotment__person' },
41297
+ React__default['default'].createElement(Icon$1, { name: 'ui-women', width: 16, height: 16 }),
41298
+ React__default['default'].createElement('span', null, femaleCount, ' p.')
41299
+ ),
41300
+ React__default['default'].createElement(
41301
+ 'div',
41302
+ { className: 'search__result-card__allotment__person' },
41303
+ React__default['default'].createElement(Icon$1, { name: 'ui-other', width: 16, height: 16 }),
41304
+ React__default['default'].createElement('span', null, otherCount, ' p.')
41305
+ )
41231
41306
  )
41232
41307
  )
41308
+ )
41309
+ ),
41310
+ React__default['default'].createElement(
41311
+ 'div',
41312
+ { className: 'search__result-card__allotment__footer' },
41313
+ React__default['default'].createElement(
41314
+ 'div',
41315
+ { className: 'search__result-card__allotment__price__wrapper' },
41316
+ React__default['default'].createElement(
41317
+ 'div',
41318
+ { className: 'search__result-card__allotment__price' },
41319
+ formatPrice(result.price, result.currencyCode, languageCode),
41320
+ ' ',
41321
+ translations.PRODUCT.PER_PERSON
41322
+ )
41323
+ ),
41324
+ React__default['default'].createElement('button', { className: 'cta cta--select' }, 'Bekijk reis')
41233
41325
  )
41234
41326
  )
41235
41327
  );
41236
41328
  };
41237
41329
 
41330
+ var GroupTourResults = function (_a) {
41331
+ var _b, _c;
41332
+ var isLoading = _a.isLoading;
41333
+ var context = React.useContext(SearchResultsConfigurationContext);
41334
+ if (!context) {
41335
+ return;
41336
+ }
41337
+ if (isLoading) {
41338
+ return React__default['default'].createElement(
41339
+ React__default['default'].Fragment,
41340
+ null,
41341
+ (_b = context.customSpinner) !== null && _b !== void 0 ? _b : React__default['default'].createElement(Spinner, null)
41342
+ );
41343
+ }
41344
+ var translations = getTranslations((_c = context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB');
41345
+ var _d = reactRedux.useSelector(function (state) {
41346
+ return state.searchResults;
41347
+ }),
41348
+ filteredResults = _d.filteredResults;
41349
+ _d.activeTab;
41350
+ if (lodash.isEmpty(filteredResults)) {
41351
+ return React__default['default'].createElement('div', { className: 'no-results' }, translations.SRP.NO_RESULTS);
41352
+ }
41353
+ return React__default['default'].createElement(
41354
+ 'div',
41355
+ { className: 'search__results__cards search__results__cards--list' },
41356
+ filteredResults.map(function (result, index) {
41357
+ return React__default['default'].createElement(GroupTourCard, { key: index, result: result });
41358
+ })
41359
+ );
41360
+ };
41361
+
41362
+ var applyFilters = function (results, filters) {
41363
+ return results.filter(function (r) {
41364
+ return filters.every(function (filter) {
41365
+ var _a, _b, _c, _d;
41366
+ if (!filter.isFrontendFilter) return true;
41367
+ // ACCOMMODATION
41368
+ if (filter.property === 'accommodation') {
41369
+ var selected =
41370
+ (_a = filter.options) === null || _a === void 0
41371
+ ? void 0
41372
+ : _a
41373
+ .filter(function (o) {
41374
+ return o.isChecked;
41375
+ })
41376
+ .map(function (o) {
41377
+ return o.value;
41378
+ });
41379
+ if (!selected || selected.length === 0) return true;
41380
+ return selected.includes(r.accommodationCode);
41381
+ }
41382
+ // REGIME
41383
+ if (filter.property === 'regime') {
41384
+ var selected =
41385
+ (_b = filter.options) === null || _b === void 0
41386
+ ? void 0
41387
+ : _b
41388
+ .filter(function (o) {
41389
+ return o.isChecked;
41390
+ })
41391
+ .map(function (o) {
41392
+ return o.value;
41393
+ });
41394
+ if (!selected || selected.length === 0) return true;
41395
+ if (!r.regimeCode) return false;
41396
+ return selected.includes(r.regimeCode);
41397
+ }
41398
+ // PRICE
41399
+ if (filter.property === 'price') {
41400
+ if (filter.selectedMin != null && r.price < filter.selectedMin) return false;
41401
+ if (filter.selectedMax != null && r.price > filter.selectedMax) return false;
41402
+ return true;
41403
+ }
41404
+ // THEME
41405
+ if (filter.property === 'theme') {
41406
+ var selected_1 =
41407
+ (_c = filter.options) === null || _c === void 0
41408
+ ? void 0
41409
+ : _c
41410
+ .filter(function (o) {
41411
+ return o.isChecked;
41412
+ })
41413
+ .map(function (o) {
41414
+ return o.value;
41415
+ });
41416
+ if (!selected_1 || selected_1.length === 0) return true;
41417
+ return (_d = r.tagIds) === null || _d === void 0
41418
+ ? void 0
41419
+ : _d.some(function (tagId) {
41420
+ return selected_1.includes(tagId);
41421
+ });
41422
+ }
41423
+ return true;
41424
+ });
41425
+ });
41426
+ };
41427
+
41238
41428
  var SearchResultsContainer = function () {
41239
41429
  var _a;
41240
41430
  var dispatch = reactRedux.useDispatch();
@@ -41244,6 +41434,7 @@ var SearchResultsContainer = function () {
41244
41434
  return state.searchResults;
41245
41435
  }),
41246
41436
  results = _b.results,
41437
+ filteredResults = _b.filteredResults,
41247
41438
  bookingPackageDetails = _b.bookingPackageDetails,
41248
41439
  entry = _b.entry,
41249
41440
  isLoading = _b.isLoading,
@@ -41252,21 +41443,18 @@ var SearchResultsContainer = function () {
41252
41443
  selectedHotelId = _b.selectedHotelId,
41253
41444
  flyInIsOpen = _b.flyInIsOpen;
41254
41445
  var isMobile = useMediaQuery('(max-width: 1200px)');
41255
- var _c = React.useState(0),
41256
- searchTrigger = _c[0],
41257
- setSearchTrigger = _c[1];
41258
- var _d = React.useState(false),
41259
- initialFiltersSet = _d[0],
41260
- setInitialFiltersSet = _d[1];
41261
- var _e = React.useState([]);
41262
- _e[0];
41263
- var setInitialFilters = _e[1];
41446
+ var _c = React.useState(false),
41447
+ initialFiltersSet = _c[0],
41448
+ setInitialFiltersSet = _c[1];
41449
+ var _d = React.useState([]),
41450
+ initialFilters = _d[0],
41451
+ setInitialFilters = _d[1];
41452
+ var _e = React.useState(false),
41453
+ filtersOpen = _e[0],
41454
+ setFiltersOpen = _e[1];
41264
41455
  var _f = React.useState(false),
41265
- filtersOpen = _f[0],
41266
- setFiltersOpen = _f[1];
41267
- var _g = React.useState(false),
41268
- itineraryOpen = _g[0],
41269
- setItineraryOpen = _g[1];
41456
+ itineraryOpen = _f[0],
41457
+ setItineraryOpen = _f[1];
41270
41458
  var panelRef = React.useRef(null);
41271
41459
  var sortByTypes = [
41272
41460
  { direction: 'asc', label: 'price' },
@@ -41370,7 +41558,6 @@ var SearchResultsContainer = function () {
41370
41558
  var city = getNumberFromParams(params, 'location');
41371
41559
  var hotel = getNumberFromParams(params, 'hotel');
41372
41560
  var tagId = getNumberFromParams(params, 'tagId');
41373
- // temp hardcoded params
41374
41561
  if (!from || !to) {
41375
41562
  console.error('Missing fromDate or toDate in query params, using default values');
41376
41563
  return null;
@@ -41400,8 +41587,9 @@ var SearchResultsContainer = function () {
41400
41587
  officeId: 1,
41401
41588
  payload: {
41402
41589
  catalogueIds: (_a = context.tideConnection.catalogueIds) !== null && _a !== void 0 ? _a : [],
41403
- serviceType: context.type === 'hotel' || context.type === 'hotel-flight' ? 3 : context.type === 'flight' ? 7 : context.type === 'roundTrip' ? 1 : 0,
41404
- searchType: 0,
41590
+ serviceType:
41591
+ context.type === 'hotel' || context.type === 'hotel-flight' ? 3 : context.type === 'flight' ? 7 : context.type === 'roundTrip' ? 1 : undefined,
41592
+ searchType: context.type === 'groupTour' ? 1 : 0,
41405
41593
  destination: {
41406
41594
  id: Number(destinationId),
41407
41595
  isCountry: destinationIsCountry,
@@ -41422,7 +41610,7 @@ var SearchResultsContainer = function () {
41422
41610
  // .flatMap((o) => o.value.toString()) || [],
41423
41611
  // minPrice: filters.find((f) => f.property === 'price')?.selectedMin,
41424
41612
  // maxPrice: filters.find((f) => f.property === 'price')?.selectedMax,
41425
- useExactDates: true,
41613
+ useExactDates: (context === null || context === void 0 ? void 0 : context.type) === 'groupTour' ? false : true,
41426
41614
  onlyCachedResults: false,
41427
41615
  includeAllAllotments: true,
41428
41616
  productIds: hotel ? [hotel] : [],
@@ -41498,17 +41686,17 @@ var SearchResultsContainer = function () {
41498
41686
  // seperate Search
41499
41687
  React.useEffect(
41500
41688
  function () {
41501
- var runHotelSearch = function () {
41689
+ var runSearch = function () {
41502
41690
  return __awaiter(void 0, void 0, void 0, function () {
41503
- var config, params, entryId, entryLight, searchRequest, rq, packageSearchResults, enrichedFilters, matching, err_1;
41504
- var _a;
41505
- return __generator(this, function (_b) {
41506
- switch (_b.label) {
41691
+ var config, params, entryId, entryLight, searchRequest, rq, packageSearchResults, enrichedFilters, initialFilteredResults, matching, err_1;
41692
+ var _a, _b;
41693
+ return __generator(this, function (_c) {
41694
+ switch (_c.label) {
41507
41695
  case 0:
41508
41696
  dispatch(setIsLoading(true));
41509
- _b.label = 1;
41697
+ _c.label = 1;
41510
41698
  case 1:
41511
- _b.trys.push([1, 6, , 7]);
41699
+ _c.trys.push([1, 6, , 7]);
41512
41700
  if (!context) {
41513
41701
  return [2 /*return*/];
41514
41702
  }
@@ -41523,7 +41711,7 @@ var SearchResultsContainer = function () {
41523
41711
  if (!entryId) return [3 /*break*/, 3];
41524
41712
  return [4 /*yield*/, build.getEntryLight(config, entryId)];
41525
41713
  case 2:
41526
- entryLight = _b.sent();
41714
+ entryLight = _c.sent();
41527
41715
  // populate itinerary store
41528
41716
  dispatch(setEntry({ entry: entryLight }));
41529
41717
  searchRequest = buildSearchFromEntry(entryLight);
@@ -41534,19 +41722,21 @@ var SearchResultsContainer = function () {
41534
41722
  throw new Error('Invalid search parameters');
41535
41723
  }
41536
41724
  searchRequest = rq;
41537
- _b.label = 4;
41725
+ _c.label = 4;
41538
41726
  case 4:
41539
41727
  return [4 /*yield*/, build.search(config, searchRequest)];
41540
41728
  case 5:
41541
- packageSearchResults = _b.sent();
41729
+ packageSearchResults = _c.sent();
41542
41730
  console.log('Search results', packageSearchResults);
41543
- enrichedFilters = enrichFiltersWithResults(packageSearchResults, context.filters);
41731
+ enrichedFilters = enrichFiltersWithResults(packageSearchResults, context.filters, (_a = context.tags) !== null && _a !== void 0 ? _a : []);
41544
41732
  if (!initialFiltersSet) {
41545
41733
  dispatch(resetFilters(enrichedFilters));
41546
41734
  setInitialFilters(enrichedFilters);
41547
41735
  setInitialFiltersSet(true);
41548
41736
  }
41549
- dispatch(setResults({ results: packageSearchResults }));
41737
+ dispatch(setResults(packageSearchResults));
41738
+ initialFilteredResults = applyFilters(packageSearchResults, filters);
41739
+ dispatch(setFilteredResults(initialFilteredResults));
41550
41740
  if ((packageSearchResults === null || packageSearchResults === void 0 ? void 0 : packageSearchResults.length) > 0) {
41551
41741
  if (entryId) {
41552
41742
  matching = packageSearchResults.find(function (r) {
@@ -41556,13 +41746,13 @@ var SearchResultsContainer = function () {
41556
41746
  dispatch(setSelectedHotel(matching.productId));
41557
41747
  }
41558
41748
  } else {
41559
- dispatch(setSelectedHotel((_a = packageSearchResults[0]) === null || _a === void 0 ? void 0 : _a.productId));
41749
+ dispatch(setSelectedHotel((_b = packageSearchResults[0]) === null || _b === void 0 ? void 0 : _b.productId));
41560
41750
  }
41561
41751
  }
41562
41752
  dispatch(setIsLoading(false));
41563
41753
  return [3 /*break*/, 7];
41564
41754
  case 6:
41565
- err_1 = _b.sent();
41755
+ err_1 = _c.sent();
41566
41756
  console.error('Search failed', err_1);
41567
41757
  dispatch(setIsLoading(false));
41568
41758
  return [3 /*break*/, 7];
@@ -41575,13 +41765,14 @@ var SearchResultsContainer = function () {
41575
41765
  if (!(context === null || context === void 0 ? void 0 : context.showMockup)) {
41576
41766
  if (
41577
41767
  (context === null || context === void 0 ? void 0 : context.type) === 'hotel-flight' ||
41578
- (context === null || context === void 0 ? void 0 : context.type) === 'hotel'
41768
+ (context === null || context === void 0 ? void 0 : context.type) === 'hotel' ||
41769
+ (context === null || context === void 0 ? void 0 : context.type) === 'groupTour'
41579
41770
  ) {
41580
- runHotelSearch();
41771
+ runSearch();
41581
41772
  }
41582
41773
  }
41583
41774
  },
41584
- [location.search, searchTrigger]
41775
+ [location.search]
41585
41776
  );
41586
41777
  // Seperate detailsCall
41587
41778
  React.useEffect(
@@ -41682,6 +41873,13 @@ var SearchResultsContainer = function () {
41682
41873
  },
41683
41874
  [selectedHotelId]
41684
41875
  );
41876
+ React.useEffect(
41877
+ function () {
41878
+ var filteredResults = applyFilters(results, filters);
41879
+ dispatch(setFilteredResults(filteredResults));
41880
+ },
41881
+ [filters, results]
41882
+ );
41685
41883
  return React__default['default'].createElement(
41686
41884
  'div',
41687
41885
  { id: 'tide-booking', className: 'search__bg' },
@@ -41706,23 +41904,20 @@ var SearchResultsContainer = function () {
41706
41904
  }
41707
41905
  })
41708
41906
  ),
41709
- (context.type === 'hotel-flight' || context.type === 'hotel' || context.type === 'roundTrip') &&
41907
+ (context.type === 'hotel-flight' || context.type === 'hotel' || context.type === 'groupTour' || context.type === 'roundTrip') &&
41710
41908
  React__default['default'].createElement(
41711
41909
  React__default['default'].Fragment,
41712
41910
  null,
41713
41911
  context.type != 'hotel-flight' &&
41714
41912
  context.showFilters &&
41715
41913
  React__default['default'].createElement(Filters, {
41914
+ initialFilters: initialFilters,
41716
41915
  filters: filters,
41717
41916
  isOpen: filtersOpen,
41718
41917
  handleSetIsOpen: function () {
41719
41918
  return setFiltersOpen(!filtersOpen);
41720
41919
  },
41721
- handleApplyFilters: function () {
41722
- return setSearchTrigger(function (prev) {
41723
- return prev + 1;
41724
- });
41725
- },
41920
+ // handleApplyFilters={() => setSearchTrigger((prev) => prev + 1)}
41726
41921
  isLoading: isLoading
41727
41922
  }),
41728
41923
  context.type === 'hotel-flight' &&
@@ -41790,7 +41985,7 @@ var SearchResultsContainer = function () {
41790
41985
  React__default['default'].createElement(
41791
41986
  React__default['default'].Fragment,
41792
41987
  null,
41793
- (results === null || results === void 0 ? void 0 : results.length) && results.length,
41988
+ (filteredResults === null || filteredResults === void 0 ? void 0 : filteredResults.length) && filteredResults.length,
41794
41989
  ' ',
41795
41990
  translations.SRP.TOTAL_RESULTS_LABEL
41796
41991
  )
@@ -41816,6 +42011,7 @@ var SearchResultsContainer = function () {
41816
42011
  { className: 'search__results__wrapper' },
41817
42012
  context.showTabViews && React__default['default'].createElement(TabViews, null),
41818
42013
  context.showRoundTripResults && context.showMockup && React__default['default'].createElement(RoundTripResults, null),
42014
+ context.type === 'groupTour' && React__default['default'].createElement(GroupTourResults, { isLoading: isLoading }),
41819
42015
  context.type === 'hotel-flight' &&
41820
42016
  context.showFlightResults &&
41821
42017
  (bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.outwardFlights) &&
@@ -41823,8 +42019,7 @@ var SearchResultsContainer = function () {
41823
42019
  flights: bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.outwardFlights,
41824
42020
  isDeparture: true
41825
42021
  }),
41826
- context.showHotelAccommodationResults &&
41827
- React__default['default'].createElement(HotelAccommodationResults, { isLoading: isLoading, context: context }),
42022
+ context.showHotelAccommodationResults && React__default['default'].createElement(HotelAccommodationResults, { isLoading: isLoading }),
41828
42023
  context.type === 'hotel-flight' &&
41829
42024
  context.showFlightResults &&
41830
42025
  (bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.returnFlights) &&