@qite/tide-booking-component 1.4.110 → 1.4.112

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 (58) hide show
  1. package/build/build-cjs/index.js +2301 -1565
  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 +2198 -1463
  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 +201 -21
  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 +40 -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/{BookingPanel.tsx → booking-panel.tsx} +1 -1
  36. package/src/shared/booking/shared-confirmation.tsx +105 -0
  37. package/src/shared/booking/summary.tsx +380 -0
  38. package/src/shared/booking/travelers-form.tsx +868 -0
  39. package/src/shared/components/flyin/flyin.tsx +8 -9
  40. package/src/shared/components/flyin/packaging-flights-flyin.tsx +4 -4
  41. package/src/shared/utils/booking-summary.tsx +46 -0
  42. package/src/shared/utils/tide-api-utils.ts +2 -2
  43. package/styles/components/_booking.scss +33 -15
  44. package/styles/components/_cta.scss +2 -2
  45. package/styles/components/_dropdown.scss +5 -0
  46. package/styles/components/_flight-option.scss +1 -1
  47. package/styles/components/_flyin.scss +43 -0
  48. package/styles/components/_search.scss +5 -0
  49. package/styles/components/_step-indicators.scss +41 -15
  50. package/styles/components/_tree.scss +2 -2
  51. /package/build/build-cjs/src/shared/booking/{BookingPanel.d.ts → booking-panel.d.ts} +0 -0
  52. /package/build/build-cjs/src/shared/booking/{Sidebar.d.ts → shared-sidebar.d.ts} +0 -0
  53. /package/build/build-cjs/src/shared/booking/{StepIndicators.d.ts → step-indicators.d.ts} +0 -0
  54. /package/build/build-esm/src/shared/booking/{BookingPanel.d.ts → booking-panel.d.ts} +0 -0
  55. /package/build/build-esm/src/shared/booking/{Sidebar.d.ts → shared-sidebar.d.ts} +0 -0
  56. /package/build/build-esm/src/shared/booking/{StepIndicators.d.ts → step-indicators.d.ts} +0 -0
  57. /package/src/shared/booking/{Sidebar.tsx → shared-sidebar.tsx} +0 -0
  58. /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,
