@qite/tide-booking-component 1.4.110 → 1.4.111

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 (53) hide show
  1. package/build/build-cjs/index.js +2316 -1555
  2. package/build/build-cjs/src/booking-wizard/features/travelers-form/travelers-form.d.ts +1 -2
  3. package/build/build-cjs/src/search-results/components/book-packaging-entry/index.d.ts +1 -0
  4. package/build/build-cjs/src/search-results/store/search-results-slice.d.ts +3 -1
  5. package/build/build-cjs/src/search-results/types.d.ts +3 -0
  6. package/build/build-cjs/src/shared/booking/shared-confirmation.d.ts +25 -0
  7. package/build/build-cjs/src/shared/booking/summary.d.ts +43 -0
  8. package/build/build-cjs/src/shared/booking/travelers-form.d.ts +93 -0
  9. package/build/build-cjs/src/shared/utils/booking-summary.d.ts +1 -0
  10. package/build/build-cjs/src/shared/utils/localization-util.d.ts +6 -0
  11. package/build/build-esm/index.js +2213 -1453
  12. package/build/build-esm/src/booking-wizard/features/travelers-form/travelers-form.d.ts +1 -2
  13. package/build/build-esm/src/search-results/components/book-packaging-entry/index.d.ts +1 -0
  14. package/build/build-esm/src/search-results/store/search-results-slice.d.ts +3 -1
  15. package/build/build-esm/src/search-results/types.d.ts +3 -0
  16. package/build/build-esm/src/shared/booking/shared-confirmation.d.ts +25 -0
  17. package/build/build-esm/src/shared/booking/summary.d.ts +43 -0
  18. package/build/build-esm/src/shared/booking/travelers-form.d.ts +93 -0
  19. package/build/build-esm/src/shared/utils/booking-summary.d.ts +1 -0
  20. package/build/build-esm/src/shared/utils/localization-util.d.ts +6 -0
  21. package/package.json +2 -2
  22. package/src/booking-wizard/components/step-indicator.tsx +1 -1
  23. package/src/booking-wizard/components/step-route.tsx +1 -1
  24. package/src/booking-wizard/features/confirmation/confirmation.tsx +11 -55
  25. package/src/booking-wizard/features/sidebar/index.tsx +1 -1
  26. package/src/booking-wizard/features/summary/summary.tsx +1 -1
  27. package/src/booking-wizard/features/travelers-form/travelers-form.tsx +84 -1010
  28. package/src/search-results/components/book-packaging-entry/index.tsx +192 -11
  29. package/src/search-results/components/book-packaging-entry/wl-sidebar.tsx +1 -4
  30. package/src/search-results/components/group-tour/group-tour-card.tsx +1 -1
  31. package/src/search-results/components/group-tour/group-tour-results.tsx +1 -1
  32. package/src/search-results/components/search-results-container/search-results-container.tsx +42 -14
  33. package/src/search-results/store/search-results-slice.ts +8 -2
  34. package/src/search-results/types.ts +4 -0
  35. package/src/shared/booking/shared-confirmation.tsx +105 -0
  36. package/src/shared/booking/summary.tsx +380 -0
  37. package/src/shared/booking/travelers-form.tsx +870 -0
  38. package/src/shared/components/flyin/flyin.tsx +8 -9
  39. package/src/shared/components/flyin/packaging-flights-flyin.tsx +4 -4
  40. package/src/shared/utils/booking-summary.tsx +46 -0
  41. package/src/shared/utils/tide-api-utils.ts +2 -2
  42. package/styles/components/_dropdown.scss +5 -0
  43. package/styles/components/_flyin.scss +43 -0
  44. package/styles/components/_search.scss +5 -0
  45. /package/build/build-cjs/src/shared/booking/{BookingPanel.d.ts → booking-panel.d.ts} +0 -0
  46. /package/build/build-cjs/src/shared/booking/{Sidebar.d.ts → shared-sidebar.d.ts} +0 -0
  47. /package/build/build-cjs/src/shared/booking/{StepIndicators.d.ts → step-indicators.d.ts} +0 -0
  48. /package/build/build-esm/src/shared/booking/{BookingPanel.d.ts → booking-panel.d.ts} +0 -0
  49. /package/build/build-esm/src/shared/booking/{Sidebar.d.ts → shared-sidebar.d.ts} +0 -0
  50. /package/build/build-esm/src/shared/booking/{StepIndicators.d.ts → step-indicators.d.ts} +0 -0
  51. /package/src/shared/booking/{BookingPanel.tsx → booking-panel.tsx} +0 -0
  52. /package/src/shared/booking/{Sidebar.tsx → shared-sidebar.tsx} +0 -0
  53. /package/src/shared/booking/{StepIndicators.tsx → step-indicators.tsx} +0 -0
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import React__default, { useLayoutEffect as useLayoutEffect$1, useEffect, useContext, useState, useRef, useCallback, useMemo } from 'react';
4
4
  import JsonURL from '@jsonurl/jsonurl';