@@ -20840,7 +20855,7 @@ var BookingPanel = function (_a) {
20840
20855
  StepIndicatorsComponent = _a.StepIndicatorsComponent;
20841
20856
  return React__default.createElement(
20842
20857
  'div',
20843
- { className: 'booking__panel' },
20858
+ { className: 'booking__panel__wrapper' },
20844
20859
  React__default.createElement(StepIndicatorsComponent, { currentStep: currentStep, stepLabels: stepLabels }),
20845
20860
  React__default.createElement(
20846
20861
  'div',
@@ -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,220 @@ 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
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;
28019
+ console.log('editablePackagingEntry?.pax:', editablePackagingEntry === null || editablePackagingEntry === void 0 ? void 0 : editablePackagingEntry.pax);
28020
+ var pax =
28021
+ (_a = editablePackagingEntry === null || editablePackagingEntry === void 0 ? void 0 : editablePackagingEntry.pax) !== null && _a !== void 0 ? _a : [];
28022
+ var rooms = editablePackagingEntry.rooms.map(function (room) {
28023
+ var roomPax = pax.filter(function (x) {
28024
+ return room.paxIds.includes(x.id);
28025
+ });
28026
+ return {
28027
+ adults: roomPax.map(function (roomTraveler) {
28028
+ var _a, _b;
28029
+ return {
28030
+ id: roomTraveler.id,
28031
+ firstName: (_a = roomTraveler.firstName) !== null && _a !== void 0 ? _a : '',
28032
+ lastName: (_b = roomTraveler.lastName) !== null && _b !== void 0 ? _b : '',
28033
+ birthDate: roomTraveler.dateOfBirth ? format$2(new Date(roomTraveler.dateOfBirth), 'yyyy-MM-dd') : '',
28034
+ gender: ''
28035
+ };
28036
+ }),
28037
+ children: []
28038
+ };
28039
+ });
28040
+ var values = createInitialValuesFromRooms(
28041
+ rooms.map(function (room) {
28042
+ return { adults: room.adults, children: room.children };
28043
+ }),
28044
+ (_c =
28045
+ (_b = editablePackagingEntry === null || editablePackagingEntry === void 0 ? void 0 : editablePackagingEntry.lines) === null || _b === void 0
28001
28046
  ? 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
- }
28034
- })
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
- }
28047
+ : _b[0]) === null || _c === void 0
28048
+ ? void 0
28049
+ : _c.from,
28050
+ agentAdressId
28051
+ );
28052
+ values.rooms = rooms;
28053
+ values.mainBookerId =
28054
+ (_j =
28055
+ (_e =
28056
+ (_d = pax.find(function (x) {
28057
+ return x.isMainBooker;
28058
+ })) === null || _d === void 0
28059
+ ? void 0
28060
+ : _d.id) !== null && _e !== void 0
28061
+ ? _e
28062
+ : (_h = (_g = (_f = rooms[0]) === null || _f === void 0 ? void 0 : _f.adults) === null || _g === void 0 ? void 0 : _g[0]) === null || _h === void 0
28063
+ ? void 0
28064
+ : _h.id) !== null && _j !== void 0
28065
+ ? _j
28066
+ : -1;
28067
+ var address = editablePackagingEntry === null || editablePackagingEntry === void 0 ? void 0 : editablePackagingEntry.address;
28068
+ values.street = (_k = address === null || address === void 0 ? void 0 : address.street) !== null && _k !== void 0 ? _k : '';
28069
+ values.houseNumber = (_l = address === null || address === void 0 ? void 0 : address.houseNumber) !== null && _l !== void 0 ? _l : '';
28070
+ values.box = (_m = address === null || address === void 0 ? void 0 : address.box) !== null && _m !== void 0 ? _m : '';
28071
+ values.zipCode = (_o = address === null || address === void 0 ? void 0 : address.zipCode) !== null && _o !== void 0 ? _o : '';
28072
+ values.place = (_p = address === null || address === void 0 ? void 0 : address.place) !== null && _p !== void 0 ? _p : '';
28073
+ values.country = (_q = address === null || address === void 0 ? void 0 : address.country) !== null && _q !== void 0 ? _q : '';
28074
+ values.phone = (_r = address === null || address === void 0 ? void 0 : address.phone) !== null && _r !== void 0 ? _r : '';
28075
+ values.email = (_s = address === null || address === void 0 ? void 0 : address.email) !== null && _s !== void 0 ? _s : '';
28076
+ values.emailConfirmation = (_t = address === null || address === void 0 ? void 0 : address.email) !== null && _t !== void 0 ? _t : '';
28077
+ values.travelAgentId =
28078
+ (_v = (_u = address === null || address === void 0 ? void 0 : address.travelAgentId) !== null && _u !== void 0 ? _u : agentAdressId) !== null &&
28079
+ _v !== void 0
28080
+ ? _v
28081
+ : 0;
28082
+ return values;
28083
+ }
28084
+ function applyTravelersFormValuesToEditablePackagingEntry(editablePackagingEntry, values) {
28085
+ var _a;
28086
+ var travelers = values.rooms.flatMap(function (room) {
28087
+ return __spreadArray(__spreadArray([], room.adults, true), room.children, true);
28088
+ });
28089
+ console.log('Applying form values:', values);
28090
+ console.log('editablePackagingEntry:', editablePackagingEntry);
28091
+ return __assign(__assign({}, editablePackagingEntry), {
28092
+ pax: ((_a = editablePackagingEntry.pax) !== null && _a !== void 0 ? _a : []).map(function (pax) {
28093
+ var _a, _b;
28094
+ var traveler = travelers.find(function (x) {
28095
+ return x.id === pax.id;
28074
28096
  });
28075
- useEffect(function () {
28076
- dispatch(fetchPriceDetails());
28077
- }, []);
28078
- useEffect(
28097
+ if (!traveler) return pax;
28098
+ return __assign(__assign({}, pax), {
28099
+ firstName: (_a = traveler.firstName) !== null && _a !== void 0 ? _a : '',
28100
+ lastName: (_b = traveler.lastName) !== null && _b !== void 0 ? _b : '',
28101
+ dateOfBirth: traveler.birthDate || null,
28102
+ isMainBooker: traveler.id === values.mainBookerId
28103
+ });
28104
+ }),
28105
+ address: __assign(__assign({}, editablePackagingEntry.address), {
28106
+ street: values.street,
28107
+ houseNumber: values.houseNumber,
28108
+ box: values.box,
28109
+ zipCode: values.zipCode,
28110
+ place: values.place,
28111
+ country: values.country,
28112
+ travelAgentId: values.travelAgentId,
28113
+ phone: values.phone,
28114
+ email: values.email
28115
+ })
28116
+ });
28117
+ }
28118
+ var SharedTravelersForm = function (_a) {
28119
+ var _b, _c, _d, _e, _f, _g;
28120
+ var formik = _a.formik,
28121
+ translations = _a.translations,
28122
+ travellersSettings = _a.travellersSettings,
28123
+ countries = _a.countries,
28124
+ agents = _a.agents,
28125
+ bookingType = _a.bookingType,
28126
+ agentAdressId = _a.agentAdressId,
28127
+ _h = _a.travelersFirstStep,
28128
+ travelersFirstStep = _h === void 0 ? false : _h,
28129
+ _j = _a.isUnavailable,
28130
+ isUnavailable = _j === void 0 ? false : _j,
28131
+ _k = _a.useCompactForm,
28132
+ useCompactForm = _k === void 0 ? false : _k,
28133
+ _l = _a.showAllCountries,
28134
+ showAllCountries = _l === void 0 ? false : _l,
28135
+ _m = _a.showAgentSelection,
28136
+ showAgentSelection = _m === void 0 ? false : _m,
28137
+ _o = _a.initialShowAgents,
28138
+ initialShowAgents = _o === void 0 ? false : _o,
28139
+ renderPreviousButton = _a.renderPreviousButton,
28140
+ onBookingTypeChange = _a.onBookingTypeChange;
28141
+ var _p = useState(initialShowAgents),
28142
+ showAgents = _p[0],
28143
+ setShowAgents = _p[1];
28144
+ var typeaheadAgents = useMemo(
28079
28145
  function () {
28080
28146
  var _a;
28081
- if (
28082
- !((_a = bookingAttributes === null || bookingAttributes === void 0 ? void 0 : bookingAttributes.rooms) === null || _a === void 0
28147
+ return (_a = sortBy(
28148
+ agents === null || agents === void 0
28083
28149
  ? 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
- }
28150
+ : agents.map(function (agent) {
28151
+ return {
28152
+ key: ''.concat(agent.id),
28153
+ value: ''
28154
+ .concat(agent.name)
28155
+ .concat(agent.postalCode || agent.location ? ' ('.concat(compact([agent.postalCode, agent.location]).join(' '), ')') : ''),
28156
+ text: ''
28157
+ .concat(agent.name)
28158
+ .concat(agent.postalCode || agent.location ? ' ('.concat(compact([agent.postalCode, agent.location]).join(' '), ')') : '')
28159
+ };
28160
+ }),
28161
+ 'value'
28162
+ )) !== null && _a !== void 0
28163
+ ? _a
28164
+ : [];
28169
28165
  },
28170
- [agents, settings.affiliateSlug]
28166
+ [agents]
28171
28167
  );
28172
- var handleMainBookerChange = function (e) {
28173
- var id = parseInt(e.currentTarget.value);
28174
- formik.setFieldValue('mainBookerId', id);
28168
+ var _q = useState(typeaheadAgents),
28169
+ filteredAgents = _q[0],
28170
+ setFilteredAgents = _q[1];
28171
+ var flatErrors = flat(formik.errors);
28172
+ var errorKeys = Object.keys(flatErrors).filter(function (key) {
28173
+ return get(formik.touched, key);
28174
+ });
28175
+ var hasVisibleError = function (key) {
28176
+ return get(formik.errors, key) && get(formik.touched, key);
28175
28177
  };
28176
28178
  var mainBooker =
28177
- (_d = formik.values.rooms.find(function (r) {
28178
- return r.adults.find(function (traveler) {
28179
+ (_b = formik.values.rooms.find(function (room) {
28180
+ return room.adults.find(function (traveler) {
28179
28181
  return traveler.id === formik.values.mainBookerId;
28180
28182
  });
28181
- })) === null || _d === void 0
28183
+ })) === null || _b === void 0
28182
28184
  ? void 0
28183
- : _d.adults.find(function (traveler) {
28185
+ : _b.adults.find(function (traveler) {
28184
28186
  return traveler.id === formik.values.mainBookerId;
28185
28187
  });
28188
+ var countryOptions = __spreadArray(
28189
+ [{ key: 'empty', value: undefined, label: translations.TRAVELERS_FORM.SELECT_COUNTRY }],
28190
+ showAllCountries
28191
+ ? (_c =
28192
+ countries === null || countries === void 0
28193
+ ? void 0
28194
+ : countries.map(function (country) {
28195
+ return { key: country.iso2, value: country.iso2, label: country.name };
28196
+ })) !== null && _c !== void 0
28197
+ ? _c
28198
+ : []
28199
+ : (_e =
28200
+ (_d = travellersSettings === null || travellersSettings === void 0 ? void 0 : travellersSettings.countries) === null || _d === void 0
28201
+ ? void 0
28202
+ : _d.map(function (country) {
28203
+ return { key: country.iso2, value: country.iso2, label: country.name };
28204
+ })) !== null && _e !== void 0
28205
+ ? _e
28206
+ : [
28207
+ { key: 'be', value: 'be', label: translations.TRAVELERS_FORM.COUNTRIES.BELGIUM },
28208
+ { key: 'nl', value: 'nl', label: translations.TRAVELERS_FORM.COUNTRIES.NETHERLANDS },
28209
+ { key: 'fr', value: 'fr', label: translations.TRAVELERS_FORM.COUNTRIES.FRANCE }
28210
+ ],
28211
+ true
28212
+ );
28213
+ var handleMainBookerChange = function (event) {
28214
+ formik.setFieldValue('mainBookerId', parseInt(event.currentTarget.value, 10));
28215
+ };
28186
28216
  var handleAgentChange = function (value) {
28187
- var filteredAgents = typeaheadAgents.filter(function (x) {
28188
- return x.value.toLocaleLowerCase().indexOf(value.toLocaleLowerCase()) > -1;
28189
- });
28190
- setFilteredAgents(filteredAgents);
28217
+ setFilteredAgents(
28218
+ typeaheadAgents.filter(function (x) {
28219
+ return x.value.toLocaleLowerCase().indexOf(value.toLocaleLowerCase()) > -1;
28220
+ })
28221
+ );
28191
28222
  formik.setFieldValue('travelAgentName', value);
28192
28223
  };
28193
28224
  var handleAgentSelect = function (key) {
@@ -28201,48 +28232,36 @@ var TravelersForm = function () {
28201
28232
  travelAgentName: (_a = agent === null || agent === void 0 ? void 0 : agent.value) !== null && _a !== void 0 ? _a : ''
28202
28233
  })
28203
28234
  );
28204
- var bookingType = 'b2b2c';
28205
- if (agentAdressId && agentAdressId != 0) {
28206
- bookingType = 'b2b';
28207
- }
28208
- dispatch(setBookingType(bookingType));
28235
+ onBookingTypeChange === null || onBookingTypeChange === void 0 ? void 0 : onBookingTypeChange(agentAdressId && agentAdressId !== 0 ? 'b2b' : 'b2b2c');
28209
28236
  };
28210
28237
  var handleAgentClear = function () {
28211
28238
  formik.setValues(__assign(__assign({}, formik.values), { travelAgentId: 0, travelAgentName: '' }));
28212
- dispatch(setBookingType('b2c'));
28239
+ onBookingTypeChange === null || onBookingTypeChange === void 0 ? void 0 : onBookingTypeChange('b2c');
28240
+ };
28241
+ var toggleAgent = function (value) {
28242
+ setShowAgents(value);
28243
+ if (!value) {
28244
+ handleAgentClear();
28245
+ setFilteredAgents([]);
28246
+ }
28213
28247
  };
28214
28248
  var handleAddTraveler = function (roomIndex) {
28215
28249
  var rooms = __spreadArray([], formik.values.rooms, true);
28216
- var newAdult = {
28217
- id: Date.now(),
28218
- firstName: '',
28219
- lastName: '',
28220
- birthDate: '',
28221
- gender: ''
28222
- };
28250
+ var newAdult = { id: Date.now(), firstName: '', lastName: '', birthDate: '', gender: '' };
28223
28251
  rooms[roomIndex] = __assign(__assign({}, rooms[roomIndex]), { adults: __spreadArray(__spreadArray([], rooms[roomIndex].adults, true), [newAdult], false) });
28224
28252
  formik.setFieldValue('rooms', rooms);
28225
28253
  };
28226
28254
  var handleRemoveTraveler = function (roomIndex, travelerIndex) {
28227
28255
  var rooms = __spreadArray([], formik.values.rooms, true);
28228
28256
  var adults = __spreadArray([], rooms[roomIndex].adults, true);
28229
- if (adults.length <= 1) {
28230
- return;
28231
- }
28257
+ if (adults.length <= 1) return;
28232
28258
  adults.splice(travelerIndex, 1);
28233
28259
  rooms[roomIndex] = __assign(__assign({}, rooms[roomIndex]), { adults: adults });
28234
28260
  formik.setFieldValue('rooms', rooms);
28235
28261
  };
28236
28262
  var handleAddRoom = function () {
28237
28263
  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: [] });
28264
+ rooms.push({ adults: [{ id: Date.now(), firstName: '', lastName: '', birthDate: '', gender: '' }], children: [] });
28246
28265
  formik.setFieldValue('rooms', rooms);
28247
28266
  };
28248
28267
  var handleRemoveRoom = function (roomIndex) {
@@ -28250,30 +28269,48 @@ var TravelersForm = function () {
28250
28269
  rooms.splice(roomIndex, 1);
28251
28270
  formik.setFieldValue('rooms', rooms);
28252
28271
  };
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);
28272
+ var renderGenderControl = function (name, value) {
28273
+ return React__default.createElement(
28274
+ 'div',
28275
+ { className: buildClassName(['form__group', hasVisibleError(name) && 'form__group--error']) },
28276
+ React__default.createElement('label', { className: 'form__label' }, translations.TRAVELERS_FORM.GENDER_ID, ' *'),
28277
+ React__default.createElement(
28278
+ 'div',
28279
+ { className: 'radiobutton-group' },
28280
+ [
28281
+ ['m', translations.TRAVELERS_FORM.MALE_GENDER],
28282
+ ['f', translations.TRAVELERS_FORM.FEMALE_GENDER]
28283
+ ].map(function (_a) {
28284
+ var gender = _a[0],
28285
+ label = _a[1];
28286
+ return React__default.createElement(
28287
+ 'div',
28288
+ { className: 'radiobutton', key: gender },
28289
+ React__default.createElement(
28290
+ 'label',
28291
+ { className: 'radiobutton__label' },
28292
+ React__default.createElement('input', {
28293
+ type: 'radio',
28294
+ className: 'radiobutton__input',
28295
+ name: name,
28296
+ onChange: formik.handleChange,
28297
+ onBlur: formik.handleBlur,
28298
+ value: gender,
28299
+ checked: value.gender === gender
28300
+ }),
28301
+ label
28302
+ )
28303
+ );
28304
+ })
28305
+ )
28306
+ );
28269
28307
  };
28270
28308
  var getControl = function (type, value, name) {
28271
- var _a, _b, _c, _d, _e, _f;
28309
+ var _a;
28272
28310
  switch (type) {
28273
- case 'gender': {
28311
+ case 'gender':
28274
28312
  return React__default.createElement(GenderControl, { translations: translations, value: value, formik: formik, name: name });
28275
- }
28276
- case 'firstName': {
28313
+ case 'firstName':
28277
28314
  return React__default.createElement(LabeledInput, {
28278
28315
  hasError: hasVisibleError(name),
28279
28316
  extraClassName: 'form__group--md-33',
@@ -28284,8 +28321,7 @@ var TravelersForm = function () {
28284
28321
  onBlur: formik.handleBlur,
28285
28322
  value: value.firstName
28286
28323
  });
28287
- }
28288
- case 'lastName': {
28324
+ case 'lastName':
28289
28325
  return React__default.createElement(LabeledInput, {
28290
28326
  hasError: hasVisibleError(name),
28291
28327
  extraClassName: 'form__group--md-33',
@@ -28296,8 +28332,7 @@ var TravelersForm = function () {
28296
28332
  onBlur: formik.handleBlur,
28297
28333
  value: value.lastName
28298
28334
  });
28299
- }
28300
- case 'birthDate': {
28335
+ case 'birthDate':
28301
28336
  return React__default.createElement(LabeledInput, {
28302
28337
  type: 'date',
28303
28338
  hasError: hasVisibleError(name),
@@ -28309,8 +28344,7 @@ var TravelersForm = function () {
28309
28344
  onBlur: formik.handleBlur,
28310
28345
  value: value.birthDate
28311
28346
  });
28312
- }
28313
- case 'country': {
28347
+ case 'country':
28314
28348
  return React__default.createElement(LabeledSelect, {
28315
28349
  hasError: hasVisibleError('country'),
28316
28350
  label: translations.TRAVELERS_FORM.COUNTRY,
@@ -28319,46 +28353,12 @@ var TravelersForm = function () {
28319
28353
  onChange: formik.handleChange,
28320
28354
  onBlur: formik.handleBlur,
28321
28355
  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
- )
28356
+ options: countryOptions
28357
28357
  });
28358
- }
28359
- case 'phone': {
28358
+ case 'phone':
28360
28359
  return React__default.createElement(PhoneInput, {
28361
- countries: (_f = (_e = settings.travellers) === null || _e === void 0 ? void 0 : _e.countries) !== null && _f !== void 0 ? _f : [],
28360
+ countries:
28361
+ (_a = travellersSettings === null || travellersSettings === void 0 ? void 0 : travellersSettings.countries) !== null && _a !== void 0 ? _a : [],
28362
28362
  countryIso2: formik.values.country,
28363
28363
  hasError: hasVisibleError('phone'),
28364
28364
  label: translations.TRAVELERS_FORM.PHONE,
@@ -28368,8 +28368,7 @@ var TravelersForm = function () {
28368
28368
  onBlur: formik.handleBlur,
28369
28369
  value: formik.values.phone
28370
28370
  });
28371
- }
28372
- case 'email': {
28371
+ case 'email':
28373
28372
  return React__default.createElement(
28374
28373
  React__default.Fragment,
28375
28374
  null,
@@ -28396,8 +28395,165 @@ var TravelersForm = function () {
28396
28395
  value: formik.values.emailConfirmation
28397
28396
  })
28398
28397
  );
28399
- }
28398
+ case 'street':
28399
+ return React__default.createElement(LabeledInput, {
28400
+ hasError: hasVisibleError('street'),
28401
+ extraClassName: 'form__group--50 form__group--sm-60',
28402
+ label: translations.TRAVELERS_FORM.STREET,
28403
+ required: true,
28404
+ name: 'street',
28405
+ onChange: formik.handleChange,
28406
+ onBlur: formik.handleBlur,
28407
+ value: formik.values.street
28408
+ });
28409
+ case 'houseNumber':
28410
+ return React__default.createElement(LabeledInput, {
28411
+ hasError: hasVisibleError('houseNumber'),
28412
+ extraClassName: 'form__group--30 form__group--sm-20',
28413
+ label: translations.TRAVELERS_FORM.HOUSE_NUMBER,
28414
+ required: true,
28415
+ name: 'houseNumber',
28416
+ onChange: formik.handleChange,
28417
+ onBlur: formik.handleBlur,
28418
+ value: formik.values.houseNumber
28419
+ });
28420
+ case 'box':
28421
+ return React__default.createElement(LabeledInput, {
28422
+ hasError: hasVisibleError('box'),
28423
+ extraClassName: 'form__group--20',
28424
+ label: translations.TRAVELERS_FORM.POST_BOX,
28425
+ name: 'box',
28426
+ onChange: formik.handleChange,
28427
+ onBlur: formik.handleBlur,
28428
+ value: formik.values.box
28429
+ });
28430
+ case 'zipCode':
28431
+ return React__default.createElement(LabeledInput, {
28432
+ hasError: hasVisibleError('zipCode'),
28433
+ extraClassName: 'form__group--40 form__group--sm-20',
28434
+ label: translations.TRAVELERS_FORM.ZIPCODE,
28435
+ required: true,
28436
+ name: 'zipCode',
28437
+ onChange: formik.handleChange,
28438
+ onBlur: formik.handleBlur,
28439
+ value: formik.values.zipCode
28440
+ });
28441
+ case 'place':
28442
+ return React__default.createElement(LabeledInput, {
28443
+ hasError: hasVisibleError('place'),
28444
+ extraClassName: 'form__group--60 form__group--sm-40',
28445
+ label: translations.TRAVELERS_FORM.CITY,
28446
+ required: true,
28447
+ name: 'place',
28448
+ onChange: formik.handleChange,
28449
+ onBlur: formik.handleBlur,
28450
+ value: formik.values.place
28451
+ });
28452
+ default:
28453
+ return null;
28454
+ }
28455
+ };
28456
+ var renderRoomLabel = function (room) {
28457
+ var _a, _b;
28458
+ return compact([
28459
+ room.adults.length,
28460
+ room.adults.length === 1 && ' '.concat(translations.TRAVELERS_FORM.ADULT),
28461
+ room.adults.length > 1 && ' '.concat(translations.TRAVELERS_FORM.ADULTS),
28462
+ ((_a = room.adults) === null || _a === void 0 ? void 0 : _a.length) && ((_b = room.children) === null || _b === void 0 ? void 0 : _b.length) && ', ',
28463
+ room.children.length,
28464
+ room.children.length === 1 && ' '.concat(translations.TRAVELERS_FORM.CHILD),
28465
+ room.children.length > 1 && ' '.concat(translations.TRAVELERS_FORM.CHILDREN)
28466
+ ]).join('');
28467
+ };
28468
+ var renderTravelerFields = function (travelerValues, namePrefix, isAdult, roomIndex, travelerIndex) {
28469
+ var _a;
28470
+ if (useCompactForm) {
28471
+ return React__default.createElement(
28472
+ 'div',
28473
+ { className: 'form__row' },
28474
+ React__default.createElement(LabeledInput, {
28475
+ hasError: hasVisibleError(''.concat(namePrefix, '.age')),
28476
+ extraClassName: 'form__group--md-33',
28477
+ label: translations.TRAVELERS_FORM.AGE,
28478
+ required: true,
28479
+ name: ''.concat(namePrefix, '.age'),
28480
+ onChange: formik.handleChange,
28481
+ onBlur: formik.handleBlur,
28482
+ value: travelerValues.age
28483
+ })
28484
+ );
28400
28485
  }
28486
+ if (
28487
+ (_a = travellersSettings === null || travellersSettings === void 0 ? void 0 : travellersSettings.formFields) === null || _a === void 0
28488
+ ? void 0
28489
+ : _a.length
28490
+ ) {
28491
+ return React__default.createElement(
28492
+ 'div',
28493
+ { className: 'travelers-form__grid' },
28494
+ travellersSettings.formFields.map(function (field, index) {
28495
+ return React__default.createElement(
28496
+ 'div',
28497
+ { key: index, className: 'control control--'.concat(field.type) },
28498
+ getControl(field.type, travelerValues, ''.concat(namePrefix, '.').concat(field.type))
28499
+ );
28500
+ })
28501
+ );
28502
+ }
28503
+ return React__default.createElement(
28504
+ React__default.Fragment,
28505
+ null,
28506
+ React__default.createElement('div', { className: 'form__row' }, renderGenderControl(''.concat(namePrefix, '.gender'), travelerValues)),
28507
+ React__default.createElement(
28508
+ 'div',
28509
+ { className: 'form__row' },
28510
+ React__default.createElement(LabeledInput, {
28511
+ hasError: hasVisibleError(''.concat(namePrefix, '.firstName')),
28512
+ extraClassName: 'form__group--md-33',
28513
+ label: translations.TRAVELERS_FORM.FIRST_NAME,
28514
+ required: true,
28515
+ name: ''.concat(namePrefix, '.firstName'),
28516
+ onChange: formik.handleChange,
28517
+ onBlur: formik.handleBlur,
28518
+ value: travelerValues.firstName
28519
+ }),
28520
+ React__default.createElement(LabeledInput, {
28521
+ hasError: hasVisibleError(''.concat(namePrefix, '.lastName')),
28522
+ extraClassName: 'form__group--md-33',
28523
+ label: translations.TRAVELERS_FORM.LAST_NAME,
28524
+ required: true,
28525
+ name: ''.concat(namePrefix, '.lastName'),
28526
+ onChange: formik.handleChange,
28527
+ onBlur: formik.handleBlur,
28528
+ value: travelerValues.lastName
28529
+ }),
28530
+ React__default.createElement(LabeledInput, {
28531
+ type: 'date',
28532
+ hasError: hasVisibleError(''.concat(namePrefix, '.birthDate')),
28533
+ extraClassName: 'form__group--md-33',
28534
+ label: translations.TRAVELERS_FORM.BIRTHDATE,
28535
+ required: true,
28536
+ name: ''.concat(namePrefix, '.birthDate'),
28537
+ onChange: formik.handleChange,
28538
+ onBlur: formik.handleBlur,
28539
+ value: travelerValues.birthDate
28540
+ })
28541
+ ),
28542
+ travelersFirstStep &&
28543
+ isAdult &&
28544
+ formik.values.rooms[roomIndex].adults.length > 1 &&
28545
+ React__default.createElement(
28546
+ 'button',
28547
+ {
28548
+ type: 'button',
28549
+ className: 'cta cta--secondary',
28550
+ onClick: function () {
28551
+ return handleRemoveTraveler(roomIndex, travelerIndex);
28552
+ }
28553
+ },
28554
+ translations.TRAVELERS_FORM.REMOVE_TRAVELER
28555
+ )
28556
+ );
28401
28557
  };
28402
28558
  return React__default.createElement(
28403
28559
  'form',
@@ -28409,670 +28565,231 @@ var TravelersForm = function () {
28409
28565
  onSubmit: formik.handleSubmit,
28410
28566
  onReset: formik.handleReset
28411
28567
  },
28412
- useCompactForm
28413
- ? React__default.createElement(
28568
+ React__default.createElement(
28569
+ 'div',
28570
+ { className: 'form__travelers__wrapper' },
28571
+ formik.values.rooms.map(function (room, roomIndex) {
28572
+ return React__default.createElement(
28414
28573
  'div',
28415
- { className: 'form__travelers__wrapper' },
28416
- formik.values.rooms.map(function (room, rIndex) {
28574
+ { key: roomIndex },
28575
+ formik.values.rooms.length > 1 &&
28576
+ React__default.createElement(
28577
+ 'div',
28578
+ { className: 'form__region' },
28579
+ React__default.createElement(
28580
+ 'div',
28581
+ { className: 'form__region-header' },
28582
+ React__default.createElement('h5', { className: 'form__region-heading' }, translations.SHARED.ROOM, ' ', roomIndex + 1),
28583
+ React__default.createElement('p', { className: 'form__region-label' }, renderRoomLabel(room))
28584
+ ),
28585
+ !useCompactForm &&
28586
+ travelersFirstStep &&
28587
+ formik.values.rooms.length > 1 &&
28588
+ React__default.createElement(
28589
+ 'button',
28590
+ {
28591
+ type: 'button',
28592
+ className: 'cta cta--secondary',
28593
+ onClick: function () {
28594
+ return handleRemoveRoom(roomIndex);
28595
+ }
28596
+ },
28597
+ 'Verwijder reisgezelschap'
28598
+ )
28599
+ ),
28600
+ room.adults.map(function (travelerValues, index) {
28417
28601
  return React__default.createElement(
28418
28602
  'div',
28419
- { key: rIndex },
28420
- formik.values.rooms.length > 1 &&
28603
+ { className: 'form__region', key: travelerValues.id },
28604
+ React__default.createElement(
28605
+ 'div',
28606
+ { className: 'form__region-header' },
28607
+ React__default.createElement('h5', { className: 'form__region-heading' }, translations.TRAVELERS_FORM.TRAVELER, ' ', index + 1),
28608
+ React__default.createElement('p', { className: 'form__region-label' }, translations.TRAVELERS_FORM.ADULT),
28421
28609
  React__default.createElement(
28422
28610
  '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
- ),
28611
+ { className: 'radiobutton' },
28503
28612
  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,
28613
+ 'label',
28614
+ { className: 'radiobutton__label' },
28615
+ React__default.createElement('input', {
28616
+ type: 'radio',
28617
+ name: 'mainBookerId',
28618
+ onChange: handleMainBookerChange,
28513
28619
  onBlur: formik.handleBlur,
28514
- value: travelerValues.age
28515
- })
28620
+ value: travelerValues.id,
28621
+ checked: formik.values.mainBookerId === travelerValues.id,
28622
+ className: 'radiobutton__input'
28623
+ }),
28624
+ translations.TRAVELERS_FORM.MAIN_BOOKER
28516
28625
  )
28517
- );
28518
- })
28626
+ )
28627
+ ),
28628
+ renderTravelerFields(travelerValues, 'rooms['.concat(roomIndex, '].adults[').concat(index, ']'), true, roomIndex, index)
28519
28629
  );
28520
- })
28521
- )
28522
- : React__default.createElement(
28523
- React__default.Fragment,
28524
- null,
28525
- React__default.createElement(
28630
+ }),
28631
+ room.children.map(function (travelerValues, index) {
28632
+ return React__default.createElement(
28633
+ 'div',
28634
+ { className: 'form__region', key: travelerValues.id },
28635
+ React__default.createElement(
28636
+ 'div',
28637
+ { className: 'form__region-header' },
28638
+ React__default.createElement(
28639
+ 'h5',
28640
+ { className: 'form__region-heading' },
28641
+ translations.TRAVELERS_FORM.TRAVELER,
28642
+ ' ',
28643
+ room.adults.length + index + 1
28644
+ ),
28645
+ React__default.createElement('p', { className: 'form__region-label' }, translations.TRAVELERS_FORM.CHILD)
28646
+ ),
28647
+ renderTravelerFields(travelerValues, 'rooms['.concat(roomIndex, '].children[').concat(index, ']'), false, roomIndex, index)
28648
+ );
28649
+ }),
28650
+ !useCompactForm &&
28651
+ travelersFirstStep &&
28652
+ React__default.createElement(
28653
+ 'div',
28654
+ { className: 'form__region' },
28655
+ React__default.createElement(
28656
+ 'button',
28657
+ {
28658
+ type: 'button',
28659
+ className: 'cta cta--select',
28660
+ onClick: function () {
28661
+ return handleAddTraveler(roomIndex);
28662
+ }
28663
+ },
28664
+ translations.TRAVELERS_FORM.ADD_TRAVELER
28665
+ )
28666
+ )
28667
+ );
28668
+ }),
28669
+ !useCompactForm &&
28670
+ (bookingType !== 'b2b' ||
28671
+ ((_f = travellersSettings === null || travellersSettings === void 0 ? void 0 : travellersSettings.mainBookerFormFields) === null || _f === void 0
28672
+ ? void 0
28673
+ : _f.length))
28674
+ ? React__default.createElement(
28526
28675
  '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 &&
28676
+ { className: 'form__region' },
28677
+ React__default.createElement(
28678
+ 'div',
28679
+ { className: 'form__region-header' },
28680
+ React__default.createElement('h5', { className: 'form__region-heading' }, translations.TRAVELERS_FORM.MAIN_BOOKER),
28681
+ React__default.createElement(
28682
+ 'p',
28683
+ { className: 'form__region-label' },
28684
+ compact([
28685
+ compact([
28686
+ mainBooker === null || mainBooker === void 0 ? void 0 : mainBooker.firstName,
28687
+ mainBooker === null || mainBooker === void 0 ? void 0 : mainBooker.lastName
28688
+ ]).join(' '),
28689
+ (mainBooker === null || mainBooker === void 0 ? void 0 : mainBooker.birthDate) &&
28690
+ format$2(parse(mainBooker.birthDate, 'yyyy-MM-dd', new Date()), 'dd-MM-yyyy')
28691
+ ]).join(', ')
28692
+ )
28693
+ ),
28694
+ (
28695
+ (_g = travellersSettings === null || travellersSettings === void 0 ? void 0 : travellersSettings.mainBookerFormFields) === null || _g === void 0
28696
+ ? void 0
28697
+ : _g.length
28698
+ )
28699
+ ? React__default.createElement(
28700
+ 'div',
28701
+ { className: 'main-booker-form__grid' },
28702
+ travellersSettings.mainBookerFormFields.map(function (field, index) {
28703
+ return React__default.createElement(
28704
+ 'div',
28705
+ { key: index, className: 'control control--'.concat(field.type) },
28706
+ getControl(field.type, {}, field.type)
28707
+ );
28708
+ })
28709
+ )
28710
+ : React__default.createElement(
28711
+ React__default.Fragment,
28712
+ null,
28533
28713
  React__default.createElement(
28534
28714
  'div',
28535
- { className: 'form__region' },
28715
+ { className: 'form__twocolumn' },
28536
28716
  React__default.createElement(
28537
28717
  'div',
28538
- { className: 'form__region-header' },
28539
- React__default.createElement('h5', { className: 'form__region-heading' }, translations.SHARED.ROOM, ' ', rIndex + 1),
28718
+ { className: 'form__twocolumn-column' },
28540
28719
  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('')
28720
+ 'div',
28721
+ { className: 'form__row' },
28722
+ React__default.createElement(LabeledInput, {
28723
+ hasError: hasVisibleError('street'),
28724
+ extraClassName: 'form__group--50 form__group--sm-60',
28725
+ label: translations.TRAVELERS_FORM.STREET,
28726
+ required: true,
28727
+ name: 'street',
28728
+ onChange: formik.handleChange,
28729
+ onBlur: formik.handleBlur,
28730
+ value: formik.values.street
28731
+ }),
28732
+ React__default.createElement(LabeledInput, {
28733
+ hasError: hasVisibleError('houseNumber'),
28734
+ extraClassName: 'form__group--30 form__group--sm-20',
28735
+ label: translations.TRAVELERS_FORM.HOUSE_NUMBER,
28736
+ required: true,
28737
+ name: 'houseNumber',
28738
+ onChange: formik.handleChange,
28739
+ onBlur: formik.handleBlur,
28740
+ value: formik.values.houseNumber
28741
+ }),
28742
+ React__default.createElement(LabeledInput, {
28743
+ hasError: hasVisibleError('box'),
28744
+ extraClassName: 'form__group--20',
28745
+ label: translations.TRAVELERS_FORM.POST_BOX,
28746
+ name: 'box',
28747
+ onChange: formik.handleChange,
28748
+ onBlur: formik.handleBlur,
28749
+ value: formik.values.box
28750
+ })
28552
28751
  )
28553
28752
  ),
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
28753
  React__default.createElement(
28574
28754
  '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),
28755
+ { className: 'form__twocolumn-column' },
28578
28756
  React__default.createElement(
28579
28757
  '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
- )
28758
+ { className: 'form__row' },
28759
+ React__default.createElement(LabeledInput, {
28760
+ hasError: hasVisibleError('zipCode'),
28761
+ extraClassName: 'form__group--40 form__group--sm-20',
28762
+ label: translations.TRAVELERS_FORM.ZIPCODE,
28763
+ required: true,
28764
+ name: 'zipCode',
28765
+ onChange: formik.handleChange,
28766
+ onBlur: formik.handleBlur,
28767
+ value: formik.values.zipCode
28768
+ }),
28769
+ React__default.createElement(LabeledInput, {
28770
+ hasError: hasVisibleError('place'),
28771
+ extraClassName: 'form__group--60 form__group--sm-40',
28772
+ label: translations.TRAVELERS_FORM.CITY,
28773
+ required: true,
28774
+ name: 'place',
28775
+ onChange: formik.handleChange,
28776
+ onBlur: formik.handleBlur,
28777
+ value: formik.values.place
28778
+ }),
28779
+ React__default.createElement(LabeledSelect, {
28780
+ hasError: hasVisibleError('country'),
28781
+ extraClassName: 'form__group--sm-40',
28782
+ label: translations.TRAVELERS_FORM.COUNTRY,
28783
+ required: true,
28784
+ name: 'country',
28785
+ onChange: formik.handleChange,
28786
+ onBlur: formik.handleBlur,
28787
+ value: formik.values.country,
28788
+ options: countryOptions
28789
+ })
28595
28790
  )
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
28791
  )
28888
28792
  ),
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
28793
  React__default.createElement(
29077
28794
  'div',
29078
28795
  { className: 'form__row' },
@@ -29085,78 +28802,122 @@ var TravelersForm = function () {
29085
28802
  onChange: formik.handleChange,
29086
28803
  onBlur: formik.handleBlur,
29087
28804
  value: formik.values.phone
28805
+ }),
28806
+ React__default.createElement(LabeledInput, {
28807
+ type: 'email',
28808
+ hasError: hasVisibleError('email'),
28809
+ extraClassName: 'form__group--md-33',
28810
+ label: translations.TRAVELERS_FORM.EMAIL,
28811
+ required: true,
28812
+ name: 'email',
28813
+ onChange: formik.handleChange,
28814
+ onBlur: formik.handleBlur,
28815
+ value: formik.values.email
28816
+ }),
28817
+ React__default.createElement(LabeledInput, {
28818
+ type: 'email',
28819
+ hasError: hasVisibleError('emailConfirmation'),
28820
+ extraClassName: 'form__group--md-33',
28821
+ label: translations.TRAVELERS_FORM.REPEAT_EMAIL,
28822
+ required: true,
28823
+ name: 'emailConfirmation',
28824
+ onChange: formik.handleChange,
28825
+ onBlur: formik.handleBlur,
28826
+ value: formik.values.emailConfirmation
29088
28827
  })
29089
28828
  )
29090
- ),
29091
- showAgentSelection &&
28829
+ )
28830
+ )
28831
+ : !useCompactForm
28832
+ ? React__default.createElement(
28833
+ 'div',
28834
+ { className: 'form__region' },
28835
+ React__default.createElement(
28836
+ 'div',
28837
+ { className: 'form__row' },
28838
+ React__default.createElement(LabeledInput, {
28839
+ hasError: hasVisibleError('phone'),
28840
+ extraClassName: 'form__group--md-33',
28841
+ label: translations.TRAVELERS_FORM.PHONE,
28842
+ required: true,
28843
+ name: 'phone',
28844
+ onChange: formik.handleChange,
28845
+ onBlur: formik.handleBlur,
28846
+ value: formik.values.phone
28847
+ })
28848
+ )
28849
+ )
28850
+ : null,
28851
+ !useCompactForm &&
28852
+ showAgentSelection &&
28853
+ React__default.createElement(
28854
+ 'div',
28855
+ { className: 'form__region' },
28856
+ React__default.createElement(
28857
+ 'div',
28858
+ { className: 'form__region-header' },
28859
+ React__default.createElement('h5', { className: 'form__region-heading' }, translations.TRAVELERS_FORM.BOOK_WITH_AGENT),
28860
+ React__default.createElement(
28861
+ 'div',
28862
+ { className: 'checkbox', id: 'cbxChooseOffice' },
29092
28863
  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
- )
28864
+ 'label',
28865
+ { className: 'checkbox__label' },
28866
+ React__default.createElement('input', {
28867
+ type: 'checkbox',
28868
+ name: 'booking--mainbooker',
28869
+ checked: showAgents,
28870
+ onChange: function () {
28871
+ return toggleAgent(!showAgents);
28872
+ },
28873
+ className: 'checkbox__input'
28874
+ }),
28875
+ translations.TRAVELERS_FORM.CHOOSE_OFFICE
29136
28876
  )
28877
+ )
29137
28878
  ),
29138
- errorKeys.length > 0 &&
28879
+ showAgents &&
29139
28880
  React__default.createElement(
29140
28881
  'div',
29141
- { className: 'form__region form__region--errors' },
28882
+ { className: 'form__row form__row--choose-office' },
29142
28883
  React__default.createElement(
29143
28884
  '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
- )
28885
+ { className: buildClassName(['form__group', 'form__group--icon', hasVisibleError('travelAgentId') && 'form__group--error']) },
28886
+ React__default.createElement(TypeAheadInput, {
28887
+ value: formik.values.travelAgentName,
28888
+ options: filteredAgents,
28889
+ onChange: handleAgentChange,
28890
+ onSelect: handleAgentSelect,
28891
+ onClear: handleAgentClear,
28892
+ name: 'travelAgentName',
28893
+ placeholder: translations.TRAVELERS_FORM.CHOOSE_AGENT_PLACEHOLDER
28894
+ })
29157
28895
  )
29158
28896
  )
29159
- ),
28897
+ )
28898
+ ),
28899
+ !useCompactForm &&
28900
+ errorKeys.length > 0 &&
28901
+ React__default.createElement(
28902
+ 'div',
28903
+ { className: 'form__region form__region--errors' },
28904
+ React__default.createElement(
28905
+ 'div',
28906
+ { className: 'form__row' },
28907
+ React__default.createElement(
28908
+ 'div',
28909
+ { className: 'form__group' },
28910
+ React__default.createElement('p', { className: 'form__error-heading' }, translations.TRAVELERS_FORM.VALIDATION_MESSAGE, ':'),
28911
+ React__default.createElement(
28912
+ 'ul',
28913
+ { className: 'list' },
28914
+ errorKeys.map(function (key) {
28915
+ return React__default.createElement('li', { key: key }, get(flatErrors, key));
28916
+ })
28917
+ )
28918
+ )
28919
+ )
28920
+ ),
29160
28921
  travelersFirstStep &&