5
5
  import {
6
- format as format$1,
6
+ format as format$2,
7
7
  isToday,
8
8
  getDate,
9
9
  getYear,
@@ -54,8 +54,8 @@ import {
54
54
  sum,
55
55
  last,
56
56
  findIndex as findIndex$1,
57
- get,
58
57
  set,
58
+ get,
59
59
  isEqual as isEqual$1,
60
60
  groupBy,
61
61
  minBy,
@@ -81,9 +81,9 @@ import {
81
81
  Route
82
82
  } from 'react-router';
83
83
  import 'react-dom';
84
- import flat from 'flat';
85
- import { useFormik } from 'formik';
86
84
  import produce from 'immer';
85
+ import { useFormik } from 'formik';
86
+ import flat from 'flat';
87
87
  import { v4 } from 'uuid';
88
88
 
89
89
  function _mergeNamespaces(n, m) {
@@ -7118,7 +7118,7 @@ function getLocale(code) {
7118
7118
  var getPriceDifferenceText = function (price, currencyCode) {
7119
7119
  return price > 0 ? '+ '.concat(formatPrice$3(Math.abs(price), currencyCode)) : '- '.concat(formatPrice$3(Math.abs(price), currencyCode));
7120
7120
  };
7121
- function format(text, args) {
7121
+ function format$1(text, args) {
7122
7122
  return text.replace(/{([0-9]+)}/g, function (match, index) {
7123
7123
  return typeof args[index] == 'undefined' ? match : args[index];
7124
7124
  });
@@ -7158,7 +7158,7 @@ var longFormatDate = function (dateTime, language) {
7158
7158
  return '';
7159
7159
  }
7160
7160
  var locale = getLocale(language);
7161
- var formattedDate = format$1(new Date(dateTime), 'eee dd MMM yy', { locale: locale });
7161
+ var formattedDate = format$2(new Date(dateTime), 'eee dd MMM yy', { locale: locale });
7162
7162
  return formattedDate;
7163
7163
  };
7164
7164
  var durationTicksInHoursString = function (durationInTicks) {
@@ -13087,7 +13087,7 @@ PERFORMANCE OF THIS SOFTWARE.
13087
13087
  };
13088
13088
  var ENDPOINT_BOOKABLE_DATES = ENDPOINT$8 + '/bookable-dates';
13089
13089
  var ENDPOINT_PRICE_DETAILS$1 = ENDPOINT$8 + '/price-details';
13090
- var ENDPOINT_BOOK = ENDPOINT$8 + '/book';
13090
+ var ENDPOINT_BOOK$1 = ENDPOINT$8 + '/book';
13091
13091
  var ENDPOINT_UPDATE = ENDPOINT$8 + '/update';
13092
13092
  var ENDPOINT_AGENTS = ENDPOINT$8 + '/agents';
13093
13093
  var ENDPOINT_AVAILABLE_ALLOTMENTS = function (eventId, productCode) {
@@ -13192,7 +13192,7 @@ PERFORMANCE OF THIS SOFTWARE.
13192
13192
  return post(url, apiKey, body, config.token, signal, true, languageCode);
13193
13193
  };
13194
13194
  var book = function (config, request, signal, languageCode) {
13195
- var url = '' + config.host + ENDPOINT_BOOK;
13195
+ var url = '' + config.host + ENDPOINT_BOOK$1;
13196
13196
  var apiKey = config.apiKey;
13197
13197
  var body = JSON.stringify(request);
13198
13198
  return post(url, apiKey, body, config.token, signal, true, languageCode);
@@ -13715,6 +13715,7 @@ PERFORMANCE OF THIS SOFTWARE.
13715
13715
  var ENDPOINT_EXCURSIONS = ENDPOINT + '/excursions';
13716
13716
  var ENDPOINT_FLIGHTS = ENDPOINT + '/flights';
13717
13717
  var ENDPOINT_PRICE_DETAILS = ENDPOINT + '/price-details';
13718
+ var ENDPOINT_BOOK = ENDPOINT + '/book';
13718
13719
  var ENDPOINT_ITINERARY = ENDPOINT + '/itinerary';
13719
13720
  var ENDPOINT_ENTRY = function (magicLinkCode) {
13720
13721
  return ENDPOINT + '/entry/' + magicLinkCode;
@@ -13759,6 +13760,12 @@ PERFORMANCE OF THIS SOFTWARE.
13759
13760
  var body = JSON.stringify(request);
13760
13761
  return post(url, apiKey, body, config.token, signal, true);
13761
13762
  };
13763
+ var bookPackagingEntry = function (config, request, signal) {
13764
+ var url = '' + config.host + ENDPOINT_BOOK;
13765
+ var apiKey = config.apiKey;
13766
+ var body = JSON.stringify(request);
13767
+ return post(url, apiKey, body, config.token, signal, true);
13768
+ };
13762
13769
 
13763
13770
  exports.AllotmentType = AllotmentType;
13764
13771
  exports.ContactForm = ContactForm;
@@ -13782,6 +13789,7 @@ PERFORMANCE OF THIS SOFTWARE.
13782
13789
  exports.availableCountries = availableCountries;
13783
13790
  exports.availableFlights = availableFlights;
13784
13791
  exports.book = book;
13792
+ exports.bookPackagingEntry = bookPackagingEntry;
13785
13793
  exports.bookableDates = bookableDates;
13786
13794
  exports.changeEntryAgentSurcharge = changeEntryAgentSurcharge;
13787
13795
  exports.confirm = confirm;
@@ -13846,9 +13854,16 @@ PERFORMANCE OF THIS SOFTWARE.
13846
13854
  exports.validateVoucher = validateVoucher;
13847
13855
  })(build);
13848
13856
 
13857
+ var tideConnection = {
13858
+ // host: 'https://localhost:44341',
13859
+ host: 'https://preview-tide.tidesoftware.be',
13860
+ apiKey: 'e9b95d79-de4c-41d6-ab7e-3dd429873058',
13861
+ catalogueIds: [1],
13862
+ officeId: 1
13863
+ };
13849
13864
  function buildTideClientConfig(settings) {
13850
- var HOST = (settings === null || settings === void 0 ? void 0 : settings.apiUrl) || process.env.REACT_APP_BOOKING_HOST;
13851
- var API_KEY = (settings === null || settings === void 0 ? void 0 : settings.apiKey) || process.env.REACT_APP_BOOKING_API_KEY;
13865
+ var HOST = (settings === null || settings === void 0 ? void 0 : settings.apiUrl) || tideConnection.host;
13866
+ var API_KEY = (settings === null || settings === void 0 ? void 0 : settings.apiKey) || tideConnection.apiKey;
13852
13867
  var token = selectAgentToken();
13853
13868
  if (isNil(HOST)) {
13854
13869
  throw Error('Environment variable "HOST" was not set.');
@@ -17009,7 +17024,7 @@ var Calendar$1 = function (_a) {
17009
17024
  { className: buildClassName(['calendar__previous', !hasPreviousButton && 'calendar__previous--disabled']), onClick: handlePreviousClick },
17010
17025
  React__default.createElement(Icon, { name: 'ui-chevron' })
17011
17026
  ),
17012
- React__default.createElement('div', { className: 'calendar__current-month' }, format$1(focusDate, 'MMMM yyyy', { locale: locale })),
17027
+ React__default.createElement('div', { className: 'calendar__current-month' }, format$2(focusDate, 'MMMM yyyy', { locale: locale })),
17013
17028
  React__default.createElement(
17014
17029
  'div',
17015
17030
  { className: buildClassName(['calendar__next', !hasNextButton && 'calendar__next--disabled']), onClick: handleNextClick },
@@ -17023,7 +17038,7 @@ var Calendar$1 = function (_a) {
17023
17038
  return React__default.createElement(
17024
17039
  'div',
17025
17040
  { className: 'calendar__day-label', key: 'day_'.concat(i) },
17026
- format$1(calendarDays[i], 'EEEEEE', { locale: locale })
17041
+ format$2(calendarDays[i], 'EEEEEE', { locale: locale })
17027
17042
  );
17028
17043
  })
17029
17044
  )
@@ -17298,7 +17313,7 @@ var Dates = function (_a) {
17298
17313
  React__default.createElement('input', {
17299
17314
  type: 'text',
17300
17315
  readOnly: true,
17301
- value: (value === null || value === void 0 ? void 0 : value.fromDate) ? format$1(value.fromDate, 'dd/MM/yyyy') : '',
17316
+ value: (value === null || value === void 0 ? void 0 : value.fromDate) ? format$2(value.fromDate, 'dd/MM/yyyy') : '',
17302
17317
  className: 'form__input',
17303
17318
  placeholder: translations.PRODUCT.DEPARTURE_DATE,
17304
17319
  onClick: handleInputFocus
@@ -17311,7 +17326,7 @@ var Dates = function (_a) {
17311
17326
  React__default.createElement('input', {
17312
17327
  type: 'text',
17313
17328
  readOnly: true,
17314
- value: (value === null || value === void 0 ? void 0 : value.toDate) ? format$1(value.toDate, 'dd/MM/yyyy') : '',
17329
+ value: (value === null || value === void 0 ? void 0 : value.toDate) ? format$2(value.toDate, 'dd/MM/yyyy') : '',
17315
17330
  className: 'form__input',
17316
17331
  placeholder: translations.PRODUCT.RETURN_DATE,
17317
17332
  onClick: handleInputFocus
@@ -17978,10 +17993,10 @@ var Product = function (_a) {
17978
17993
  }
17979
17994
  }
17980
17995
  if (dateRange === null || dateRange === void 0 ? void 0 : dateRange.fromDate) {
17981
- params['startDate'] = format$1(dateRange.fromDate, DATE_FORMAT);
17996
+ params['startDate'] = format$2(dateRange.fromDate, DATE_FORMAT);
17982
17997
  }
17983
17998
  if (dateRange === null || dateRange === void 0 ? void 0 : dateRange.toDate) {
17984
- params['endDate'] = format$1(dateRange.toDate, DATE_FORMAT);
17999
+ params['endDate'] = format$2(dateRange.toDate, DATE_FORMAT);
17985
18000
  }
17986
18001
  params['catalogueId'] = catalogueId.toString();
17987
18002
  if (addProductToQuery) {
@@ -18011,11 +18026,11 @@ var Product = function (_a) {
18011
18026
  }
18012
18027
  setDateRange(value);
18013
18028
  if (value.fromDate && value.toDate && searchType === 1 && searchResults.length > 0) {
18014
- var from_1 = format$1(value.fromDate, DATE_FORMAT);
18015
- var to_1 = format$1(value.toDate, DATE_FORMAT);
18029
+ var from_1 = format$2(value.fromDate, DATE_FORMAT);
18030
+ var to_1 = format$2(value.toDate, DATE_FORMAT);
18016
18031
  var selectedItem = searchResults.find(function (item) {
18017
- var itemFrom = format$1(new Date(item.fromDate), DATE_FORMAT);
18018
- var itemTo = format$1(new Date(item.toDate), DATE_FORMAT);
18032
+ var itemFrom = format$2(new Date(item.fromDate), DATE_FORMAT);
18033
+ var itemTo = format$2(new Date(item.toDate), DATE_FORMAT);
18019
18034
  return itemFrom === from_1 && itemTo === to_1;
18020
18035
  });
18021
18036
  if (selectedItem) {
@@ -19823,7 +19838,7 @@ var selectBookingQuery = function (state) {
19823
19838
  var key = _a[0],
19824
19839
  value = _a[1];
19825
19840
  if (key === 'startDate' || key === 'endDate') {
19826
- value = format$1(parseISO(value), 'yyyy-MM-dd');
19841
+ value = format$2(parseISO(value), 'yyyy-MM-dd');
19827
19842
  }
19828
19843
  if (key === 'rooms') {
19829
19844
  value = JsonURL.stringify(
@@ -20694,7 +20709,7 @@ var setOfficeId = ((_a$3 = bookingSlice.actions), _a$3.setOfficeId),
20694
20709
  setBookingAttributes = _a$3.setBookingAttributes,
20695
20710
  setCalculateDeposit = _a$3.setCalculateDeposit,
20696
20711
  setShowCommission = _a$3.setShowCommission,
20697
- setBookingNumber = _a$3.setBookingNumber,
20712
+ setBookingNumber$1 = _a$3.setBookingNumber,
20698
20713
  setIsRetry = _a$3.setIsRetry,
20699
20714
  setFetchingPackage = _a$3.setFetchingPackage,
20700
20715
  setIsFetching = _a$3.setIsFetching,
@@ -20710,7 +20725,7 @@ var setOfficeId = ((_a$3 = bookingSlice.actions), _a$3.setOfficeId),
20710
20725
  setAgentAdressId = _a$3.setAgentAdressId,
20711
20726
  setBookingRemarks = _a$3.setBookingRemarks,
20712
20727
  setVoucherCodes = _a$3.setVoucherCodes,
20713
- setCurrentStep = _a$3.setCurrentStep,
20728
+ setCurrentStep$1 = _a$3.setCurrentStep,
20714
20729
  setPackageAirlineGroups = _a$3.setPackageAirlineGroups,
20715
20730
  setPackageAirportGroups = _a$3.setPackageAirportGroups,
20716
20731
  setFlights = _a$3.setFlights,
@@ -20961,37 +20976,27 @@ var Message = function (_a) {
20961
20976
  );
20962
20977
  };
20963
20978
 
20964
- var Confirmation = function () {
20965
- var dispatch = useAppDispatch();
20966
- var settings = useContext(SettingsContext);
20967
- var navigate = settings.skipRouter ? function () {} : useNavigate();
20968
- var bookingNumber = useSelector(selectBookingNumber);
20969
- var bookingQueryString = useSelector(selectBookingQueryString);
20970
- var isOption = useSelector(selectIsOption);
20971
- useEffect(
20972
- function () {
20973
- if (!bookingNumber) {
20974
- if (settings.skipRouter) {
20975
- dispatch(setCurrentStep(OPTIONS_FORM_STEP));
20976
- } else {
20977
- navigate(
20978
- ''
20979
- .concat(!settings.skipBasePathInRouting ? settings.basePath : '')
20980
- .concat(settings.error.pathSuffix, '?')
20981
- .concat(bookingQueryString)
20982
- );
20983
- }
20984
- }
20985
- },
20986
- [bookingNumber]
20987
- );
20988
- var translations = useSelector(selectTranslations);
20989
- var encodedMailSubject = encodeURI(translations.CONFIRMATION.MAIL_SUBJECT);
20979
+ function format(str, args) {
20980
+ // Simple format function: replaces {0}, {1}, ... with args
20981
+ return str.replace(/\{(\d+)\}/g, function (match, number) {
20982
+ return typeof args[number] !== 'undefined' ? String(args[number]) : match;
20983
+ });
20984
+ }
20985
+ var SharedConfirmation = function (_a) {
20986
+ var bookingNumber = _a.bookingNumber,
20987
+ isOption = _a.isOption,
20988
+ isOffer = _a.isOffer,
20989
+ translations = _a.translations,
20990
+ companyContactPhone = _a.companyContactPhone,
20991
+ companyContactEmail = _a.companyContactEmail,
20992
+ _b = _a.homeUrl,
20993
+ homeUrl = _b === void 0 ? '/' : _b;
20994
+ var encodedMailSubject = encodeURI(translations.MAIL_SUBJECT);
20990
20995
  var titleText = isOption
20991
- ? format(translations.CONFIRMATION.TITLE_TEXT_OPTION, [bookingNumber])
20992
- : settings.isOffer
20993
- ? format(translations.CONFIRMATION.TITLE_TEXT_OFFER, [bookingNumber])
20994
- : format(translations.CONFIRMATION.TITLE_TEXT_BOOKING, [bookingNumber]);
20996
+ ? format(translations.TITLE_TEXT_OPTION, [bookingNumber])
20997
+ : isOffer
20998
+ ? format(translations.TITLE_TEXT_OFFER, [bookingNumber])
20999
+ : format(translations.TITLE_TEXT_BOOKING, [bookingNumber]);
20995
21000
  return React__default.createElement(
20996
21001
  'div',
20997
21002
  { className: 'form form__booking--message', id: 'booking--confirmation' },
@@ -21009,21 +21014,27 @@ var Confirmation = function () {
21009
21014
  {
21010
21015
  type: 'success',
21011
21016
  title: titleText,
21012
- actionComponent: React__default.createElement(
21013
- 'div',
21014
- { className: 'sm' },
21015
- React__default.createElement(
21016
- 'a',
21017
- { href: 'tel://'.concat(settings.companyContactPhone), className: 'sm__icon' },
21018
- React__default.createElement(Icon, { name: 'tel' })
21019
- ),
21020
- React__default.createElement(
21021
- 'a',
21022
- { href: 'mailto://'.concat(settings.companyContactEmail), className: 'sm__icon' },
21023
- React__default.createElement(Icon, { name: 'mail' })
21024
- ),
21025
- React__default.createElement('a', { href: '/', className: 'sm__icon' }, React__default.createElement(Icon, { name: 'home' }))
21026
- )
21017
+ actionComponent:
21018
+ companyContactPhone || companyContactEmail
21019
+ ? React__default.createElement(
21020
+ 'div',
21021
+ { className: 'sm' },
21022
+ companyContactPhone &&
21023
+ React__default.createElement(
21024
+ 'a',
21025
+ { href: 'tel://'.concat(companyContactPhone), className: 'sm__icon' },
21026
+ React__default.createElement(Icon, { name: 'tel' })
21027
+ ),
21028
+ companyContactEmail &&
21029
+ React__default.createElement(
21030
+ 'a',
21031
+ { href: 'mailto://'.concat(companyContactEmail), className: 'sm__icon' },
21032
+ React__default.createElement(Icon, { name: 'mail' })
21033
+ ),
21034
+ homeUrl &&
21035
+ React__default.createElement('a', { href: homeUrl, className: 'sm__icon' }, React__default.createElement(Icon, { name: 'home' }))
21036
+ )
21037
+ : undefined
21027
21038
  },
21028
21039
  !isOption
21029
21040
  ? React__default.createElement(
@@ -21032,25 +21043,23 @@ var Confirmation = function () {
21032
21043
  React__default.createElement(
21033
21044
  'p',
21034
21045
  null,
21035
- translations.CONFIRMATION.MESSAGE_TEXT1,
21046
+ translations.MESSAGE_TEXT1,
21036
21047
  React__default.createElement('br', null),
21037
- settings.isOffer ? translations.CONFIRMATION.MESSAGE_TEXT2_OFFER : translations.CONFIRMATION.MESSAGE_TEXT2_BOOKING
21048
+ isOffer ? translations.MESSAGE_TEXT2_OFFER : translations.MESSAGE_TEXT2_BOOKING
21038
21049
  ),
21039
- React__default.createElement(
21040
- 'p',
21041
- null,
21042
- translations.CONFIRMATION.QUESTIONS_TEXT1,
21043
- ' ',
21050
+ companyContactEmail &&
21044
21051
  React__default.createElement(
21045
- 'a',
21046
- {
21047
- href: 'mailto:'.concat(settings.companyContactEmail, '?subject=').concat(encodedMailSubject),
21048
- title: translations.CONFIRMATION.QUESTIONS_ALT
21049
- },
21050
- translations.CONFIRMATION.QUESTIONS_TEXT2
21051
- ),
21052
- translations.CONFIRMATION.QUESTIONS_TEXT3
21053
- )
21052
+ 'p',
21053
+ null,
21054
+ translations.QUESTIONS_TEXT1,
21055
+ ' ',
21056
+ React__default.createElement(
21057
+ 'a',
21058
+ { href: 'mailto:'.concat(companyContactEmail, '?subject=').concat(encodedMailSubject), title: translations.QUESTIONS_ALT },
21059
+ translations.QUESTIONS_TEXT2
21060
+ ),
21061
+ translations.QUESTIONS_TEXT3
21062
+ )
21054
21063
  )
21055
21064
  : undefined
21056
21065
  )
@@ -21060,6 +21069,42 @@ var Confirmation = function () {
21060
21069
  );
21061
21070
  };
21062
21071
 
21072
+ var Confirmation = function () {
21073
+ var dispatch = useAppDispatch();
21074
+ var settings = useContext(SettingsContext);
21075
+ var navigate = settings.skipRouter ? function () {} : useNavigate();
21076
+ var bookingNumber = useSelector(selectBookingNumber);
21077
+ var bookingQueryString = useSelector(selectBookingQueryString);
21078
+ var isOption = useSelector(selectIsOption);
21079
+ var translations = useSelector(selectTranslations);
21080
+ useEffect(
21081
+ function () {
21082
+ if (!bookingNumber) {
21083
+ if (settings.skipRouter) {
21084
+ dispatch(setCurrentStep$1(OPTIONS_FORM_STEP));
21085
+ } else {
21086
+ navigate(
21087
+ ''
21088
+ .concat(!settings.skipBasePathInRouting ? settings.basePath : '')
21089
+ .concat(settings.error.pathSuffix, '?')
21090
+ .concat(bookingQueryString)
21091
+ );
21092
+ }
21093
+ }
21094
+ },
21095
+ [bookingNumber]
21096
+ );
21097
+ return React__default.createElement(SharedConfirmation, {
21098
+ bookingNumber: bookingNumber,
21099
+ isOption: isOption,
21100
+ isOffer: settings.isOffer,
21101
+ translations: translations.CONFIRMATION,
21102
+ companyContactPhone: settings.companyContactPhone,
21103
+ companyContactEmail: settings.companyContactEmail,
21104
+ homeUrl: settings.basePath || '/'
21105
+ });
21106
+ };
21107
+
21063
21108
  var Error$1 = function () {
21064
21109
  var dispatch = useAppDispatch();
21065
21110
  var settings = useContext(SettingsContext);
@@ -22063,7 +22108,7 @@ var getDateText = function (date, hideYear) {
22063
22108
  return undefined;
22064
22109
  }
22065
22110
  try {
22066
- return hideYear ? format$1(parseISO(date), 'dd/MM') : format$1(parseISO(date), 'dd/MM/yyyy');
22111
+ return hideYear ? format$2(parseISO(date), 'dd/MM') : format$2(parseISO(date), 'dd/MM/yyyy');
22067
22112
  } catch (_a) {
22068
22113
  // Error while parsing date
22069
22114
  return undefined;
@@ -22702,9 +22747,9 @@ var FlightOptionsForm = function () {
22702
22747
  var handleSubmit = function (e) {
22703
22748
  if (settings.skipRouter) {
22704
22749
  if (settings.roomOptions.isHidden) {
22705
- dispatch(setCurrentStep(OPTIONS_FORM_STEP));
22750
+ dispatch(setCurrentStep$1(OPTIONS_FORM_STEP));
22706
22751
  } else {
22707
- dispatch(setCurrentStep(ROOM_OPTIONS_FORM_STEP));
22752
+ dispatch(setCurrentStep$1(ROOM_OPTIONS_FORM_STEP));
22708
22753
  }
22709
22754
  } else {
22710
22755
  if (settings.roomOptions.isHidden) {
@@ -22785,7 +22830,7 @@ var FlightOptionsForm = function () {
22785
22830
  var filteredGroups = filterGroupedFlights(flightGroups, filterOptions);
22786
22831
  var resultCount = filteredGroups.length;
22787
22832
  var goPrevious = function () {
22788
- dispatch(setCurrentStep(TRAVELERS_FORM_STEP));
22833
+ dispatch(setCurrentStep$1(TRAVELERS_FORM_STEP));
22789
22834
  };
22790
22835
  return React__default.createElement(
22791
22836
  React__default.Fragment,
@@ -24824,9 +24869,9 @@ var OptionsForm = function () {
24824
24869
  var handleSubmit = function (e) {
24825
24870
  if (settings.skipRouter) {
24826
24871
  if (travelersFirstStep) {
24827
- dispatch(setCurrentStep(SUMMARY_STEP));
24872
+ dispatch(setCurrentStep$1(SUMMARY_STEP));
24828
24873
  } else {
24829
- dispatch(setCurrentStep(TRAVELERS_FORM_STEP));
24874
+ dispatch(setCurrentStep$1(TRAVELERS_FORM_STEP));
24830
24875
  }
24831
24876
  } else {
24832
24877
  if (travelersFirstStep) {
@@ -24935,9 +24980,9 @@ var OptionsForm = function () {
24935
24980
  }, []);
24936
24981
  var goPrevious = function () {
24937
24982
  if (settings.roomOptions.isHidden) {
24938
- dispatch(setCurrentStep(FLIGHT_OPTIONS_FORM_STEP));
24983
+ dispatch(setCurrentStep$1(FLIGHT_OPTIONS_FORM_STEP));
24939
24984
  } else {
24940
- dispatch(setCurrentStep(ROOM_OPTIONS_FORM_STEP));
24985
+ dispatch(setCurrentStep$1(ROOM_OPTIONS_FORM_STEP));
24941
24986
  }
24942
24987
  };
24943
24988
  var previousUrl = settings.roomOptions.isHidden
@@ -25389,11 +25434,11 @@ var RoomOptionsForm = function () {
25389
25434
  var isLoading = useSelector(selectIsFetchingProductOptions);
25390
25435
  var rooms = buildSelectableRooms(packageRooms, settings.accommodations, settings.regimes, accommodationViews);
25391
25436
  var goPrevious = function () {
25392
- dispatch(setCurrentStep(FLIGHT_OPTIONS_FORM_STEP));
25437
+ dispatch(setCurrentStep$1(FLIGHT_OPTIONS_FORM_STEP));
25393
25438
  };
25394
25439
  var handleSubmit = function (e) {
25395
25440
  if (settings.skipRouter) {
25396
- dispatch(setCurrentStep(OPTIONS_FORM_STEP));
25441
+ dispatch(setCurrentStep$1(OPTIONS_FORM_STEP));
25397
25442
  } else {
25398
25443
  navigate(
25399
25444
  ''
@@ -26613,7 +26658,7 @@ var Summary = function () {
26613
26658
  : _e[0];
26614
26659
  if (!travelerFormValues) {
26615
26660
  if (settings.skipRouter) {
26616
- dispatch(setCurrentStep(TRAVELERS_FORM_STEP));
26661
+ dispatch(setCurrentStep$1(TRAVELERS_FORM_STEP));
26617
26662
  } else {
26618
26663
  navigate(''.concat(!settings.skipBasePathInRouting ? settings.basePath : '', '?').concat(bookingQueryString));
26619
26664
  }
@@ -26683,12 +26728,12 @@ var Summary = function () {
26683
26728
  case 2:
26684
26729
  bookingResponse = _b.sent();
26685
26730
  // Booking successfull
26686
- dispatch(setBookingNumber(bookingResponse.number));
26731
+ dispatch(setBookingNumber$1(bookingResponse.number));
26687
26732
  if (bookingResponse.paymentUrl) {
26688
26733
  window.location.href = bookingResponse.paymentUrl;
26689
26734
  } else {
26690
26735
  if (settings.skipRouter) {
26691
- dispatch(setCurrentStep(CONFIRMATION_STEP));
26736
+ dispatch(setCurrentStep$1(CONFIRMATION_STEP));
26692
26737
  } else {
26693
26738
  navigate(
26694
26739
  ''
@@ -26702,7 +26747,7 @@ var Summary = function () {
26702
26747
  case 3:
26703
26748
  _b.sent();
26704
26749
  if (settings.skipRouter) {
26705
- dispatch(setCurrentStep(ERROR_STEP));
26750
+ dispatch(setCurrentStep$1(ERROR_STEP));
26706
26751
  } else {
26707
26752
  navigate(
26708
26753
  ''
@@ -26810,7 +26855,7 @@ var Summary = function () {
26810
26855
  dispatch(fetchPriceDetails());
26811
26856
  };
26812
26857
  var goPrevious = function () {
26813
- dispatch(setCurrentStep(TRAVELERS_FORM_STEP));
26858
+ dispatch(setCurrentStep$1(TRAVELERS_FORM_STEP));
26814
26859
  };
26815
26860
  var translations = useSelector(selectTranslations);
26816
26861
  return React__default.createElement(
@@ -27395,218 +27440,6 @@ var Summary = function () {
27395
27440
  );
27396
27441
  };
27397
27442
 
27398
- var LabeledInput = function (_a) {
27399
- var name = _a.name,
27400
- type = _a.type,
27401
- required = _a.required,
27402
- value = _a.value,
27403
- defaultValue = _a.defaultValue,
27404
- min = _a.min,
27405
- max = _a.max,
27406
- label = _a.label,
27407
- placeholder = _a.placeholder,
27408
- extraClassName = _a.extraClassName,
27409
- hasError = _a.hasError,
27410
- onChange = _a.onChange,
27411
- onBlur = _a.onBlur;
27412
- return React__default.createElement(
27413
- 'label',
27414
- { className: buildClassName(['form__group', extraClassName, hasError && 'form__group--error']) },
27415
- React__default.createElement('span', { className: 'form__label' }, compact([label, required && '*']).join(' ')),
27416
- React__default.createElement('input', {
27417
- name: name,
27418
- type: type !== null && type !== void 0 ? type : 'text',
27419
- required: required,
27420
- className: 'form__input',
27421
- min: min,
27422
- max: max,
27423
- placeholder: placeholder,
27424
- onChange: onChange,
27425
- onBlur: onBlur,
27426
- value: value,
27427
- defaultValue: defaultValue
27428
- })
27429
- );
27430
- };
27431
-
27432
- var LabeledSelect = function (_a) {
27433
- var name = _a.name,
27434
- id = _a.id,
27435
- required = _a.required,
27436
- value = _a.value,
27437
- defaultValue = _a.defaultValue,
27438
- label = _a.label,
27439
- extraClassName = _a.extraClassName,
27440
- extraDropdownClassName = _a.extraDropdownClassName,
27441
- hasError = _a.hasError,
27442
- options = _a.options,
27443
- onChange = _a.onChange,
27444
- onBlur = _a.onBlur;
27445
- return React__default.createElement(
27446
- 'label',
27447
- { className: buildClassName(['form__group', extraClassName, hasError && 'form__group--error']) },
27448
- React__default.createElement('span', { className: 'form__label' }, compact([label, required && '*']).join(' ')),
27449
- React__default.createElement(
27450
- 'div',
27451
- { className: buildClassName(['dropdown', extraDropdownClassName]) },
27452
- React__default.createElement(
27453
- 'select',
27454
- { name: name, id: id, defaultValue: defaultValue, value: value, onBlur: onBlur, onChange: onChange },
27455
- options === null || options === void 0
27456
- ? void 0
27457
- : options.map(function (option) {
27458
- return React__default.createElement('option', { key: option.key, value: option.value }, option.label);
27459
- })
27460
- )
27461
- )
27462
- );
27463
- };
27464
-
27465
- var hasVisibleError = function (formik, key) {
27466
- return get(formik.errors, key) && get(formik.touched, key);
27467
- };
27468
-
27469
- var GenderControl = function (_a) {
27470
- var translations = _a.translations,
27471
- value = _a.value,
27472
- formik = _a.formik,
27473
- name = _a.name;
27474
- return React__default.createElement(
27475
- 'div',
27476
- { className: buildClassName(['form__group', hasVisibleError(formik, name) && 'form__group--error']) },
27477
- React__default.createElement('label', { className: 'form__label' }, translations.TRAVELERS_FORM.GENDER_ID, ' *'),
27478
- React__default.createElement(
27479
- 'div',
27480
- { className: 'radiobutton-group' },
27481
- React__default.createElement(
27482
- 'div',
27483
- { className: 'radiobutton' },
27484
- React__default.createElement(
27485
- 'label',
27486
- { className: 'radiobutton__label' },
27487
- React__default.createElement('input', {
27488
- type: 'radio',
27489
- className: 'radiobutton__input',
27490
- name: name,
27491
- onChange: formik.handleChange,
27492
- onBlur: formik.handleBlur,
27493
- value: 'm',
27494
- checked: value.gender === 'm'
27495
- }),
27496
- translations.TRAVELERS_FORM.MALE_GENDER
27497
- )
27498
- ),
27499
- React__default.createElement(
27500
- 'div',
27501
- { className: 'radiobutton' },
27502
- React__default.createElement(
27503
- 'label',
27504
- { className: 'radiobutton__label' },
27505
- React__default.createElement('input', {
27506
- type: 'radio',
27507
- className: 'radiobutton__input',
27508
- name: name,
27509
- onChange: formik.handleChange,
27510
- onBlur: formik.handleBlur,
27511
- value: 'f',
27512
- checked: value.gender === 'f'
27513
- }),
27514
- translations.TRAVELERS_FORM.FEMALE_GENDER
27515
- )
27516
- )
27517
- )
27518
- );
27519
- };
27520
-
27521
- var TypeAheadInput = function (_a) {
27522
- var name = _a.name,
27523
- value = _a.value,
27524
- placeholder = _a.placeholder,
27525
- options = _a.options,
27526
- onChange = _a.onChange,
27527
- onSelect = _a.onSelect,
27528
- onClear = _a.onClear;
27529
- var _b = useState(false),
27530
- showItems = _b[0],
27531
- setShowItems = _b[1];
27532
- var handleChange = function (e) {
27533
- if (onChange) {
27534
- onChange(e.target.value);
27535
- }
27536
- };
27537
- var handleClearClick = function (e) {
27538
- if (onClear) {
27539
- onClear();
27540
- }
27541
- setShowItems(false);
27542
- };
27543
- return React__default.createElement(
27544
- 'div',
27545
- { className: 'typeahead' },
27546
- React__default.createElement(
27547
- 'div',
27548
- { className: 'typeahead__trigger typeahead__trigger--icon' },
27549
- React__default.createElement(Icon, { name: 'ui-qsm-location' }),
27550
- React__default.createElement('input', {
27551
- type: 'text',
27552
- className: 'form__input',
27553
- name: name,
27554
- value: value,
27555
- onChange: handleChange,
27556
- placeholder: placeholder,
27557
- required: true,
27558
- autoComplete: 'off',
27559
- onKeyDown: function (e) {
27560
- if (e.key === 'Tab' && options && onSelect) {
27561
- onSelect(options[0].key);
27562
- setShowItems(false);
27563
- }
27564
- },
27565
- onFocus: function () {
27566
- return setShowItems(true);
27567
- }
27568
- }),
27569
- React__default.createElement('button', { type: 'button', className: 'button button--clear', onClick: handleClearClick })
27570
- ),
27571
- options &&
27572
- options.length > 0 &&
27573
- showItems &&
27574
- React__default.createElement(
27575
- 'div',
27576
- { className: 'typeahead__options' },
27577
- (options !== null && options !== void 0 ? options : []).map(function (option) {
27578
- var _a;
27579
- var matchIndex = typeof value !== 'undefined' ? option.text.indexOf(value) : 0;
27580
- var prefix = option.text.slice(0, matchIndex);
27581
- var highlight = option.text.slice(matchIndex, (_a = value === null || value === void 0 ? void 0 : value.length) !== null && _a !== void 0 ? _a : 0);
27582
- var suffix = option.text.slice(matchIndex);
27583
- return React__default.createElement(
27584
- 'div',
27585
- { className: 'typeahead__option', key: option.key },
27586
- React__default.createElement(
27587
- 'div',
27588
- { className: 'typeahead__option-header' },
27589
- React__default.createElement(
27590
- 'button',
27591
- {
27592
- onClick: function () {
27593
- if (onSelect) onSelect(option.key);
27594
- setShowItems(false);
27595
- },
27596
- type: 'button',
27597
- className: 'button button--plain'
27598
- },
27599
- prefix,
27600
- React__default.createElement('span', { className: 'typeahead__option-highlight' }, highlight),
27601
- suffix
27602
- )
27603
- )
27604
- );
27605
- })
27606
- )
27607
- );
27608
- };
27609
-
27610
27443
  function isValidEmail(email) {
27611
27444
  return !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,24}$/i.test(email);
27612
27445
  }
@@ -27646,18 +27479,18 @@ var validateForm = function (values, agentRequired, bookingType, translations, f
27646
27479
  };
27647
27480
  var formatTravelerField = function (room, pax, field) {
27648
27481
  return values.rooms.length > 1
27649
- ? format(translations.TRAVELERS_FORM.VALIDATION.TRAVELER_X_FIELD, [room, pax, field])
27650
- : format(translations.TRAVELERS_FORM.VALIDATION.SINGLE_ROOM_TRAVELER_X_FIELD, [pax, field]);
27482
+ ? format$1(translations.TRAVELERS_FORM.VALIDATION.TRAVELER_X_FIELD, [room, pax, field])
27483
+ : format$1(translations.TRAVELERS_FORM.VALIDATION.SINGLE_ROOM_TRAVELER_X_FIELD, [pax, field]);
27651
27484
  };
27652
27485
  var formatTravelerIsNoAdult = function (room, pax) {
27653
27486
  return values.rooms.length > 1
27654
- ? format(translations.TRAVELERS_FORM.VALIDATION.TRAVELER_X_IS_NO_ADULT, [room, pax])
27655
- : format(translations.TRAVELERS_FORM.VALIDATION.SINGLE_ROOM_TRAVELER_X_IS_NO_ADULT, [pax]);
27487
+ ? format$1(translations.TRAVELERS_FORM.VALIDATION.TRAVELER_X_IS_NO_ADULT, [room, pax])
27488
+ : format$1(translations.TRAVELERS_FORM.VALIDATION.SINGLE_ROOM_TRAVELER_X_IS_NO_ADULT, [pax]);
27656
27489
  };
27657
27490
  var formatTravelerIsNoChild = function (room, pax) {
27658
27491
  return values.rooms.length > 1
27659
- ? format(translations.TRAVELERS_FORM.VALIDATION.TRAVELER_X_IS_NO_CHILD, [room, pax])
27660
- : format(translations.TRAVELERS_FORM.VALIDATION.SINGLE_ROOM_TRAVELER_X_IS_NO_CHILD, [pax]);
27492
+ ? format$1(translations.TRAVELERS_FORM.VALIDATION.TRAVELER_X_IS_NO_CHILD, [room, pax])
27493
+ : format$1(translations.TRAVELERS_FORM.VALIDATION.SINGLE_ROOM_TRAVELER_X_IS_NO_CHILD, [pax]);
27661
27494
  };
27662
27495
  values.rooms.forEach(function (r, rIndex) {
27663
27496
  return r.adults.forEach(function (adult, index) {
@@ -27742,38 +27575,38 @@ var validateForm = function (values, agentRequired, bookingType, translations, f
27742
27575
  }
27743
27576
  if (bookingType != 'b2b' || (mainBookerFormFields === null || mainBookerFormFields === void 0 ? void 0 : mainBookerFormFields.length)) {
27744
27577
  if (isEmpty(values.street) && isMainBookerFormFieldPresent('street')) {
27745
- errors.street = format(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.STREET]);
27578
+ errors.street = format$1(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.STREET]);
27746
27579
  }
27747
27580
  if (isEmpty(values.houseNumber) && isMainBookerFormFieldPresent('houseNumber')) {
27748
- errors.houseNumber = format(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.HOUSE_NUMBER]);
27581
+ errors.houseNumber = format$1(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.HOUSE_NUMBER]);
27749
27582
  }
27750
27583
  if (isEmpty(values.zipCode) && isMainBookerFormFieldPresent('zipCode')) {
27751
- errors.zipCode = format(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.ZIPCODE]);
27584
+ errors.zipCode = format$1(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.ZIPCODE]);
27752
27585
  }
27753
27586
  if (isEmpty(values.place) && isMainBookerFormFieldPresent('place')) {
27754
- errors.place = format(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.CITY]);
27587
+ errors.place = format$1(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.CITY]);
27755
27588
  }
27756
27589
  if (isMainBookerFormFieldPresent('email')) {
27757
27590
  if (isEmpty(values.email)) {
27758
- errors.email = format(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.EMAIL]);
27591
+ errors.email = format$1(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.EMAIL]);
27759
27592
  } else if (isValidEmail(values.email)) {
27760
27593
  errors.email = translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_EMAIL_IS_INVALID;
27761
27594
  }
27762
27595
  if (isEmpty(values.emailConfirmation)) {
27763
- errors.emailConfirmation = format(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.REPEAT_EMAIL]);
27596
+ errors.emailConfirmation = format$1(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.REPEAT_EMAIL]);
27764
27597
  } else if (values.emailConfirmation !== values.email) {
27765
27598
  errors.emailConfirmation = translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_EMAIL_DOES_NOT_MATCH;
27766
27599
  }
27767
27600
  }
27768
27601
  if (isEmpty(values.country) && isMainBookerFormFieldPresent('country')) {
27769
- errors.country = format(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.COUNTRY]);
27602
+ errors.country = format$1(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.COUNTRY]);
27770
27603
  }
27771
27604
  if (isEmpty(values.phone) && isMainBookerFormFieldPresent('phone')) {
27772
- errors.phone = format(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.PHONE]);
27605
+ errors.phone = format$1(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.PHONE]);
27773
27606
  }
27774
27607
  } else {
27775
27608
  if (isEmpty(values.phone)) {
27776
- errors.phone = format(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.PHONE]);
27609
+ errors.phone = format$1(translations.TRAVELERS_FORM.VALIDATION.MAIN_BOOKER_FIELD, [translations.TRAVELERS_FORM.PHONE]);
27777
27610
  }
27778
27611
  }
27779
27612
  if (agentRequired && !values.travelAgentId) {
@@ -27782,6 +27615,73 @@ var validateForm = function (values, agentRequired, bookingType, translations, f
27782
27615
  return errors;
27783
27616
  };
27784
27617
 
27618
+ var LabeledInput = function (_a) {
27619
+ var name = _a.name,
27620
+ type = _a.type,
27621
+ required = _a.required,
27622
+ value = _a.value,
27623
+ defaultValue = _a.defaultValue,
27624
+ min = _a.min,
27625
+ max = _a.max,
27626
+ label = _a.label,
27627
+ placeholder = _a.placeholder,
27628
+ extraClassName = _a.extraClassName,
27629
+ hasError = _a.hasError,
27630
+ onChange = _a.onChange,
27631
+ onBlur = _a.onBlur;
27632
+ return React__default.createElement(
27633
+ 'label',
27634
+ { className: buildClassName(['form__group', extraClassName, hasError && 'form__group--error']) },
27635
+ React__default.createElement('span', { className: 'form__label' }, compact([label, required && '*']).join(' ')),
27636
+ React__default.createElement('input', {
27637
+ name: name,
27638
+ type: type !== null && type !== void 0 ? type : 'text',
27639
+ required: required,
27640
+ className: 'form__input',
27641
+ min: min,
27642
+ max: max,
27643
+ placeholder: placeholder,
27644
+ onChange: onChange,
27645
+ onBlur: onBlur,
27646
+ value: value,
27647
+ defaultValue: defaultValue
27648
+ })
27649
+ );
27650
+ };
27651
+
27652
+ var LabeledSelect = function (_a) {
27653
+ var name = _a.name,
27654
+ id = _a.id,
27655
+ required = _a.required,
27656
+ value = _a.value,
27657
+ defaultValue = _a.defaultValue,
27658
+ label = _a.label,
27659
+ extraClassName = _a.extraClassName,
27660
+ extraDropdownClassName = _a.extraDropdownClassName,
27661
+ hasError = _a.hasError,
27662
+ options = _a.options,
27663
+ onChange = _a.onChange,
27664
+ onBlur = _a.onBlur;
27665
+ return React__default.createElement(
27666
+ 'label',
27667
+ { className: buildClassName(['form__group', extraClassName, hasError && 'form__group--error']) },
27668
+ React__default.createElement('span', { className: 'form__label' }, compact([label, required && '*']).join(' ')),
27669
+ React__default.createElement(
27670
+ 'div',
27671
+ { className: buildClassName(['dropdown', extraDropdownClassName]) },
27672
+ React__default.createElement(
27673
+ 'select',
27674
+ { name: name, id: id, defaultValue: defaultValue, value: value, onBlur: onBlur, onChange: onChange },
27675
+ options === null || options === void 0
27676
+ ? void 0
27677
+ : options.map(function (option) {
27678
+ return React__default.createElement('option', { key: option.key, value: option.value }, option.label);
27679
+ })
27680
+ )
27681
+ )
27682
+ );
27683
+ };
27684
+
27785
27685
  var normalize = function (v) {
27786
27686
  return v == null ? '' : String(v);
27787
27687
  };
@@ -27913,6 +27813,151 @@ var PhoneInput = function (_a) {
27913
27813
  );
27914
27814
  };
27915
27815
 
27816
+ var hasVisibleError = function (formik, key) {
27817
+ return get(formik.errors, key) && get(formik.touched, key);
27818
+ };
27819
+
27820
+ var GenderControl = function (_a) {
27821
+ var translations = _a.translations,
27822
+ value = _a.value,
27823
+ formik = _a.formik,
27824
+ name = _a.name;
27825
+ return React__default.createElement(
27826
+ 'div',
27827
+ { className: buildClassName(['form__group', hasVisibleError(formik, name) && 'form__group--error']) },
27828
+ React__default.createElement('label', { className: 'form__label' }, translations.TRAVELERS_FORM.GENDER_ID, ' *'),
27829
+ React__default.createElement(
27830
+ 'div',
27831
+ { className: 'radiobutton-group' },
27832
+ React__default.createElement(
27833
+ 'div',
27834
+ { className: 'radiobutton' },
27835
+ React__default.createElement(
27836
+ 'label',
27837
+ { className: 'radiobutton__label' },
27838
+ React__default.createElement('input', {
27839
+ type: 'radio',
27840
+ className: 'radiobutton__input',
27841
+ name: name,
27842
+ onChange: formik.handleChange,
27843
+ onBlur: formik.handleBlur,
27844
+ value: 'm',
27845
+ checked: value.gender === 'm'
27846
+ }),
27847
+ translations.TRAVELERS_FORM.MALE_GENDER
27848
+ )
27849
+ ),
27850
+ React__default.createElement(
27851
+ 'div',
27852
+ { className: 'radiobutton' },
27853
+ React__default.createElement(
27854
+ 'label',
27855
+ { className: 'radiobutton__label' },
27856
+ React__default.createElement('input', {
27857
+ type: 'radio',
27858
+ className: 'radiobutton__input',
27859
+ name: name,
27860
+ onChange: formik.handleChange,
27861
+ onBlur: formik.handleBlur,
27862
+ value: 'f',
27863
+ checked: value.gender === 'f'
27864
+ }),
27865
+ translations.TRAVELERS_FORM.FEMALE_GENDER
27866
+ )
27867
+ )
27868
+ )
27869
+ );
27870
+ };
27871
+
27872
+ var TypeAheadInput = function (_a) {
27873
+ var name = _a.name,
27874
+ value = _a.value,
27875
+ placeholder = _a.placeholder,
27876
+ options = _a.options,
27877
+ onChange = _a.onChange,
27878
+ onSelect = _a.onSelect,
27879
+ onClear = _a.onClear;
27880
+ var _b = useState(false),
27881
+ showItems = _b[0],
27882
+ setShowItems = _b[1];
27883
+ var handleChange = function (e) {
27884
+ if (onChange) {
27885
+ onChange(e.target.value);
27886
+ }
27887
+ };
27888
+ var handleClearClick = function (e) {
27889
+ if (onClear) {
27890
+ onClear();
27891
+ }
27892
+ setShowItems(false);
27893
+ };
27894
+ return React__default.createElement(
27895
+ 'div',
27896
+ { className: 'typeahead' },
27897
+ React__default.createElement(
27898
+ 'div',
27899
+ { className: 'typeahead__trigger typeahead__trigger--icon' },
27900
+ React__default.createElement(Icon, { name: 'ui-qsm-location' }),
27901
+ React__default.createElement('input', {
27902
+ type: 'text',
27903
+ className: 'form__input',
27904
+ name: name,
27905
+ value: value,
27906
+ onChange: handleChange,
27907
+ placeholder: placeholder,
27908
+ required: true,
27909
+ autoComplete: 'off',
27910
+ onKeyDown: function (e) {
27911
+ if (e.key === 'Tab' && options && onSelect) {
27912
+ onSelect(options[0].key);
27913
+ setShowItems(false);
27914
+ }
27915
+ },
27916
+ onFocus: function () {
27917
+ return setShowItems(true);
27918
+ }
27919
+ }),
27920
+ React__default.createElement('button', { type: 'button', className: 'button button--clear', onClick: handleClearClick })
27921
+ ),
27922
+ options &&
27923
+ options.length > 0 &&
27924
+ showItems &&
27925
+ React__default.createElement(
27926
+ 'div',
27927
+ { className: 'typeahead__options' },
27928
+ (options !== null && options !== void 0 ? options : []).map(function (option) {
27929
+ var _a;
27930
+ var matchIndex = typeof value !== 'undefined' ? option.text.indexOf(value) : 0;
27931
+ var prefix = option.text.slice(0, matchIndex);
27932
+ var highlight = option.text.slice(matchIndex, (_a = value === null || value === void 0 ? void 0 : value.length) !== null && _a !== void 0 ? _a : 0);
27933
+ var suffix = option.text.slice(matchIndex);
27934
+ return React__default.createElement(
27935
+ 'div',
27936
+ { className: 'typeahead__option', key: option.key },
27937
+ React__default.createElement(
27938
+ 'div',
27939
+ { className: 'typeahead__option-header' },
27940
+ React__default.createElement(
27941
+ 'button',
27942
+ {
27943
+ onClick: function () {
27944
+ if (onSelect) onSelect(option.key);
27945
+ setShowItems(false);
27946
+ },
27947
+ type: 'button',
27948
+ className: 'button button--plain'
27949
+ },
27950
+ prefix,
27951
+ React__default.createElement('span', { className: 'typeahead__option-highlight' }, highlight),
27952
+ suffix
27953
+ )
27954
+ )
27955
+ );
27956
+ })
27957
+ )
27958
+ );
27959
+ };
27960
+
27916
27961
  function createTraveler(traveler, followNumber, personTranslation, isCompact) {
27917
27962
  if (isCompact) {
27918
27963
  return {
@@ -27923,27 +27968,27 @@ function createTraveler(traveler, followNumber, personTranslation, isCompact) {
27923
27968
  gender: '',
27924
27969
  age: traveler.age || 30
27925
27970
  };
27926
- } else {
27927
- return {
27928
- id: traveler.id,
27929
- firstName: '',
27930
- lastName: '',
27931
- birthDate: '',
27932
- gender: ''
27933
- };
27934
27971
  }
27972
+ return {
27973
+ id: traveler.id,
27974
+ firstName: '',
27975
+ lastName: '',
27976
+ birthDate: '',
27977
+ gender: ''
27978
+ };
27935
27979
  }
27936
- function createInitialValues(formRooms, startDate, agentAdressId, personTranslation, isCompact) {
27980
+ function createInitialValuesFromRooms(formRooms, startDate, agentAdressId, personTranslation, isCompact) {
27981
+ var _a, _b, _c;
27937
27982
  var followNumber = { number: 1 };
27938
27983
  var initialValues = {
27939
27984
  startDate: startDate,
27940
- rooms: formRooms.map(function (r) {
27985
+ rooms: formRooms.map(function (room) {
27941
27986
  return {
27942
- adults: r.adults.map(function (x) {
27943
- return createTraveler(x, followNumber, personTranslation, isCompact);
27987
+ adults: room.adults.map(function (traveler) {
27988
+ return createTraveler(traveler, followNumber, personTranslation, isCompact);
27944
27989
  }),
27945
- children: r.children.map(function (x) {
27946
- return createTraveler(x, followNumber, personTranslation, isCompact);
27990
+ children: room.children.map(function (traveler) {
27991
+ return createTraveler(traveler, followNumber, personTranslation, isCompact);
27947
27992
  })
27948
27993
  };
27949
27994
  }),
@@ -27960,234 +28005,249 @@ function createInitialValues(formRooms, startDate, agentAdressId, personTranslat
27960
28005
  travelAgentId: agentAdressId !== null && agentAdressId !== void 0 ? agentAdressId : 0,
27961
28006
  travelAgentName: ''
27962
28007
  };
27963
- if (initialValues.rooms && initialValues.rooms.length && initialValues.rooms[0].adults && initialValues.rooms[0].adults.length) {
28008
+ if (
28009
+ (_c = (_b = (_a = initialValues.rooms) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.adults) === null || _c === void 0
28010
+ ? void 0
28011
+ : _c[0]
28012
+ ) {
27964
28013
  initialValues.mainBookerId = initialValues.rooms[0].adults[0].id;
27965
28014
  }
27966
28015
  return initialValues;
27967
28016
  }
27968
- var TravelersForm = function () {
27969
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
27970
- var dispatch = useAppDispatch();
27971
- var settings = useContext(SettingsContext);
27972
- var navigate = settings.skipRouter ? function () {} : useNavigate();
27973
- var bookingQueryString = useSelector(selectBookingQueryString);
27974
- var startDate = useSelector(selectStartDate);
27975
- var formRooms = useSelector(selectFormRooms);
27976
- var bookingType = useSelector(selectBookingType);
27977
- var agents = useSelector(selectAgents);
27978
- var agentAdressId = useSelector(selectAgentAdressId);
27979
- var translations = useSelector(selectTranslations);
27980
- var travelersFirstStep = useSelector(selectTravelersFirstStep);
27981
- var isUnavailable = useSelector(selectIsUnavailable);
27982
- var bookingAttributes = useSelector(selectBookingAttributes);
27983
- var isFetching = useSelector(selectIsFetching);
27984
- var hasMounted = useSelector(selectHasMounted);
27985
- var countries = useSelector(selectCountries);
27986
- var useCompactForm = !!settings.travellers.compactForm && !!settings.agentAdressId;
27987
- var showAllCountries = !!settings.travellers.showAllCountries;
27988
- var initialValues =
27989
- (_a = useSelector(selectTravelersFormValues)) !== null && _a !== void 0
27990
- ? _a
27991
- : createInitialValues(formRooms, startDate, agentAdressId, translations.TRAVELERS_FORM.PERSON, useCompactForm);
27992
- var _k = useState((_b = settings.agentRequired) !== null && _b !== void 0 ? _b : false),
27993
- showAgents = _k[0],
27994
- setShowAgents = _k[1];
27995
- var _l = useState(!settings.agentAdressId && !settings.hideAgentSelection),
27996
- showAgentSelection = _l[0],
27997
- setShowAgentSelection = _l[1];
27998
- var typeaheadAgents =
27999
- (_c = sortBy(
28000
- agents === null || agents === void 0
28001
- ? void 0
28002
- : agents.map(function (x) {
28003
- return {
28004
- key: ''.concat(x.id),
28005
- value: ''.concat(x.name, ' (').concat(x.postalCode, ' ').concat(x.location, ')'),
28006
- text: ''.concat(x.name, ' (').concat(x.postalCode, ' ').concat(x.location, ')')
28007
- };
28008
- }),
28009
- 'value'
28010
- )) !== null && _c !== void 0
28011
- ? _c
28012
- : [];
28013
- var _m = useState(typeaheadAgents),
28014
- filteredAgents = _m[0],
28015
- setFilteredAgents = _m[1];
28016
- var formik = useCompactForm
28017
- ? useFormik({
28018
- initialValues: initialValues,
28019
- validate: function (values) {},
28020
- onSubmit: function (values) {
28021
- dispatch(setFormValues(values));
28022
- dispatch(fetchPriceDetails());
28023
- if (settings.skipRouter) {
28024
- dispatch(setCurrentStep(SUMMARY_STEP));
28025
- } else {
28026
- navigate(
28027
- ''
28028
- .concat(!settings.skipBasePathInRouting ? settings.basePath : '')
28029
- .concat(settings.summary.pathSuffix, '?')
28030
- .concat(bookingQueryString)
28031
- );
28032
- }
28033
- }
28017
+ function createInitialValuesFromEditablePackagingEntry(editablePackagingEntry, agentAdressId) {
28018
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
28019
+ var accommodationLine =
28020
+ (_a = editablePackagingEntry === null || editablePackagingEntry === void 0 ? void 0 : editablePackagingEntry.lines) === null || _a === void 0
28021
+ ? void 0
28022
+ : _a.find(function (line) {
28023
+ var _a;
28024
+ return (_a = line.pax) === null || _a === void 0 ? void 0 : _a.length;
28025
+ });
28026
+ var pax =
28027
+ (_b = editablePackagingEntry === null || editablePackagingEntry === void 0 ? void 0 : editablePackagingEntry.pax) !== null && _b !== void 0 ? _b : [];
28028
+ var roomNumbers = Array.from(
28029
+ new Set(
28030
+ ((_c = accommodationLine === null || accommodationLine === void 0 ? void 0 : accommodationLine.pax) !== null && _c !== void 0 ? _c : []).map(function (
28031
+ x
28032
+ ) {
28033
+ var _a;
28034
+ return (_a = x.room) !== null && _a !== void 0 ? _a : 0;
28034
28035
  })
28035
- : useFormik({
28036
- initialValues: initialValues,
28037
- validate: function (values) {
28038
- return validateForm(
28039
- values,
28040
- settings.agentRequired,
28041
- bookingType,
28042
- translations,
28043
- settings.travellers.formFields,
28044
- settings.travellers.mainBookerFormFields
28045
- );
28046
- },
28047
- onSubmit: function (values) {
28048
- dispatch(setFormValues(values));
28049
- dispatch(fetchPackage());
28050
- if (settings.skipRouter) {
28051
- if (travelersFirstStep) {
28052
- dispatch(setCurrentStep(FLIGHT_OPTIONS_FORM_STEP));
28053
- } else {
28054
- dispatch(setCurrentStep(SUMMARY_STEP));
28055
- }
28056
- } else {
28057
- if (travelersFirstStep) {
28058
- navigate(
28059
- ''
28060
- .concat(!settings.skipBasePathInRouting ? settings.basePath : '')
28061
- .concat(settings.flightOptions.pathSuffix, '?')
28062
- .concat(bookingQueryString)
28063
- );
28064
- } else {
28065
- navigate(
28066
- ''
28067
- .concat(!settings.skipBasePathInRouting ? settings.basePath : '')
28068
- .concat(settings.summary.pathSuffix, '?')
28069
- .concat(bookingQueryString)
28070
- );
28071
- }
28072
- }
28073
- }
28036
+ )
28037
+ );
28038
+ var rooms = (roomNumbers.length ? roomNumbers : [0]).map(function (roomNumber) {
28039
+ var _a;
28040
+ var roomPax = ((_a = accommodationLine === null || accommodationLine === void 0 ? void 0 : accommodationLine.pax) !== null && _a !== void 0 ? _a : [])
28041
+ .filter(function (x) {
28042
+ var _a;
28043
+ return ((_a = x.room) !== null && _a !== void 0 ? _a : 0) === roomNumber;
28044
+ })
28045
+ .sort(function (a, b) {
28046
+ var _a, _b;
28047
+ return ((_a = a.order) !== null && _a !== void 0 ? _a : 0) - ((_b = b.order) !== null && _b !== void 0 ? _b : 0);
28074
28048
  });
28075
- useEffect(function () {
28076
- dispatch(fetchPriceDetails());
28077
- }, []);
28078
- useEffect(
28049
+ return {
28050
+ adults: roomPax.map(function (roomTraveler) {
28051
+ var _a, _b, _c, _d, _e;
28052
+ var entryPax =
28053
+ (_a = pax.find(function (x) {
28054
+ return x.id === roomTraveler.paxId;
28055
+ })) !== null && _a !== void 0
28056
+ ? _a
28057
+ : {};
28058
+ return {
28059
+ id: (_b = entryPax.id) !== null && _b !== void 0 ? _b : roomTraveler.paxId,
28060
+ firstName: (_c = entryPax.firstName) !== null && _c !== void 0 ? _c : '',
28061
+ lastName: (_d = entryPax.lastName) !== null && _d !== void 0 ? _d : '',
28062
+ birthDate: entryPax.dateOfBirth ? format$2(new Date(entryPax.dateOfBirth), 'yyyy-MM-dd') : '',
28063
+ gender: (_e = entryPax.gender) !== null && _e !== void 0 ? _e : ''
28064
+ };
28065
+ }),
28066
+ children: []
28067
+ };
28068
+ });
28069
+ var values = createInitialValuesFromRooms(
28070
+ rooms.map(function (room) {
28071
+ return { adults: room.adults, children: room.children };
28072
+ }),
28073
+ (_e =
28074
+ (_d = editablePackagingEntry === null || editablePackagingEntry === void 0 ? void 0 : editablePackagingEntry.lines) === null || _d === void 0
28075
+ ? void 0
28076
+ : _d[0]) === null || _e === void 0
28077
+ ? void 0
28078
+ : _e.from,
28079
+ agentAdressId
28080
+ );
28081
+ values.rooms = rooms;
28082
+ values.mainBookerId =
28083
+ (_l =
28084
+ (_g =
28085
+ (_f = pax.find(function (x) {
28086
+ return x.isMainBooker;
28087
+ })) === null || _f === void 0
28088
+ ? void 0
28089
+ : _f.id) !== null && _g !== void 0
28090
+ ? _g
28091
+ : (_k = (_j = (_h = rooms[0]) === null || _h === void 0 ? void 0 : _h.adults) === null || _j === void 0 ? void 0 : _j[0]) === null || _k === void 0
28092
+ ? void 0
28093
+ : _k.id) !== null && _l !== void 0
28094
+ ? _l
28095
+ : -1;
28096
+ var address = editablePackagingEntry === null || editablePackagingEntry === void 0 ? void 0 : editablePackagingEntry.address;
28097
+ values.street = (_m = address === null || address === void 0 ? void 0 : address.street) !== null && _m !== void 0 ? _m : '';
28098
+ values.houseNumber = (_o = address === null || address === void 0 ? void 0 : address.houseNumber) !== null && _o !== void 0 ? _o : '';
28099
+ values.box = (_p = address === null || address === void 0 ? void 0 : address.box) !== null && _p !== void 0 ? _p : '';
28100
+ values.zipCode = (_q = address === null || address === void 0 ? void 0 : address.zipCode) !== null && _q !== void 0 ? _q : '';
28101
+ values.place = (_r = address === null || address === void 0 ? void 0 : address.place) !== null && _r !== void 0 ? _r : '';
28102
+ values.country = (_s = address === null || address === void 0 ? void 0 : address.country) !== null && _s !== void 0 ? _s : '';
28103
+ values.phone = (_t = address === null || address === void 0 ? void 0 : address.phone) !== null && _t !== void 0 ? _t : '';
28104
+ values.email = (_u = address === null || address === void 0 ? void 0 : address.email) !== null && _u !== void 0 ? _u : '';
28105
+ values.emailConfirmation = (_v = address === null || address === void 0 ? void 0 : address.email) !== null && _v !== void 0 ? _v : '';
28106
+ values.travelAgentId =
28107
+ (_x = (_w = address === null || address === void 0 ? void 0 : address.travelAgentId) !== null && _w !== void 0 ? _w : agentAdressId) !== null &&
28108
+ _x !== void 0
28109
+ ? _x
28110
+ : 0;
28111
+ return values;
28112
+ }
28113
+ function applyTravelersFormValuesToEditablePackagingEntry(editablePackagingEntry, values) {
28114
+ var _a;
28115
+ var travelers = values.rooms.flatMap(function (room) {
28116
+ return __spreadArray(__spreadArray([], room.adults, true), room.children, true);
28117
+ });
28118
+ console.log('Applying form values:', values);
28119
+ console.log('editablePackagingEntry:', editablePackagingEntry);
28120
+ return __assign(__assign({}, editablePackagingEntry), {
28121
+ pax: ((_a = editablePackagingEntry.pax) !== null && _a !== void 0 ? _a : []).map(function (pax) {
28122
+ var _a, _b;
28123
+ var traveler = travelers.find(function (x) {
28124
+ return x.id === pax.id;
28125
+ });
28126
+ if (!traveler) return pax;
28127
+ return __assign(__assign({}, pax), {
28128
+ firstName: (_a = traveler.firstName) !== null && _a !== void 0 ? _a : '',
28129
+ lastName: (_b = traveler.lastName) !== null && _b !== void 0 ? _b : '',
28130
+ dateOfBirth: traveler.birthDate || null,
28131
+ isMainBooker: traveler.id === values.mainBookerId
28132
+ });
28133
+ }),
28134
+ address: __assign(__assign({}, editablePackagingEntry.address), {
28135
+ street: values.street,
28136
+ houseNumber: values.houseNumber,
28137
+ box: values.box,
28138
+ zipCode: values.zipCode,
28139
+ place: values.place,
28140
+ country: values.country,
28141
+ travelAgentId: values.travelAgentId,
28142
+ phone: values.phone,
28143
+ email: values.email
28144
+ })
28145
+ });
28146
+ }
28147
+ var SharedTravelersForm = function (_a) {
28148
+ var _b, _c, _d, _e, _f, _g;
28149
+ var formik = _a.formik,
28150
+ translations = _a.translations,
28151
+ travellersSettings = _a.travellersSettings,
28152
+ countries = _a.countries,
28153
+ agents = _a.agents,
28154
+ bookingType = _a.bookingType,
28155
+ agentAdressId = _a.agentAdressId,
28156
+ _h = _a.travelersFirstStep,
28157
+ travelersFirstStep = _h === void 0 ? false : _h,
28158
+ _j = _a.isUnavailable,
28159
+ isUnavailable = _j === void 0 ? false : _j,
28160
+ _k = _a.useCompactForm,
28161
+ useCompactForm = _k === void 0 ? false : _k,
28162
+ _l = _a.showAllCountries,
28163
+ showAllCountries = _l === void 0 ? false : _l,
28164
+ _m = _a.showAgentSelection,
28165
+ showAgentSelection = _m === void 0 ? false : _m,
28166
+ _o = _a.initialShowAgents,
28167
+ initialShowAgents = _o === void 0 ? false : _o,
28168
+ renderPreviousButton = _a.renderPreviousButton,
28169
+ onBookingTypeChange = _a.onBookingTypeChange;
28170
+ var _p = useState(initialShowAgents),
28171
+ showAgents = _p[0],
28172
+ setShowAgents = _p[1];
28173
+ var typeaheadAgents = useMemo(
28079
28174
  function () {
28080
28175
  var _a;
28081
- if (
28082
- !((_a = bookingAttributes === null || bookingAttributes === void 0 ? void 0 : bookingAttributes.rooms) === null || _a === void 0
28176
+ return (_a = sortBy(
28177
+ agents === null || agents === void 0
28083
28178
  ? void 0
28084
- : _a.length) ||
28085
- isFetching
28086
- )
28087
- return;
28088
- if (!hasMounted) {
28089
- dispatch(setHasMounted(true));
28090
- return;
28091
- }
28092
- var fetchAll = function () {
28093
- return __awaiter(void 0, void 0, void 0, function () {
28094
- return __generator(this, function (_a) {
28095
- switch (_a.label) {
28096
- case 0:
28097
- dispatch(setIsFetching(true));
28098
- _a.label = 1;
28099
- case 1:
28100
- _a.trys.push([1, , 4, 5]);
28101
- return [4 /*yield*/, dispatch(fetchPackage())];
28102
- case 2:
28103
- _a.sent();
28104
- return [4 /*yield*/, dispatch(fetchPriceDetails())];
28105
- case 3:
28106
- _a.sent();
28107
- return [3 /*break*/, 5];
28108
- case 4:
28109
- dispatch(setIsFetching(false));
28110
- return [7 /*endfinally*/];
28111
- case 5:
28112
- return [2 /*return*/];
28113
- }
28114
- });
28115
- });
28116
- };
28117
- fetchAll();
28118
- },
28119
- [bookingAttributes === null || bookingAttributes === void 0 ? void 0 : bookingAttributes.rooms]
28120
- );
28121
- // Update URL querystring when form data changes
28122
- useEffect(
28123
- function () {
28124
- if (settings.skipRouter || !travelersFirstStep) return;
28125
- var params = new URLSearchParams(bookingQueryString);
28126
- params.delete('rooms');
28127
- var roomsString = formik.values.rooms
28128
- .map(function (room) {
28129
- var adults = room.adults ? room.adults.length : 0;
28130
- var childAges =
28131
- room.children && room.children.length
28132
- ? room.children
28133
- .map(function (c) {
28134
- return c.age;
28135
- })
28136
- .join(',')
28137
- : '';
28138
- return 'adults:'.concat(adults, ',childAges:(').concat(childAges, ')');
28139
- })
28140
- .map(function (s) {
28141
- return '('.concat(s, ')');
28142
- })
28143
- .join(',');
28144
- var query = params.toString();
28145
- if (query) {
28146
- query += '&rooms=('.concat(roomsString, ')');
28147
- } else {
28148
- query = 'rooms=('.concat(roomsString, ')');
28149
- }
28150
- var newUrl = ''.concat(window.location.pathname, '?').concat(query);
28151
- navigate(newUrl, { replace: true });
28152
- },
28153
- [formik.values]
28154
- );
28155
- useEffect(
28156
- function () {
28157
- if (agents && settings.affiliateSlug) {
28158
- var agent_1 = agents.find(function (x) {
28159
- return x.affiliateSlug && x.affiliateSlug === settings.affiliateSlug;
28160
- });
28161
- if (!agent_1) return;
28162
- var formValues = produce(formik.values, function (values) {
28163
- (values.travelAgentId = Number(agent_1.id)), (values.travelAgentName = agent_1.name);
28164
- });
28165
- formik.setValues(formValues, false);
28166
- dispatch(setFormValues(formValues));
28167
- setShowAgentSelection(false);
28168
- }
28179
+ : agents.map(function (agent) {
28180
+ return {
28181
+ key: ''.concat(agent.id),
28182
+ value: ''
28183
+ .concat(agent.name)
28184
+ .concat(agent.postalCode || agent.location ? ' ('.concat(compact([agent.postalCode, agent.location]).join(' '), ')') : ''),
28185
+ text: ''
28186
+ .concat(agent.name)
28187
+ .concat(agent.postalCode || agent.location ? ' ('.concat(compact([agent.postalCode, agent.location]).join(' '), ')') : '')
28188
+ };
28189
+ }),
28190
+ 'value'
28191
+ )) !== null && _a !== void 0
28192
+ ? _a
28193
+ : [];
28169
28194
  },
28170
- [agents, settings.affiliateSlug]
28195
+ [agents]
28171
28196
  );
28172
- var handleMainBookerChange = function (e) {
28173
- var id = parseInt(e.currentTarget.value);
28174
- formik.setFieldValue('mainBookerId', id);
28197
+ var _q = useState(typeaheadAgents),
28198
+ filteredAgents = _q[0],
28199
+ setFilteredAgents = _q[1];
28200
+ var flatErrors = flat(formik.errors);
28201
+ var errorKeys = Object.keys(flatErrors).filter(function (key) {
28202
+ return get(formik.touched, key);
28203
+ });
28204
+ var hasVisibleError = function (key) {
28205
+ return get(formik.errors, key) && get(formik.touched, key);
28175
28206
  };
28176
28207
  var mainBooker =
28177
- (_d = formik.values.rooms.find(function (r) {
28178
- return r.adults.find(function (traveler) {
28208
+ (_b = formik.values.rooms.find(function (room) {
28209
+ return room.adults.find(function (traveler) {
28179
28210
  return traveler.id === formik.values.mainBookerId;
28180
28211
  });
28181
- })) === null || _d === void 0
28212
+ })) === null || _b === void 0
28182
28213
  ? void 0
28183
- : _d.adults.find(function (traveler) {
28214
+ : _b.adults.find(function (traveler) {
28184
28215
  return traveler.id === formik.values.mainBookerId;
28185
28216
  });
28217
+ var countryOptions = __spreadArray(
28218
+ [{ key: 'empty', value: undefined, label: translations.TRAVELERS_FORM.SELECT_COUNTRY }],
28219
+ showAllCountries
28220
+ ? (_c =
28221
+ countries === null || countries === void 0
28222
+ ? void 0
28223
+ : countries.map(function (country) {
28224
+ return { key: country.iso2, value: country.iso2, label: country.name };
28225
+ })) !== null && _c !== void 0
28226
+ ? _c
28227
+ : []
28228
+ : (_e =
28229
+ (_d = travellersSettings === null || travellersSettings === void 0 ? void 0 : travellersSettings.countries) === null || _d === void 0
28230
+ ? void 0
28231
+ : _d.map(function (country) {
28232
+ return { key: country.iso2, value: country.iso2, label: country.name };
28233
+ })) !== null && _e !== void 0
28234
+ ? _e
28235
+ : [
28236
+ { key: 'be', value: 'be', label: translations.TRAVELERS_FORM.COUNTRIES.BELGIUM },
28237
+ { key: 'nl', value: 'nl', label: translations.TRAVELERS_FORM.COUNTRIES.NETHERLANDS },
28238
+ { key: 'fr', value: 'fr', label: translations.TRAVELERS_FORM.COUNTRIES.FRANCE }
28239
+ ],
28240
+ true
28241
+ );
28242
+ var handleMainBookerChange = function (event) {
28243
+ formik.setFieldValue('mainBookerId', parseInt(event.currentTarget.value, 10));
28244
+ };
28186
28245
  var handleAgentChange = function (value) {
28187
- var filteredAgents = typeaheadAgents.filter(function (x) {
28188
- return x.value.toLocaleLowerCase().indexOf(value.toLocaleLowerCase()) > -1;
28189
- });
28190
- setFilteredAgents(filteredAgents);
28246
+ setFilteredAgents(
28247
+ typeaheadAgents.filter(function (x) {
28248
+ return x.value.toLocaleLowerCase().indexOf(value.toLocaleLowerCase()) > -1;
28249
+ })
28250
+ );
28191
28251
  formik.setFieldValue('travelAgentName', value);
28192
28252
  };
28193
28253
  var handleAgentSelect = function (key) {
@@ -28201,48 +28261,36 @@ var TravelersForm = function () {
28201
28261
  travelAgentName: (_a = agent === null || agent === void 0 ? void 0 : agent.value) !== null && _a !== void 0 ? _a : ''
28202
28262
  })
28203
28263
  );
28204
- var bookingType = 'b2b2c';
28205
- if (agentAdressId && agentAdressId != 0) {
28206
- bookingType = 'b2b';
28207
- }
28208
- dispatch(setBookingType(bookingType));
28264
+ onBookingTypeChange === null || onBookingTypeChange === void 0 ? void 0 : onBookingTypeChange(agentAdressId && agentAdressId !== 0 ? 'b2b' : 'b2b2c');
28209
28265
  };
28210
28266
  var handleAgentClear = function () {
28211
28267
  formik.setValues(__assign(__assign({}, formik.values), { travelAgentId: 0, travelAgentName: '' }));
28212
- dispatch(setBookingType('b2c'));
28268
+ onBookingTypeChange === null || onBookingTypeChange === void 0 ? void 0 : onBookingTypeChange('b2c');
28269
+ };
28270
+ var toggleAgent = function (value) {
28271
+ setShowAgents(value);
28272
+ if (!value) {
28273
+ handleAgentClear();
28274
+ setFilteredAgents([]);
28275
+ }
28213
28276
  };
28214
28277
  var handleAddTraveler = function (roomIndex) {
28215
28278
  var rooms = __spreadArray([], formik.values.rooms, true);
28216
- var newAdult = {
28217
- id: Date.now(),
28218
- firstName: '',
28219
- lastName: '',
28220
- birthDate: '',
28221
- gender: ''
28222
- };
28279
+ var newAdult = { id: Date.now(), firstName: '', lastName: '', birthDate: '', gender: '' };
28223
28280
  rooms[roomIndex] = __assign(__assign({}, rooms[roomIndex]), { adults: __spreadArray(__spreadArray([], rooms[roomIndex].adults, true), [newAdult], false) });
28224
28281
  formik.setFieldValue('rooms', rooms);
28225
28282
  };
28226
28283
  var handleRemoveTraveler = function (roomIndex, travelerIndex) {
28227
28284
  var rooms = __spreadArray([], formik.values.rooms, true);
28228
28285
  var adults = __spreadArray([], rooms[roomIndex].adults, true);
28229
- if (adults.length <= 1) {
28230
- return;
28231
- }
28286
+ if (adults.length <= 1) return;
28232
28287
  adults.splice(travelerIndex, 1);
28233
28288
  rooms[roomIndex] = __assign(__assign({}, rooms[roomIndex]), { adults: adults });
28234
28289
  formik.setFieldValue('rooms', rooms);
28235
28290
  };
28236
28291
  var handleAddRoom = function () {
28237
28292
  var rooms = __spreadArray([], formik.values.rooms, true);
28238
- var newAdult = {
28239
- id: Date.now(),
28240
- firstName: '',
28241
- lastName: '',
28242
- birthDate: '',
28243
- gender: ''
28244
- };
28245
- rooms.push({ adults: [newAdult], children: [] });
28293
+ rooms.push({ adults: [{ id: Date.now(), firstName: '', lastName: '', birthDate: '', gender: '' }], children: [] });
28246
28294
  formik.setFieldValue('rooms', rooms);
28247
28295
  };
28248
28296
  var handleRemoveRoom = function (roomIndex) {
@@ -28250,30 +28298,48 @@ var TravelersForm = function () {
28250
28298
  rooms.splice(roomIndex, 1);
28251
28299
  formik.setFieldValue('rooms', rooms);
28252
28300
  };
28253
- var toggleAgent = function (value) {
28254
- setShowAgents(value);
28255
- if (!value) {
28256
- handleAgentClear();
28257
- setFilteredAgents([]);
28258
- }
28259
- };
28260
- var goPrevious = function () {
28261
- dispatch(setCurrentStep(OPTIONS_FORM_STEP));
28262
- };
28263
- var flatErrors = flat(formik.errors);
28264
- var errorKeys = Object.keys(flatErrors).filter(function (key) {
28265
- return get(formik.touched, key);
28266
- });
28267
- var hasVisibleError = function (key) {
28268
- return get(formik.errors, key) && get(formik.touched, key);
28301
+ var renderGenderControl = function (name, value) {
28302
+ return React__default.createElement(
28303
+ 'div',
28304
+ { className: buildClassName(['form__group', hasVisibleError(name) && 'form__group--error']) },
28305
+ React__default.createElement('label', { className: 'form__label' }, translations.TRAVELERS_FORM.GENDER_ID, ' *'),
28306
+ React__default.createElement(
28307
+ 'div',
28308
+ { className: 'radiobutton-group' },
28309
+ [
28310
+ ['m', translations.TRAVELERS_FORM.MALE_GENDER],
28311
+ ['f', translations.TRAVELERS_FORM.FEMALE_GENDER]
28312
+ ].map(function (_a) {
28313
+ var gender = _a[0],
28314
+ label = _a[1];
28315
+ return React__default.createElement(
28316
+ 'div',
28317
+ { className: 'radiobutton', key: gender },
28318
+ React__default.createElement(
28319
+ 'label',
28320
+ { className: 'radiobutton__label' },
28321
+ React__default.createElement('input', {
28322
+ type: 'radio',
28323
+ className: 'radiobutton__input',
28324
+ name: name,
28325
+ onChange: formik.handleChange,
28326
+ onBlur: formik.handleBlur,
28327
+ value: gender,
28328
+ checked: value.gender === gender
28329
+ }),
28330
+ label
28331
+ )
28332
+ );
28333
+ })
28334
+ )
28335
+ );
28269
28336
  };
28270
28337
  var getControl = function (type, value, name) {
28271
- var _a, _b, _c, _d, _e, _f;
28338
+ var _a;
28272
28339
  switch (type) {
28273
- case 'gender': {
28340
+ case 'gender':
28274
28341
  return React__default.createElement(GenderControl, { translations: translations, value: value, formik: formik, name: name });
28275
- }
28276
- case 'firstName': {
28342
+ case 'firstName':
28277
28343
  return React__default.createElement(LabeledInput, {
28278
28344
  hasError: hasVisibleError(name),
28279
28345
  extraClassName: 'form__group--md-33',
@@ -28284,8 +28350,7 @@ var TravelersForm = function () {
28284
28350
  onBlur: formik.handleBlur,
28285
28351
  value: value.firstName
28286
28352
  });
28287
- }
28288
- case 'lastName': {
28353
+ case 'lastName':
28289
28354
  return React__default.createElement(LabeledInput, {
28290
28355
  hasError: hasVisibleError(name),
28291
28356
  extraClassName: 'form__group--md-33',
@@ -28296,8 +28361,7 @@ var TravelersForm = function () {
28296
28361
  onBlur: formik.handleBlur,
28297
28362
  value: value.lastName
28298
28363
  });
28299
- }
28300
- case 'birthDate': {
28364
+ case 'birthDate':
28301
28365
  return React__default.createElement(LabeledInput, {
28302
28366
  type: 'date',
28303
28367
  hasError: hasVisibleError(name),
@@ -28309,8 +28373,7 @@ var TravelersForm = function () {
28309
28373
  onBlur: formik.handleBlur,
28310
28374
  value: value.birthDate
28311
28375
  });
28312
- }
28313
- case 'country': {
28376
+ case 'country':
28314
28377
  return React__default.createElement(LabeledSelect, {
28315
28378
  hasError: hasVisibleError('country'),
28316
28379
  label: translations.TRAVELERS_FORM.COUNTRY,
@@ -28319,46 +28382,12 @@ var TravelersForm = function () {
28319
28382
  onChange: formik.handleChange,
28320
28383
  onBlur: formik.handleBlur,
28321
28384
  value: formik.values.country,
28322
- options: __spreadArray(
28323
- [
28324
- {
28325
- key: 'empty',
28326
- value: undefined,
28327
- label: translations.TRAVELERS_FORM.SELECT_COUNTRY
28328
- }
28329
- ],
28330
- showAllCountries
28331
- ? (_a =
28332
- countries === null || countries === void 0
28333
- ? void 0
28334
- : countries.map(function (country) {
28335
- return {
28336
- key: country.iso2,
28337
- value: country.iso2,
28338
- label: country.name
28339
- };
28340
- })) !== null && _a !== void 0
28341
- ? _a
28342
- : []
28343
- : (_d =
28344
- (_c = (_b = settings.travellers) === null || _b === void 0 ? void 0 : _b.countries) === null || _c === void 0
28345
- ? void 0
28346
- : _c.map(function (country) {
28347
- return {
28348
- key: country.iso2,
28349
- value: country.iso2,
28350
- label: country.name
28351
- };
28352
- })) !== null && _d !== void 0
28353
- ? _d
28354
- : [],
28355
- true
28356
- )
28385
+ options: countryOptions
28357
28386
  });
28358
- }
28359
- case 'phone': {
28387
+ case 'phone':
28360
28388
  return React__default.createElement(PhoneInput, {
28361
- countries: (_f = (_e = settings.travellers) === null || _e === void 0 ? void 0 : _e.countries) !== null && _f !== void 0 ? _f : [],
28389
+ countries:
28390
+ (_a = travellersSettings === null || travellersSettings === void 0 ? void 0 : travellersSettings.countries) !== null && _a !== void 0 ? _a : [],
28362
28391
  countryIso2: formik.values.country,
28363
28392
  hasError: hasVisibleError('phone'),
28364
28393
  label: translations.TRAVELERS_FORM.PHONE,
@@ -28368,8 +28397,7 @@ var TravelersForm = function () {
28368
28397
  onBlur: formik.handleBlur,
28369
28398
  value: formik.values.phone
28370
28399
  });
28371
- }
28372
- case 'email': {
28400
+ case 'email':
28373
28401
  return React__default.createElement(
28374
28402
  React__default.Fragment,
28375
28403
  null,
@@ -28396,9 +28424,166 @@ var TravelersForm = function () {
28396
28424
  value: formik.values.emailConfirmation
28397
28425
  })
28398
28426
  );
28399
- }
28427
+ case 'street':
28428
+ return React__default.createElement(LabeledInput, {
28429
+ hasError: hasVisibleError('street'),
28430
+ extraClassName: 'form__group--50 form__group--sm-60',
28431
+ label: translations.TRAVELERS_FORM.STREET,
28432
+ required: true,
28433
+ name: 'street',
28434
+ onChange: formik.handleChange,
28435
+ onBlur: formik.handleBlur,
28436
+ value: formik.values.street
28437
+ });
28438
+ case 'houseNumber':
28439
+ return React__default.createElement(LabeledInput, {
28440
+ hasError: hasVisibleError('houseNumber'),
28441
+ extraClassName: 'form__group--30 form__group--sm-20',
28442
+ label: translations.TRAVELERS_FORM.HOUSE_NUMBER,
28443
+ required: true,
28444
+ name: 'houseNumber',
28445
+ onChange: formik.handleChange,
28446
+ onBlur: formik.handleBlur,
28447
+ value: formik.values.houseNumber
28448
+ });
28449
+ case 'box':
28450
+ return React__default.createElement(LabeledInput, {
28451
+ hasError: hasVisibleError('box'),
28452
+ extraClassName: 'form__group--20',
28453
+ label: translations.TRAVELERS_FORM.POST_BOX,
28454
+ name: 'box',
28455
+ onChange: formik.handleChange,
28456
+ onBlur: formik.handleBlur,
28457
+ value: formik.values.box
28458
+ });
28459
+ case 'zipCode':
28460
+ return React__default.createElement(LabeledInput, {
28461
+ hasError: hasVisibleError('zipCode'),
28462
+ extraClassName: 'form__group--40 form__group--sm-20',
28463
+ label: translations.TRAVELERS_FORM.ZIPCODE,
28464
+ required: true,
28465
+ name: 'zipCode',
28466
+ onChange: formik.handleChange,
28467
+ onBlur: formik.handleBlur,
28468
+ value: formik.values.zipCode
28469
+ });
28470
+ case 'place':
28471
+ return React__default.createElement(LabeledInput, {
28472
+ hasError: hasVisibleError('place'),
28473
+ extraClassName: 'form__group--60 form__group--sm-40',
28474
+ label: translations.TRAVELERS_FORM.CITY,
28475
+ required: true,
28476
+ name: 'place',
28477
+ onChange: formik.handleChange,
28478
+ onBlur: formik.handleBlur,
28479
+ value: formik.values.place
28480
+ });
28481
+ default:
28482
+ return null;
28400
28483
  }
28401
28484
  };
28485
+ var renderRoomLabel = function (room) {
28486
+ var _a, _b;
28487
+ return compact([
28488
+ room.adults.length,
28489
+ room.adults.length === 1 && ' '.concat(translations.TRAVELERS_FORM.ADULT),
28490
+ room.adults.length > 1 && ' '.concat(translations.TRAVELERS_FORM.ADULTS),
28491
+ ((_a = room.adults) === null || _a === void 0 ? void 0 : _a.length) && ((_b = room.children) === null || _b === void 0 ? void 0 : _b.length) && ', ',
28492
+ room.children.length,
28493
+ room.children.length === 1 && ' '.concat(translations.TRAVELERS_FORM.CHILD),
28494
+ room.children.length > 1 && ' '.concat(translations.TRAVELERS_FORM.CHILDREN)
28495
+ ]).join('');
28496
+ };
28497
+ var renderTravelerFields = function (travelerValues, namePrefix, isAdult, roomIndex, travelerIndex) {
28498
+ var _a;
28499
+ if (useCompactForm) {
28500
+ return React__default.createElement(
28501
+ 'div',
28502
+ { className: 'form__row' },
28503
+ React__default.createElement(LabeledInput, {
28504
+ hasError: hasVisibleError(''.concat(namePrefix, '.age')),
28505
+ extraClassName: 'form__group--md-33',
28506
+ label: translations.TRAVELERS_FORM.AGE,
28507
+ required: true,
28508
+ name: ''.concat(namePrefix, '.age'),
28509
+ onChange: formik.handleChange,
28510
+ onBlur: formik.handleBlur,
28511
+ value: travelerValues.age
28512
+ })
28513
+ );
28514
+ }
28515
+ if (
28516
+ (_a = travellersSettings === null || travellersSettings === void 0 ? void 0 : travellersSettings.formFields) === null || _a === void 0
28517
+ ? void 0
28518
+ : _a.length
28519
+ ) {
28520
+ return React__default.createElement(
28521
+ 'div',
28522
+ { className: 'travelers-form__grid' },
28523
+ travellersSettings.formFields.map(function (field, index) {
28524
+ return React__default.createElement(
28525
+ 'div',
28526
+ { key: index, className: 'control control--'.concat(field.type) },
28527
+ getControl(field.type, travelerValues, ''.concat(namePrefix, '.').concat(field.type))
28528
+ );
28529
+ })
28530
+ );
28531
+ }
28532
+ return React__default.createElement(
28533
+ React__default.Fragment,
28534
+ null,
28535
+ React__default.createElement('div', { className: 'form__row' }, renderGenderControl(''.concat(namePrefix, '.gender'), travelerValues)),
28536
+ React__default.createElement(
28537
+ 'div',
28538
+ { className: 'form__row' },
28539
+ React__default.createElement(LabeledInput, {
28540
+ hasError: hasVisibleError(''.concat(namePrefix, '.firstName')),
28541
+ extraClassName: 'form__group--md-33',
28542
+ label: translations.TRAVELERS_FORM.FIRST_NAME,
28543
+ required: true,
28544
+ name: ''.concat(namePrefix, '.firstName'),
28545
+ onChange: formik.handleChange,
28546
+ onBlur: formik.handleBlur,
28547
+ value: travelerValues.firstName
28548
+ }),
28549
+ React__default.createElement(LabeledInput, {
28550
+ hasError: hasVisibleError(''.concat(namePrefix, '.lastName')),
28551
+ extraClassName: 'form__group--md-33',
28552
+ label: translations.TRAVELERS_FORM.LAST_NAME,
28553
+ required: true,
28554
+ name: ''.concat(namePrefix, '.lastName'),
28555
+ onChange: formik.handleChange,
28556
+ onBlur: formik.handleBlur,
28557
+ value: travelerValues.lastName
28558
+ }),
28559
+ React__default.createElement(LabeledInput, {
28560
+ type: 'date',
28561
+ hasError: hasVisibleError(''.concat(namePrefix, '.birthDate')),
28562
+ extraClassName: 'form__group--md-33',
28563
+ label: translations.TRAVELERS_FORM.BIRTHDATE,
28564
+ required: true,
28565
+ name: ''.concat(namePrefix, '.birthDate'),
28566
+ onChange: formik.handleChange,
28567
+ onBlur: formik.handleBlur,
28568
+ value: travelerValues.birthDate
28569
+ })
28570
+ ),
28571
+ travelersFirstStep &&
28572
+ isAdult &&
28573
+ formik.values.rooms[roomIndex].adults.length > 1 &&
28574
+ React__default.createElement(
28575
+ 'button',
28576
+ {
28577
+ type: 'button',
28578
+ className: 'cta cta--secondary',
28579
+ onClick: function () {
28580
+ return handleRemoveTraveler(roomIndex, travelerIndex);
28581
+ }
28582
+ },
28583
+ translations.TRAVELERS_FORM.REMOVE_TRAVELER
28584
+ )
28585
+ );
28586
+ };
28402
28587
  return React__default.createElement(
28403
28588
  'form',
28404
28589
  {
@@ -28409,670 +28594,231 @@ var TravelersForm = function () {
28409
28594
  onSubmit: formik.handleSubmit,
28410
28595
  onReset: formik.handleReset
28411
28596
  },
28412
- useCompactForm
28413
- ? React__default.createElement(
28597
+ React__default.createElement(
28598
+ 'div',
28599
+ { className: 'form__travelers__wrapper' },
28600
+ formik.values.rooms.map(function (room, roomIndex) {
28601
+ return React__default.createElement(
28414
28602
  'div',
28415
- { className: 'form__travelers__wrapper' },
28416
- formik.values.rooms.map(function (room, rIndex) {
28603
+ { key: roomIndex },
28604
+ formik.values.rooms.length > 1 &&
28605
+ React__default.createElement(
28606
+ 'div',
28607
+ { className: 'form__region' },
28608
+ React__default.createElement(
28609
+ 'div',
28610
+ { className: 'form__region-header' },
28611
+ React__default.createElement('h5', { className: 'form__region-heading' }, translations.SHARED.ROOM, ' ', roomIndex + 1),
28612
+ React__default.createElement('p', { className: 'form__region-label' }, renderRoomLabel(room))
28613
+ ),
28614
+ !useCompactForm &&
28615
+ travelersFirstStep &&
28616
+ formik.values.rooms.length > 1 &&
28617
+ React__default.createElement(
28618
+ 'button',
28619
+ {
28620
+ type: 'button',
28621
+ className: 'cta cta--secondary',
28622
+ onClick: function () {
28623
+ return handleRemoveRoom(roomIndex);
28624
+ }
28625
+ },
28626
+ 'Verwijder reisgezelschap'
28627
+ )
28628
+ ),
28629
+ room.adults.map(function (travelerValues, index) {
28417
28630
  return React__default.createElement(
28418
28631
  'div',
28419
- { key: rIndex },
28420
- formik.values.rooms.length > 1 &&
28632
+ { className: 'form__region', key: travelerValues.id },
28633
+ React__default.createElement(
28634
+ 'div',
28635
+ { className: 'form__region-header' },
28636
+ React__default.createElement('h5', { className: 'form__region-heading' }, translations.TRAVELERS_FORM.TRAVELER, ' ', index + 1),
28637
+ React__default.createElement('p', { className: 'form__region-label' }, translations.TRAVELERS_FORM.ADULT),
28421
28638
  React__default.createElement(
28422
28639
  'div',
28423
- { className: 'form__region' },
28424
- React__default.createElement(
28425
- 'div',
28426
- { className: 'form__region-header' },
28427
- React__default.createElement('h5', { className: 'form__region-heading' }, translations.SHARED.ROOM, ' ', rIndex + 1),
28428
- React__default.createElement(
28429
- 'p',
28430
- { className: 'form__region-label' },
28431
- compact([
28432
- room.adults.length,
28433
- room.adults.length === 1 && ' '.concat(translations.TRAVELERS_FORM.ADULT),
28434
- room.adults.length > 1 && ' '.concat(translations.TRAVELERS_FORM.ADULTS),
28435
- room.adults && room.adults.length && room.children && room.children.length && ', ',
28436
- room.children.length,
28437
- room.children.length === 1 && ' '.concat(translations.TRAVELERS_FORM.CHILD),
28438
- room.children.length > 1 && ' '.concat(translations.TRAVELERS_FORM.CHILDREN)
28439
- ]).join('')
28440
- )
28441
- )
28442
- ),
28443
- room.adults.map(function (travelerValues, index) {
28444
- return React__default.createElement(
28445
- 'div',
28446
- { className: 'form__region', key: travelerValues.id },
28447
- React__default.createElement(
28448
- 'div',
28449
- { className: 'form__region-header' },
28450
- React__default.createElement('h5', { className: 'form__region-heading' }, translations.TRAVELERS_FORM.TRAVELER, ' ', index + 1),
28451
- React__default.createElement('p', { className: 'form__region-label' }, translations.TRAVELERS_FORM.ADULT),
28452
- React__default.createElement(
28453
- 'div',
28454
- { className: 'radiobutton' },
28455
- React__default.createElement(
28456
- 'label',
28457
- { className: 'radiobutton__label' },
28458
- React__default.createElement('input', {
28459
- type: 'radio',
28460
- name: 'mainBookerId',
28461
- onChange: handleMainBookerChange,
28462
- onBlur: formik.handleBlur,
28463
- value: travelerValues.id,
28464
- checked: formik.values.mainBookerId === travelerValues.id,
28465
- className: 'radiobutton__input'
28466
- }),
28467
- translations.TRAVELERS_FORM.MAIN_BOOKER
28468
- )
28469
- )
28470
- ),
28471
- React__default.createElement(
28472
- 'div',
28473
- { className: 'form__row' },
28474
- React__default.createElement(LabeledInput, {
28475
- hasError: hasVisibleError('rooms['.concat(rIndex, '].adults[').concat(index, '].age')),
28476
- extraClassName: 'form__group--md-33',
28477
- label: translations.TRAVELERS_FORM.AGE,
28478
- required: true,
28479
- name: 'rooms['.concat(rIndex, '].adults[').concat(index, '].age'),
28480
- onChange: formik.handleChange,
28481
- onBlur: formik.handleBlur,
28482
- value: travelerValues.age
28483
- })
28484
- )
28485
- );
28486
- }),
28487
- room.children.map(function (travelerValues, index) {
28488
- return React__default.createElement(
28489
- 'div',
28490
- { className: 'form__region', key: travelerValues.id },
28491
- React__default.createElement(
28492
- 'div',
28493
- { className: 'form__region-header' },
28494
- React__default.createElement(
28495
- 'h5',
28496
- { className: 'form__region-heading' },
28497
- translations.TRAVELERS_FORM.TRAVELER,
28498
- ' ',
28499
- room.adults.length + index + 1
28500
- ),
28501
- React__default.createElement('p', { className: 'form__region-label' }, translations.TRAVELERS_FORM.CHILD)
28502
- ),
28640
+ { className: 'radiobutton' },
28503
28641
  React__default.createElement(
28504
- 'div',
28505
- { className: 'form__row' },
28506
- React__default.createElement(LabeledInput, {
28507
- hasError: hasVisibleError('rooms['.concat(rIndex, '].children[').concat(index, '].age')),
28508
- extraClassName: 'form__group--md-33',
28509
- label: translations.TRAVELERS_FORM.AGE,
28510
- required: true,
28511
- name: 'rooms['.concat(rIndex, '].children[').concat(index, '].age'),
28512
- onChange: formik.handleChange,
28642
+ 'label',
28643
+ { className: 'radiobutton__label' },
28644
+ React__default.createElement('input', {
28645
+ type: 'radio',
28646
+ name: 'mainBookerId',
28647
+ onChange: handleMainBookerChange,
28513
28648
  onBlur: formik.handleBlur,
28514
- value: travelerValues.age
28515
- })
28649
+ value: travelerValues.id,
28650
+ checked: formik.values.mainBookerId === travelerValues.id,
28651
+ className: 'radiobutton__input'
28652
+ }),
28653
+ translations.TRAVELERS_FORM.MAIN_BOOKER
28516
28654
  )
28517
- );
28518
- })
28655
+ )
28656
+ ),
28657
+ renderTravelerFields(travelerValues, 'rooms['.concat(roomIndex, '].adults[').concat(index, ']'), true, roomIndex, index)
28519
28658
  );
28520
- })
28521
- )
28522
- : React__default.createElement(
28523
- React__default.Fragment,
28524
- null,
28525
- React__default.createElement(
28659
+ }),
28660
+ room.children.map(function (travelerValues, index) {
28661
+ return React__default.createElement(
28662
+ 'div',
28663
+ { className: 'form__region', key: travelerValues.id },
28664
+ React__default.createElement(
28665
+ 'div',
28666
+ { className: 'form__region-header' },
28667
+ React__default.createElement(
28668
+ 'h5',
28669
+ { className: 'form__region-heading' },
28670
+ translations.TRAVELERS_FORM.TRAVELER,
28671
+ ' ',
28672
+ room.adults.length + index + 1
28673
+ ),
28674
+ React__default.createElement('p', { className: 'form__region-label' }, translations.TRAVELERS_FORM.CHILD)
28675
+ ),
28676
+ renderTravelerFields(travelerValues, 'rooms['.concat(roomIndex, '].children[').concat(index, ']'), false, roomIndex, index)
28677
+ );
28678
+ }),
28679
+ !useCompactForm &&
28680
+ travelersFirstStep &&
28681
+ React__default.createElement(
28682
+ 'div',
28683
+ { className: 'form__region' },
28684
+ React__default.createElement(
28685
+ 'button',
28686
+ {
28687
+ type: 'button',
28688
+ className: 'cta cta--select',
28689
+ onClick: function () {
28690
+ return handleAddTraveler(roomIndex);
28691
+ }
28692
+ },
28693
+ translations.TRAVELERS_FORM.ADD_TRAVELER
28694
+ )
28695
+ )
28696
+ );
28697
+ }),
28698
+ !useCompactForm &&
28699
+ (bookingType !== 'b2b' ||
28700
+ ((_f = travellersSettings === null || travellersSettings === void 0 ? void 0 : travellersSettings.mainBookerFormFields) === null || _f === void 0
28701
+ ? void 0
28702
+ : _f.length))
28703
+ ? React__default.createElement(
28526
28704
  'div',
28527
- { className: 'form__travelers__wrapper' },
28528
- formik.values.rooms.map(function (room, rIndex) {
28529
- return React__default.createElement(
28530
- 'div',
28531
- { key: rIndex },
28532
- formik.values.rooms.length > 1 &&
28705
+ { className: 'form__region' },
28706
+ React__default.createElement(
28707
+ 'div',
28708
+ { className: 'form__region-header' },
28709
+ React__default.createElement('h5', { className: 'form__region-heading' }, translations.TRAVELERS_FORM.MAIN_BOOKER),
28710
+ React__default.createElement(
28711
+ 'p',
28712
+ { className: 'form__region-label' },
28713
+ compact([
28714
+ compact([
28715
+ mainBooker === null || mainBooker === void 0 ? void 0 : mainBooker.firstName,
28716
+ mainBooker === null || mainBooker === void 0 ? void 0 : mainBooker.lastName
28717
+ ]).join(' '),
28718
+ (mainBooker === null || mainBooker === void 0 ? void 0 : mainBooker.birthDate) &&
28719
+ format$2(parse(mainBooker.birthDate, 'yyyy-MM-dd', new Date()), 'dd-MM-yyyy')
28720
+ ]).join(', ')
28721
+ )
28722
+ ),
28723
+ (
28724
+ (_g = travellersSettings === null || travellersSettings === void 0 ? void 0 : travellersSettings.mainBookerFormFields) === null || _g === void 0
28725
+ ? void 0
28726
+ : _g.length
28727
+ )
28728
+ ? React__default.createElement(
28729
+ 'div',
28730
+ { className: 'main-booker-form__grid' },
28731
+ travellersSettings.mainBookerFormFields.map(function (field, index) {
28732
+ return React__default.createElement(
28733
+ 'div',
28734
+ { key: index, className: 'control control--'.concat(field.type) },
28735
+ getControl(field.type, {}, field.type)
28736
+ );
28737
+ })
28738
+ )
28739
+ : React__default.createElement(
28740
+ React__default.Fragment,
28741
+ null,
28533
28742
  React__default.createElement(
28534
28743
  'div',
28535
- { className: 'form__region' },
28744
+ { className: 'form__twocolumn' },
28536
28745
  React__default.createElement(
28537
28746
  'div',
28538
- { className: 'form__region-header' },
28539
- React__default.createElement('h5', { className: 'form__region-heading' }, translations.SHARED.ROOM, ' ', rIndex + 1),
28747
+ { className: 'form__twocolumn-column' },
28540
28748
  React__default.createElement(
28541
- 'p',
28542
- { className: 'form__region-label' },
28543
- compact([
28544
- room.adults.length,
28545
- room.adults.length === 1 && ' '.concat(translations.TRAVELERS_FORM.ADULT),
28546
- room.adults.length > 1 && ' '.concat(translations.TRAVELERS_FORM.ADULTS),
28547
- room.adults && room.adults.length && room.children && room.children.length && ', ',
28548
- room.children.length,
28549
- room.children.length === 1 && ' '.concat(translations.TRAVELERS_FORM.CHILD),
28550
- room.children.length > 1 && ' '.concat(translations.TRAVELERS_FORM.CHILDREN)
28551
- ]).join('')
28749
+ 'div',
28750
+ { className: 'form__row' },
28751
+ React__default.createElement(LabeledInput, {
28752
+ hasError: hasVisibleError('street'),
28753
+ extraClassName: 'form__group--50 form__group--sm-60',
28754
+ label: translations.TRAVELERS_FORM.STREET,
28755
+ required: true,
28756
+ name: 'street',
28757
+ onChange: formik.handleChange,
28758
+ onBlur: formik.handleBlur,
28759
+ value: formik.values.street
28760
+ }),
28761
+ React__default.createElement(LabeledInput, {
28762
+ hasError: hasVisibleError('houseNumber'),
28763
+ extraClassName: 'form__group--30 form__group--sm-20',
28764
+ label: translations.TRAVELERS_FORM.HOUSE_NUMBER,
28765
+ required: true,
28766
+ name: 'houseNumber',
28767
+ onChange: formik.handleChange,
28768
+ onBlur: formik.handleBlur,
28769
+ value: formik.values.houseNumber
28770
+ }),
28771
+ React__default.createElement(LabeledInput, {
28772
+ hasError: hasVisibleError('box'),
28773
+ extraClassName: 'form__group--20',
28774
+ label: translations.TRAVELERS_FORM.POST_BOX,
28775
+ name: 'box',
28776
+ onChange: formik.handleChange,
28777
+ onBlur: formik.handleBlur,
28778
+ value: formik.values.box
28779
+ })
28552
28780
  )
28553
28781
  ),
28554
- travelersFirstStep &&
28555
- formik.values.rooms.length > 1 &&
28556
- React__default.createElement(
28557
- 'button',
28558
- {
28559
- type: 'button',
28560
- className: 'cta cta--secondary',
28561
- onClick: function () {
28562
- return handleRemoveRoom(rIndex);
28563
- }
28564
- },
28565
- 'Verwijder reisgezelschap'
28566
- )
28567
- ),
28568
- room.adults.map(function (travelerValues, index) {
28569
- var _a;
28570
- return React__default.createElement(
28571
- 'div',
28572
- { className: 'form__region', key: travelerValues.id },
28573
28782
  React__default.createElement(
28574
28783
  'div',
28575
- { className: 'form__region-header' },
28576
- React__default.createElement('h5', { className: 'form__region-heading' }, translations.TRAVELERS_FORM.TRAVELER, ' ', index + 1),
28577
- React__default.createElement('p', { className: 'form__region-label' }, translations.TRAVELERS_FORM.ADULT),
28784
+ { className: 'form__twocolumn-column' },
28578
28785
  React__default.createElement(
28579
28786
  'div',
28580
- { className: 'radiobutton' },
28581
- React__default.createElement(
28582
- 'label',
28583
- { className: 'radiobutton__label' },
28584
- React__default.createElement('input', {
28585
- type: 'radio',
28586
- name: 'mainBookerId',
28587
- onChange: handleMainBookerChange,
28588
- onBlur: formik.handleBlur,
28589
- value: travelerValues.id,
28590
- checked: formik.values.mainBookerId === travelerValues.id,
28591
- className: 'radiobutton__input'
28592
- }),
28593
- translations.TRAVELERS_FORM.MAIN_BOOKER
28594
- )
28787
+ { className: 'form__row' },
28788
+ React__default.createElement(LabeledInput, {
28789
+ hasError: hasVisibleError('zipCode'),
28790
+ extraClassName: 'form__group--40 form__group--sm-20',
28791
+ label: translations.TRAVELERS_FORM.ZIPCODE,
28792
+ required: true,
28793
+ name: 'zipCode',
28794
+ onChange: formik.handleChange,
28795
+ onBlur: formik.handleBlur,
28796
+ value: formik.values.zipCode
28797
+ }),
28798
+ React__default.createElement(LabeledInput, {
28799
+ hasError: hasVisibleError('place'),
28800
+ extraClassName: 'form__group--60 form__group--sm-40',
28801
+ label: translations.TRAVELERS_FORM.CITY,
28802
+ required: true,
28803
+ name: 'place',
28804
+ onChange: formik.handleChange,
28805
+ onBlur: formik.handleBlur,
28806
+ value: formik.values.place
28807
+ }),
28808
+ React__default.createElement(LabeledSelect, {
28809
+ hasError: hasVisibleError('country'),
28810
+ extraClassName: 'form__group--sm-40',
28811
+ label: translations.TRAVELERS_FORM.COUNTRY,
28812
+ required: true,
28813
+ name: 'country',
28814
+ onChange: formik.handleChange,
28815
+ onBlur: formik.handleBlur,
28816
+ value: formik.values.country,
28817
+ options: countryOptions
28818
+ })
28595
28819
  )
28596
- ),
28597
- ((_a = settings.travellers.formFields) === null || _a === void 0 ? void 0 : _a.length)
28598
- ? React__default.createElement(
28599
- React__default.Fragment,
28600
- null,
28601
- React__default.createElement(
28602
- 'div',
28603
- { className: 'travelers-form__grid' },
28604
- settings.travellers.formFields.map(function (field, fIndex) {
28605
- return React__default.createElement(
28606
- 'div',
28607
- { key: fIndex, className: 'control control--'.concat(field.type) },
28608
- getControl(field.type, travelerValues, 'rooms['.concat(rIndex, '].adults[').concat(index, '].').concat(field.type))
28609
- );
28610
- })
28611
- )
28612
- )
28613
- : React__default.createElement(
28614
- React__default.Fragment,
28615
- null,
28616
- React__default.createElement(
28617
- 'div',
28618
- { className: 'form__row' },
28619
- React__default.createElement(
28620
- 'div',
28621
- {
28622
- className: buildClassName([
28623
- 'form__group',
28624
- hasVisibleError('rooms['.concat(rIndex, '].adults[').concat(index, '].gender')) && 'form__group--error'
28625
- ])
28626
- },
28627
- React__default.createElement('label', { className: 'form__label' }, translations.TRAVELERS_FORM.GENDER_ID, ' *'),
28628
- React__default.createElement(
28629
- 'div',
28630
- { className: 'radiobutton-group' },
28631
- React__default.createElement(
28632
- 'div',
28633
- { className: 'radiobutton' },
28634
- React__default.createElement(
28635
- 'label',
28636
- { className: 'radiobutton__label' },
28637
- React__default.createElement('input', {
28638
- type: 'radio',
28639
- className: 'radiobutton__input',
28640
- name: 'rooms['.concat(rIndex, '].adults[').concat(index, '].gender'),
28641
- onChange: formik.handleChange,
28642
- onBlur: formik.handleBlur,
28643
- value: 'm',
28644
- checked: travelerValues.gender === 'm'
28645
- }),
28646
- translations.TRAVELERS_FORM.MALE_GENDER
28647
- )
28648
- ),
28649
- React__default.createElement(
28650
- 'div',
28651
- { className: 'radiobutton' },
28652
- React__default.createElement(
28653
- 'label',
28654
- { className: 'radiobutton__label' },
28655
- React__default.createElement('input', {
28656
- type: 'radio',
28657
- className: 'radiobutton__input',
28658
- name: 'rooms['.concat(rIndex, '].adults[').concat(index, '].gender'),
28659
- onChange: formik.handleChange,
28660
- onBlur: formik.handleBlur,
28661
- value: 'f',
28662
- checked: travelerValues.gender === 'f'
28663
- }),
28664
- translations.TRAVELERS_FORM.FEMALE_GENDER
28665
- )
28666
- )
28667
- )
28668
- )
28669
- ),
28670
- React__default.createElement(
28671
- 'div',
28672
- { className: 'form__row' },
28673
- React__default.createElement(LabeledInput, {
28674
- hasError: hasVisibleError('rooms['.concat(rIndex, '].adults[').concat(index, '].firstName')),
28675
- extraClassName: 'form__group--md-33',
28676
- label: translations.TRAVELERS_FORM.FIRST_NAME,
28677
- required: true,
28678
- name: 'rooms['.concat(rIndex, '].adults[').concat(index, '].firstName'),
28679
- onChange: formik.handleChange,
28680
- onBlur: formik.handleBlur,
28681
- value: travelerValues.firstName
28682
- }),
28683
- React__default.createElement(LabeledInput, {
28684
- hasError: hasVisibleError('rooms['.concat(rIndex, '].adults[').concat(index, '].lastName')),
28685
- extraClassName: 'form__group--md-33',
28686
- label: translations.TRAVELERS_FORM.LAST_NAME,
28687
- required: true,
28688
- name: 'rooms['.concat(rIndex, '].adults[').concat(index, '].lastName'),
28689
- onChange: formik.handleChange,
28690
- onBlur: formik.handleBlur,
28691
- value: travelerValues.lastName
28692
- }),
28693
- React__default.createElement(LabeledInput, {
28694
- type: 'date',
28695
- hasError: hasVisibleError('rooms['.concat(rIndex, '].adults[').concat(index, '].birthDate')),
28696
- extraClassName: 'form__group--md-33',
28697
- label: translations.TRAVELERS_FORM.BIRTHDATE,
28698
- required: true,
28699
- name: 'rooms['.concat(rIndex, '].adults[').concat(index, '].birthDate'),
28700
- onChange: formik.handleChange,
28701
- onBlur: formik.handleBlur,
28702
- value: travelerValues.birthDate
28703
- })
28704
- ),
28705
- travelersFirstStep &&
28706
- room.adults.length > 1 &&
28707
- React__default.createElement(
28708
- 'button',
28709
- {
28710
- type: 'button',
28711
- className: 'cta cta--secondary',
28712
- onClick: function () {
28713
- return handleRemoveTraveler(rIndex, index);
28714
- }
28715
- },
28716
- translations.TRAVELERS_FORM.REMOVE_TRAVELER
28717
- )
28718
- )
28719
- );
28720
- }),
28721
- room.children.map(function (travelerValues, index) {
28722
- var _a;
28723
- return React__default.createElement(
28724
- 'div',
28725
- { className: 'form__region', key: travelerValues.id },
28726
- React__default.createElement(
28727
- 'div',
28728
- { className: 'form__region-header' },
28729
- React__default.createElement(
28730
- 'h5',
28731
- { className: 'form__region-heading' },
28732
- translations.TRAVELERS_FORM.TRAVELER,
28733
- ' ',
28734
- room.adults.length + index + 1
28735
- ),
28736
- React__default.createElement('p', { className: 'form__region-label' }, translations.TRAVELERS_FORM.CHILD)
28737
- ),
28738
- ((_a = settings.travellers.formFields) === null || _a === void 0 ? void 0 : _a.length)
28739
- ? React__default.createElement(
28740
- React__default.Fragment,
28741
- null,
28742
- React__default.createElement(
28743
- 'div',
28744
- { className: 'travelers-form__grid' },
28745
- settings.travellers.formFields.map(function (field, fIndex) {
28746
- return React__default.createElement(
28747
- 'div',
28748
- { key: fIndex, className: 'control control--'.concat(field.type) },
28749
- getControl(field.type, travelerValues, 'rooms['.concat(rIndex, '].children[').concat(index, '].').concat(field.type))
28750
- );
28751
- })
28752
- )
28753
- )
28754
- : React__default.createElement(
28755
- React__default.Fragment,
28756
- null,
28757
- React__default.createElement(
28758
- 'div',
28759
- { className: 'form__row' },
28760
- React__default.createElement(
28761
- 'div',
28762
- {
28763
- className: buildClassName([
28764
- 'form__group',
28765
- hasVisibleError('rooms['.concat(rIndex, '].children[').concat(index, '].gender')) && 'form__group--error'
28766
- ])
28767
- },
28768
- React__default.createElement('label', { className: 'form__label' }, translations.TRAVELERS_FORM.GENDER_ID, ' *'),
28769
- React__default.createElement(
28770
- 'div',
28771
- { className: 'radiobutton-group' },
28772
- React__default.createElement(
28773
- 'div',
28774
- { className: 'radiobutton' },
28775
- React__default.createElement(
28776
- 'label',
28777
- { className: 'radiobutton__label' },
28778
- React__default.createElement('input', {
28779
- type: 'radio',
28780
- className: 'radiobutton__input',
28781
- name: 'rooms['.concat(rIndex, '].children[').concat(index, '].gender'),
28782
- onChange: formik.handleChange,
28783
- onBlur: formik.handleBlur,
28784
- value: 'm',
28785
- checked: travelerValues.gender === 'm'
28786
- }),
28787
- translations.TRAVELERS_FORM.MALE_GENDER
28788
- )
28789
- ),
28790
- React__default.createElement(
28791
- 'div',
28792
- { className: 'radiobutton' },
28793
- React__default.createElement(
28794
- 'label',
28795
- { className: 'radiobutton__label' },
28796
- React__default.createElement('input', {
28797
- type: 'radio',
28798
- className: 'radiobutton__input',
28799
- name: 'rooms['.concat(rIndex, '].children[').concat(index, '].gender'),
28800
- onChange: formik.handleChange,
28801
- onBlur: formik.handleBlur,
28802
- value: 'f',
28803
- checked: travelerValues.gender === 'f'
28804
- }),
28805
- translations.TRAVELERS_FORM.FEMALE_GENDER
28806
- )
28807
- )
28808
- )
28809
- )
28810
- ),
28811
- React__default.createElement(
28812
- 'div',
28813
- { className: 'form__row' },
28814
- React__default.createElement(LabeledInput, {
28815
- hasError: hasVisibleError('rooms['.concat(rIndex, '].children[').concat(index, '].firstName')),
28816
- extraClassName: 'form__group--md-33',
28817
- label: translations.TRAVELERS_FORM.FIRST_NAME,
28818
- required: true,
28819
- name: 'rooms['.concat(rIndex, '].children[').concat(index, '].firstName'),
28820
- onChange: formik.handleChange,
28821
- onBlur: formik.handleBlur,
28822
- value: travelerValues.firstName
28823
- }),
28824
- React__default.createElement(LabeledInput, {
28825
- hasError: hasVisibleError('rooms['.concat(rIndex, '].children[').concat(index, '].lastName')),
28826
- extraClassName: 'form__group--md-33',
28827
- label: translations.TRAVELERS_FORM.LAST_NAME,
28828
- required: true,
28829
- name: 'rooms['.concat(rIndex, '].children[').concat(index, '].lastName'),
28830
- onChange: formik.handleChange,
28831
- onBlur: formik.handleBlur,
28832
- value: travelerValues.lastName
28833
- }),
28834
- React__default.createElement(LabeledInput, {
28835
- type: 'date',
28836
- hasError: hasVisibleError('rooms['.concat(rIndex, '].children[').concat(index, '].birthDate')),
28837
- extraClassName: 'form__group--md-33',
28838
- label: translations.TRAVELERS_FORM.BIRTHDATE,
28839
- required: true,
28840
- name: 'rooms['.concat(rIndex, '].children[').concat(index, '].birthDate'),
28841
- onChange: formik.handleChange,
28842
- onBlur: formik.handleBlur,
28843
- value: travelerValues.birthDate
28844
- })
28845
- )
28846
- )
28847
- );
28848
- }),
28849
- travelersFirstStep &&
28850
- React__default.createElement(
28851
- 'div',
28852
- { className: 'form__region' },
28853
- React__default.createElement(
28854
- 'button',
28855
- {
28856
- type: 'button',
28857
- className: 'cta cta--select',
28858
- onClick: function () {
28859
- return handleAddTraveler(rIndex);
28860
- }
28861
- },
28862
- translations.TRAVELERS_FORM.ADD_TRAVELER
28863
- )
28864
- )
28865
- );
28866
- }),
28867
- bookingType != 'b2b' ||
28868
- ((_f = (_e = settings.travellers) === null || _e === void 0 ? void 0 : _e.mainBookerFormFields) === null || _f === void 0 ? void 0 : _f.length)
28869
- ? React__default.createElement(
28870
- 'div',
28871
- { className: 'form__region' },
28872
- React__default.createElement(
28873
- 'div',
28874
- { className: 'form__region-header' },
28875
- React__default.createElement('h5', { className: 'form__region-heading' }, translations.TRAVELERS_FORM.MAIN_BOOKER),
28876
- React__default.createElement(
28877
- 'p',
28878
- { className: 'form__region-label' },
28879
- compact([
28880
- compact([
28881
- mainBooker === null || mainBooker === void 0 ? void 0 : mainBooker.firstName,
28882
- mainBooker === null || mainBooker === void 0 ? void 0 : mainBooker.lastName
28883
- ]).join(' '),
28884
- (mainBooker === null || mainBooker === void 0 ? void 0 : mainBooker.birthDate) &&
28885
- format$1(parse(mainBooker.birthDate, 'yyyy-MM-dd', new Date()), 'dd-MM-yyyy')
28886
- ]).join(', ')
28887
28820
  )
28888
28821
  ),
28889
- React__default.createElement(
28890
- React__default.Fragment,
28891
- null,
28892
- (
28893
- (_h = (_g = settings.travellers) === null || _g === void 0 ? void 0 : _g.mainBookerFormFields) === null || _h === void 0
28894
- ? void 0
28895
- : _h.length
28896
- )
28897
- ? React__default.createElement(
28898
- React__default.Fragment,
28899
- null,
28900
- React__default.createElement(
28901
- 'div',
28902
- { className: 'main-booker-form__grid' },
28903
- settings.travellers.mainBookerFormFields.map(function (field, fIndex) {
28904
- return React__default.createElement(
28905
- 'div',
28906
- { key: fIndex, className: 'control control--'.concat(field.type) },
28907
- getControl(field.type, {}, field.type)
28908
- );
28909
- })
28910
- )
28911
- )
28912
- : React__default.createElement(
28913
- React__default.Fragment,
28914
- null,
28915
- React__default.createElement(
28916
- 'div',
28917
- { className: 'form__twocolumn' },
28918
- React__default.createElement(
28919
- 'div',
28920
- { className: 'form__twocolumn-column' },
28921
- React__default.createElement(
28922
- 'div',
28923
- { className: 'form__row' },
28924
- React__default.createElement(LabeledInput, {
28925
- hasError: hasVisibleError('street'),
28926
- extraClassName: 'form__group--50 form__group--sm-60',
28927
- label: translations.TRAVELERS_FORM.STREET,
28928
- required: true,
28929
- name: 'street',
28930
- onChange: formik.handleChange,
28931
- onBlur: formik.handleBlur,
28932
- value: formik.values.street
28933
- }),
28934
- React__default.createElement(LabeledInput, {
28935
- hasError: hasVisibleError('houseNumber'),
28936
- extraClassName: 'form__group--30 form__group--sm-20',
28937
- label: translations.TRAVELERS_FORM.HOUSE_NUMBER,
28938
- required: true,
28939
- name: 'houseNumber',
28940
- onChange: formik.handleChange,
28941
- onBlur: formik.handleBlur,
28942
- value: formik.values.houseNumber
28943
- }),
28944
- React__default.createElement(LabeledInput, {
28945
- hasError: hasVisibleError('box'),
28946
- extraClassName: 'form__group--20',
28947
- label: translations.TRAVELERS_FORM.POST_BOX,
28948
- name: 'box',
28949
- onChange: formik.handleChange,
28950
- onBlur: formik.handleBlur,
28951
- value: formik.values.box
28952
- })
28953
- )
28954
- ),
28955
- React__default.createElement(
28956
- 'div',
28957
- { className: 'form__twocolumn-column' },
28958
- React__default.createElement(
28959
- 'div',
28960
- { className: 'form__row' },
28961
- React__default.createElement(LabeledInput, {
28962
- hasError: hasVisibleError('zipCode'),
28963
- extraClassName: 'form__group--40 form__group--sm-20',
28964
- label: translations.TRAVELERS_FORM.ZIPCODE,
28965
- required: true,
28966
- name: 'zipCode',
28967
- onChange: formik.handleChange,
28968
- onBlur: formik.handleBlur,
28969
- value: formik.values.zipCode
28970
- }),
28971
- React__default.createElement(LabeledInput, {
28972
- hasError: hasVisibleError('place'),
28973
- extraClassName: 'form__group--60 form__group--sm-40',
28974
- label: translations.TRAVELERS_FORM.CITY,
28975
- required: true,
28976
- name: 'place',
28977
- onChange: formik.handleChange,
28978
- onBlur: formik.handleBlur,
28979
- value: formik.values.place
28980
- }),
28981
- React__default.createElement(LabeledSelect, {
28982
- hasError: hasVisibleError('country'),
28983
- extraClassName: 'form__group--sm-40',
28984
- label: translations.TRAVELERS_FORM.COUNTRY,
28985
- required: true,
28986
- name: 'country',
28987
- onChange: formik.handleChange,
28988
- onBlur: formik.handleBlur,
28989
- value: formik.values.country,
28990
- options: __spreadArray(
28991
- [
28992
- {
28993
- key: 'empty',
28994
- value: undefined,
28995
- label: translations.TRAVELERS_FORM.SELECT_COUNTRY
28996
- }
28997
- ],
28998
- showAllCountries
28999
- ? (_j =
29000
- countries === null || countries === void 0
29001
- ? void 0
29002
- : countries.map(function (country) {
29003
- return {
29004
- key: country.iso2,
29005
- value: country.iso2,
29006
- label: country.name
29007
- };
29008
- })) !== null && _j !== void 0
29009
- ? _j
29010
- : []
29011
- : [
29012
- {
29013
- key: 'be',
29014
- value: 'be',
29015
- label: translations.TRAVELERS_FORM.COUNTRIES.BELGIUM
29016
- },
29017
- {
29018
- key: 'nl',
29019
- value: 'nl',
29020
- label: translations.TRAVELERS_FORM.COUNTRIES.NETHERLANDS
29021
- },
29022
- {
29023
- key: 'fr',
29024
- value: 'fr',
29025
- label: translations.TRAVELERS_FORM.COUNTRIES.FRANCE
29026
- }
29027
- ],
29028
- true
29029
- )
29030
- })
29031
- )
29032
- )
29033
- ),
29034
- React__default.createElement(
29035
- 'div',
29036
- { className: 'form__row' },
29037
- React__default.createElement(LabeledInput, {
29038
- hasError: hasVisibleError('phone'),
29039
- extraClassName: 'form__group--md-33',
29040
- label: translations.TRAVELERS_FORM.PHONE,
29041
- required: true,
29042
- name: 'phone',
29043
- onChange: formik.handleChange,
29044
- onBlur: formik.handleBlur,
29045
- value: formik.values.phone
29046
- }),
29047
- React__default.createElement(LabeledInput, {
29048
- type: 'email',
29049
- hasError: hasVisibleError('email'),
29050
- extraClassName: 'form__group--md-33',
29051
- label: translations.TRAVELERS_FORM.EMAIL,
29052
- required: true,
29053
- name: 'email',
29054
- onChange: formik.handleChange,
29055
- onBlur: formik.handleBlur,
29056
- value: formik.values.email
29057
- }),
29058
- React__default.createElement(LabeledInput, {
29059
- type: 'email',
29060
- hasError: hasVisibleError('emailConfirmation'),
29061
- extraClassName: 'form__group--md-33',
29062
- label: translations.TRAVELERS_FORM.REPEAT_EMAIL,
29063
- required: true,
29064
- name: 'emailConfirmation',
29065
- onChange: formik.handleChange,
29066
- onBlur: formik.handleBlur,
29067
- value: formik.values.emailConfirmation
29068
- })
29069
- )
29070
- )
29071
- )
29072
- )
29073
- : React__default.createElement(
29074
- 'div',
29075
- { className: 'form__region' },
29076
28822
  React__default.createElement(
29077
28823
  'div',
29078
28824
  { className: 'form__row' },
@@ -29085,78 +28831,122 @@ var TravelersForm = function () {
29085
28831
  onChange: formik.handleChange,
29086
28832
  onBlur: formik.handleBlur,
29087
28833
  value: formik.values.phone
28834
+ }),
28835
+ React__default.createElement(LabeledInput, {
28836
+ type: 'email',
28837
+ hasError: hasVisibleError('email'),
28838
+ extraClassName: 'form__group--md-33',
28839
+ label: translations.TRAVELERS_FORM.EMAIL,
28840
+ required: true,
28841
+ name: 'email',
28842
+ onChange: formik.handleChange,
28843
+ onBlur: formik.handleBlur,
28844
+ value: formik.values.email
28845
+ }),
28846
+ React__default.createElement(LabeledInput, {
28847
+ type: 'email',
28848
+ hasError: hasVisibleError('emailConfirmation'),
28849
+ extraClassName: 'form__group--md-33',
28850
+ label: translations.TRAVELERS_FORM.REPEAT_EMAIL,
28851
+ required: true,
28852
+ name: 'emailConfirmation',
28853
+ onChange: formik.handleChange,
28854
+ onBlur: formik.handleBlur,
28855
+ value: formik.values.emailConfirmation
29088
28856
  })
29089
28857
  )
29090
- ),
29091
- showAgentSelection &&
28858
+ )
28859
+ )
28860
+ : !useCompactForm
28861
+ ? React__default.createElement(
28862
+ 'div',
28863
+ { className: 'form__region' },
28864
+ React__default.createElement(
28865
+ 'div',
28866
+ { className: 'form__row' },
28867
+ React__default.createElement(LabeledInput, {
28868
+ hasError: hasVisibleError('phone'),
28869
+ extraClassName: 'form__group--md-33',
28870
+ label: translations.TRAVELERS_FORM.PHONE,
28871
+ required: true,
28872
+ name: 'phone',
28873
+ onChange: formik.handleChange,
28874
+ onBlur: formik.handleBlur,
28875
+ value: formik.values.phone
28876
+ })
28877
+ )
28878
+ )
28879
+ : null,
28880
+ !useCompactForm &&
28881
+ showAgentSelection &&
28882
+ React__default.createElement(
28883
+ 'div',
28884
+ { className: 'form__region' },
28885
+ React__default.createElement(
28886
+ 'div',
28887
+ { className: 'form__region-header' },
28888
+ React__default.createElement('h5', { className: 'form__region-heading' }, translations.TRAVELERS_FORM.BOOK_WITH_AGENT),
28889
+ React__default.createElement(
28890
+ 'div',
28891
+ { className: 'checkbox', id: 'cbxChooseOffice' },
29092
28892
  React__default.createElement(
29093
- 'div',
29094
- { className: 'form__region' },
29095
- React__default.createElement(
29096
- 'div',
29097
- { className: 'form__region-header' },
29098
- React__default.createElement('h5', { className: 'form__region-heading' }, translations.TRAVELERS_FORM.BOOK_WITH_AGENT),
29099
- React__default.createElement(
29100
- 'div',
29101
- { className: 'checkbox', id: 'cbxChooseOffice' },
29102
- React__default.createElement(
29103
- 'label',
29104
- { className: 'checkbox__label' },
29105
- React__default.createElement('input', {
29106
- type: 'checkbox',
29107
- name: 'booking--mainbooker',
29108
- defaultChecked: showAgents,
29109
- onClick: function () {
29110
- return toggleAgent(!showAgents);
29111
- },
29112
- className: 'checkbox__input'
29113
- }),
29114
- translations.TRAVELERS_FORM.CHOOSE_OFFICE
29115
- )
29116
- )
29117
- ),
29118
- showAgents &&
29119
- React__default.createElement(
29120
- 'div',
29121
- { className: 'form__row form__row--choose-office' },
29122
- React__default.createElement(
29123
- 'div',
29124
- { className: buildClassName(['form__group', 'form__group--icon', hasVisibleError('travelAgentId') && 'form__group--error']) },
29125
- React__default.createElement(TypeAheadInput, {
29126
- value: formik.values.travelAgentName,
29127
- options: filteredAgents,
29128
- onChange: handleAgentChange,
29129
- onSelect: handleAgentSelect,
29130
- onClear: handleAgentClear,
29131
- name: 'travelAgentName',
29132
- placeholder: translations.TRAVELERS_FORM.CHOOSE_AGENT_PLACEHOLDER
29133
- })
29134
- )
29135
- )
28893
+ 'label',
28894
+ { className: 'checkbox__label' },
28895
+ React__default.createElement('input', {
28896
+ type: 'checkbox',
28897
+ name: 'booking--mainbooker',
28898
+ checked: showAgents,
28899
+ onChange: function () {
28900
+ return toggleAgent(!showAgents);
28901
+ },
28902
+ className: 'checkbox__input'
28903
+ }),
28904
+ translations.TRAVELERS_FORM.CHOOSE_OFFICE
29136
28905
  )
28906
+ )
29137
28907
  ),
29138
- errorKeys.length > 0 &&
28908
+ showAgents &&
29139
28909
  React__default.createElement(
29140
28910
  'div',
29141
- { className: 'form__region form__region--errors' },
28911
+ { className: 'form__row form__row--choose-office' },
29142
28912
  React__default.createElement(
29143
28913
  'div',
29144
- { className: 'form__row' },
29145
- React__default.createElement(
29146
- 'div',
29147
- { className: 'form__group' },
29148
- React__default.createElement('p', { className: 'form__error-heading' }, translations.TRAVELERS_FORM.VALIDATION_MESSAGE, ':'),
29149
- React__default.createElement(
29150
- 'ul',
29151
- { className: 'list' },
29152
- errorKeys.map(function (key) {
29153
- return React__default.createElement('li', { key: key }, get(flatErrors, key));
29154
- })
29155
- )
29156
- )
28914
+ { className: buildClassName(['form__group', 'form__group--icon', hasVisibleError('travelAgentId') && 'form__group--error']) },
28915
+ React__default.createElement(TypeAheadInput, {
28916
+ value: formik.values.travelAgentName,
28917
+ options: filteredAgents,
28918
+ onChange: handleAgentChange,
28919
+ onSelect: handleAgentSelect,
28920
+ onClear: handleAgentClear,
28921
+ name: 'travelAgentName',
28922
+ placeholder: translations.TRAVELERS_FORM.CHOOSE_AGENT_PLACEHOLDER
28923
+ })
29157
28924
  )
29158
28925
  )
29159
- ),
28926
+ )
28927
+ ),
28928
+ !useCompactForm &&
28929
+ errorKeys.length > 0 &&
28930
+ React__default.createElement(
28931
+ 'div',
28932
+ { className: 'form__region form__region--errors' },
28933
+ React__default.createElement(
28934
+ 'div',
28935
+ { className: 'form__row' },
28936
+ React__default.createElement(
28937
+ 'div',
28938
+ { className: 'form__group' },
28939
+ React__default.createElement('p', { className: 'form__error-heading' }, translations.TRAVELERS_FORM.VALIDATION_MESSAGE, ':'),
28940
+ React__default.createElement(
28941
+ 'ul',
28942
+ { className: 'list' },
28943
+ errorKeys.map(function (key) {
28944
+ return React__default.createElement('li', { key: key }, get(flatErrors, key));
28945
+ })
28946
+ )
28947
+ )
28948
+ )
28949
+ ),
29160
28950
  travelersFirstStep &&
29161
28951
  React__default.createElement(
29162
28952
  'div',
@@ -29166,14 +28956,204 @@ var TravelersForm = function () {
29166
28956
  React__default.createElement(
29167
28957
  'div',
29168
28958
  { className: 'booking__navigator' },
29169
- !travelersFirstStep && settings.skipRouter
28959
+ renderPreviousButton === null || renderPreviousButton === void 0 ? void 0 : renderPreviousButton(),
28960
+ React__default.createElement(
28961
+ 'button',
28962
+ { type: 'submit', title: translations.STEPS.NEXT, className: 'cta' + (isUnavailable ? ' cta--disabled' : '') },
28963
+ translations.STEPS.NEXT
28964
+ )
28965
+ )
28966
+ );
28967
+ };
28968
+
28969
+ var TravelersForm = function () {
28970
+ var _a, _b;
28971
+ var dispatch = useAppDispatch();
28972
+ var settings = useContext(SettingsContext);
28973
+ var navigate = settings.skipRouter ? function () {} : useNavigate();
28974
+ var bookingQueryString = useSelector(selectBookingQueryString);
28975
+ var startDate = useSelector(selectStartDate);
28976
+ var formRooms = useSelector(selectFormRooms);
28977
+ var bookingType = useSelector(selectBookingType);
28978
+ var agents = useSelector(selectAgents);
28979
+ var agentAdressId = useSelector(selectAgentAdressId);
28980
+ var translations = useSelector(selectTranslations);
28981
+ var travelersFirstStep = useSelector(selectTravelersFirstStep);
28982
+ var isUnavailable = useSelector(selectIsUnavailable);
28983
+ var bookingAttributes = useSelector(selectBookingAttributes);
28984
+ var isFetching = useSelector(selectIsFetching);
28985
+ var hasMounted = useSelector(selectHasMounted);
28986
+ var countries = useSelector(selectCountries);
28987
+ var useCompactForm = !!settings.travellers.compactForm && !!settings.agentAdressId;
28988
+ var showAllCountries = !!settings.travellers.showAllCountries;
28989
+ var initialValues =
28990
+ (_a = useSelector(selectTravelersFormValues)) !== null && _a !== void 0
28991
+ ? _a
28992
+ : createInitialValuesFromRooms(formRooms, startDate, agentAdressId, translations.TRAVELERS_FORM.PERSON, useCompactForm);
28993
+ var _c = useState(!settings.agentAdressId && !settings.hideAgentSelection),
28994
+ showAgentSelection = _c[0],
28995
+ setShowAgentSelection = _c[1];
28996
+ var formik = useFormik({
28997
+ initialValues: initialValues,
28998
+ validate: useCompactForm
28999
+ ? function () {}
29000
+ : function (values) {
29001
+ return validateForm(
29002
+ values,
29003
+ settings.agentRequired,
29004
+ bookingType,
29005
+ translations,
29006
+ settings.travellers.formFields,
29007
+ settings.travellers.mainBookerFormFields
29008
+ );
29009
+ },
29010
+ onSubmit: function (values) {
29011
+ dispatch(setFormValues(values));
29012
+ if (useCompactForm) {
29013
+ dispatch(fetchPriceDetails());
29014
+ if (settings.skipRouter) dispatch(setCurrentStep$1(SUMMARY_STEP));
29015
+ else
29016
+ navigate(
29017
+ ''
29018
+ .concat(!settings.skipBasePathInRouting ? settings.basePath : '')
29019
+ .concat(settings.summary.pathSuffix, '?')
29020
+ .concat(bookingQueryString)
29021
+ );
29022
+ return;
29023
+ }
29024
+ dispatch(fetchPackage());
29025
+ if (settings.skipRouter) dispatch(setCurrentStep$1(travelersFirstStep ? FLIGHT_OPTIONS_FORM_STEP : SUMMARY_STEP));
29026
+ else
29027
+ navigate(
29028
+ ''
29029
+ .concat(!settings.skipBasePathInRouting ? settings.basePath : '')
29030
+ .concat(travelersFirstStep ? settings.flightOptions.pathSuffix : settings.summary.pathSuffix, '?')
29031
+ .concat(bookingQueryString)
29032
+ );
29033
+ }
29034
+ });
29035
+ useEffect(
29036
+ function () {
29037
+ dispatch(fetchPriceDetails());
29038
+ },
29039
+ [dispatch]
29040
+ );
29041
+ useEffect(
29042
+ function () {
29043
+ var _a;
29044
+ if (
29045
+ !((_a = bookingAttributes === null || bookingAttributes === void 0 ? void 0 : bookingAttributes.rooms) === null || _a === void 0
29046
+ ? void 0
29047
+ : _a.length) ||
29048
+ isFetching
29049
+ )
29050
+ return;
29051
+ if (!hasMounted) {
29052
+ dispatch(setHasMounted(true));
29053
+ return;
29054
+ }
29055
+ var fetchAll = function () {
29056
+ return __awaiter(void 0, void 0, void 0, function () {
29057
+ return __generator(this, function (_a) {
29058
+ switch (_a.label) {
29059
+ case 0:
29060
+ dispatch(setIsFetching(true));
29061
+ _a.label = 1;
29062
+ case 1:
29063
+ _a.trys.push([1, , 4, 5]);
29064
+ return [4 /*yield*/, dispatch(fetchPackage())];
29065
+ case 2:
29066
+ _a.sent();
29067
+ return [4 /*yield*/, dispatch(fetchPriceDetails())];
29068
+ case 3:
29069
+ _a.sent();
29070
+ return [3 /*break*/, 5];
29071
+ case 4:
29072
+ dispatch(setIsFetching(false));
29073
+ return [7 /*endfinally*/];
29074
+ case 5:
29075
+ return [2 /*return*/];
29076
+ }
29077
+ });
29078
+ });
29079
+ };
29080
+ fetchAll();
29081
+ },
29082
+ [bookingAttributes === null || bookingAttributes === void 0 ? void 0 : bookingAttributes.rooms, dispatch, hasMounted, isFetching]
29083
+ );
29084
+ useEffect(
29085
+ function () {
29086
+ if (settings.skipRouter || !travelersFirstStep) return;
29087
+ var params = new URLSearchParams(bookingQueryString);
29088
+ params.delete('rooms');
29089
+ var roomsString = formik.values.rooms
29090
+ .map(function (room) {
29091
+ var _a;
29092
+ var adults = room.adults ? room.adults.length : 0;
29093
+ var childAges = ((_a = room.children) === null || _a === void 0 ? void 0 : _a.length)
29094
+ ? room.children
29095
+ .map(function (child) {
29096
+ return child.age;
29097
+ })
29098
+ .join(',')
29099
+ : '';
29100
+ return 'adults:'.concat(adults, ',childAges:(').concat(childAges, ')');
29101
+ })
29102
+ .map(function (room) {
29103
+ return '('.concat(room, ')');
29104
+ })
29105
+ .join(',');
29106
+ var nextQuery = ''
29107
+ .concat(params.toString())
29108
+ .concat(params.toString() ? '&' : '', 'rooms=(')
29109
+ .concat(roomsString, ')');
29110
+ navigate(''.concat(window.location.pathname, '?').concat(nextQuery), { replace: true });
29111
+ },
29112
+ [formik.values.rooms, bookingQueryString, navigate, settings.skipRouter, travelersFirstStep]
29113
+ );
29114
+ useEffect(
29115
+ function () {
29116
+ if (!agents || !settings.affiliateSlug) return;
29117
+ var agent = agents.find(function (x) {
29118
+ return x.affiliateSlug && x.affiliateSlug === settings.affiliateSlug;
29119
+ });
29120
+ if (!agent) return;
29121
+ var formValues = produce(formik.values, function (values) {
29122
+ values.travelAgentId = Number(agent.id);
29123
+ values.travelAgentName = agent.name;
29124
+ });
29125
+ formik.setValues(formValues, false);
29126
+ dispatch(setFormValues(formValues));
29127
+ setShowAgentSelection(false);
29128
+ },
29129
+ [agents, settings.affiliateSlug]
29130
+ );
29131
+ return React__default.createElement(SharedTravelersForm, {
29132
+ formik: formik,
29133
+ translations: translations,
29134
+ travellersSettings: settings.travellers,
29135
+ countries: countries,
29136
+ agents: agents,
29137
+ bookingType: bookingType,
29138
+ agentAdressId: agentAdressId,
29139
+ travelersFirstStep: travelersFirstStep,
29140
+ isUnavailable: isUnavailable,
29141
+ useCompactForm: useCompactForm,
29142
+ showAllCountries: showAllCountries,
29143
+ showAgentSelection: showAgentSelection,
29144
+ initialShowAgents: (_b = settings.agentRequired) !== null && _b !== void 0 ? _b : false,
29145
+ onBookingTypeChange: function (nextBookingType) {
29146
+ return dispatch(setBookingType(nextBookingType));
29147
+ },
29148
+ renderPreviousButton: function () {
29149
+ return !travelersFirstStep && settings.skipRouter
29170
29150
  ? React__default.createElement(
29171
29151
  'button',
29172
29152
  {
29173
29153
  type: 'button',
29174
29154
  title: translations.STEPS.PREVIOUS,
29175
29155
  onClick: function () {
29176
- return goPrevious();
29156
+ return dispatch(setCurrentStep$1(OPTIONS_FORM_STEP));
29177
29157
  },
29178
29158
  className: 'cta cta--secondary'
29179
29159
  },
@@ -29192,14 +29172,9 @@ var TravelersForm = function () {
29192
29172
  },
29193
29173
  translations.STEPS.PREVIOUS
29194
29174
  )
29195
- : null,
29196
- React__default.createElement(
29197
- 'button',
29198
- { type: 'submit', title: translations.STEPS.NEXT, className: 'cta' + (isUnavailable ? ' cta--disabled' : '') },
29199
- translations.STEPS.NEXT
29200
- )
29201
- )
29202
- );
29175
+ : null;
29176
+ }
29177
+ });
29203
29178
  };
29204
29179
 
29205
29180
  var Booking = function (_a) {
@@ -29285,7 +29260,7 @@ var Booking = function (_a) {
29285
29260
  window.scrollTo(0, 0);
29286
29261
  }
29287
29262
  if (!isNil(bookingNumber)) {
29288
- dispatch(setBookingNumber(bookingNumber));
29263
+ dispatch(setBookingNumber$1(bookingNumber));
29289
29264
  navigate(
29290
29265
  ''
29291
29266
  .concat(!skipBasePathInRouting ? basePath : '')
@@ -29316,7 +29291,7 @@ var Booking = function (_a) {
29316
29291
  console.error('Failure when setting booking attributes', startDate, endDate, catalogueId, rooms);
29317
29292
  }
29318
29293
  },
29319
- [location.search, setBookingAttributes, setBookingNumber, includeFlights]
29294
+ [location.search, setBookingAttributes, setBookingNumber$1, includeFlights]
29320
29295
  );
29321
29296
  useEffect(
29322
29297
  function () {
@@ -31188,7 +31163,7 @@ var Calendar = function (_a) {
31188
31163
  React__default.createElement(
31189
31164
  'div',
31190
31165
  { className: 'calendar__current-month' },
31191
- format$1(focusDate, 'MMMM yyyy', {
31166
+ format$2(focusDate, 'MMMM yyyy', {
31192
31167
  locale: currentLocale
31193
31168
  }).replace(/^(.)(.*)$/, function (_, a, b) {
31194
31169
  return ''.concat(a.toUpperCase()).concat(b);
@@ -31221,7 +31196,7 @@ var Calendar = function (_a) {
31221
31196
  return React__default.createElement(
31222
31197
  'div',
31223
31198
  { className: 'calendar__day-label', key: 'label-'.concat(i) },
31224
- format$1(calendarDays[i], 'eee', {
31199
+ format$2(calendarDays[i], 'eee', {
31225
31200
  locale: currentLocale
31226
31201
  })
31227
31202
  .slice(0, 2)
@@ -32148,7 +32123,7 @@ var MobileFilterModal = function () {
32148
32123
  className: 'qsm__input u-ps-2',
32149
32124
  placeholder: translations.QSM.DEPARTURE_DATE,
32150
32125
  readOnly: true,
32151
- value: fromDate ? format$1(new Date(fromDate), 'dd/MM/yyyy') : ''
32126
+ value: fromDate ? format$2(new Date(fromDate), 'dd/MM/yyyy') : ''
32152
32127
  }),
32153
32128
  mobileDatePickerMode === 'range' && React__default.createElement('div', { className: 'qsm__input-line qsm__input-line--datepicker' })
32154
32129
  ),
@@ -32164,7 +32139,7 @@ var MobileFilterModal = function () {
32164
32139
  className: 'qsm__input',
32165
32140
  placeholder: translations.QSM.RETURN_DATE,
32166
32141
  readOnly: true,
32167
- value: toDate ? format$1(new Date(toDate), 'dd/MM/yyyy') : ''
32142
+ value: toDate ? format$2(new Date(toDate), 'dd/MM/yyyy') : ''
32168
32143
  })
32169
32144
  )
32170
32145
  ),
@@ -32944,8 +32919,8 @@ var QSMContainer = function () {
32944
32919
  [dispatch]
32945
32920
  );
32946
32921
  var handleDateChange = function (value) {
32947
- dispatch(setFromDate(value.fromDate ? format$1(value.fromDate, 'yyyy-MM-dd') : undefined));
32948
- dispatch(setToDate(value.toDate ? format$1(value.toDate, 'yyyy-MM-dd') : undefined));
32922
+ dispatch(setFromDate(value.fromDate ? format$2(value.fromDate, 'yyyy-MM-dd') : undefined));
32923
+ dispatch(setToDate(value.toDate ? format$2(value.toDate, 'yyyy-MM-dd') : undefined));
32949
32924
  };
32950
32925
  var handleTripTypeChange = function (value) {
32951
32926
  dispatch(setTripType(value));
@@ -33550,7 +33525,8 @@ var initialState$1 = {
33550
33525
  selectedExcursionSearchResult: null,
33551
33526
  confirmedExcursionsByDay: {},
33552
33527
  bookPackagingEntry: false,
33553
- currentStep: 0
33528
+ currentStep: 0,
33529
+ bookingNumber: undefined
33554
33530
  };
33555
33531
  var searchResultsSlice = createSlice({
33556
33532
  name: 'searchResults',
@@ -33737,6 +33713,9 @@ var searchResultsSlice = createSlice({
33737
33713
  },
33738
33714
  setCurrentStep: function (state, action) {
33739
33715
  state.currentStep = action.payload;
33716
+ },
33717
+ setBookingNumber: function (state, action) {
33718
+ state.bookingNumber = action.payload;
33740
33719
  }
33741
33720
  }
33742
33721
  });
@@ -33781,8 +33760,9 @@ var setExcursionSearchParams = _a.setExcursionSearchParams,
33781
33760
  confirmExcursionForDay = _a.confirmExcursionForDay,
33782
33761
  removeConfirmedExcursionForDay = _a.removeConfirmedExcursionForDay;
33783
33762
  _a.clearConfirmedExcursionsForDay;
33784
- var setBookPackagingEntry = _a.setBookPackagingEntry;
33785
- _a.setCurrentStep;
33763
+ var setBookPackagingEntry = _a.setBookPackagingEntry,
33764
+ setCurrentStep = _a.setCurrentStep,
33765
+ setBookingNumber = _a.setBookingNumber;
33786
33766
  var searchResultsReducer = searchResultsSlice.reducer;
33787
33767
 
33788
33768
  var ItemPicker = function (_a) {
@@ -34324,7 +34304,7 @@ var Itinerary = function (_a) {
34324
34304
  React__default.createElement(
34325
34305
  'p',
34326
34306
  null,
34327
- format$1(new Date(firstEntryLine.from), 'EEE. d MMM yyyy'),
34307
+ format$2(new Date(firstEntryLine.from), 'EEE. d MMM yyyy'),
34328
34308
  ' - ',
34329
34309
  React__default.createElement('strong', null, translations.SRP.START)
34330
34310
  )
@@ -34348,9 +34328,9 @@ var Itinerary = function (_a) {
34348
34328
  React__default.createElement(
34349
34329
  'p',
34350
34330
  { className: 'search__filter__itinerary__transport-date-date' },
34351
- React__default.createElement('strong', null, format$1(new Date(outboundFlight.from), 'd'))
34331
+ React__default.createElement('strong', null, format$2(new Date(outboundFlight.from), 'd'))
34352
34332
  ),
34353
- React__default.createElement('p', null, format$1(new Date(outboundFlight.from), 'MMM'))
34333
+ React__default.createElement('p', null, format$2(new Date(outboundFlight.from), 'MMM'))
34354
34334
  ),
34355
34335
  React__default.createElement(
34356
34336
  'div',
@@ -34424,9 +34404,9 @@ var Itinerary = function (_a) {
34424
34404
  React__default.createElement(
34425
34405
  'p',
34426
34406
  { className: 'search__filter__itinerary__transport-date-date' },
34427
- React__default.createElement('strong', null, format$1(new Date(firstSegment.from), 'd'))
34407
+ React__default.createElement('strong', null, format$2(new Date(firstSegment.from), 'd'))
34428
34408
  ),
34429
- React__default.createElement('p', null, format$1(new Date(firstSegment.from), 'MMM'))
34409
+ React__default.createElement('p', null, format$2(new Date(firstSegment.from), 'MMM'))
34430
34410
  ),
34431
34411
  React__default.createElement(
34432
34412
  'div',
@@ -34453,9 +34433,9 @@ var Itinerary = function (_a) {
34453
34433
  React__default.createElement(
34454
34434
  'p',
34455
34435
  { className: 'search__filter__itinerary__segment-details-text' },
34456
- format$1(new Date(firstSegment.from), 'EEE. d MMM yyyy'),
34436
+ format$2(new Date(firstSegment.from), 'EEE. d MMM yyyy'),
34457
34437
  '> ',
34458
- format$1(new Date(firstSegment.to), 'EEE. d MMM yyyy')
34438
+ format$2(new Date(firstSegment.to), 'EEE. d MMM yyyy')
34459
34439
  )
34460
34440
  )
34461
34441
  )
@@ -34543,9 +34523,9 @@ var Itinerary = function (_a) {
34543
34523
  React__default.createElement(
34544
34524
  'p',
34545
34525
  { className: 'search__filter__itinerary__transport-date-date' },
34546
- React__default.createElement('strong', null, format$1(new Date(returnFlight.from), 'd'))
34526
+ React__default.createElement('strong', null, format$2(new Date(returnFlight.from), 'd'))
34547
34527
  ),
34548
- React__default.createElement('p', null, format$1(new Date(returnFlight.from), 'MMM'))
34528
+ React__default.createElement('p', null, format$2(new Date(returnFlight.from), 'MMM'))
34549
34529
  ),
34550
34530
  React__default.createElement(
34551
34531
  'div',
@@ -34606,7 +34586,7 @@ var Itinerary = function (_a) {
34606
34586
  React__default.createElement(
34607
34587
  'p',
34608
34588
  null,
34609
- format$1(new Date(lastEntryLine.to), 'EEE. d MMM yyyy'),
34589
+ format$2(new Date(lastEntryLine.to), 'EEE. d MMM yyyy'),
34610
34590
  ' - ',
34611
34591
  React__default.createElement('strong', null, translations.SRP.END)
34612
34592
  )
@@ -41433,8 +41413,8 @@ var HotelAccommodationResults = function (_a) {
41433
41413
  : firstPackagingResult === null || firstPackagingResult === void 0
41434
41414
  ? void 0
41435
41415
  : firstPackagingResult.fromDate;
41436
- var firstResultDay = firstResultDate ? format$1(parseISO(firstResultDate), 'd') : null;
41437
- var firstResultMonth = firstResultDate ? format$1(parseISO(firstResultDate), 'MMM') : null;
41416
+ var firstResultDay = firstResultDate ? format$2(parseISO(firstResultDate), 'd') : null;
41417
+ var firstResultMonth = firstResultDate ? format$2(parseISO(firstResultDate), 'MMM') : null;
41438
41418
  var selectedPackagingAccoResult = React__default.useMemo(
41439
41419
  function () {
41440
41420
  var selectedResult = packagingAccoResults.find(function (result) {
@@ -42278,15 +42258,6 @@ var PackageingFlightsFlyIn = function (_a) {
42278
42258
  React__default.createElement(
42279
42259
  'div',
42280
42260
  { className: 'search__result-row' },
42281
- React__default.createElement(
42282
- 'span',
42283
- { className: 'search__result-row-text' },
42284
- (uniqueOutwardFlights === null || uniqueOutwardFlights === void 0 ? void 0 : uniqueOutwardFlights.length) && uniqueOutwardFlights.length,
42285
- '\u00A0',
42286
- translations.FLIGHTS_FORM.FLIGHTS_FOUND_2,
42287
- '\u00A0',
42288
- translations.FLIGHTS_FORM.FLIGHTS_FOUND_3
42289
- ),
42290
42261
  React__default.createElement(
42291
42262
  'div',
42292
42263
  {
@@ -42298,6 +42269,15 @@ var PackageingFlightsFlyIn = function (_a) {
42298
42269
  React__default.createElement(Icon, { name: 'ui-filter', className: 'mobile-filters-button__icon', height: 16 }),
42299
42270
  translations.SRP.FILTERS
42300
42271
  ),
42272
+ React__default.createElement(
42273
+ 'span',
42274
+ { className: 'search__result-row-text' },
42275
+ (uniqueOutwardFlights === null || uniqueOutwardFlights === void 0 ? void 0 : uniqueOutwardFlights.length) && uniqueOutwardFlights.length,
42276
+ '\u00A0',
42277
+ translations.FLIGHTS_FORM.FLIGHTS_FOUND_2,
42278
+ '\u00A0',
42279
+ translations.FLIGHTS_FORM.FLIGHTS_FOUND_3
42280
+ ),
42301
42281
  sortByTypes &&
42302
42282
  sortByTypes.length > 0 &&
42303
42283
  React__default.createElement(
@@ -42580,7 +42560,7 @@ var formatPrice = function (price, currencyCode) {
42580
42560
  };
42581
42561
  var getExcursionDayKey = function (date) {
42582
42562
  var parsed = typeof date === 'string' ? parseISO(date) : date;
42583
- return format$1(parsed, 'yyyy-MM-dd');
42563
+ return format$2(parsed, 'yyyy-MM-dd');
42584
42564
  };
42585
42565
  var getOptionPaxIds = function (option) {
42586
42566
  return Array.isArray(option.paxIds)
@@ -43040,13 +43020,9 @@ var FlyIn = function (_a) {
43040
43020
  className: 'flyin '
43041
43021
  .concat(isOpen ? 'flyin--active' : '', ' ')
43042
43022
  .concat(className, ' ')
43043
- .concat(
43044
- isPackageEditFlow || flyInType === 'flight-outward-results' || flyInType === 'flight-return-results' || flyInType === 'acco-results'
43045
- ? 'flyin--large'
43046
- : '',
43047
- ' '
43048
- )
43049
- .concat(flyInType === 'excursion-results' || flyInType === 'excursion-details' ? 'flyin--medium' : '')
43023
+ .concat(isPackageEditFlow || flyInType === 'acco-results' ? 'flyin--large' : '', ' ')
43024
+ .concat(flyInType === 'excursion-results' || flyInType === 'excursion-details' ? 'flyin--medium' : '', '\n ')
43025
+ .concat(flyInType === 'flight-outward-results' || flyInType === 'flight-return-results' ? 'flyin--flight' : '')
43050
43026
  },
43051
43027
  React__default.createElement(
43052
43028
  'div',
@@ -43125,6 +43101,17 @@ var FlyIn = function (_a) {
43125
43101
  React__default.createElement(
43126
43102
  'div',
43127
43103
  { className: 'search__result-row' },
43104
+ React__default.createElement(
43105
+ 'div',
43106
+ {
43107
+ className: 'cta cta--filter',
43108
+ onClick: function () {
43109
+ return toggleFilters && toggleFilters();
43110
+ }
43111
+ },
43112
+ React__default.createElement(Icon, { name: 'ui-filter', className: 'mobile-filters-button__icon', height: 16 }),
43113
+ translations.SRP.FILTERS
43114
+ ),
43128
43115
  React__default.createElement(
43129
43116
  'span',
43130
43117
  { className: 'search__result-row-text' },
@@ -43138,17 +43125,6 @@ var FlyIn = function (_a) {
43138
43125
  translations.SRP.TOTAL_RESULTS_LABEL
43139
43126
  )
43140
43127
  ),
43141
- React__default.createElement(
43142
- 'div',
43143
- {
43144
- className: 'cta cta--filter',
43145
- onClick: function () {
43146
- return toggleFilters && toggleFilters();
43147
- }
43148
- },
43149
- React__default.createElement(Icon, { name: 'ui-filter', className: 'mobile-filters-button__icon', height: 16 }),
43150
- translations.SRP.FILTERS
43151
- ),
43152
43128
  sortByTypes &&
43153
43129
  sortByTypes.length > 0 &&
43154
43130
  React__default.createElement(
@@ -44013,8 +43989,8 @@ var IndependentFlightSelection = function (_a) {
44013
43989
  [searchResults, selectedReturnKey]
44014
43990
  );
44015
43991
  var firstResultDate = uniqueOutwardFlights.length > 0 ? uniqueOutwardFlights[0].outward.segments[0].departureDateTime : null;
44016
- var firstResultDay = firstResultDate ? format$1(firstResultDate, 'd') : null;
44017
- var firstResultMonth = firstResultDate ? format$1(firstResultDate, 'MMM') : null;
43992
+ var firstResultDay = firstResultDate ? format$2(firstResultDate, 'd') : null;
43993
+ var firstResultMonth = firstResultDate ? format$2(firstResultDate, 'MMM') : null;
44018
43994
  return React__default.createElement(
44019
43995
  React__default.Fragment,
44020
43996
  null,
@@ -45203,7 +45179,7 @@ var GroupTourCard = function (_a) {
45203
45179
  return state.searchResults;
45204
45180
  }).selectedSearchResult;
45205
45181
  if (!context) {
45206
- return;
45182
+ return null;
45207
45183
  }
45208
45184
  var dispatch = useDispatch();
45209
45185
  var translations = getTranslations(languageCode !== null && languageCode !== void 0 ? languageCode : 'en-GB');
@@ -45270,7 +45246,7 @@ var GroupTourCard = function (_a) {
45270
45246
  React__default.createElement(
45271
45247
  'div',
45272
45248
  { className: 'search__result-card__allotment__date--from' },
45273
- format$1(new Date(result.fromDate), 'dd/MM/yyyy')
45249
+ format$2(new Date(result.fromDate), 'dd/MM/yyyy')
45274
45250
  )
45275
45251
  ),
45276
45252
  React__default.createElement(
@@ -45365,7 +45341,7 @@ var GroupTourResults = function (_a) {
45365
45341
  var isLoading = _a.isLoading;
45366
45342
  var context = useContext(SearchResultsConfigurationContext);
45367
45343
  if (!context) {
45368
- return;
45344
+ return null;
45369
45345
  }
45370
45346
  if (isLoading) {
45371
45347
  return React__default.createElement(
@@ -46192,8 +46168,8 @@ var buildItineraryHtml = function (itinerary, translations) {
46192
46168
  .map(function (node) {
46193
46169
  var _a;
46194
46170
  var startDay = getNodeDayRange(node).startDay;
46195
- var day = node.startDate ? format$1(node.startDate, 'd') : null;
46196
- var month = node.startDate ? format$1(node.startDate, 'MMM') : null;
46171
+ var day = node.startDate ? format$2(node.startDate, 'd') : null;
46172
+ var month = node.startDate ? format$2(node.startDate, 'MMM') : null;
46197
46173
  var uniqueItems = getUniqueItems((_a = node.items) !== null && _a !== void 0 ? _a : []);
46198
46174
  var hasItems = uniqueItems.length > 0;
46199
46175
  var hasAccommodationInCurrentNode = uniqueItems.some(isAccommodationItem);
@@ -46402,7 +46378,7 @@ var DayByDayExcursions = function () {
46402
46378
  null,
46403
46379
  stayDates.map(function (day) {
46404
46380
  var _a, _b, _c;
46405
- var dayKey = format$1(day, 'yyyy-MM-dd');
46381
+ var dayKey = format$2(day, 'yyyy-MM-dd');
46406
46382
  var confirmedExcursions = (_a = confirmedExcursionsByDay[dayKey]) !== null && _a !== void 0 ? _a : [];
46407
46383
  return React__default.createElement(
46408
46384
  React__default.Fragment,
@@ -46416,14 +46392,14 @@ var DayByDayExcursions = function () {
46416
46392
  React__default.createElement(
46417
46393
  'p',
46418
46394
  { className: 'search__results__label__date-date' },
46419
- format$1(day, 'd', {
46395
+ format$2(day, 'd', {
46420
46396
  locale: getLocale((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB')
46421
46397
  })
46422
46398
  ),
46423
46399
  React__default.createElement(
46424
46400
  'p',
46425
46401
  null,
46426
- format$1(day, 'MMM', {
46402
+ format$2(day, 'MMM', {
46427
46403
  locale: getLocale((_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB')
46428
46404
  })
46429
46405
  )
@@ -46594,8 +46570,6 @@ var WLSidebar = function (_a) {
46594
46570
  if (!editablePackagingEntry) {
46595
46571
  return null;
46596
46572
  }
46597
- console.log('editablePackagingEntry in WLSidebar:', editablePackagingEntry);
46598
- console.log('priceDetails in WLSidebar:', priceDetails);
46599
46573
  var sortedLines = useMemo(
46600
46574
  function () {
46601
46575
  var _a;
@@ -46740,19 +46714,731 @@ var WLSidebar = function (_a) {
46740
46714
  });
46741
46715
  };
46742
46716
 
46743
- var BookPackagingEntry = function (_a) {
46717
+ var formatBirthDate = function (birthDate) {
46718
+ if (!birthDate) return '';
46719
+ return birthDate.split('T')[0].split('-').reverse().join('/');
46720
+ };
46721
+ var SharedSummary = function (_a) {
46744
46722
  var _b;
46745
- var activeSearchSeed = _a.activeSearchSeed;
46723
+ var translations = _a.translations,
46724
+ travelerFormValues = _a.travelerFormValues,
46725
+ checkboxes = _a.checkboxes,
46726
+ notifications = _a.notifications,
46727
+ _c = _a.remarks,
46728
+ remarks = _c === void 0 ? '' : _c,
46729
+ _d = _a.voucher,
46730
+ voucher = _d === void 0 ? {} : _d,
46731
+ _e = _a.voucherCodes,
46732
+ voucherCodes = _e === void 0 ? [] : _e,
46733
+ _f = _a.enableVoucher,
46734
+ enableVoucher = _f === void 0 ? false : _f,
46735
+ _g = _a.allowOption,
46736
+ allowOption = _g === void 0 ? false : _g,
46737
+ _h = _a.isOffer,
46738
+ isOffer = _h === void 0 ? false : _h,
46739
+ customValidateText = _a.customValidateText,
46740
+ _j = _a.isSubmitting,
46741
+ isSubmitting = _j === void 0 ? false : _j,
46742
+ _k = _a.userValidated,
46743
+ userValidated = _k === void 0 ? true : _k,
46744
+ renderOptions = _a.renderOptions,
46745
+ renderPreviousButton = _a.renderPreviousButton,
46746
+ renderLoader = _a.renderLoader,
46747
+ onSubmit = _a.onSubmit,
46748
+ onRemarksChange = _a.onRemarksChange,
46749
+ onCheckboxesChange = _a.onCheckboxesChange,
46750
+ onNotificationsChange = _a.onNotificationsChange,
46751
+ onVoucherChange = _a.onVoucherChange,
46752
+ onValidateVoucher = _a.onValidateVoucher,
46753
+ onAddVoucher = _a.onAddVoucher,
46754
+ onRemoveVoucher = _a.onRemoveVoucher,
46755
+ onUserValidatedChange = _a.onUserValidatedChange;
46756
+ var _l = useState(checkboxes),
46757
+ localCheckboxes = _l[0],
46758
+ setLocalCheckboxes = _l[1];
46759
+ useEffect(
46760
+ function () {
46761
+ setLocalCheckboxes(checkboxes);
46762
+ },
46763
+ [checkboxes]
46764
+ );
46765
+ useEffect(
46766
+ function () {
46767
+ var checkboxesValidated = !isNil(localCheckboxes)
46768
+ ? localCheckboxes.every(function (checkbox) {
46769
+ return checkbox.isSelected;
46770
+ })
46771
+ : true;
46772
+ var notificationsValidated = !isNil(notifications)
46773
+ ? notifications
46774
+ .filter(function (notification) {
46775
+ return notification.hasToBeConfirmed;
46776
+ })
46777
+ .every(function (notification) {
46778
+ return notification.isConfirmed;
46779
+ })
46780
+ : true;
46781
+ onUserValidatedChange === null || onUserValidatedChange === void 0 ? void 0 : onUserValidatedChange(checkboxesValidated && notificationsValidated);
46782
+ },
46783
+ [localCheckboxes, notifications, onUserValidatedChange]
46784
+ );
46785
+ var handleNotificationChange = function (id, checked) {
46786
+ var updatedNotifications = (notifications !== null && notifications !== void 0 ? notifications : []).map(function (notification) {
46787
+ return notification.id === id ? __assign(__assign({}, notification), { isConfirmed: checked }) : notification;
46788
+ });
46789
+ onNotificationsChange === null || onNotificationsChange === void 0 ? void 0 : onNotificationsChange(updatedNotifications);
46790
+ };
46791
+ var handleCheckboxChange = function (id) {
46792
+ if (isNil(localCheckboxes)) return;
46793
+ var newCheckboxes = __spreadArray([], localCheckboxes, true);
46794
+ var index = findIndex$1(localCheckboxes, function (checkbox) {
46795
+ return checkbox.id === id;
46796
+ });
46797
+ if (index < 0) return;
46798
+ newCheckboxes[index] = __assign(__assign({}, newCheckboxes[index]), { isSelected: !newCheckboxes[index].isSelected });
46799
+ setLocalCheckboxes(newCheckboxes);
46800
+ onCheckboxesChange === null || onCheckboxesChange === void 0 ? void 0 : onCheckboxesChange(newCheckboxes);
46801
+ };
46802
+ return React__default.createElement(
46803
+ React__default.Fragment,
46804
+ null,
46805
+ isSubmitting && ((renderLoader === null || renderLoader === void 0 ? void 0 : renderLoader()) || React__default.createElement(Loader, null)),
46806
+ !isSubmitting &&
46807
+ React__default.createElement(
46808
+ 'form',
46809
+ { className: 'form', name: 'booking--summary', id: 'booking--summary', onSubmit: onSubmit },
46810
+ React__default.createElement(
46811
+ 'div',
46812
+ { className: 'form__booking--summary' },
46813
+ React__default.createElement(
46814
+ 'div',
46815
+ { className: 'form__region' },
46816
+ React__default.createElement(
46817
+ 'div',
46818
+ { className: 'form__row' },
46819
+ React__default.createElement(
46820
+ 'div',
46821
+ { className: 'form__group' },
46822
+ React__default.createElement(
46823
+ 'div',
46824
+ { className: 'form__region-header' },
46825
+ React__default.createElement('h5', { className: 'form__region-heading' }, translations.SUMMARY.PERSONAL_DETAILS)
46826
+ )
46827
+ )
46828
+ ),
46829
+ travelerFormValues.rooms.map(function (room, roomIndex) {
46830
+ var _a, _b;
46831
+ return React__default.createElement(
46832
+ 'div',
46833
+ { className: 'form__row', key: roomIndex },
46834
+ React__default.createElement(
46835
+ 'div',
46836
+ { className: 'form__group' },
46837
+ React__default.createElement(
46838
+ 'div',
46839
+ { className: 'form__region-header' },
46840
+ React__default.createElement(
46841
+ 'h5',
46842
+ { className: 'form__region-heading' },
46843
+ travelerFormValues.rooms.length > 1
46844
+ ? ''.concat(translations.SHARED.ROOM, ' ').concat(roomIndex + 1)
46845
+ : translations.ROOM_OPTIONS_FORM.TRAVELER_GROUP
46846
+ ),
46847
+ React__default.createElement(
46848
+ 'p',
46849
+ { className: 'form__region-label' },
46850
+ ''
46851
+ .concat(room.adults.length + room.children.length, ' ')
46852
+ .concat(room.adults.length + room.children.length === 1 ? translations.SUMMARY.TRAVELER : translations.SUMMARY.TRAVELERS, ': ')
46853
+ .concat(
46854
+ compact([
46855
+ room.adults.length,
46856
+ room.adults.length === 1 && ' '.concat(translations.SUMMARY.ADULT),
46857
+ room.adults.length > 1 && ' '.concat(translations.SUMMARY.ADULTS),
46858
+ ((_a = room.adults) === null || _a === void 0 ? void 0 : _a.length) &&
46859
+ ((_b = room.children) === null || _b === void 0 ? void 0 : _b.length) &&
46860
+ ', ',
46861
+ room.children.length,
46862
+ room.children.length === 1 && ' '.concat(translations.SUMMARY.CHILD),
46863
+ room.children.length > 1 && ' '.concat(translations.SUMMARY.CHILDREN)
46864
+ ]).join('')
46865
+ )
46866
+ )
46867
+ )
46868
+ ),
46869
+ __spreadArray(__spreadArray([], room.adults, true), room.children, true).map(function (traveler) {
46870
+ var isMainBooker = traveler.id === travelerFormValues.mainBookerId;
46871
+ return React__default.createElement(
46872
+ 'div',
46873
+ { className: 'form__group form__group--sm-50', key: traveler.id },
46874
+ React__default.createElement(
46875
+ 'ul',
46876
+ { className: 'list list--plain' },
46877
+ React__default.createElement(
46878
+ 'li',
46879
+ { className: 'list__item' },
46880
+ React__default.createElement('strong', null, traveler.firstName, ' ', traveler.lastName),
46881
+ ' ',
46882
+ isMainBooker && React__default.createElement('em', null, '(', translations.SUMMARY.MAIN_BOOKER, ')')
46883
+ ),
46884
+ React__default.createElement('li', { className: 'list__item' }, formatBirthDate(traveler.birthDate)),
46885
+ isMainBooker &&
46886
+ React__default.createElement(
46887
+ React__default.Fragment,
46888
+ null,
46889
+ travelerFormValues.street &&
46890
+ React__default.createElement(
46891
+ 'li',
46892
+ { className: 'list__item' },
46893
+ ''
46894
+ .concat(travelerFormValues.street, ' ')
46895
+ .concat(compact([travelerFormValues.houseNumber, travelerFormValues.box]).join(' '), ', ')
46896
+ .concat(travelerFormValues.zipCode, ' ')
46897
+ .concat(travelerFormValues.place)
46898
+ ),
46899
+ travelerFormValues.phone && React__default.createElement('li', { className: 'list__item' }, travelerFormValues.phone),
46900
+ travelerFormValues.email && React__default.createElement('li', { className: 'list__item' }, travelerFormValues.email)
46901
+ )
46902
+ )
46903
+ );
46904
+ })
46905
+ );
46906
+ })
46907
+ ),
46908
+ React__default.createElement(
46909
+ 'div',
46910
+ { className: 'form__region' },
46911
+ React__default.createElement(
46912
+ 'div',
46913
+ { className: 'form__row' },
46914
+ React__default.createElement(
46915
+ 'div',
46916
+ { className: 'form__group' },
46917
+ React__default.createElement(
46918
+ 'div',
46919
+ { className: 'form__region-header' },
46920
+ React__default.createElement('h5', { className: 'form__region-heading' }, translations.SUMMARY.OPTIONS)
46921
+ )
46922
+ )
46923
+ ),
46924
+ React__default.createElement(
46925
+ 'div',
46926
+ { className: 'form__row' },
46927
+ React__default.createElement(
46928
+ 'div',
46929
+ { className: 'form__group' },
46930
+ React__default.createElement('ul', { className: 'list list--booking-summary' }, renderOptions())
46931
+ )
46932
+ )
46933
+ ),
46934
+ enableVoucher &&
46935
+ React__default.createElement(
46936
+ 'div',
46937
+ { className: 'form__region' },
46938
+ React__default.createElement(
46939
+ 'div',
46940
+ { className: 'form__row' },
46941
+ React__default.createElement(
46942
+ 'div',
46943
+ { className: 'form__group' },
46944
+ React__default.createElement(
46945
+ 'div',
46946
+ { className: 'form__region-header' },
46947
+ React__default.createElement('h5', { className: 'form__region-heading' }, translations.SUMMARY.VOUCHERS)
46948
+ )
46949
+ )
46950
+ ),
46951
+ React__default.createElement(
46952
+ 'div',
46953
+ { className: 'form__row' },
46954
+ React__default.createElement(
46955
+ 'div',
46956
+ { className: 'form__group' },
46957
+ React__default.createElement('input', {
46958
+ type: 'text',
46959
+ className: 'form__input info-message__voucher__input',
46960
+ value: (_b = voucher.code) !== null && _b !== void 0 ? _b : '',
46961
+ onChange: function (event) {
46962
+ return onVoucherChange === null || onVoucherChange === void 0 ? void 0 : onVoucherChange({ code: event.target.value });
46963
+ }
46964
+ }),
46965
+ React__default.createElement(
46966
+ 'button',
46967
+ { type: 'button', className: buildClassName(['cta', !voucher.code && 'cta--disabled']), onClick: onValidateVoucher },
46968
+ translations.SUMMARY.VOUCHER_VALIDATE
46969
+ )
46970
+ )
46971
+ ),
46972
+ React__default.createElement(
46973
+ 'div',
46974
+ { className: 'form__row' },
46975
+ React__default.createElement(
46976
+ 'div',
46977
+ { className: 'form__group info-message__voucher' },
46978
+ voucher.isValid &&
46979
+ voucher.isValidated &&
46980
+ React__default.createElement(
46981
+ 'div',
46982
+ { className: 'info-message info-message__voucher__valid' },
46983
+ React__default.createElement('span', null, translations.SUMMARY.VOUCHER_VALID),
46984
+ React__default.createElement(
46985
+ 'button',
46986
+ { type: 'button', className: 'cta cta--secondary', onClick: onAddVoucher },
46987
+ translations.SUMMARY.ADD_VOUCHER
46988
+ )
46989
+ ),
46990
+ !voucher.isValid &&
46991
+ voucher.isValidated &&
46992
+ React__default.createElement('div', { className: 'info-message--error' }, translations.SUMMARY.VOUCHER_INVALID)
46993
+ )
46994
+ ),
46995
+ React__default.createElement(
46996
+ 'div',
46997
+ { className: 'form__row' },
46998
+ React__default.createElement(
46999
+ 'ul',
47000
+ { className: 'info-message__voucher' },
47001
+ !isEmpty(voucherCodes) &&
47002
+ voucherCodes.map(function (code, index) {
47003
+ return React__default.createElement(
47004
+ 'li',
47005
+ { key: ''.concat(code, '-').concat(index) },
47006
+ React__default.createElement(
47007
+ 'div',
47008
+ { className: 'info-message__voucher__list' },
47009
+ code,
47010
+ ' ',
47011
+ React__default.createElement(
47012
+ 'button',
47013
+ {
47014
+ type: 'button',
47015
+ className: 'cta--add-remove',
47016
+ onClick: function () {
47017
+ return onRemoveVoucher === null || onRemoveVoucher === void 0 ? void 0 : onRemoveVoucher(code);
47018
+ }
47019
+ },
47020
+ React__default.createElement(Icon, { height: 16, name: 'ui-trashcan' })
47021
+ )
47022
+ )
47023
+ );
47024
+ })
47025
+ )
47026
+ )
47027
+ ),
47028
+ !isEmpty(notifications) &&
47029
+ React__default.createElement(
47030
+ 'div',
47031
+ { className: 'form__region' },
47032
+ React__default.createElement(
47033
+ 'div',
47034
+ { className: 'form__row' },
47035
+ React__default.createElement(
47036
+ 'div',
47037
+ { className: 'form__group' },
47038
+ React__default.createElement(
47039
+ 'div',
47040
+ { className: 'info-message' },
47041
+ React__default.createElement(Icon, { name: 'ui-tooltip', className: 'icon--secondary-color' }),
47042
+ React__default.createElement(
47043
+ 'div',
47044
+ { className: 'info-message__copy' },
47045
+ React__default.createElement('h5', null, translations.SUMMARY.NOTIFICATIONS_TITLE),
47046
+ uniqBy(
47047
+ (notifications !== null && notifications !== void 0 ? notifications : []).filter(function (notification) {
47048
+ return !notification.hasToBeConfirmed;
47049
+ }),
47050
+ 'id'
47051
+ ).map(function (notification) {
47052
+ return React__default.createElement(
47053
+ 'span',
47054
+ { key: notification.id, className: 'checkbox__label-text' },
47055
+ React__default.createElement('strong', { className: 'checkbox__label-text--title' }, notification.title),
47056
+ React__default.createElement('span', { className: 'checkbox__label-text--description' }, notification.description)
47057
+ );
47058
+ }),
47059
+ uniqBy(
47060
+ (notifications !== null && notifications !== void 0 ? notifications : []).filter(function (notification) {
47061
+ return notification.hasToBeConfirmed;
47062
+ }),
47063
+ 'id'
47064
+ ).map(function (notification) {
47065
+ return React__default.createElement(
47066
+ 'div',
47067
+ { className: 'checkbox', key: notification.id },
47068
+ React__default.createElement(
47069
+ 'label',
47070
+ { className: 'checkbox__label' },
47071
+ React__default.createElement('input', {
47072
+ type: 'checkbox',
47073
+ className: 'checkbox__input',
47074
+ checked: notification.isConfirmed,
47075
+ onChange: function (event) {
47076
+ return handleNotificationChange(notification.id, event.target.checked);
47077
+ }
47078
+ }),
47079
+ React__default.createElement(
47080
+ 'span',
47081
+ { className: 'checkbox__label-text' },
47082
+ React__default.createElement('strong', { className: 'checkbox__label-text--title' }, notification.title),
47083
+ React__default.createElement('span', { className: 'checkbox__label-text--description' }, notification.description)
47084
+ )
47085
+ )
47086
+ );
47087
+ })
47088
+ )
47089
+ )
47090
+ )
47091
+ )
47092
+ ),
47093
+ React__default.createElement(
47094
+ 'div',
47095
+ { className: 'form__region' },
47096
+ React__default.createElement(
47097
+ 'div',
47098
+ { className: 'form__row' },
47099
+ React__default.createElement(
47100
+ 'div',
47101
+ { className: 'form__group' },
47102
+ React__default.createElement(
47103
+ 'div',
47104
+ { className: 'form__region-header' },
47105
+ React__default.createElement('h5', { className: 'form__region-heading' }, translations.SUMMARY.REMARKS)
47106
+ )
47107
+ )
47108
+ ),
47109
+ React__default.createElement(
47110
+ 'div',
47111
+ { className: 'form__row' },
47112
+ React__default.createElement(
47113
+ 'div',
47114
+ { className: 'form__group' },
47115
+ React__default.createElement('textarea', {
47116
+ className: 'form__input',
47117
+ value: remarks,
47118
+ onChange: function (event) {
47119
+ return onRemarksChange === null || onRemarksChange === void 0 ? void 0 : onRemarksChange(event.target.value);
47120
+ }
47121
+ })
47122
+ )
47123
+ )
47124
+ ),
47125
+ React__default.createElement(
47126
+ 'div',
47127
+ { className: 'form__region' },
47128
+ React__default.createElement(
47129
+ 'div',
47130
+ { className: 'form__row' },
47131
+ React__default.createElement(
47132
+ 'div',
47133
+ { className: 'form__group' },
47134
+ React__default.createElement(
47135
+ 'div',
47136
+ { className: 'info-message' },
47137
+ React__default.createElement(Icon, { name: 'ui-tooltip', className: 'icon--secondary-color' }),
47138
+ React__default.createElement(
47139
+ 'div',
47140
+ { className: 'info-message__copy' },
47141
+ React__default.createElement('h5', null, translations.SUMMARY.VALIDATE_TITLE),
47142
+ customValidateText
47143
+ ? React__default.createElement('div', { dangerouslySetInnerHTML: { __html: customValidateText } })
47144
+ : React__default.createElement(
47145
+ React__default.Fragment,
47146
+ null,
47147
+ React__default.createElement(
47148
+ 'p',
47149
+ null,
47150
+ isOffer ? translations.SUMMARY.VALIDATE_TEXT_OFFER : translations.SUMMARY.VALIDATE_TEXT_BOOKING
47151
+ ),
47152
+ allowOption && React__default.createElement('p', null, translations.SUMMARY.VALIDATE_TEXT_OPTION)
47153
+ ),
47154
+ localCheckboxes === null || localCheckboxes === void 0
47155
+ ? void 0
47156
+ : localCheckboxes.map(function (checkbox) {
47157
+ return React__default.createElement(
47158
+ 'div',
47159
+ { className: 'checkbox', key: checkbox.id },
47160
+ React__default.createElement(
47161
+ 'label',
47162
+ { className: 'checkbox__label' },
47163
+ React__default.createElement('input', {
47164
+ type: 'checkbox',
47165
+ className: 'checkbox__input',
47166
+ checked: checkbox.isSelected,
47167
+ onChange: function () {
47168
+ return handleCheckboxChange(checkbox.id);
47169
+ }
47170
+ }),
47171
+ React__default.createElement('span', { className: 'checkbox__label-text', dangerouslySetInnerHTML: { __html: checkbox.text } })
47172
+ )
47173
+ );
47174
+ })
47175
+ )
47176
+ )
47177
+ )
47178
+ )
47179
+ )
47180
+ ),
47181
+ React__default.createElement(
47182
+ 'div',
47183
+ { className: 'booking__navigator' },
47184
+ renderPreviousButton(),
47185
+ allowOption &&
47186
+ React__default.createElement(
47187
+ 'button',
47188
+ {
47189
+ title: translations.STEPS.SUBMIT_OPTION,
47190
+ className: buildClassName(['cta', !userValidated && 'cta--disabled']),
47191
+ disabled: !userValidated,
47192
+ name: 'option'
47193
+ },
47194
+ translations.STEPS.SUBMIT_OPTION
47195
+ ),
47196
+ React__default.createElement(
47197
+ 'button',
47198
+ {
47199
+ title: isOffer ? translations.STEPS.SUBMIT_OFFER : translations.STEPS.SUBMIT_BOOKING,
47200
+ className: buildClassName(['cta', !userValidated && 'cta--disabled']),
47201
+ disabled: !userValidated,
47202
+ name: 'default'
47203
+ },
47204
+ isOffer ? translations.STEPS.SUBMIT_OFFER : translations.STEPS.SUBMIT_BOOKING
47205
+ )
47206
+ )
47207
+ )
47208
+ );
47209
+ };
47210
+
47211
+ var renderEditablePackagingEntrySummaryOptions = function (editablePackagingEntry, priceDetails, translations) {
47212
+ var _a, _b;
47213
+ var priceDetailsByProduct = groupBy(
47214
+ (_a = priceDetails === null || priceDetails === void 0 ? void 0 : priceDetails.details) !== null && _a !== void 0 ? _a : [],
47215
+ function (detail) {
47216
+ return ''.concat(detail.productCode, '|').concat(detail.accommodationCode);
47217
+ }
47218
+ );
47219
+ return (
47220
+ (_b = editablePackagingEntry === null || editablePackagingEntry === void 0 ? void 0 : editablePackagingEntry.lines) !== null && _b !== void 0 ? _b : []
47221
+ ).map(function (line) {
47222
+ var _a, _b, _c;
47223
+ var groupedPriceDetails = (_a = priceDetailsByProduct[''.concat(line.productCode, '|').concat(line.accommodationCode)]) !== null && _a !== void 0 ? _a : [];
47224
+ var visiblePriceDetails = groupedPriceDetails.filter(function (detail) {
47225
+ return detail.showPrice || detail.isSeparate;
47226
+ });
47227
+ return React__default.createElement(
47228
+ 'li',
47229
+ { key: line.guid },
47230
+ React__default.createElement('h6', null, line.productName),
47231
+ React__default.createElement(
47232
+ 'ul',
47233
+ null,
47234
+ React__default.createElement('li', { className: 'list__item' }, compact([line.accommodationName, line.regimeName]).join(', ')),
47235
+ (_c = (_b = line.flightInformation) === null || _b === void 0 ? void 0 : _b.flightLines) === null || _c === void 0
47236
+ ? void 0
47237
+ : _c.map(function (flightLine, index) {
47238
+ var _a, _b;
47239
+ return React__default.createElement(
47240
+ 'li',
47241
+ { className: 'list__item', key: ''.concat(line.guid, '-').concat(index) },
47242
+ flightLine.departureAirportCode,
47243
+ ' ',
47244
+ (_a = flightLine.departureTime) === null || _a === void 0 ? void 0 : _a.slice(0, 5),
47245
+ ' > ',
47246
+ flightLine.arrivalAirportCode,
47247
+ ' ',
47248
+ (_b = flightLine.arrivalTime) === null || _b === void 0 ? void 0 : _b.slice(0, 5),
47249
+ ' (',
47250
+ flightLine.operatingFlightNumber || ''.concat(flightLine.airlineCode).concat(flightLine.flightNumber),
47251
+ ')'
47252
+ );
47253
+ }),
47254
+ !isEmpty(visiblePriceDetails) &&
47255
+ visiblePriceDetails.map(function (detail, index) {
47256
+ var _a;
47257
+ return React__default.createElement(
47258
+ 'li',
47259
+ { className: 'list__item', key: ''.concat(line.guid, '-price-').concat(index) },
47260
+ detail.priceDescription,
47261
+ ': ',
47262
+ (_a = detail.total) === null || _a === void 0 ? void 0 : _a.toLocaleString(undefined, { style: 'currency', currency: 'EUR' })
47263
+ );
47264
+ })
47265
+ ),
47266
+ React__default.createElement(
47267
+ 'p',
47268
+ null,
47269
+ '(',
47270
+ line.from === line.to
47271
+ ? getDateText(line.from)
47272
+ : React__default.createElement(React__default.Fragment, null, getDateText(line.from), ' > ', getDateText(line.to)),
47273
+ ')'
47274
+ )
47275
+ );
47276
+ });
47277
+ };
47278
+
47279
+ var travelerFormFields = [{ type: 'gender' }, { type: 'firstName' }, { type: 'lastName' }, { type: 'birthDate' }];
47280
+ var mainBookerFormFields = [
47281
+ { type: 'street' },
47282
+ { type: 'houseNumber' },
47283
+ { type: 'box' },
47284
+ { type: 'zipCode' },
47285
+ { type: 'place' },
47286
+ { type: 'country' },
47287
+ { type: 'phone' },
47288
+ { type: 'email' }
47289
+ ];
47290
+ var travellersSettings = {
47291
+ countries: [
47292
+ { iso2: 'BE', name: 'Belgium', phonePrefix: '+32' },
47293
+ { iso2: 'NL', name: 'Netherlands', phonePrefix: '+31' },
47294
+ { iso2: 'FR', name: 'France', phonePrefix: '+33' }
47295
+ ],
47296
+ formFields: travelerFormFields,
47297
+ mainBookerFormFields: mainBookerFormFields
47298
+ };
47299
+ var BookPackagingEntry = function (_a) {
47300
+ var _b, _c;
47301
+ var activeSearchSeed = _a.activeSearchSeed,
47302
+ isConfirmationPage = _a.isConfirmationPage;
46746
47303
  var context = useContext(SearchResultsConfigurationContext);
46747
- if (!context) {
46748
- return null;
46749
- }
46750
- var translations = getTranslations((_b = context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
46751
- var currentStep = useSelector(function (state) {
46752
- return state.searchResults;
46753
- }).currentStep;
46754
- useDispatch();
47304
+ var dispatch = useDispatch();
47305
+ var _d = useSelector(function (state) {
47306
+ return state.searchResults;
47307
+ }),
47308
+ editablePackagingEntry = _d.editablePackagingEntry,
47309
+ priceDetails = _d.priceDetails,
47310
+ currentStep = _d.currentStep,
47311
+ bookingNumber = _d.bookingNumber;
47312
+ var _e = useState([]),
47313
+ countries = _e[0],
47314
+ setCountries = _e[1];
47315
+ var _f = useState(true),
47316
+ userValidated = _f[0],
47317
+ setUserValidated = _f[1];
47318
+ var _g = useState(''),
47319
+ remarks = _g[0],
47320
+ setRemarks = _g[1];
47321
+ var _h = useState(false),
47322
+ isSubmitting = _h[0],
47323
+ setIsSubmitting = _h[1];
47324
+ if (!context || !editablePackagingEntry || !priceDetails) return null;
47325
+ var config = {
47326
+ host: context.tideConnection.host,
47327
+ apiKey: context.tideConnection.apiKey
47328
+ };
47329
+ var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
46755
47330
  var stepLabels = [translations.STEPS.PERSONAL_DETAILS, translations.STEPS.SUMMARY, translations.STEPS.CONFIRMATION];
47331
+ console.log('editablePackagingEntry in WLSidebar:', editablePackagingEntry);
47332
+ console.log('priceDetails in WLSidebar:', priceDetails);
47333
+ var initialValues = useMemo(
47334
+ function () {
47335
+ return createInitialValuesFromEditablePackagingEntry(editablePackagingEntry);
47336
+ },
47337
+ [editablePackagingEntry === null || editablePackagingEntry === void 0 ? void 0 : editablePackagingEntry.transactionId]
47338
+ );
47339
+ var formik = useFormik({
47340
+ initialValues: initialValues,
47341
+ enableReinitialize: true,
47342
+ validate: function (values) {
47343
+ return validateForm(values, false, 'b2c', translations, travellersSettings.formFields, travellersSettings.mainBookerFormFields);
47344
+ },
47345
+ onSubmit: function (values) {
47346
+ dispatch(setEditablePackagingEntry(applyTravelersFormValuesToEditablePackagingEntry(editablePackagingEntry, values)));
47347
+ dispatch(setCurrentStep(1));
47348
+ }
47349
+ });
47350
+ useEffect(function () {
47351
+ if (!context) return;
47352
+ var controller = new AbortController();
47353
+ (function () {
47354
+ return __awaiter(void 0, void 0, void 0, function () {
47355
+ var result;
47356
+ return __generator(this, function (_b) {
47357
+ switch (_b.label) {
47358
+ case 0:
47359
+ _b.trys.push([0, 2, , 3]);
47360
+ return [4 /*yield*/, build.getCountries(config, controller.signal)];
47361
+ case 1:
47362
+ result = _b.sent();
47363
+ setCountries(result.items);
47364
+ return [3 /*break*/, 3];
47365
+ case 2:
47366
+ _b.sent();
47367
+ return [3 /*break*/, 3];
47368
+ case 3:
47369
+ return [2 /*return*/];
47370
+ }
47371
+ });
47372
+ });
47373
+ })();
47374
+ return function () {
47375
+ return controller.abort();
47376
+ };
47377
+ }, []);
47378
+ useEffect(
47379
+ function () {
47380
+ if (isConfirmationPage) {
47381
+ dispatch(setCurrentStep(2));
47382
+ }
47383
+ },
47384
+ [isConfirmationPage, dispatch]
47385
+ );
47386
+ var handleSummarySubmit = function (e) {
47387
+ return __awaiter(void 0, void 0, void 0, function () {
47388
+ var updatedEditablePackagingEntry, redirectUrl, request, bookingResponse;
47389
+ var _a, _b;
47390
+ return __generator(this, function (_c) {
47391
+ switch (_c.label) {
47392
+ case 0:
47393
+ e.preventDefault();
47394
+ setIsSubmitting(true);
47395
+ if (typeof window !== 'undefined') {
47396
+ window.scrollTo(0, 0);
47397
+ }
47398
+ updatedEditablePackagingEntry = __assign(__assign({}, editablePackagingEntry), { remarks: remarks });
47399
+ if (context.generatePaymentUrl && typeof window !== 'undefined') {
47400
+ redirectUrl = new URL(window.location.href);
47401
+ redirectUrl.searchParams.set('bookingConfirmation', 'true');
47402
+ redirectUrl.searchParams.set('link', '');
47403
+ updatedEditablePackagingEntry = __assign(__assign({}, updatedEditablePackagingEntry), {
47404
+ redirectUrl: redirectUrl.toString(),
47405
+ returnPaymentUrl: true
47406
+ });
47407
+ }
47408
+ dispatch(setEditablePackagingEntry(updatedEditablePackagingEntry));
47409
+ _c.label = 1;
47410
+ case 1:
47411
+ _c.trys.push([1, 3, 4, 5]);
47412
+ request = {
47413
+ language: (_a = context.languageCode) !== null && _a !== void 0 ? _a : 'en-GB',
47414
+ officeId: context.tideConnection.officeId,
47415
+ catalogueId: (_b = context.searchConfiguration.defaultCatalogueId) !== null && _b !== void 0 ? _b : 0,
47416
+ agentId: context.agentId,
47417
+ payload: updatedEditablePackagingEntry
47418
+ };
47419
+ return [4 /*yield*/, build.bookPackagingEntry(config, request)];
47420
+ case 2:
47421
+ bookingResponse = _c.sent();
47422
+ dispatch(setBookingNumber(bookingResponse.number));
47423
+ if (bookingResponse.paymentUrl) {
47424
+ window.location.href = bookingResponse.paymentUrl;
47425
+ } else {
47426
+ dispatch(setCurrentStep(2));
47427
+ }
47428
+ return [3 /*break*/, 5];
47429
+ case 3:
47430
+ _c.sent();
47431
+ dispatch(setCurrentStep(3));
47432
+ return [3 /*break*/, 5];
47433
+ case 4:
47434
+ setIsSubmitting(false);
47435
+ return [7 /*endfinally*/];
47436
+ case 5:
47437
+ return [2 /*return*/];
47438
+ }
47439
+ });
47440
+ });
47441
+ };
46756
47442
  return React__default.createElement(
46757
47443
  'div',
46758
47444
  { className: 'booking' },
@@ -46769,7 +47455,64 @@ var BookPackagingEntry = function (_a) {
46769
47455
  return React__default.createElement(React__default.Fragment, null, step + 1, '.\u00A0', stepLabels[step]);
46770
47456
  }
46771
47457
  },
46772
- React__default.createElement('div', null)
47458
+ currentStep === 0 &&
47459
+ React__default.createElement(SharedTravelersForm, {
47460
+ formik: formik,
47461
+ translations: translations,
47462
+ travellersSettings: travellersSettings,
47463
+ countries: countries,
47464
+ travelersFirstStep: false,
47465
+ isUnavailable: false,
47466
+ useCompactForm: false,
47467
+ showAgentSelection: false
47468
+ }),
47469
+ currentStep === 1 &&
47470
+ React__default.createElement(SharedSummary, {
47471
+ translations: translations,
47472
+ travelerFormValues: formik.values,
47473
+ isSubmitting: isSubmitting,
47474
+ userValidated: userValidated,
47475
+ remarks: remarks,
47476
+ enableVoucher: false,
47477
+ allowOption: false,
47478
+ isOffer: false,
47479
+ onUserValidatedChange: setUserValidated,
47480
+ onRemarksChange: setRemarks,
47481
+ onSubmit: handleSummarySubmit,
47482
+ renderOptions: function () {
47483
+ return renderEditablePackagingEntrySummaryOptions(editablePackagingEntry, priceDetails);
47484
+ },
47485
+ renderPreviousButton: function () {
47486
+ return React__default.createElement(
47487
+ 'button',
47488
+ {
47489
+ type: 'button',
47490
+ title: translations.STEPS.PREVIOUS,
47491
+ onClick: function () {
47492
+ return dispatch(setCurrentStep(0));
47493
+ },
47494
+ className: 'cta cta--secondary'
47495
+ },
47496
+ translations.STEPS.PREVIOUS
47497
+ );
47498
+ }
47499
+ }),
47500
+ currentStep === 2 &&
47501
+ React__default.createElement(SharedConfirmation, {
47502
+ bookingNumber:
47503
+ (_c =
47504
+ bookingNumber !== null && bookingNumber !== void 0
47505
+ ? bookingNumber
47506
+ : editablePackagingEntry === null || editablePackagingEntry === void 0
47507
+ ? void 0
47508
+ : editablePackagingEntry.dossierNumber) !== null && _c !== void 0
47509
+ ? _c
47510
+ : '',
47511
+ isOption: false,
47512
+ isOffer: false,
47513
+ translations: translations.CONFIRMATION
47514
+ }),
47515
+ currentStep === 3 && React__default.createElement('div', null)
46773
47516
  ),
46774
47517
  React__default.createElement('div', { className: 'backdrop', id: 'backdrop' }),
46775
47518
  React__default.createElement(WLSidebar, { activeSearchSeed: activeSearchSeed })
@@ -46829,9 +47572,12 @@ var SearchResultsContainer = function () {
46829
47572
  var _k = useState(false),
46830
47573
  itineraryOpen = _k[0],
46831
47574
  setItineraryOpen = _k[1];
46832
- var _l = useState(null),
46833
- selectedAccommodationSeed = _l[0],
46834
- setSelectedAccommodationSeed = _l[1];
47575
+ var _l = useState(false),
47576
+ isBookingConfirmation = _l[0],
47577
+ setIsBookingConfirmation = _l[1];
47578
+ var _m = useState(null),
47579
+ selectedAccommodationSeed = _m[0],
47580
+ setSelectedAccommodationSeed = _m[1];
46835
47581
  var skipInitialPackagingAccoDetailsRef = useRef(false);
46836
47582
  var panelRef = useRef(null);
46837
47583
  var sortByTypes = [
@@ -47575,6 +48321,13 @@ var SearchResultsContainer = function () {
47575
48321
  if (context === null || context === void 0 ? void 0 : context.packagingEntry) {
47576
48322
  dispatch(setEditablePackagingEntry(structuredClone(context.packagingEntry)));
47577
48323
  dispatch(setTransactionId(context.packagingEntry.transactionId));
48324
+ var params = new URLSearchParams(location.search);
48325
+ var bookingConfirmation = getStringFromParams(params, 'bookingConfirmation');
48326
+ console.log('bookingConfirmation', bookingConfirmation);
48327
+ if (bookingConfirmation == 'true') {
48328
+ setIsBookingConfirmation(true);
48329
+ dispatch(setBookPackagingEntry(true));
48330
+ }
47578
48331
  }
47579
48332
  },
47580
48333
  [context === null || context === void 0 ? void 0 : context.packagingEntry]
@@ -48279,38 +49032,45 @@ var SearchResultsContainer = function () {
48279
49032
  return __assign(__assign({}, entry), { language: language, transactionId: transactionId, pax: entry.pax, lines: nextLines });
48280
49033
  };
48281
49034
  var buildBasePackagingEntry = function (sourceEntry, seed, transactionId, language) {
48282
- var _a, _b;
49035
+ var _a;
48283
49036
  if (sourceEntry) {
48284
49037
  return structuredClone(sourceEntry);
48285
49038
  }
48286
49039
  var paxId = 0;
48287
- var pax =
48288
- (_b =
48289
- (_a = seed.rooms) === null || _a === void 0
48290
- ? void 0
48291
- : _a.flatMap(function (room, roomIndex) {
48292
- return room.pax.map(function (_, paxIndex) {
48293
- return {
48294
- id: paxId++,
48295
- firstName: '',
48296
- lastName: '',
48297
- dateOfBirth: null,
48298
- isMainBooker: roomIndex === 0 && paxIndex === 0
48299
- };
48300
- });
48301
- })) !== null && _b !== void 0
48302
- ? _b
48303
- : [];
49040
+ var pax = [];
49041
+ var rooms = [];
49042
+ (_a = seed.rooms) === null || _a === void 0
49043
+ ? void 0
49044
+ : _a.forEach(function (room, roomIndex) {
49045
+ var paxIds = room.pax.map(function (_, paxIndex) {
49046
+ var id = paxId++;
49047
+ pax.push({
49048
+ id: id,
49049
+ firstName: '',
49050
+ lastName: '',
49051
+ dateOfBirth: null,
49052
+ isMainBooker: roomIndex === 0 && paxIndex === 0
49053
+ });
49054
+ return id;
49055
+ });
49056
+ rooms.push({
49057
+ id: roomIndex,
49058
+ paxIds: paxIds
49059
+ });
49060
+ });
48304
49061
  return {
48305
49062
  language: language,
48306
49063
  transactionId: transactionId,
48307
49064
  dossierNumber: '',
48308
- status: 0,
49065
+ status: context === null || context === void 0 ? void 0 : context.entryStatus,
49066
+ customStatusId: context === null || context === void 0 ? void 0 : context.customEntryStatusId,
48309
49067
  bookingDate: null,
48310
49068
  price: 0,
48311
49069
  depositAmount: 0,
48312
49070
  pax: pax,
48313
- lines: []
49071
+ rooms: rooms,
49072
+ lines: [],
49073
+ address: {}
48314
49074
  };
48315
49075
  };
48316
49076
  var handleShowMoreFlights = function (flyInType) {
@@ -48325,7 +49085,7 @@ var SearchResultsContainer = function () {
48325
49085
  'div',
48326
49086
  { className: 'search' },
48327
49087
  bookPackagingEntry
48328
- ? React__default.createElement(BookPackagingEntry, { activeSearchSeed: activeSearchSeed })
49088
+ ? React__default.createElement(BookPackagingEntry, { activeSearchSeed: activeSearchSeed, isConfirmationPage: isBookingConfirmation })
48329
49089
  : React__default.createElement(
48330
49090
  'div',
48331
49091
  { className: 'search__container' },
@@ -48510,8 +49270,8 @@ var SearchResultsContainer = function () {
48510
49270
  { className: 'search__results__label__date' },
48511
49271
  (function () {
48512
49272
  var firstResultDate = uniqueOutwardFlights.length > 0 ? uniqueOutwardFlights[0].outward.segments[0].departureDateTime : null;
48513
- var firstResultDay = firstResultDate ? format$1(firstResultDate, 'd') : null;
48514
- var firstResultMonth = firstResultDate ? format$1(firstResultDate, 'MMM') : null;
49273
+ var firstResultDay = firstResultDate ? format$2(firstResultDate, 'd') : null;
49274
+ var firstResultMonth = firstResultDate ? format$2(firstResultDate, 'MMM') : null;
48515
49275
  return React__default.createElement(
48516
49276
  React__default.Fragment,
48517
49277
  null,
@@ -48607,8 +49367,8 @@ var SearchResultsContainer = function () {
48607
49367
  { className: 'search__results__label__date' },
48608
49368
  (function () {
48609
49369
  var firstResultDate = uniqueReturnFlights.length > 0 ? uniqueReturnFlights[0].return.segments[0].departureDateTime : null;
48610
- var firstResultDay = firstResultDate ? format$1(firstResultDate, 'd') : null;
48611
- var firstResultMonth = firstResultDate ? format$1(firstResultDate, 'MMM') : null;
49370
+ var firstResultDay = firstResultDate ? format$2(firstResultDate, 'd') : null;
49371
+ var firstResultMonth = firstResultDate ? format$2(firstResultDate, 'MMM') : null;
48612
49372
  return React__default.createElement(
48613
49373
  React__default.Fragment,
48614
49374
  null,