29161
28922
  React__default.createElement(
29162
28923
  'div',
@@ -29166,14 +28927,204 @@ var TravelersForm = function () {
29166
28927
  React__default.createElement(
29167
28928
  'div',
29168
28929
  { className: 'booking__navigator' },
29169
- !travelersFirstStep && settings.skipRouter
28930
+ renderPreviousButton === null || renderPreviousButton === void 0 ? void 0 : renderPreviousButton(),
28931
+ React__default.createElement(
28932
+ 'button',
28933
+ { type: 'submit', title: translations.STEPS.NEXT, className: 'cta' + (isUnavailable ? ' cta--disabled' : '') },
28934
+ translations.STEPS.NEXT
28935
+ )
28936
+ )
28937
+ );
28938
+ };
28939
+
28940
+ var TravelersForm = function () {
28941
+ var _a, _b;
28942
+ var dispatch = useAppDispatch();
28943
+ var settings = useContext(SettingsContext);
28944
+ var navigate = settings.skipRouter ? function () {} : useNavigate();
28945
+ var bookingQueryString = useSelector(selectBookingQueryString);
28946
+ var startDate = useSelector(selectStartDate);
28947
+ var formRooms = useSelector(selectFormRooms);
28948
+ var bookingType = useSelector(selectBookingType);
28949
+ var agents = useSelector(selectAgents);
28950
+ var agentAdressId = useSelector(selectAgentAdressId);
28951
+ var translations = useSelector(selectTranslations);
28952
+ var travelersFirstStep = useSelector(selectTravelersFirstStep);
28953
+ var isUnavailable = useSelector(selectIsUnavailable);
28954
+ var bookingAttributes = useSelector(selectBookingAttributes);
28955
+ var isFetching = useSelector(selectIsFetching);
28956
+ var hasMounted = useSelector(selectHasMounted);
28957
+ var countries = useSelector(selectCountries);
28958
+ var useCompactForm = !!settings.travellers.compactForm && !!settings.agentAdressId;
28959
+ var showAllCountries = !!settings.travellers.showAllCountries;
28960
+ var initialValues =
28961
+ (_a = useSelector(selectTravelersFormValues)) !== null && _a !== void 0
28962
+ ? _a
28963
+ : createInitialValuesFromRooms(formRooms, startDate, agentAdressId, translations.TRAVELERS_FORM.PERSON, useCompactForm);
28964
+ var _c = useState(!settings.agentAdressId && !settings.hideAgentSelection),
28965
+ showAgentSelection = _c[0],
28966
+ setShowAgentSelection = _c[1];
28967
+ var formik = useFormik({
28968
+ initialValues: initialValues,
28969
+ validate: useCompactForm
28970
+ ? function () {}
28971
+ : function (values) {
28972
+ return validateForm(
28973
+ values,
28974
+ settings.agentRequired,
28975
+ bookingType,
28976
+ translations,
28977
+ settings.travellers.formFields,
28978
+ settings.travellers.mainBookerFormFields
28979
+ );
28980
+ },
28981
+ onSubmit: function (values) {
28982
+ dispatch(setFormValues(values));
28983
+ if (useCompactForm) {
28984
+ dispatch(fetchPriceDetails());
28985
+ if (settings.skipRouter) dispatch(setCurrentStep$1(SUMMARY_STEP));
28986
+ else
28987
+ navigate(
28988
+ ''
28989
+ .concat(!settings.skipBasePathInRouting ? settings.basePath : '')
28990
+ .concat(settings.summary.pathSuffix, '?')
28991
+ .concat(bookingQueryString)
28992
+ );
28993
+ return;
28994
+ }
28995
+ dispatch(fetchPackage());
28996
+ if (settings.skipRouter) dispatch(setCurrentStep$1(travelersFirstStep ? FLIGHT_OPTIONS_FORM_STEP : SUMMARY_STEP));
28997
+ else
28998
+ navigate(
28999
+ ''
29000
+ .concat(!settings.skipBasePathInRouting ? settings.basePath : '')
29001
+ .concat(travelersFirstStep ? settings.flightOptions.pathSuffix : settings.summary.pathSuffix, '?')
29002
+ .concat(bookingQueryString)
29003
+ );
29004
+ }
29005
+ });
29006
+ useEffect(
29007
+ function () {
29008
+ dispatch(fetchPriceDetails());
29009
+ },
29010
+ [dispatch]
29011
+ );
29012
+ useEffect(
29013
+ function () {
29014
+ var _a;
29015
+ if (
29016
+ !((_a = bookingAttributes === null || bookingAttributes === void 0 ? void 0 : bookingAttributes.rooms) === null || _a === void 0
29017
+ ? void 0
29018
+ : _a.length) ||
29019
+ isFetching
29020
+ )
29021
+ return;
29022
+ if (!hasMounted) {
29023
+ dispatch(setHasMounted(true));
29024
+ return;
29025
+ }
29026
+ var fetchAll = function () {
29027
+ return __awaiter(void 0, void 0, void 0, function () {
29028
+ return __generator(this, function (_a) {
29029
+ switch (_a.label) {
29030
+ case 0:
29031
+ dispatch(setIsFetching(true));
29032
+ _a.label = 1;
29033
+ case 1:
29034
+ _a.trys.push([1, , 4, 5]);
29035
+ return [4 /*yield*/, dispatch(fetchPackage())];
29036
+ case 2:
29037
+ _a.sent();
29038
+ return [4 /*yield*/, dispatch(fetchPriceDetails())];
29039
+ case 3:
29040
+ _a.sent();
29041
+ return [3 /*break*/, 5];
29042
+ case 4:
29043
+ dispatch(setIsFetching(false));
29044
+ return [7 /*endfinally*/];
29045
+ case 5:
29046
+ return [2 /*return*/];
29047
+ }
29048
+ });
29049
+ });
29050
+ };
29051
+ fetchAll();
29052
+ },
29053
+ [bookingAttributes === null || bookingAttributes === void 0 ? void 0 : bookingAttributes.rooms, dispatch, hasMounted, isFetching]
29054
+ );
29055
+ useEffect(
29056
+ function () {
29057
+ if (settings.skipRouter || !travelersFirstStep) return;
29058
+ var params = new URLSearchParams(bookingQueryString);
29059
+ params.delete('rooms');
29060
+ var roomsString = formik.values.rooms
29061
+ .map(function (room) {
29062
+ var _a;
29063
+ var adults = room.adults ? room.adults.length : 0;
29064
+ var childAges = ((_a = room.children) === null || _a === void 0 ? void 0 : _a.length)
29065
+ ? room.children
29066
+ .map(function (child) {
29067
+ return child.age;
29068
+ })
29069
+ .join(',')
29070
+ : '';
29071
+ return 'adults:'.concat(adults, ',childAges:(').concat(childAges, ')');
29072
+ })
29073
+ .map(function (room) {
29074
+ return '('.concat(room, ')');
29075
+ })
29076
+ .join(',');
29077
+ var nextQuery = ''
29078
+ .concat(params.toString())
29079
+ .concat(params.toString() ? '&' : '', 'rooms=(')
29080
+ .concat(roomsString, ')');
29081
+ navigate(''.concat(window.location.pathname, '?').concat(nextQuery), { replace: true });
29082
+ },
29083
+ [formik.values.rooms, bookingQueryString, navigate, settings.skipRouter, travelersFirstStep]
29084
+ );
29085
+ useEffect(
29086
+ function () {
29087
+ if (!agents || !settings.affiliateSlug) return;
29088
+ var agent = agents.find(function (x) {
29089
+ return x.affiliateSlug && x.affiliateSlug === settings.affiliateSlug;
29090
+ });
29091
+ if (!agent) return;
29092
+ var formValues = produce(formik.values, function (values) {
29093
+ values.travelAgentId = Number(agent.id);
29094
+ values.travelAgentName = agent.name;
29095
+ });
29096
+ formik.setValues(formValues, false);
29097
+ dispatch(setFormValues(formValues));
29098
+ setShowAgentSelection(false);
29099
+ },
29100
+ [agents, settings.affiliateSlug]
29101
+ );
29102
+ return React__default.createElement(SharedTravelersForm, {
29103
+ formik: formik,
29104
+ translations: translations,
29105
+ travellersSettings: settings.travellers,
29106
+ countries: countries,
29107
+ agents: agents,
29108
+ bookingType: bookingType,
29109
+ agentAdressId: agentAdressId,
29110
+ travelersFirstStep: travelersFirstStep,
29111
+ isUnavailable: isUnavailable,
29112
+ useCompactForm: useCompactForm,
29113
+ showAllCountries: showAllCountries,
29114
+ showAgentSelection: showAgentSelection,
29115
+ initialShowAgents: (_b = settings.agentRequired) !== null && _b !== void 0 ? _b : false,
29116
+ onBookingTypeChange: function (nextBookingType) {
29117
+ return dispatch(setBookingType(nextBookingType));
29118
+ },
29119
+ renderPreviousButton: function () {
29120
+ return !travelersFirstStep && settings.skipRouter
29170
29121
  ? React__default.createElement(
29171
29122
  'button',
29172
29123
  {
29173
29124
  type: 'button',
29174
29125
  title: translations.STEPS.PREVIOUS,
29175
29126
  onClick: function () {
29176
- return goPrevious();
29127
+ return dispatch(setCurrentStep$1(OPTIONS_FORM_STEP));
29177
29128
  },
29178
29129
  className: 'cta cta--secondary'
29179
29130
  },
@@ -29192,14 +29143,9 @@ var TravelersForm = function () {
29192
29143
  },
29193
29144
  translations.STEPS.PREVIOUS
29194
29145
  )
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
- );
29146
+ : null;
29147
+ }
29148
+ });
29203
29149
  };
29204
29150
 
29205
29151
  var Booking = function (_a) {
@@ -29285,7 +29231,7 @@ var Booking = function (_a) {
29285
29231
  window.scrollTo(0, 0);
29286
29232
  }
29287
29233
  if (!isNil(bookingNumber)) {
29288
- dispatch(setBookingNumber(bookingNumber));
29234
+ dispatch(setBookingNumber$1(bookingNumber));
29289
29235
  navigate(
29290
29236
  ''
29291
29237
  .concat(!skipBasePathInRouting ? basePath : '')
@@ -29316,7 +29262,7 @@ var Booking = function (_a) {
29316
29262
  console.error('Failure when setting booking attributes', startDate, endDate, catalogueId, rooms);
29317
29263
  }
29318
29264
  },
29319
- [location.search, setBookingAttributes, setBookingNumber, includeFlights]
29265
+ [location.search, setBookingAttributes, setBookingNumber$1, includeFlights]
29320
29266
  );
29321
29267
  useEffect(
29322
29268
  function () {
@@ -31188,7 +31134,7 @@ var Calendar = function (_a) {
31188
31134
  React__default.createElement(
31189
31135
  'div',
31190
31136
  { className: 'calendar__current-month' },
31191
- format$1(focusDate, 'MMMM yyyy', {
31137
+ format$2(focusDate, 'MMMM yyyy', {
31192
31138
  locale: currentLocale
31193
31139
  }).replace(/^(.)(.*)$/, function (_, a, b) {
31194
31140
  return ''.concat(a.toUpperCase()).concat(b);
@@ -31221,7 +31167,7 @@ var Calendar = function (_a) {
31221
31167
  return React__default.createElement(
31222
31168
  'div',
31223
31169
  { className: 'calendar__day-label', key: 'label-'.concat(i) },
31224
- format$1(calendarDays[i], 'eee', {
31170
+ format$2(calendarDays[i], 'eee', {
31225
31171
  locale: currentLocale
31226
31172
  })
31227
31173
  .slice(0, 2)
@@ -32148,7 +32094,7 @@ var MobileFilterModal = function () {
32148
32094
  className: 'qsm__input u-ps-2',
32149
32095
  placeholder: translations.QSM.DEPARTURE_DATE,
32150
32096
  readOnly: true,
32151
- value: fromDate ? format$1(new Date(fromDate), 'dd/MM/yyyy') : ''
32097
+ value: fromDate ? format$2(new Date(fromDate), 'dd/MM/yyyy') : ''
32152
32098
  }),
32153
32099
  mobileDatePickerMode === 'range' && React__default.createElement('div', { className: 'qsm__input-line qsm__input-line--datepicker' })
32154
32100
  ),
@@ -32164,7 +32110,7 @@ var MobileFilterModal = function () {
32164
32110
  className: 'qsm__input',
32165
32111
  placeholder: translations.QSM.RETURN_DATE,
32166
32112
  readOnly: true,
32167
- value: toDate ? format$1(new Date(toDate), 'dd/MM/yyyy') : ''
32113
+ value: toDate ? format$2(new Date(toDate), 'dd/MM/yyyy') : ''
32168
32114
  })
32169
32115
  )
32170
32116
  ),
@@ -32944,8 +32890,8 @@ var QSMContainer = function () {
32944
32890
  [dispatch]
32945
32891
  );
32946
32892
  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));
32893
+ dispatch(setFromDate(value.fromDate ? format$2(value.fromDate, 'yyyy-MM-dd') : undefined));
32894
+ dispatch(setToDate(value.toDate ? format$2(value.toDate, 'yyyy-MM-dd') : undefined));
32949
32895
  };
32950
32896
  var handleTripTypeChange = function (value) {
32951
32897
  dispatch(setTripType(value));
@@ -33550,7 +33496,8 @@ var initialState$1 = {
33550
33496
  selectedExcursionSearchResult: null,
33551
33497
  confirmedExcursionsByDay: {},
33552
33498
  bookPackagingEntry: false,
33553
- currentStep: 0
33499
+ currentStep: 0,
33500
+ bookingNumber: undefined
33554
33501
  };
33555
33502
  var searchResultsSlice = createSlice({
33556
33503
  name: 'searchResults',
@@ -33737,6 +33684,9 @@ var searchResultsSlice = createSlice({
33737
33684
  },
33738
33685
  setCurrentStep: function (state, action) {
33739
33686
  state.currentStep = action.payload;
33687
+ },
33688
+ setBookingNumber: function (state, action) {
33689
+ state.bookingNumber = action.payload;
33740
33690
  }
33741
33691
  }
33742
33692
  });
@@ -33781,8 +33731,9 @@ var setExcursionSearchParams = _a.setExcursionSearchParams,
33781
33731
  confirmExcursionForDay = _a.confirmExcursionForDay,
33782
33732
  removeConfirmedExcursionForDay = _a.removeConfirmedExcursionForDay;
33783
33733
  _a.clearConfirmedExcursionsForDay;
33784
- var setBookPackagingEntry = _a.setBookPackagingEntry;
33785
- _a.setCurrentStep;
33734
+ var setBookPackagingEntry = _a.setBookPackagingEntry,
33735
+ setCurrentStep = _a.setCurrentStep,
33736
+ setBookingNumber = _a.setBookingNumber;
33786
33737
  var searchResultsReducer = searchResultsSlice.reducer;
33787
33738
 
33788
33739
  var ItemPicker = function (_a) {
@@ -34324,7 +34275,7 @@ var Itinerary = function (_a) {
34324
34275
  React__default.createElement(
34325
34276
  'p',
34326
34277
  null,
34327
- format$1(new Date(firstEntryLine.from), 'EEE. d MMM yyyy'),
34278
+ format$2(new Date(firstEntryLine.from), 'EEE. d MMM yyyy'),
34328
34279
  ' - ',
34329
34280
  React__default.createElement('strong', null, translations.SRP.START)
34330
34281
  )
@@ -34348,9 +34299,9 @@ var Itinerary = function (_a) {
34348
34299
  React__default.createElement(
34349
34300
  'p',
34350
34301
  { className: 'search__filter__itinerary__transport-date-date' },
34351
- React__default.createElement('strong', null, format$1(new Date(outboundFlight.from), 'd'))
34302
+ React__default.createElement('strong', null, format$2(new Date(outboundFlight.from), 'd'))
34352
34303
  ),
34353
- React__default.createElement('p', null, format$1(new Date(outboundFlight.from), 'MMM'))
34304
+ React__default.createElement('p', null, format$2(new Date(outboundFlight.from), 'MMM'))
34354
34305
  ),
34355
34306
  React__default.createElement(
34356
34307
  'div',
@@ -34424,9 +34375,9 @@ var Itinerary = function (_a) {
34424
34375
  React__default.createElement(
34425
34376
  'p',
34426
34377
  { className: 'search__filter__itinerary__transport-date-date' },
34427
- React__default.createElement('strong', null, format$1(new Date(firstSegment.from), 'd'))
34378
+ React__default.createElement('strong', null, format$2(new Date(firstSegment.from), 'd'))
34428
34379
  ),
34429
- React__default.createElement('p', null, format$1(new Date(firstSegment.from), 'MMM'))
34380
+ React__default.createElement('p', null, format$2(new Date(firstSegment.from), 'MMM'))
34430
34381
  ),
34431
34382
  React__default.createElement(
34432
34383
  'div',
@@ -34453,9 +34404,9 @@ var Itinerary = function (_a) {
34453
34404
  React__default.createElement(
34454
34405
  'p',
34455
34406
  { className: 'search__filter__itinerary__segment-details-text' },
34456
- format$1(new Date(firstSegment.from), 'EEE. d MMM yyyy'),
34407
+ format$2(new Date(firstSegment.from), 'EEE. d MMM yyyy'),
34457
34408
  '> ',
34458
- format$1(new Date(firstSegment.to), 'EEE. d MMM yyyy')
34409
+ format$2(new Date(firstSegment.to), 'EEE. d MMM yyyy')
34459
34410
  )
34460
34411
  )
34461
34412
  )
@@ -34543,9 +34494,9 @@ var Itinerary = function (_a) {
34543
34494
  React__default.createElement(
34544
34495
  'p',
34545
34496
  { className: 'search__filter__itinerary__transport-date-date' },
34546
- React__default.createElement('strong', null, format$1(new Date(returnFlight.from), 'd'))
34497
+ React__default.createElement('strong', null, format$2(new Date(returnFlight.from), 'd'))
34547
34498
  ),
34548
- React__default.createElement('p', null, format$1(new Date(returnFlight.from), 'MMM'))
34499
+ React__default.createElement('p', null, format$2(new Date(returnFlight.from), 'MMM'))
34549
34500
  ),
34550
34501
  React__default.createElement(
34551
34502
  'div',
@@ -34606,7 +34557,7 @@ var Itinerary = function (_a) {
34606
34557
  React__default.createElement(
34607
34558
  'p',
34608
34559
  null,
34609
- format$1(new Date(lastEntryLine.to), 'EEE. d MMM yyyy'),
34560
+ format$2(new Date(lastEntryLine.to), 'EEE. d MMM yyyy'),
34610
34561
  ' - ',
34611
34562
  React__default.createElement('strong', null, translations.SRP.END)
34612
34563
  )
@@ -41433,8 +41384,8 @@ var HotelAccommodationResults = function (_a) {
41433
41384
  : firstPackagingResult === null || firstPackagingResult === void 0
41434
41385
  ? void 0
41435
41386
  : firstPackagingResult.fromDate;
41436
- var firstResultDay = firstResultDate ? format$1(parseISO(firstResultDate), 'd') : null;
41437
- var firstResultMonth = firstResultDate ? format$1(parseISO(firstResultDate), 'MMM') : null;
41387
+ var firstResultDay = firstResultDate ? format$2(parseISO(firstResultDate), 'd') : null;
41388
+ var firstResultMonth = firstResultDate ? format$2(parseISO(firstResultDate), 'MMM') : null;
41438
41389
  var selectedPackagingAccoResult = React__default.useMemo(
41439
41390
  function () {
41440
41391
  var selectedResult = packagingAccoResults.find(function (result) {
@@ -42278,15 +42229,6 @@ var PackageingFlightsFlyIn = function (_a) {
42278
42229
  React__default.createElement(
42279
42230
  'div',
42280
42231
  { 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
42232
  React__default.createElement(
42291
42233
  'div',
42292
42234
  {
@@ -42298,6 +42240,15 @@ var PackageingFlightsFlyIn = function (_a) {
42298
42240
  React__default.createElement(Icon, { name: 'ui-filter', className: 'mobile-filters-button__icon', height: 16 }),
42299
42241
  translations.SRP.FILTERS
42300
42242
  ),
42243
+ React__default.createElement(
42244
+ 'span',
42245
+ { className: 'search__result-row-text' },
42246
+ (uniqueOutwardFlights === null || uniqueOutwardFlights === void 0 ? void 0 : uniqueOutwardFlights.length) && uniqueOutwardFlights.length,
42247
+ '\u00A0',
42248
+ translations.FLIGHTS_FORM.FLIGHTS_FOUND_2,
42249
+ '\u00A0',
42250
+ translations.FLIGHTS_FORM.FLIGHTS_FOUND_3
42251
+ ),
42301
42252
  sortByTypes &&
42302
42253
  sortByTypes.length > 0 &&
42303
42254
  React__default.createElement(
@@ -42580,7 +42531,7 @@ var formatPrice = function (price, currencyCode) {
42580
42531
  };
42581
42532
  var getExcursionDayKey = function (date) {
42582
42533
  var parsed = typeof date === 'string' ? parseISO(date) : date;
42583
- return format$1(parsed, 'yyyy-MM-dd');
42534
+ return format$2(parsed, 'yyyy-MM-dd');
42584
42535
  };
42585
42536
  var getOptionPaxIds = function (option) {
42586
42537
  return Array.isArray(option.paxIds)
@@ -43040,13 +42991,9 @@ var FlyIn = function (_a) {
43040
42991
  className: 'flyin '
43041
42992
  .concat(isOpen ? 'flyin--active' : '', ' ')
43042
42993
  .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' : '')
42994
+ .concat(isPackageEditFlow || flyInType === 'acco-results' ? 'flyin--large' : '', ' ')
42995
+ .concat(flyInType === 'excursion-results' || flyInType === 'excursion-details' ? 'flyin--medium' : '', '\n ')
42996
+ .concat(flyInType === 'flight-outward-results' || flyInType === 'flight-return-results' ? 'flyin--flight' : '')
43050
42997
  },
43051
42998
  React__default.createElement(
43052
42999
  'div',
@@ -43125,6 +43072,17 @@ var FlyIn = function (_a) {
43125
43072
  React__default.createElement(
43126
43073
  'div',
43127
43074
  { className: 'search__result-row' },
43075
+ React__default.createElement(
43076
+ 'div',
43077
+ {
43078
+ className: 'cta cta--filter',
43079
+ onClick: function () {
43080
+ return toggleFilters && toggleFilters();
43081
+ }
43082
+ },
43083
+ React__default.createElement(Icon, { name: 'ui-filter', className: 'mobile-filters-button__icon', height: 16 }),
43084
+ translations.SRP.FILTERS
43085
+ ),
43128
43086
  React__default.createElement(
43129
43087
  'span',
43130
43088
  { className: 'search__result-row-text' },
@@ -43138,17 +43096,6 @@ var FlyIn = function (_a) {
43138
43096
  translations.SRP.TOTAL_RESULTS_LABEL
43139
43097
  )
43140
43098
  ),
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
43099
  sortByTypes &&
43153
43100
  sortByTypes.length > 0 &&
43154
43101
  React__default.createElement(
@@ -44013,8 +43960,8 @@ var IndependentFlightSelection = function (_a) {
44013
43960
  [searchResults, selectedReturnKey]
44014
43961
  );
44015
43962
  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;
43963
+ var firstResultDay = firstResultDate ? format$2(firstResultDate, 'd') : null;
43964
+ var firstResultMonth = firstResultDate ? format$2(firstResultDate, 'MMM') : null;
44018
43965
  return React__default.createElement(
44019
43966
  React__default.Fragment,
44020
43967
  null,
@@ -45203,7 +45150,7 @@ var GroupTourCard = function (_a) {
45203
45150
  return state.searchResults;
45204
45151
  }).selectedSearchResult;
45205
45152
  if (!context) {
45206
- return;
45153
+ return null;
45207
45154
  }
45208
45155
  var dispatch = useDispatch();
45209
45156
  var translations = getTranslations(languageCode !== null && languageCode !== void 0 ? languageCode : 'en-GB');
@@ -45270,7 +45217,7 @@ var GroupTourCard = function (_a) {
45270
45217
  React__default.createElement(
45271
45218
  'div',
45272
45219
  { className: 'search__result-card__allotment__date--from' },
45273
- format$1(new Date(result.fromDate), 'dd/MM/yyyy')
45220
+ format$2(new Date(result.fromDate), 'dd/MM/yyyy')
45274
45221
  )
45275
45222
  ),
45276
45223
  React__default.createElement(
@@ -45365,7 +45312,7 @@ var GroupTourResults = function (_a) {
45365
45312
  var isLoading = _a.isLoading;
45366
45313
  var context = useContext(SearchResultsConfigurationContext);
45367
45314
  if (!context) {
45368
- return;
45315
+ return null;
45369
45316
  }
45370
45317
  if (isLoading) {
45371
45318
  return React__default.createElement(
@@ -46192,8 +46139,8 @@ var buildItineraryHtml = function (itinerary, translations) {
46192
46139
  .map(function (node) {
46193
46140
  var _a;
46194
46141
  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;
46142
+ var day = node.startDate ? format$2(node.startDate, 'd') : null;
46143
+ var month = node.startDate ? format$2(node.startDate, 'MMM') : null;
46197
46144
  var uniqueItems = getUniqueItems((_a = node.items) !== null && _a !== void 0 ? _a : []);
46198
46145
  var hasItems = uniqueItems.length > 0;
46199
46146
  var hasAccommodationInCurrentNode = uniqueItems.some(isAccommodationItem);
@@ -46402,7 +46349,7 @@ var DayByDayExcursions = function () {
46402
46349
  null,
46403
46350
  stayDates.map(function (day) {
46404
46351
  var _a, _b, _c;
46405
- var dayKey = format$1(day, 'yyyy-MM-dd');
46352
+ var dayKey = format$2(day, 'yyyy-MM-dd');
46406
46353
  var confirmedExcursions = (_a = confirmedExcursionsByDay[dayKey]) !== null && _a !== void 0 ? _a : [];
46407
46354
  return React__default.createElement(
46408
46355
  React__default.Fragment,
@@ -46416,14 +46363,14 @@ var DayByDayExcursions = function () {
46416
46363
  React__default.createElement(
46417
46364
  'p',
46418
46365
  { className: 'search__results__label__date-date' },
46419
- format$1(day, 'd', {
46366
+ format$2(day, 'd', {
46420
46367
  locale: getLocale((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB')
46421
46368
  })
46422
46369
  ),
46423
46370
  React__default.createElement(
46424
46371
  'p',
46425
46372
  null,
46426
- format$1(day, 'MMM', {
46373
+ format$2(day, 'MMM', {
46427
46374
  locale: getLocale((_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB')
46428
46375
  })
46429
46376
  )
@@ -46594,8 +46541,6 @@ var WLSidebar = function (_a) {
46594
46541
  if (!editablePackagingEntry) {
46595
46542
  return null;
46596
46543
  }
46597
- console.log('editablePackagingEntry in WLSidebar:', editablePackagingEntry);
46598
- console.log('priceDetails in WLSidebar:', priceDetails);
46599
46544
  var sortedLines = useMemo(
46600
46545
  function () {
46601
46546
  var _a;
@@ -46740,19 +46685,731 @@ var WLSidebar = function (_a) {
46740
46685
  });
46741
46686
  };
46742
46687
 
46743
- var BookPackagingEntry = function (_a) {
46688
+ var formatBirthDate = function (birthDate) {
46689
+ if (!birthDate) return '';
46690
+ return birthDate.split('T')[0].split('-').reverse().join('/');
46691
+ };
46692
+ var SharedSummary = function (_a) {
46744
46693
  var _b;
46745
- var activeSearchSeed = _a.activeSearchSeed;
46694
+ var translations = _a.translations,
46695
+ travelerFormValues = _a.travelerFormValues,
46696
+ checkboxes = _a.checkboxes,
46697
+ notifications = _a.notifications,
46698
+ _c = _a.remarks,
46699
+ remarks = _c === void 0 ? '' : _c,
46700
+ _d = _a.voucher,
46701
+ voucher = _d === void 0 ? {} : _d,
46702
+ _e = _a.voucherCodes,
46703
+ voucherCodes = _e === void 0 ? [] : _e,
46704
+ _f = _a.enableVoucher,
46705
+ enableVoucher = _f === void 0 ? false : _f,
46706
+ _g = _a.allowOption,
46707
+ allowOption = _g === void 0 ? false : _g,
46708
+ _h = _a.isOffer,
46709
+ isOffer = _h === void 0 ? false : _h,
46710
+ customValidateText = _a.customValidateText,
46711
+ _j = _a.isSubmitting,
46712
+ isSubmitting = _j === void 0 ? false : _j,
46713
+ _k = _a.userValidated,
46714
+ userValidated = _k === void 0 ? true : _k,
46715
+ renderOptions = _a.renderOptions,
46716
+ renderPreviousButton = _a.renderPreviousButton,
46717
+ renderLoader = _a.renderLoader,
46718
+ onSubmit = _a.onSubmit,
46719
+ onRemarksChange = _a.onRemarksChange,
46720
+ onCheckboxesChange = _a.onCheckboxesChange,
46721
+ onNotificationsChange = _a.onNotificationsChange,
46722
+ onVoucherChange = _a.onVoucherChange,
46723
+ onValidateVoucher = _a.onValidateVoucher,
46724
+ onAddVoucher = _a.onAddVoucher,
46725
+ onRemoveVoucher = _a.onRemoveVoucher,
46726
+ onUserValidatedChange = _a.onUserValidatedChange;
46727
+ var _l = useState(checkboxes),
46728
+ localCheckboxes = _l[0],
46729
+ setLocalCheckboxes = _l[1];
46730
+ useEffect(
46731
+ function () {
46732
+ setLocalCheckboxes(checkboxes);
46733
+ },
46734
+ [checkboxes]
46735
+ );
46736
+ useEffect(
46737
+ function () {
46738
+ var checkboxesValidated = !isNil(localCheckboxes)
46739
+ ? localCheckboxes.every(function (checkbox) {
46740
+ return checkbox.isSelected;
46741
+ })
46742
+ : true;
46743
+ var notificationsValidated = !isNil(notifications)
46744
+ ? notifications
46745
+ .filter(function (notification) {
46746
+ return notification.hasToBeConfirmed;
46747
+ })
46748
+ .every(function (notification) {
46749
+ return notification.isConfirmed;
46750
+ })
46751
+ : true;
46752
+ onUserValidatedChange === null || onUserValidatedChange === void 0 ? void 0 : onUserValidatedChange(checkboxesValidated && notificationsValidated);
46753
+ },
46754
+ [localCheckboxes, notifications, onUserValidatedChange]
46755
+ );
46756
+ var handleNotificationChange = function (id, checked) {
46757
+ var updatedNotifications = (notifications !== null && notifications !== void 0 ? notifications : []).map(function (notification) {
46758
+ return notification.id === id ? __assign(__assign({}, notification), { isConfirmed: checked }) : notification;
46759
+ });
46760
+ onNotificationsChange === null || onNotificationsChange === void 0 ? void 0 : onNotificationsChange(updatedNotifications);
46761
+ };
46762
+ var handleCheckboxChange = function (id) {
46763
+ if (isNil(localCheckboxes)) return;
46764
+ var newCheckboxes = __spreadArray([], localCheckboxes, true);
46765
+ var index = findIndex$1(localCheckboxes, function (checkbox) {
46766
+ return checkbox.id === id;
46767
+ });
46768
+ if (index < 0) return;
46769
+ newCheckboxes[index] = __assign(__assign({}, newCheckboxes[index]), { isSelected: !newCheckboxes[index].isSelected });
46770
+ setLocalCheckboxes(newCheckboxes);
46771
+ onCheckboxesChange === null || onCheckboxesChange === void 0 ? void 0 : onCheckboxesChange(newCheckboxes);
46772
+ };
46773
+ return React__default.createElement(
46774
+ React__default.Fragment,
46775
+ null,
46776
+ isSubmitting && ((renderLoader === null || renderLoader === void 0 ? void 0 : renderLoader()) || React__default.createElement(Loader, null)),
46777
+ !isSubmitting &&
46778
+ React__default.createElement(
46779
+ 'form',
46780
+ { className: 'form', name: 'booking--summary', id: 'booking--summary', onSubmit: onSubmit },
46781
+ React__default.createElement(
46782
+ 'div',
46783
+ { className: 'form__booking--summary' },
46784
+ React__default.createElement(
46785
+ 'div',
46786
+ { className: 'form__region' },
46787
+ React__default.createElement(
46788
+ 'div',
46789
+ { className: 'form__row' },
46790
+ React__default.createElement(
46791
+ 'div',
46792
+ { className: 'form__group' },
46793
+ React__default.createElement(
46794
+ 'div',
46795
+ { className: 'form__region-header' },
46796
+ React__default.createElement('h5', { className: 'form__region-heading' }, translations.SUMMARY.PERSONAL_DETAILS)
46797
+ )
46798
+ )
46799
+ ),
46800
+ travelerFormValues.rooms.map(function (room, roomIndex) {
46801
+ var _a, _b;
46802
+ return React__default.createElement(
46803
+ 'div',
46804
+ { className: 'form__row', key: roomIndex },
46805
+ React__default.createElement(
46806
+ 'div',
46807
+ { className: 'form__group' },
46808
+ React__default.createElement(
46809
+ 'div',
46810
+ { className: 'form__region-header' },
46811
+ React__default.createElement(
46812
+ 'h5',
46813
+ { className: 'form__region-heading' },
46814
+ travelerFormValues.rooms.length > 1
46815
+ ? ''.concat(translations.SHARED.ROOM, ' ').concat(roomIndex + 1)
46816
+ : translations.ROOM_OPTIONS_FORM.TRAVELER_GROUP
46817
+ ),
46818
+ React__default.createElement(
46819
+ 'p',
46820
+ { className: 'form__region-label' },
46821
+ ''
46822
+ .concat(room.adults.length + room.children.length, ' ')
46823
+ .concat(room.adults.length + room.children.length === 1 ? translations.SUMMARY.TRAVELER : translations.SUMMARY.TRAVELERS, ': ')
46824
+ .concat(
46825
+ compact([
46826
+ room.adults.length,
46827
+ room.adults.length === 1 && ' '.concat(translations.SUMMARY.ADULT),
46828
+ room.adults.length > 1 && ' '.concat(translations.SUMMARY.ADULTS),
46829
+ ((_a = room.adults) === null || _a === void 0 ? void 0 : _a.length) &&
46830
+ ((_b = room.children) === null || _b === void 0 ? void 0 : _b.length) &&
46831
+ ', ',
46832
+ room.children.length,
46833
+ room.children.length === 1 && ' '.concat(translations.SUMMARY.CHILD),
46834
+ room.children.length > 1 && ' '.concat(translations.SUMMARY.CHILDREN)
46835
+ ]).join('')
46836
+ )
46837
+ )
46838
+ )
46839
+ ),
46840
+ __spreadArray(__spreadArray([], room.adults, true), room.children, true).map(function (traveler) {
46841
+ var isMainBooker = traveler.id === travelerFormValues.mainBookerId;
46842
+ return React__default.createElement(
46843
+ 'div',
46844
+ { className: 'form__group form__group--sm-50', key: traveler.id },
46845
+ React__default.createElement(
46846
+ 'ul',
46847
+ { className: 'list list--plain' },
46848
+ React__default.createElement(
46849
+ 'li',
46850
+ { className: 'list__item' },
46851
+ React__default.createElement('strong', null, traveler.firstName, ' ', traveler.lastName),
46852
+ ' ',
46853
+ isMainBooker && React__default.createElement('em', null, '(', translations.SUMMARY.MAIN_BOOKER, ')')
46854
+ ),
46855
+ React__default.createElement('li', { className: 'list__item' }, formatBirthDate(traveler.birthDate)),
46856
+ isMainBooker &&
46857
+ React__default.createElement(
46858
+ React__default.Fragment,
46859
+ null,
46860
+ travelerFormValues.street &&
46861
+ React__default.createElement(
46862
+ 'li',
46863
+ { className: 'list__item' },
46864
+ ''
46865
+ .concat(travelerFormValues.street, ' ')
46866
+ .concat(compact([travelerFormValues.houseNumber, travelerFormValues.box]).join(' '), ', ')
46867
+ .concat(travelerFormValues.zipCode, ' ')
46868
+ .concat(travelerFormValues.place)
46869
+ ),
46870
+ travelerFormValues.phone && React__default.createElement('li', { className: 'list__item' }, travelerFormValues.phone),
46871
+ travelerFormValues.email && React__default.createElement('li', { className: 'list__item' }, travelerFormValues.email)
46872
+ )
46873
+ )
46874
+ );
46875
+ })
46876
+ );
46877
+ })
46878
+ ),
46879
+ React__default.createElement(
46880
+ 'div',
46881
+ { className: 'form__region' },
46882
+ React__default.createElement(
46883
+ 'div',
46884
+ { className: 'form__row' },
46885
+ React__default.createElement(
46886
+ 'div',
46887
+ { className: 'form__group' },
46888
+ React__default.createElement(
46889
+ 'div',
46890
+ { className: 'form__region-header' },
46891
+ React__default.createElement('h5', { className: 'form__region-heading' }, translations.SUMMARY.OPTIONS)
46892
+ )
46893
+ )
46894
+ ),
46895
+ React__default.createElement(
46896
+ 'div',
46897
+ { className: 'form__row' },
46898
+ React__default.createElement(
46899
+ 'div',
46900
+ { className: 'form__group' },
46901
+ React__default.createElement('ul', { className: 'list list--booking-summary' }, renderOptions())
46902
+ )
46903
+ )
46904
+ ),
46905
+ enableVoucher &&
46906
+ React__default.createElement(
46907
+ 'div',
46908
+ { className: 'form__region' },
46909
+ React__default.createElement(
46910
+ 'div',
46911
+ { className: 'form__row' },
46912
+ React__default.createElement(
46913
+ 'div',
46914
+ { className: 'form__group' },
46915
+ React__default.createElement(
46916
+ 'div',
46917
+ { className: 'form__region-header' },
46918
+ React__default.createElement('h5', { className: 'form__region-heading' }, translations.SUMMARY.VOUCHERS)
46919
+ )
46920
+ )
46921
+ ),
46922
+ React__default.createElement(
46923
+ 'div',
46924
+ { className: 'form__row' },
46925
+ React__default.createElement(
46926
+ 'div',
46927
+ { className: 'form__group' },
46928
+ React__default.createElement('input', {
46929
+ type: 'text',
46930
+ className: 'form__input info-message__voucher__input',
46931
+ value: (_b = voucher.code) !== null && _b !== void 0 ? _b : '',
46932
+ onChange: function (event) {
46933
+ return onVoucherChange === null || onVoucherChange === void 0 ? void 0 : onVoucherChange({ code: event.target.value });
46934
+ }
46935
+ }),
46936
+ React__default.createElement(
46937
+ 'button',
46938
+ { type: 'button', className: buildClassName(['cta', !voucher.code && 'cta--disabled']), onClick: onValidateVoucher },
46939
+ translations.SUMMARY.VOUCHER_VALIDATE
46940
+ )
46941
+ )
46942
+ ),
46943
+ React__default.createElement(
46944
+ 'div',
46945
+ { className: 'form__row' },
46946
+ React__default.createElement(
46947
+ 'div',
46948
+ { className: 'form__group info-message__voucher' },
46949
+ voucher.isValid &&
46950
+ voucher.isValidated &&
46951
+ React__default.createElement(
46952
+ 'div',
46953
+ { className: 'info-message info-message__voucher__valid' },
46954
+ React__default.createElement('span', null, translations.SUMMARY.VOUCHER_VALID),
46955
+ React__default.createElement(
46956
+ 'button',
46957
+ { type: 'button', className: 'cta cta--secondary', onClick: onAddVoucher },
46958
+ translations.SUMMARY.ADD_VOUCHER
46959
+ )
46960
+ ),
46961
+ !voucher.isValid &&
46962
+ voucher.isValidated &&
46963
+ React__default.createElement('div', { className: 'info-message--error' }, translations.SUMMARY.VOUCHER_INVALID)
46964
+ )
46965
+ ),
46966
+ React__default.createElement(
46967
+ 'div',
46968
+ { className: 'form__row' },
46969
+ React__default.createElement(
46970
+ 'ul',
46971
+ { className: 'info-message__voucher' },
46972
+ !isEmpty(voucherCodes) &&
46973
+ voucherCodes.map(function (code, index) {
46974
+ return React__default.createElement(
46975
+ 'li',
46976
+ { key: ''.concat(code, '-').concat(index) },
46977
+ React__default.createElement(
46978
+ 'div',
46979
+ { className: 'info-message__voucher__list' },
46980
+ code,
46981
+ ' ',
46982
+ React__default.createElement(
46983
+ 'button',
46984
+ {
46985
+ type: 'button',
46986
+ className: 'cta--add-remove',
46987
+ onClick: function () {
46988
+ return onRemoveVoucher === null || onRemoveVoucher === void 0 ? void 0 : onRemoveVoucher(code);
46989
+ }
46990
+ },
46991
+ React__default.createElement(Icon, { height: 16, name: 'ui-trashcan' })
46992
+ )
46993
+ )
46994
+ );
46995
+ })
46996
+ )
46997
+ )
46998
+ ),
46999
+ !isEmpty(notifications) &&
47000
+ React__default.createElement(
47001
+ 'div',
47002
+ { className: 'form__region' },
47003
+ React__default.createElement(
47004
+ 'div',
47005
+ { className: 'form__row' },
47006
+ React__default.createElement(
47007
+ 'div',
47008
+ { className: 'form__group' },
47009
+ React__default.createElement(
47010
+ 'div',
47011
+ { className: 'info-message' },
47012
+ React__default.createElement(Icon, { name: 'ui-tooltip', className: 'icon--secondary-color' }),
47013
+ React__default.createElement(
47014
+ 'div',
47015
+ { className: 'info-message__copy' },
47016
+ React__default.createElement('h5', null, translations.SUMMARY.NOTIFICATIONS_TITLE),
47017
+ uniqBy(
47018
+ (notifications !== null && notifications !== void 0 ? notifications : []).filter(function (notification) {
47019
+ return !notification.hasToBeConfirmed;
47020
+ }),
47021
+ 'id'
47022
+ ).map(function (notification) {
47023
+ return React__default.createElement(
47024
+ 'span',
47025
+ { key: notification.id, className: 'checkbox__label-text' },
47026
+ React__default.createElement('strong', { className: 'checkbox__label-text--title' }, notification.title),
47027
+ React__default.createElement('span', { className: 'checkbox__label-text--description' }, notification.description)
47028
+ );
47029
+ }),
47030
+ uniqBy(
47031
+ (notifications !== null && notifications !== void 0 ? notifications : []).filter(function (notification) {
47032
+ return notification.hasToBeConfirmed;
47033
+ }),
47034
+ 'id'
47035
+ ).map(function (notification) {
47036
+ return React__default.createElement(
47037
+ 'div',
47038
+ { className: 'checkbox', key: notification.id },
47039
+ React__default.createElement(
47040
+ 'label',
47041
+ { className: 'checkbox__label' },
47042
+ React__default.createElement('input', {
47043
+ type: 'checkbox',
47044
+ className: 'checkbox__input',
47045
+ checked: notification.isConfirmed,
47046
+ onChange: function (event) {
47047
+ return handleNotificationChange(notification.id, event.target.checked);
47048
+ }
47049
+ }),
47050
+ React__default.createElement(
47051
+ 'span',
47052
+ { className: 'checkbox__label-text' },
47053
+ React__default.createElement('strong', { className: 'checkbox__label-text--title' }, notification.title),
47054
+ React__default.createElement('span', { className: 'checkbox__label-text--description' }, notification.description)
47055
+ )
47056
+ )
47057
+ );
47058
+ })
47059
+ )
47060
+ )
47061
+ )
47062
+ )
47063
+ ),
47064
+ React__default.createElement(
47065
+ 'div',
47066
+ { className: 'form__region' },
47067
+ React__default.createElement(
47068
+ 'div',
47069
+ { className: 'form__row' },
47070
+ React__default.createElement(
47071
+ 'div',
47072
+ { className: 'form__group' },
47073
+ React__default.createElement(
47074
+ 'div',
47075
+ { className: 'form__region-header' },
47076
+ React__default.createElement('h5', { className: 'form__region-heading' }, translations.SUMMARY.REMARKS)
47077
+ )
47078
+ )
47079
+ ),
47080
+ React__default.createElement(
47081
+ 'div',
47082
+ { className: 'form__row' },
47083
+ React__default.createElement(
47084
+ 'div',
47085
+ { className: 'form__group' },
47086
+ React__default.createElement('textarea', {
47087
+ className: 'form__input',
47088
+ value: remarks,
47089
+ onChange: function (event) {
47090
+ return onRemarksChange === null || onRemarksChange === void 0 ? void 0 : onRemarksChange(event.target.value);
47091
+ }
47092
+ })
47093
+ )
47094
+ )
47095
+ ),
47096
+ React__default.createElement(
47097
+ 'div',
47098
+ { className: 'form__region' },
47099
+ React__default.createElement(
47100
+ 'div',
47101
+ { className: 'form__row' },
47102
+ React__default.createElement(
47103
+ 'div',
47104
+ { className: 'form__group' },
47105
+ React__default.createElement(
47106
+ 'div',
47107
+ { className: 'info-message' },
47108
+ React__default.createElement(Icon, { name: 'ui-tooltip', className: 'icon--secondary-color' }),
47109
+ React__default.createElement(
47110
+ 'div',
47111
+ { className: 'info-message__copy' },
47112
+ React__default.createElement('h5', null, translations.SUMMARY.VALIDATE_TITLE),
47113
+ customValidateText
47114
+ ? React__default.createElement('div', { dangerouslySetInnerHTML: { __html: customValidateText } })
47115
+ : React__default.createElement(
47116
+ React__default.Fragment,
47117
+ null,
47118
+ React__default.createElement(
47119
+ 'p',
47120
+ null,
47121
+ isOffer ? translations.SUMMARY.VALIDATE_TEXT_OFFER : translations.SUMMARY.VALIDATE_TEXT_BOOKING
47122
+ ),
47123
+ allowOption && React__default.createElement('p', null, translations.SUMMARY.VALIDATE_TEXT_OPTION)
47124
+ ),
47125
+ localCheckboxes === null || localCheckboxes === void 0
47126
+ ? void 0
47127
+ : localCheckboxes.map(function (checkbox) {
47128
+ return React__default.createElement(
47129
+ 'div',
47130
+ { className: 'checkbox', key: checkbox.id },
47131
+ React__default.createElement(
47132
+ 'label',
47133
+ { className: 'checkbox__label' },
47134
+ React__default.createElement('input', {
47135
+ type: 'checkbox',
47136
+ className: 'checkbox__input',
47137
+ checked: checkbox.isSelected,
47138
+ onChange: function () {
47139
+ return handleCheckboxChange(checkbox.id);
47140
+ }
47141
+ }),
47142
+ React__default.createElement('span', { className: 'checkbox__label-text', dangerouslySetInnerHTML: { __html: checkbox.text } })
47143
+ )
47144
+ );
47145
+ })
47146
+ )
47147
+ )
47148
+ )
47149
+ )
47150
+ )
47151
+ ),
47152
+ React__default.createElement(
47153
+ 'div',
47154
+ { className: 'booking__navigator' },
47155
+ renderPreviousButton(),
47156
+ allowOption &&
47157
+ React__default.createElement(
47158
+ 'button',
47159
+ {
47160
+ title: translations.STEPS.SUBMIT_OPTION,
47161
+ className: buildClassName(['cta', !userValidated && 'cta--disabled']),
47162
+ disabled: !userValidated,
47163
+ name: 'option'
47164
+ },
47165
+ translations.STEPS.SUBMIT_OPTION
47166
+ ),
47167
+ React__default.createElement(
47168
+ 'button',
47169
+ {
47170
+ title: isOffer ? translations.STEPS.SUBMIT_OFFER : translations.STEPS.SUBMIT_BOOKING,
47171
+ className: buildClassName(['cta', !userValidated && 'cta--disabled']),
47172
+ disabled: !userValidated,
47173
+ name: 'default'
47174
+ },
47175
+ isOffer ? translations.STEPS.SUBMIT_OFFER : translations.STEPS.SUBMIT_BOOKING
47176
+ )
47177
+ )
47178
+ )
47179
+ );
47180
+ };
47181
+
47182
+ var renderEditablePackagingEntrySummaryOptions = function (editablePackagingEntry, priceDetails, translations) {
47183
+ var _a, _b;
47184
+ var priceDetailsByProduct = groupBy(
47185
+ (_a = priceDetails === null || priceDetails === void 0 ? void 0 : priceDetails.details) !== null && _a !== void 0 ? _a : [],
47186
+ function (detail) {
47187
+ return ''.concat(detail.productCode, '|').concat(detail.accommodationCode);
47188
+ }
47189
+ );
47190
+ return (
47191
+ (_b = editablePackagingEntry === null || editablePackagingEntry === void 0 ? void 0 : editablePackagingEntry.lines) !== null && _b !== void 0 ? _b : []
47192
+ ).map(function (line) {
47193
+ var _a, _b, _c;
47194
+ var groupedPriceDetails = (_a = priceDetailsByProduct[''.concat(line.productCode, '|').concat(line.accommodationCode)]) !== null && _a !== void 0 ? _a : [];
47195
+ var visiblePriceDetails = groupedPriceDetails.filter(function (detail) {
47196
+ return detail.showPrice || detail.isSeparate;
47197
+ });
47198
+ return React__default.createElement(
47199
+ 'li',
47200
+ { key: line.guid },
47201
+ React__default.createElement('h6', null, line.productName),
47202
+ React__default.createElement(
47203
+ 'ul',
47204
+ null,
47205
+ React__default.createElement('li', { className: 'list__item' }, compact([line.accommodationName, line.regimeName]).join(', ')),
47206
+ (_c = (_b = line.flightInformation) === null || _b === void 0 ? void 0 : _b.flightLines) === null || _c === void 0
47207
+ ? void 0
47208
+ : _c.map(function (flightLine, index) {
47209
+ var _a, _b;
47210
+ return React__default.createElement(
47211
+ 'li',
47212
+ { className: 'list__item', key: ''.concat(line.guid, '-').concat(index) },
47213
+ flightLine.departureAirportCode,
47214
+ ' ',
47215
+ (_a = flightLine.departureTime) === null || _a === void 0 ? void 0 : _a.slice(0, 5),
47216
+ ' > ',
47217
+ flightLine.arrivalAirportCode,
47218
+ ' ',
47219
+ (_b = flightLine.arrivalTime) === null || _b === void 0 ? void 0 : _b.slice(0, 5),
47220
+ ' (',
47221
+ flightLine.operatingFlightNumber || ''.concat(flightLine.airlineCode).concat(flightLine.flightNumber),
47222
+ ')'
47223
+ );
47224
+ }),
47225
+ !isEmpty(visiblePriceDetails) &&
47226
+ visiblePriceDetails.map(function (detail, index) {
47227
+ var _a;
47228
+ return React__default.createElement(
47229
+ 'li',
47230
+ { className: 'list__item', key: ''.concat(line.guid, '-price-').concat(index) },
47231
+ detail.priceDescription,
47232
+ ': ',
47233
+ (_a = detail.total) === null || _a === void 0 ? void 0 : _a.toLocaleString(undefined, { style: 'currency', currency: 'EUR' })
47234
+ );
47235
+ })
47236
+ ),
47237
+ React__default.createElement(
47238
+ 'p',
47239
+ null,
47240
+ '(',
47241
+ line.from === line.to
47242
+ ? getDateText(line.from)
47243
+ : React__default.createElement(React__default.Fragment, null, getDateText(line.from), ' > ', getDateText(line.to)),
47244
+ ')'
47245
+ )
47246
+ );
47247
+ });
47248
+ };
47249
+
47250
+ var travelerFormFields = [{ type: 'gender' }, { type: 'firstName' }, { type: 'lastName' }, { type: 'birthDate' }];
47251
+ var mainBookerFormFields = [
47252
+ { type: 'street' },
47253
+ { type: 'houseNumber' },
47254
+ { type: 'box' },
47255
+ { type: 'zipCode' },
47256
+ { type: 'place' },
47257
+ { type: 'country' },
47258
+ { type: 'phone' },
47259
+ { type: 'email' }
47260
+ ];
47261
+ var travellersSettings = {
47262
+ countries: [
47263
+ { iso2: 'BE', name: 'Belgium', phonePrefix: '+32' },
47264
+ { iso2: 'NL', name: 'Netherlands', phonePrefix: '+31' },
47265
+ { iso2: 'FR', name: 'France', phonePrefix: '+33' }
47266
+ ],
47267
+ formFields: travelerFormFields,
47268
+ mainBookerFormFields: mainBookerFormFields
47269
+ };
47270
+ var BookPackagingEntry = function (_a) {
47271
+ var _b, _c;
47272
+ var activeSearchSeed = _a.activeSearchSeed,
47273
+ isConfirmationPage = _a.isConfirmationPage;
46746
47274
  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();
47275
+ var dispatch = useDispatch();
47276
+ var _d = useSelector(function (state) {
47277
+ return state.searchResults;
47278
+ }),
47279
+ editablePackagingEntry = _d.editablePackagingEntry,
47280
+ priceDetails = _d.priceDetails,
47281
+ currentStep = _d.currentStep,
47282
+ bookingNumber = _d.bookingNumber;
47283
+ var _e = useState([]),
47284
+ countries = _e[0],
47285
+ setCountries = _e[1];
47286
+ var _f = useState(true),
47287
+ userValidated = _f[0],
47288
+ setUserValidated = _f[1];
47289
+ var _g = useState(''),
47290
+ remarks = _g[0],
47291
+ setRemarks = _g[1];
47292
+ var _h = useState(false),
47293
+ isSubmitting = _h[0],
47294
+ setIsSubmitting = _h[1];
47295
+ if (!context || !editablePackagingEntry || !priceDetails) return null;
47296
+ var config = {
47297
+ host: context.tideConnection.host,
47298
+ apiKey: context.tideConnection.apiKey
47299
+ };
47300
+ var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
46755
47301
  var stepLabels = [translations.STEPS.PERSONAL_DETAILS, translations.STEPS.SUMMARY, translations.STEPS.CONFIRMATION];
47302
+ console.log('editablePackagingEntry in WLSidebar:', editablePackagingEntry);
47303
+ console.log('priceDetails in WLSidebar:', priceDetails);
47304
+ var initialValues = useMemo(
47305
+ function () {
47306
+ return createInitialValuesFromEditablePackagingEntry(editablePackagingEntry);
47307
+ },
47308
+ [editablePackagingEntry === null || editablePackagingEntry === void 0 ? void 0 : editablePackagingEntry.transactionId]
47309
+ );
47310
+ var formik = useFormik({
47311
+ initialValues: initialValues,
47312
+ enableReinitialize: true,
47313
+ validate: function (values) {
47314
+ return validateForm(values, false, 'b2c', translations, travellersSettings.formFields, travellersSettings.mainBookerFormFields);
47315
+ },
47316
+ onSubmit: function (values) {
47317
+ dispatch(setEditablePackagingEntry(applyTravelersFormValuesToEditablePackagingEntry(editablePackagingEntry, values)));
47318
+ dispatch(setCurrentStep(1));
47319
+ }
47320
+ });
47321
+ useEffect(function () {
47322
+ if (!context) return;
47323
+ var controller = new AbortController();
47324
+ (function () {
47325
+ return __awaiter(void 0, void 0, void 0, function () {
47326
+ var result;
47327
+ return __generator(this, function (_b) {
47328
+ switch (_b.label) {
47329
+ case 0:
47330
+ _b.trys.push([0, 2, , 3]);
47331
+ return [4 /*yield*/, build.getCountries(config, controller.signal)];
47332
+ case 1:
47333
+ result = _b.sent();
47334
+ setCountries(result.items);
47335
+ return [3 /*break*/, 3];
47336
+ case 2:
47337
+ _b.sent();
47338
+ return [3 /*break*/, 3];
47339
+ case 3:
47340
+ return [2 /*return*/];
47341
+ }
47342
+ });
47343
+ });
47344
+ })();
47345
+ return function () {
47346
+ return controller.abort();
47347
+ };
47348
+ }, []);
47349
+ useEffect(
47350
+ function () {
47351
+ if (isConfirmationPage) {
47352
+ dispatch(setCurrentStep(2));
47353
+ }
47354
+ },
47355
+ [isConfirmationPage, dispatch]
47356
+ );
47357
+ var handleSummarySubmit = function (e) {
47358
+ return __awaiter(void 0, void 0, void 0, function () {
47359
+ var updatedEditablePackagingEntry, redirectUrl, request, bookingResponse;
47360
+ var _a, _b;
47361
+ return __generator(this, function (_c) {
47362
+ switch (_c.label) {
47363
+ case 0:
47364
+ e.preventDefault();
47365
+ setIsSubmitting(true);
47366
+ if (typeof window !== 'undefined') {
47367
+ window.scrollTo(0, 0);
47368
+ }
47369
+ updatedEditablePackagingEntry = __assign(__assign({}, editablePackagingEntry), { remarks: remarks });
47370
+ if (context.generatePaymentUrl && typeof window !== 'undefined') {
47371
+ redirectUrl = new URL(window.location.href);
47372
+ redirectUrl.searchParams.set('bookingConfirmation', 'true');
47373
+ redirectUrl.searchParams.set('link', '');
47374
+ updatedEditablePackagingEntry = __assign(__assign({}, updatedEditablePackagingEntry), {
47375
+ redirectUrl: redirectUrl.toString(),
47376
+ returnPaymentUrl: true
47377
+ });
47378
+ }
47379
+ dispatch(setEditablePackagingEntry(updatedEditablePackagingEntry));
47380
+ _c.label = 1;
47381
+ case 1:
47382
+ _c.trys.push([1, 3, 4, 5]);
47383
+ request = {
47384
+ language: (_a = context.languageCode) !== null && _a !== void 0 ? _a : 'en-GB',
47385
+ officeId: context.tideConnection.officeId,
47386
+ catalogueId: (_b = context.searchConfiguration.defaultCatalogueId) !== null && _b !== void 0 ? _b : 0,
47387
+ agentId: context.agentId,
47388
+ payload: updatedEditablePackagingEntry
47389
+ };
47390
+ return [4 /*yield*/, build.bookPackagingEntry(config, request)];
47391
+ case 2:
47392
+ bookingResponse = _c.sent();
47393
+ dispatch(setBookingNumber(bookingResponse.number));
47394
+ if (bookingResponse.paymentUrl) {
47395
+ window.location.href = bookingResponse.paymentUrl;
47396
+ } else {
47397
+ dispatch(setCurrentStep(2));
47398
+ }
47399
+ return [3 /*break*/, 5];
47400
+ case 3:
47401
+ _c.sent();
47402
+ dispatch(setCurrentStep(3));
47403
+ return [3 /*break*/, 5];
47404
+ case 4:
47405
+ setIsSubmitting(false);
47406
+ return [7 /*endfinally*/];
47407
+ case 5:
47408
+ return [2 /*return*/];
47409
+ }
47410
+ });
47411
+ });
47412
+ };
46756
47413
  return React__default.createElement(
46757
47414
  'div',
46758
47415
  { className: 'booking' },
@@ -46760,16 +47417,77 @@ var BookPackagingEntry = function (_a) {
46760
47417
  'div',
46761
47418
  { className: 'booking__content' },
46762
47419
  React__default.createElement(
46763
- BookingPanel,
46764
- {
46765
- currentStep: currentStep,
46766
- stepLabels: stepLabels,
46767
- StepIndicatorsComponent: StepIndicators$1,
46768
- renderTitle: function (step) {
46769
- return React__default.createElement(React__default.Fragment, null, step + 1, '.\u00A0', stepLabels[step]);
46770
- }
46771
- },
46772
- React__default.createElement('div', null)
47420
+ 'div',
47421
+ { className: 'booking__panel' },
47422
+ React__default.createElement(
47423
+ BookingPanel,
47424
+ {
47425
+ currentStep: currentStep,
47426
+ stepLabels: stepLabels,
47427
+ StepIndicatorsComponent: StepIndicators$1,
47428
+ renderTitle: function (step) {
47429
+ return React__default.createElement(React__default.Fragment, null, step + 1, '.\u00A0', stepLabels[step]);
47430
+ }
47431
+ },
47432
+ currentStep === 0 &&
47433
+ React__default.createElement(SharedTravelersForm, {
47434
+ formik: formik,
47435
+ translations: translations,
47436
+ travellersSettings: travellersSettings,
47437
+ countries: countries,
47438
+ travelersFirstStep: false,
47439
+ isUnavailable: false,
47440
+ useCompactForm: false,
47441
+ showAgentSelection: false
47442
+ }),
47443
+ currentStep === 1 &&
47444
+ React__default.createElement(SharedSummary, {
47445
+ translations: translations,
47446
+ travelerFormValues: formik.values,
47447
+ isSubmitting: isSubmitting,
47448
+ userValidated: userValidated,
47449
+ remarks: remarks,
47450
+ enableVoucher: false,
47451
+ allowOption: false,
47452
+ isOffer: false,
47453
+ onUserValidatedChange: setUserValidated,
47454
+ onRemarksChange: setRemarks,
47455
+ onSubmit: handleSummarySubmit,
47456
+ renderOptions: function () {
47457
+ return renderEditablePackagingEntrySummaryOptions(editablePackagingEntry, priceDetails);
47458
+ },
47459
+ renderPreviousButton: function () {
47460
+ return React__default.createElement(
47461
+ 'button',
47462
+ {
47463
+ type: 'button',
47464
+ title: translations.STEPS.PREVIOUS,
47465
+ onClick: function () {
47466
+ return dispatch(setCurrentStep(0));
47467
+ },
47468
+ className: 'cta cta--secondary'
47469
+ },
47470
+ translations.STEPS.PREVIOUS
47471
+ );
47472
+ }
47473
+ }),
47474
+ currentStep === 2 &&
47475
+ React__default.createElement(SharedConfirmation, {
47476
+ bookingNumber:
47477
+ (_c =
47478
+ bookingNumber !== null && bookingNumber !== void 0
47479
+ ? bookingNumber
47480
+ : editablePackagingEntry === null || editablePackagingEntry === void 0
47481
+ ? void 0
47482
+ : editablePackagingEntry.dossierNumber) !== null && _c !== void 0
47483
+ ? _c
47484
+ : '',
47485
+ isOption: false,
47486
+ isOffer: false,
47487
+ translations: translations.CONFIRMATION
47488
+ }),
47489
+ currentStep === 3 && React__default.createElement('div', null)
47490
+ )
46773
47491
  ),
46774
47492
  React__default.createElement('div', { className: 'backdrop', id: 'backdrop' }),
46775
47493
  React__default.createElement(WLSidebar, { activeSearchSeed: activeSearchSeed })
@@ -46829,9 +47547,12 @@ var SearchResultsContainer = function () {
46829
47547
  var _k = useState(false),
46830
47548
  itineraryOpen = _k[0],
46831
47549
  setItineraryOpen = _k[1];
46832
- var _l = useState(null),
46833
- selectedAccommodationSeed = _l[0],
46834
- setSelectedAccommodationSeed = _l[1];
47550
+ var _l = useState(false),
47551
+ isBookingConfirmation = _l[0],
47552
+ setIsBookingConfirmation = _l[1];
47553
+ var _m = useState(null),
47554
+ selectedAccommodationSeed = _m[0],
47555
+ setSelectedAccommodationSeed = _m[1];
46835
47556
  var skipInitialPackagingAccoDetailsRef = useRef(false);
46836
47557
  var panelRef = useRef(null);
46837
47558
  var sortByTypes = [
@@ -47575,6 +48296,13 @@ var SearchResultsContainer = function () {
47575
48296
  if (context === null || context === void 0 ? void 0 : context.packagingEntry) {
47576
48297
  dispatch(setEditablePackagingEntry(structuredClone(context.packagingEntry)));
47577
48298
  dispatch(setTransactionId(context.packagingEntry.transactionId));
48299
+ var params = new URLSearchParams(location.search);
48300
+ var bookingConfirmation = getStringFromParams(params, 'bookingConfirmation');
48301
+ console.log('bookingConfirmation', bookingConfirmation);
48302
+ if (bookingConfirmation == 'true') {
48303
+ setIsBookingConfirmation(true);
48304
+ dispatch(setBookPackagingEntry(true));
48305
+ }
47578
48306
  }
47579
48307
  },
47580
48308
  [context === null || context === void 0 ? void 0 : context.packagingEntry]
@@ -48279,38 +49007,45 @@ var SearchResultsContainer = function () {
48279
49007
  return __assign(__assign({}, entry), { language: language, transactionId: transactionId, pax: entry.pax, lines: nextLines });
48280
49008
  };
48281
49009
  var buildBasePackagingEntry = function (sourceEntry, seed, transactionId, language) {
48282
- var _a, _b;
49010
+ var _a;
48283
49011
  if (sourceEntry) {
48284
49012
  return structuredClone(sourceEntry);
48285
49013
  }
48286
49014
  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
- : [];
49015
+ var pax = [];
49016
+ var rooms = [];
49017
+ (_a = seed.rooms) === null || _a === void 0
49018
+ ? void 0
49019
+ : _a.forEach(function (room, roomIndex) {
49020
+ var paxIds = room.pax.map(function (_, paxIndex) {
49021
+ var id = paxId++;
49022
+ pax.push({
49023
+ id: id,
49024
+ firstName: '',
49025
+ lastName: '',
49026
+ dateOfBirth: null,
49027
+ isMainBooker: roomIndex === 0 && paxIndex === 0
49028
+ });
49029
+ return id;
49030
+ });
49031
+ rooms.push({
49032
+ id: roomIndex,
49033
+ paxIds: paxIds
49034
+ });
49035
+ });
48304
49036
  return {
48305
49037
  language: language,
48306
49038
  transactionId: transactionId,
48307
49039
  dossierNumber: '',
48308
- status: 0,
49040
+ status: context === null || context === void 0 ? void 0 : context.entryStatus,
49041
+ customStatusId: context === null || context === void 0 ? void 0 : context.customEntryStatusId,
48309
49042
  bookingDate: null,
48310
49043
  price: 0,
48311
49044
  depositAmount: 0,
48312
49045
  pax: pax,
48313
- lines: []
49046
+ rooms: rooms,
49047
+ lines: [],
49048
+ address: {}
48314
49049
  };
48315
49050
  };
48316
49051
  var handleShowMoreFlights = function (flyInType) {
@@ -48325,7 +49060,7 @@ var SearchResultsContainer = function () {
48325
49060
  'div',
48326
49061
  { className: 'search' },
48327
49062
  bookPackagingEntry
48328
- ? React__default.createElement(BookPackagingEntry, { activeSearchSeed: activeSearchSeed })
49063
+ ? React__default.createElement(BookPackagingEntry, { activeSearchSeed: activeSearchSeed, isConfirmationPage: isBookingConfirmation })
48329
49064
  : React__default.createElement(
48330
49065
  'div',
48331
49066
  { className: 'search__container' },
@@ -48510,8 +49245,8 @@ var SearchResultsContainer = function () {
48510
49245
  { className: 'search__results__label__date' },
48511
49246
  (function () {
48512
49247
  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;
49248
+ var firstResultDay = firstResultDate ? format$2(firstResultDate, 'd') : null;
49249
+ var firstResultMonth = firstResultDate ? format$2(firstResultDate, 'MMM') : null;
48515
49250
  return React__default.createElement(
48516
49251
  React__default.Fragment,
48517
49252
  null,
@@ -48607,8 +49342,8 @@ var SearchResultsContainer = function () {
48607
49342
  { className: 'search__results__label__date' },
48608
49343
  (function () {
48609
49344
  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;
49345
+ var firstResultDay = firstResultDate ? format$2(firstResultDate, 'd') : null;
49346
+ var firstResultMonth = firstResultDate ? format$2(firstResultDate, 'MMM') : null;
48612
49347
  return React__default.createElement(
48613
49348
  React__default.Fragment,
48614
49349
  null,