@qite/tide-booking-component 1.4.128 → 1.4.129

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.
@@ -21354,7 +21354,7 @@ const SidebarFlight = ({ title, flightMetaData, translations }) => {
21354
21354
  React__default["default"].createElement("div", { className: "pricing-summary__value" }, translations.SIDEBAR.LUGGAGE_INCLUDED)))));
21355
21355
  };
21356
21356
 
21357
- const SharedSidebar = ({ productName, thumbnailUrl, isLoading, translations, headerComponent, travelerRooms, startDateText, endDateText, loaderComponent, departureFlightMetaData, returnFlightMetaData, accommodations, packagingAccommodations, isOnRequest, includedServiceTypes, basePrice, commission, showCommission, totalPrice, includedCosts, extraCosts, deposit, basePricePerPaxType, seperateExtraPricePerPaxType, isUnavailable, agent, footerComponent, currencyCode = 'EUR' }) => {
21357
+ const SharedSidebar = ({ productName, thumbnailUrl, isLoading, translations, headerComponent, travelerRooms, startDateText, endDateText, loaderComponent, departureFlightMetaData, returnFlightMetaData, accommodations, packagingAccommodations, isOnRequest, includedServiceTypes, basePrice, commission, totalPrice, includedCosts, extraCosts, deposit, basePricePerPaxType, seperateExtraPricePerPaxType, isUnavailable, agent, footerComponent }) => {
21358
21358
  if (!translations)
21359
21359
  return null;
21360
21360
  const [active, setActive] = React.useState(false);
@@ -21365,6 +21365,8 @@ const SharedSidebar = ({ productName, thumbnailUrl, isLoading, translations, hea
21365
21365
  const canShowPriceBreakdownSection = Boolean(basePrice && basePrice > 0) || !lodash.isEmpty(includedCosts) || !lodash.isEmpty(extraCosts);
21366
21366
  const canShowTotalPriceSection = Boolean(totalPrice && totalPrice > 0);
21367
21367
  const remainingAmount = Number(((totalPrice ?? 0) - (deposit ?? 0)).toFixed(2));
21368
+ // TODO: Determine currency code based on the data, for now default to EUR
21369
+ let currencyCode = 'EUR';
21368
21370
  return (React__default["default"].createElement("div", { className: buildClassName(['booking__sidebar', active && 'booking__sidebar--active']) },
21369
21371
  headerComponent,
21370
21372
  React__default["default"].createElement("div", { className: "booking__sidebar-frame" },
@@ -21494,7 +21496,7 @@ const SharedSidebar = ({ productName, thumbnailUrl, isLoading, translations, hea
21494
21496
  translations.SIDEBAR.DEPOSIT_TEXT4,
21495
21497
  React__default["default"].createElement("strong", null, translations.SIDEBAR.DEPOSIT_TEXT5),
21496
21498
  translations.SIDEBAR.DEPOSIT_TEXT6))))) : (React__default["default"].createElement("div", { className: "pricing-summary__group" },
21497
- (agent && showCommission) && (React__default["default"].createElement("div", { className: "pricing-summary__row pricing-summary__row--total-price" },
21499
+ agent && (React__default["default"].createElement("div", { className: "pricing-summary__row pricing-summary__row--total-price" },
21498
21500
  React__default["default"].createElement("div", { className: "pricing-summary__property" },
21499
21501
  React__default["default"].createElement("h6", { className: "pricing-summary__title" }, translations.SIDEBAR.COMMISSION)),
21500
21502
  React__default["default"].createElement("div", { className: "pricing-summary__value" },
@@ -21510,7 +21512,7 @@ const SharedSidebar = ({ productName, thumbnailUrl, isLoading, translations, hea
21510
21512
  };
21511
21513
 
21512
21514
  const SidebarContainer = ({ productName, thumbnailUrl }) => {
21513
- const { sidebarHeaderComponent, sidebarFooterComponent, loaderComponent, showPricesPerPaxType, maxChildAge, showCommission } = React.useContext(SettingsContext);
21515
+ const { sidebarHeaderComponent, sidebarFooterComponent, loaderComponent, showPricesPerPaxType, maxChildAge } = React.useContext(SettingsContext);
21514
21516
  const bookingAttributes = reactRedux.useSelector(selectBookingAttributes);
21515
21517
  const selectFormRooms = React.useMemo(() => makeSelectFormRooms(maxChildAge), [maxChildAge]);
21516
21518
  const rooms = reactRedux.useSelector(selectFormRooms);
@@ -21527,7 +21529,7 @@ const SidebarContainer = ({ productName, thumbnailUrl }) => {
21527
21529
  const isUnavailable = reactRedux.useSelector(selectIsUnavailable) || false;
21528
21530
  const isLoading = isFetchingProductOptions || isFetchingPriceDetails;
21529
21531
  const agent = reactRedux.useSelector(selectAgentAdressId);
21530
- return (React__default["default"].createElement(SharedSidebar, { productName: productName, thumbnailUrl: thumbnailUrl, isLoading: isLoading, startDateText: getDateText(bookingAttributes?.startDate), endDateText: bookingAttributes?.startDate !== bookingAttributes?.endDate ? getDateText(bookingAttributes?.endDate) : undefined, travelerRooms: travelerRooms, departureFlightMetaData: departureFlightMetaData, returnFlightMetaData: returnFlightMetaData, basePrice: reactRedux.useSelector(selectBasePrice), commission: reactRedux.useSelector(selectCommission), showCommission: showCommission, totalPrice: reactRedux.useSelector(selectTotalPrice), includedCosts: reactRedux.useSelector(selectSeparatePackagePriceDetails$1), extraCosts: reactRedux.useSelector(selectSeparateExtraPriceDetails), accommodations: accommodations, includedServiceTypes: includedServiceTypes, deposit: reactRedux.useSelector(selectDeposit), isOnRequest: reactRedux.useSelector(selectIsOnRequest), headerComponent: sidebarHeaderComponent ?? undefined, footerComponent: sidebarFooterComponent ?? undefined, loaderComponent: loaderComponent ?? undefined, isUnavailable: isUnavailable, basePricePerPaxType: showPricesPerPaxType ? reactRedux.useSelector(selectBasePricePerPaxType) : undefined, seperateExtraPricePerPaxType: showPricesPerPaxType ? reactRedux.useSelector(selectSeparateExtraPriceDetailsPerPaxType) : undefined, translations: translations, agent: agent, currencyCode: reactRedux.useSelector(selectCurrencyCode) }));
21532
+ return (React__default["default"].createElement(SharedSidebar, { productName: productName, thumbnailUrl: thumbnailUrl, isLoading: isLoading, startDateText: getDateText(bookingAttributes?.startDate), endDateText: bookingAttributes?.startDate !== bookingAttributes?.endDate ? getDateText(bookingAttributes?.endDate) : undefined, travelerRooms: travelerRooms, departureFlightMetaData: departureFlightMetaData, returnFlightMetaData: returnFlightMetaData, basePrice: reactRedux.useSelector(selectBasePrice), commission: reactRedux.useSelector(selectCommission), totalPrice: reactRedux.useSelector(selectTotalPrice), includedCosts: reactRedux.useSelector(selectSeparatePackagePriceDetails$1), extraCosts: reactRedux.useSelector(selectSeparateExtraPriceDetails), accommodations: accommodations, includedServiceTypes: includedServiceTypes, deposit: reactRedux.useSelector(selectDeposit), isOnRequest: reactRedux.useSelector(selectIsOnRequest), headerComponent: sidebarHeaderComponent ?? undefined, footerComponent: sidebarFooterComponent ?? undefined, loaderComponent: loaderComponent ?? undefined, isUnavailable: isUnavailable, basePricePerPaxType: showPricesPerPaxType ? reactRedux.useSelector(selectBasePricePerPaxType) : undefined, seperateExtraPricePerPaxType: showPricesPerPaxType ? reactRedux.useSelector(selectSeparateExtraPriceDetailsPerPaxType) : undefined, translations: translations, agent: agent }));
21531
21533
  };
21532
21534
 
21533
21535
  const SummaryPerPaxOptionGroup = ({ group }) => {
@@ -21709,7 +21711,7 @@ const Summary = () => {
21709
21711
  }
21710
21712
  else {
21711
21713
  const location = window.location;
21712
- bookRequest.payload.redirectUrl = `${location.protocol}//${location.host}${settings.basePath ?? location.pathname}?${bookingQueryString}`;
21714
+ bookRequest.payload.redirectUrl = `${location.protocol}//${location.host}${settings.basePath}?${bookingQueryString}`;
21713
21715
  }
21714
21716
  }
21715
21717
  }
@@ -22640,12 +22642,7 @@ const TravelersForm = () => {
22640
22642
  navigate(`${!settings.skipBasePathInRouting ? settings.basePath : ''}${settings.summary.pathSuffix}?${bookingQueryString}`);
22641
22643
  return;
22642
22644
  }
22643
- if (travelersFirstStep) {
22644
- dispatch(fetchPackage());
22645
- }
22646
- else {
22647
- dispatch(fetchPriceDetails());
22648
- }
22645
+ dispatch(fetchPackage());
22649
22646
  if (settings.skipRouter)
22650
22647
  dispatch(setCurrentStep$1(travelersFirstStep ? FLIGHT_OPTIONS_FORM_STEP : SUMMARY_STEP));
22651
22648
  else
@@ -22656,8 +22653,6 @@ const TravelersForm = () => {
22656
22653
  dispatch(fetchPriceDetails());
22657
22654
  }, [dispatch]);
22658
22655
  React.useEffect(() => {
22659
- if (!travelersFirstStep)
22660
- return;
22661
22656
  if (!bookingAttributes?.rooms?.length)
22662
22657
  return;
22663
22658
  if (!hasMounted) {
@@ -22682,7 +22677,7 @@ const TravelersForm = () => {
22682
22677
  }
22683
22678
  };
22684
22679
  fetchAll();
22685
- }, [bookingAttributes?.rooms, dispatch, hasMounted, travelersFirstStep]);
22680
+ }, [bookingAttributes?.rooms, dispatch, hasMounted]);
22686
22681
  const roomsQuery = React.useMemo(() => formik$1.values.rooms
22687
22682
  .map((room) => {
22688
22683
  const adults = room.adults ? room.adults.length : 0;
@@ -31048,10 +31043,10 @@ const findAccommodationForDay = (nodes, currentDay) => {
31048
31043
  };
31049
31044
  const buildItineraryHtml = (itinerary, translations) => {
31050
31045
  if (!itinerary) {
31051
- return `
31052
- <div class="itinerary-shell">
31053
- <div class="itinerary-empty">Geen reisroute beschikbaar.</div>
31054
- </div>
31046
+ return `
31047
+ <div class="itinerary-shell">
31048
+ <div class="itinerary-empty">Geen reisroute beschikbaar.</div>
31049
+ </div>
31055
31050
  `;
31056
31051
  }
31057
31052
  const allNodes = itinerary.nodes ?? [];
@@ -31065,66 +31060,66 @@ const buildItineraryHtml = (itinerary, translations) => {
31065
31060
  const hasAccommodationInCurrentNode = uniqueItems.some(isAccommodationItem);
31066
31061
  const activeAccommodation = findAccommodationForDay(allNodes, startDay);
31067
31062
  const accommodationBanner = !hasAccommodationInCurrentNode && activeAccommodation
31068
- ? `
31069
- <div class="itinerary-node__accommodation-banner">
31070
- Accommodatie voor deze dag: <strong>${escapeHtml(getAccommodationName(activeAccommodation))}</strong>
31071
- </div>
31063
+ ? `
31064
+ <div class="itinerary-node__accommodation-banner">
31065
+ Accommodatie voor deze dag: <strong>${escapeHtml(getAccommodationName(activeAccommodation))}</strong>
31066
+ </div>
31072
31067
  `
31073
31068
  : '';
31074
31069
  const itemsHtml = hasItems
31075
31070
  ? uniqueItems
31076
- .map((item) => `
31077
- <article class="itinerary-item" data-template="${escapeHtml(item.templateName)}">
31078
- ${item.contents ?? ''}
31079
- </article>
31071
+ .map((item) => `
31072
+ <article class="itinerary-item" data-template="${escapeHtml(item.templateName)}">
31073
+ ${item.contents ?? ''}
31074
+ </article>
31080
31075
  `)
31081
31076
  .join('')
31082
31077
  : `<div class="itinerary-node__empty">${translations.ITINERARY.NO_ITEMS}</div>`;
31083
- return `
31084
- <section class="itinerary-node">
31085
- <header class="itinerary-node__header">
31086
-
31087
- <div class="itinerary-node__day">
31088
- <p class="itinerary-node__day-day">${day}</p>
31089
- <p class="itinerary-node__day-month">${month}</p>
31090
- </div>
31091
-
31092
- <div>
31093
- <h2 class="itinerary-node__title">${escapeHtml(node.title)}</h2>
31094
- </div>
31095
- </header>
31096
-
31097
- <div class="itinerary-node__content">
31098
- ${accommodationBanner}
31099
- ${itemsHtml}
31100
- </div>
31101
- </section>
31078
+ return `
31079
+ <section class="itinerary-node">
31080
+ <header class="itinerary-node__header">
31081
+
31082
+ <div class="itinerary-node__day">
31083
+ <p class="itinerary-node__day-day">${day}</p>
31084
+ <p class="itinerary-node__day-month">${month}</p>
31085
+ </div>
31086
+
31087
+ <div>
31088
+ <h2 class="itinerary-node__title">${escapeHtml(node.title)}</h2>
31089
+ </div>
31090
+ </header>
31091
+
31092
+ <div class="itinerary-node__content">
31093
+ ${accommodationBanner}
31094
+ ${itemsHtml}
31095
+ </div>
31096
+ </section>
31102
31097
  `;
31103
31098
  })
31104
31099
  .join('');
31105
31100
  const defaultItemsHtml = itinerary.defaultItems && itinerary.defaultItems.length > 0
31106
- ? `
31107
- <section class="itinerary-default-items">
31108
- <h2 class="itinerary-default-items__title">Algemene info</h2>
31101
+ ? `
31102
+ <section class="itinerary-default-items">
31103
+ <h2 class="itinerary-default-items__title">Algemene info</h2>
31109
31104
  ${getUniqueItems(itinerary.defaultItems)
31110
- .map((item) => `
31111
- <article class="itinerary-item" data-template="${escapeHtml(item.templateName)}">
31112
- ${item.contents ?? ''}
31113
- </article>
31105
+ .map((item) => `
31106
+ <article class="itinerary-item" data-template="${escapeHtml(item.templateName)}">
31107
+ ${item.contents ?? ''}
31108
+ </article>
31114
31109
  `)
31115
- .join('')}
31116
- </section>
31110
+ .join('')}
31111
+ </section>
31117
31112
  `
31118
31113
  : '';
31119
- return `
31120
- <div class="itinerary-shell">
31121
- ${itinerary.title ? `<header class="itinerary-shell__header"><h1 class="itinerary-shell__title">${escapeHtml(itinerary.title)}</h1></header>` : ''}
31122
-
31123
- <div class="itinerary-shell__content">
31124
- ${nodesHtml}
31125
- ${defaultItemsHtml}
31126
- </div>
31127
- </div>
31114
+ return `
31115
+ <div class="itinerary-shell">
31116
+ ${itinerary.title ? `<header class="itinerary-shell__header"><h1 class="itinerary-shell__title">${escapeHtml(itinerary.title)}</h1></header>` : ''}
31117
+
31118
+ <div class="itinerary-shell__content">
31119
+ ${nodesHtml}
31120
+ ${defaultItemsHtml}
31121
+ </div>
31122
+ </div>
31128
31123
  `;
31129
31124
  };
31130
31125
  const FullItinerary = ({ isLoading }) => {
@@ -31144,141 +31139,141 @@ const FullItinerary = ({ isLoading }) => {
31144
31139
  }
31145
31140
  const shadowRoot = host.shadowRoot ?? host.attachShadow({ mode: 'open' });
31146
31141
  shadowRootRef.current = shadowRoot;
31147
- shadowRoot.innerHTML = `
31148
- <style>
31149
- :host {
31150
- all: initial;
31151
- display: block;
31152
- width: 100%;
31153
- }
31154
-
31155
- *,
31156
- *::before,
31157
- *::after {
31158
- box-sizing: border-box;
31159
- }
31160
-
31161
- .itinerary-shell {
31162
- width: 100%;
31163
- margin: 0 auto;
31164
- font-family: 'Outfit', sans-serif;
31165
- color: #222;
31166
- }
31167
-
31168
- .itinerary-shell__header {
31169
- margin-bottom: 24px;
31170
- }
31171
-
31172
- .itinerary-shell__title {
31173
- margin: 0;
31174
- font-size: 32px;
31175
- line-height: 1.2;
31176
- }
31177
-
31178
- .itinerary-shell__content {
31179
- display: grid;
31180
- gap: 24px;
31181
- }
31182
-
31183
- .itinerary-node {
31184
- border: 1px solid #e5e7eb;
31185
- border-radius: 16px;
31186
- overflow: hidden;
31187
- background: #fff;
31188
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
31189
- }
31190
-
31191
- .itinerary-node__header {
31192
- display: flex;
31193
- gap: 16px;
31194
- align-items: center;
31195
- border-bottom: 1px solid #eef0f2;
31196
- background: #fafafa;
31197
- }
31198
-
31199
- .itinerary-node__day {
31200
- flex: 50px 0 0;
31201
- display: flex;
31202
- flex-flow: column;
31203
- align-items: center;
31204
- justify-content: center;
31205
- background: #1f9470;
31206
- color: white;
31207
- border: 1.5px solid var(--tide-booking-color-secondary);
31208
- }
31209
-
31210
- .itinerary-node__day-month {
31211
- margin: 0px;
31212
- }
31213
-
31214
- .itinerary-node__day-day {
31215
- margin: 0px;
31216
- font-weight: var(--tide-booking-search-results-label-date-month-font-weight);
31217
- color: var(--tide-booking-search-results-label-date-month-color);
31218
- font-size: 24px;
31219
- }
31220
-
31221
- .itinerary-node__title {
31222
- margin: 0;
31223
- font-size: 22px;
31224
- line-height: 1.25;
31225
- }
31226
-
31227
- .itinerary-node__content {
31228
- display: grid;
31229
- gap: 20px;
31230
- padding: 20px;
31231
- }
31232
-
31233
- .itinerary-node__accommodation-banner {
31234
- padding: 12px 16px;
31235
- border: 1px solid #dbeafe;
31236
- border-radius: 12px;
31237
- background: #eff6ff;
31238
- color: #1e3a8a;
31239
- font-size: 14px;
31240
- line-height: 1.4;
31241
- }
31242
-
31243
- .itinerary-item {
31244
- display: block;
31245
- border-radius: 12px;
31246
- overflow: hidden;
31247
- background: #fff;
31248
- }
31249
-
31250
- .itinerary-node__empty,
31251
- .itinerary-empty {
31252
- padding: 20px;
31253
- border: 1px dashed #d1d5db;
31254
- border-radius: 12px;
31255
- color: #6b7280;
31256
- background: #fafafa;
31257
- }
31258
-
31259
- .itinerary-default-items {
31260
- border: 1px solid #e5e7eb;
31261
- border-radius: 16px;
31262
- padding: 20px;
31263
- background: #fff;
31264
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
31265
- }
31266
-
31267
- .itinerary-default-items__title {
31268
- margin: 0 0 16px;
31269
- font-size: 22px;
31270
- }
31271
-
31272
- @media (max-width: 768px) {
31273
- .itinerary-shell {
31274
- padding: 16px;
31275
- }
31276
- }
31277
-
31278
- ${itinerary?.styleSheetBody ?? ''}
31279
- </style>
31280
-
31281
- ${html}
31142
+ shadowRoot.innerHTML = `
31143
+ <style>
31144
+ :host {
31145
+ all: initial;
31146
+ display: block;
31147
+ width: 100%;
31148
+ }
31149
+
31150
+ *,
31151
+ *::before,
31152
+ *::after {
31153
+ box-sizing: border-box;
31154
+ }
31155
+
31156
+ .itinerary-shell {
31157
+ width: 100%;
31158
+ margin: 0 auto;
31159
+ font-family: 'Outfit', sans-serif;
31160
+ color: #222;
31161
+ }
31162
+
31163
+ .itinerary-shell__header {
31164
+ margin-bottom: 24px;
31165
+ }
31166
+
31167
+ .itinerary-shell__title {
31168
+ margin: 0;
31169
+ font-size: 32px;
31170
+ line-height: 1.2;
31171
+ }
31172
+
31173
+ .itinerary-shell__content {
31174
+ display: grid;
31175
+ gap: 24px;
31176
+ }
31177
+
31178
+ .itinerary-node {
31179
+ border: 1px solid #e5e7eb;
31180
+ border-radius: 16px;
31181
+ overflow: hidden;
31182
+ background: #fff;
31183
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
31184
+ }
31185
+
31186
+ .itinerary-node__header {
31187
+ display: flex;
31188
+ gap: 16px;
31189
+ align-items: center;
31190
+ border-bottom: 1px solid #eef0f2;
31191
+ background: #fafafa;
31192
+ }
31193
+
31194
+ .itinerary-node__day {
31195
+ flex: 50px 0 0;
31196
+ display: flex;
31197
+ flex-flow: column;
31198
+ align-items: center;
31199
+ justify-content: center;
31200
+ background: #1f9470;
31201
+ color: white;
31202
+ border: 1.5px solid var(--tide-booking-color-secondary);
31203
+ }
31204
+
31205
+ .itinerary-node__day-month {
31206
+ margin: 0px;
31207
+ }
31208
+
31209
+ .itinerary-node__day-day {
31210
+ margin: 0px;
31211
+ font-weight: var(--tide-booking-search-results-label-date-month-font-weight);
31212
+ color: var(--tide-booking-search-results-label-date-month-color);
31213
+ font-size: 24px;
31214
+ }
31215
+
31216
+ .itinerary-node__title {
31217
+ margin: 0;
31218
+ font-size: 22px;
31219
+ line-height: 1.25;
31220
+ }
31221
+
31222
+ .itinerary-node__content {
31223
+ display: grid;
31224
+ gap: 20px;
31225
+ padding: 20px;
31226
+ }
31227
+
31228
+ .itinerary-node__accommodation-banner {
31229
+ padding: 12px 16px;
31230
+ border: 1px solid #dbeafe;
31231
+ border-radius: 12px;
31232
+ background: #eff6ff;
31233
+ color: #1e3a8a;
31234
+ font-size: 14px;
31235
+ line-height: 1.4;
31236
+ }
31237
+
31238
+ .itinerary-item {
31239
+ display: block;
31240
+ border-radius: 12px;
31241
+ overflow: hidden;
31242
+ background: #fff;
31243
+ }
31244
+
31245
+ .itinerary-node__empty,
31246
+ .itinerary-empty {
31247
+ padding: 20px;
31248
+ border: 1px dashed #d1d5db;
31249
+ border-radius: 12px;
31250
+ color: #6b7280;
31251
+ background: #fafafa;
31252
+ }
31253
+
31254
+ .itinerary-default-items {
31255
+ border: 1px solid #e5e7eb;
31256
+ border-radius: 16px;
31257
+ padding: 20px;
31258
+ background: #fff;
31259
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
31260
+ }
31261
+
31262
+ .itinerary-default-items__title {
31263
+ margin: 0 0 16px;
31264
+ font-size: 22px;
31265
+ }
31266
+
31267
+ @media (max-width: 768px) {
31268
+ .itinerary-shell {
31269
+ padding: 16px;
31270
+ }
31271
+ }
31272
+
31273
+ ${itinerary?.styleSheetBody ?? ''}
31274
+ </style>
31275
+
31276
+ ${html}
31282
31277
  `;
31283
31278
  }, [html, itinerary?.styleSheetBody, isLoading]);
31284
31279
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
@@ -31382,7 +31377,7 @@ const DayByDayExcursions = () => {
31382
31377
  })));
31383
31378
  };
31384
31379
 
31385
- const renderEditablePackagingEntrySummaryOptions = (editablePackagingEntry, priceDetails, translations, currencyCode) => {
31380
+ const renderEditablePackagingEntrySummaryOptions = (editablePackagingEntry, priceDetails, translations) => {
31386
31381
  const priceDetailsByProduct = lodash.groupBy(priceDetails?.details ?? [], (detail) => `${detail.productCode}|${detail.accommodationCode}`);
31387
31382
  return (editablePackagingEntry?.lines ?? []).map((line) => {
31388
31383
  const groupedPriceDetails = priceDetailsByProduct[`${line.productCode}|${line.accommodationCode}`] ?? [];
@@ -31406,7 +31401,7 @@ const renderEditablePackagingEntrySummaryOptions = (editablePackagingEntry, pric
31406
31401
  visiblePriceDetails.map((detail, index) => (React__default["default"].createElement("li", { className: "list__item", key: `${line.guid}-price-${index}` },
31407
31402
  detail.priceDescription,
31408
31403
  ": ",
31409
- detail.total !== undefined && detail.total !== null ? formatPrice$3(detail.total, currencyCode ?? 'EUR') : '')))),
31404
+ detail.total?.toLocaleString(undefined, { style: 'currency', currency: 'EUR' }))))),
31410
31405
  React__default["default"].createElement("p", null,
31411
31406
  "(",
31412
31407
  line.from === line.to ? (getDateText(line.from)) : (React__default["default"].createElement(React__default["default"].Fragment, null,
@@ -31526,7 +31521,7 @@ const WLSidebar = ({ activeSearchSeed, packagingAccoResult }) => {
31526
31521
  const separateExtraPriceDetails = priceDetails?.details.filter((pd) => !pd.isInPackage && pd.isSeparate) ?? [];
31527
31522
  const totalPrice = lodash.sum([basePrice, ...separateExtraPriceDetails.map((priceDetail) => priceDetail.price * priceDetail.amount)]);
31528
31523
  const includedCosts = selectSeparatePackagePriceDetails(priceDetails?.details.filter((pd) => pd.isInPackage) ?? []);
31529
- return (React__default["default"].createElement(SharedSidebar, { productName: location ?? '', thumbnailUrl: accoImage ?? context.destinationImage?.url, translations: translations, travelerRooms: travelerRooms, startDateText: lodash.first(sortedLines)?.from && formatDate(new Date(lodash.first(sortedLines).from)), endDateText: lodash.last(sortedLines)?.to && formatDate(new Date(lodash.last(sortedLines).to)), isLoading: !editablePackagingEntry || !priceDetails, loaderComponent: React__default["default"].createElement(Spinner, null), departureFlightMetaData: outboundFlightMetaData, returnFlightMetaData: returnFlightMetaData, includedServiceTypes: editablePackagingEntry.lines.map((line) => line.serviceType), packagingAccommodations: accommodationLines, basePrice: basePrice, commission: priceDetails?.commission, totalPrice: totalPrice, includedCosts: includedCosts, extraCosts: separateExtraPriceDetails, deposit: priceDetails?.deposit, isUnavailable: false, agent: context.agentId, currencyCode: packagingAccoResult?.currencyCode }));
31524
+ return (React__default["default"].createElement(SharedSidebar, { productName: location ?? '', thumbnailUrl: accoImage ?? context.destinationImage?.url, translations: translations, travelerRooms: travelerRooms, startDateText: lodash.first(sortedLines)?.from && formatDate(new Date(lodash.first(sortedLines).from)), endDateText: lodash.last(sortedLines)?.to && formatDate(new Date(lodash.last(sortedLines).to)), isLoading: !editablePackagingEntry || !priceDetails, loaderComponent: React__default["default"].createElement(Spinner, null), departureFlightMetaData: outboundFlightMetaData, returnFlightMetaData: returnFlightMetaData, includedServiceTypes: editablePackagingEntry.lines.map((line) => line.serviceType), packagingAccommodations: accommodationLines, basePrice: basePrice, commission: priceDetails?.commission, totalPrice: totalPrice, includedCosts: includedCosts, extraCosts: separateExtraPriceDetails, deposit: priceDetails?.deposit, isUnavailable: false, agent: context.agentId }));
31530
31525
  };
31531
31526
 
31532
31527
  const formatBirthDate = (birthDate) => {
@@ -31820,7 +31815,7 @@ const BookPackagingEntry = ({ activeSearchSeed, isLoading, isConfirmationPage })
31820
31815
  stepLabels[step])) },
31821
31816
  isConfirmationPage && isLoading && React__default["default"].createElement(Spinner, { label: translations.SUMMARY.PROCESS_BOOKING }),
31822
31817
  currentStep === 0 && (React__default["default"].createElement(SharedTravelersForm, { formik: formik$1, translations: translations, travellersSettings: travellersSettings, countries: countries, travelersFirstStep: false, isUnavailable: false, useCompactForm: false, showAgentSelection: false })),
31823
- currentStep === 1 && (React__default["default"].createElement(SharedSummary, { translations: translations, travelerFormValues: formik$1.values, isSubmitting: isSubmitting, skipPayment: !context.generatePaymentUrl, userValidated: userValidated, remarks: remarks, enableVoucher: false, allowOption: false, isOffer: false, onUserValidatedChange: setUserValidated, onRemarksChange: setRemarks, onSubmit: handleSummarySubmit, renderOptions: () => renderEditablePackagingEntrySummaryOptions(editablePackagingEntry, priceDetails, translations, selectedPackagingAccoResult?.currencyCode), renderPreviousButton: () => (React__default["default"].createElement("button", { type: "button", title: translations.STEPS.PREVIOUS, onClick: () => dispatch(setCurrentStep(0)), className: "cta cta--secondary" }, translations.STEPS.PREVIOUS)) })),
31818
+ currentStep === 1 && (React__default["default"].createElement(SharedSummary, { translations: translations, travelerFormValues: formik$1.values, isSubmitting: isSubmitting, skipPayment: !context.generatePaymentUrl, userValidated: userValidated, remarks: remarks, enableVoucher: false, allowOption: false, isOffer: false, onUserValidatedChange: setUserValidated, onRemarksChange: setRemarks, onSubmit: handleSummarySubmit, renderOptions: () => renderEditablePackagingEntrySummaryOptions(editablePackagingEntry, priceDetails), renderPreviousButton: () => (React__default["default"].createElement("button", { type: "button", title: translations.STEPS.PREVIOUS, onClick: () => dispatch(setCurrentStep(0)), className: "cta cta--secondary" }, translations.STEPS.PREVIOUS)) })),
31824
31819
  currentStep === 2 && (React__default["default"].createElement(SharedConfirmation, { bookingNumber: bookingNumber ?? editablePackagingEntry?.dossierNumber ?? '', isOption: false, isOffer: false, translations: translations.CONFIRMATION })),
31825
31820
  currentStep === 3 && React__default["default"].createElement("div", null))),
31826
31821
  React__default["default"].createElement("div", { className: "backdrop", id: "backdrop" }),
@@ -35973,20 +35968,20 @@ function ItineraryMapView({ destinations: propDestinations, adults = 2, dateFrom
35973
35968
  const isStartEnd = dest.isStart || dest.isEnd;
35974
35969
  let iconHtml;
35975
35970
  if (isStartEnd) {
35976
- iconHtml = `
35977
- <div class="map-view__marker map-view__marker--plane">
35978
- <svg viewBox="0 0 576 512" fill="currentColor" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
35979
- <path d="M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10.1-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.3-15.8-20.6l49-196.3L112 288 68.8 377.6c-3 6.1-9.2 10.4-16 10.4l-2.8 0c-9.2 0-16-8.8-13.3-17.6L80 256L36.7 141.6C34 132.8 40.8 124 50 124l2.8 0c6.8 0 13 4.3 16 10.4L112 224l102.9 0-49-196.3C163.5 17.3 171.2 7 181.8 7l56.2 0c11.5 0 22.1 6 27.8 16.1L365.7 192l116.6 0z"/>
35980
- </svg>
35971
+ iconHtml = `
35972
+ <div class="map-view__marker map-view__marker--plane">
35973
+ <svg viewBox="0 0 576 512" fill="currentColor" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
35974
+ <path d="M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10.1-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.3-15.8-20.6l49-196.3L112 288 68.8 377.6c-3 6.1-9.2 10.4-16 10.4l-2.8 0c-9.2 0-16-8.8-13.3-17.6L80 256L36.7 141.6C34 132.8 40.8 124 50 124l2.8 0c6.8 0 13 4.3 16 10.4L112 224l102.9 0-49-196.3C163.5 17.3 171.2 7 181.8 7l56.2 0c11.5 0 22.1 6 27.8 16.1L365.7 192l116.6 0z"/>
35975
+ </svg>
35981
35976
  </div>`;
35982
35977
  }
35983
35978
  else {
35984
35979
  stopIndex++;
35985
35980
  const imgStyle = dest.imageUrl ? `style="background-image:url('${dest.imageUrl}')"` : '';
35986
- iconHtml = `
35987
- <div class="map-view__marker map-view__marker--stop" ${imgStyle}>
35988
- ${!dest.imageUrl ? `<span class="map-view__marker-number">${stopIndex}</span>` : ''}
35989
- <span class="map-view__marker-badge">${stopIndex}</span>
35981
+ iconHtml = `
35982
+ <div class="map-view__marker map-view__marker--stop" ${imgStyle}>
35983
+ ${!dest.imageUrl ? `<span class="map-view__marker-number">${stopIndex}</span>` : ''}
35984
+ <span class="map-view__marker-badge">${stopIndex}</span>
35990
35985
  </div>`;
35991
35986
  }
35992
35987
  const icon = L.divIcon({
@@ -12,7 +12,6 @@ interface SharedSidebarProps {
12
12
  returnFlightMetaData?: any;
13
13
  basePrice?: number;
14
14
  commission?: number;
15
- showCommission?: boolean;
16
15
  totalPrice?: number;
17
16
  remainingAmountText?: string;
18
17
  includedCosts?: any[];
@@ -30,7 +29,6 @@ interface SharedSidebarProps {
30
29
  seperateExtraPricePerPaxType?: PricePerPaxType[];
31
30
  translations: any;
32
31
  agent?: number;
33
- currencyCode?: string;
34
32
  }
35
33
  declare const SharedSidebar: React.FC<SharedSidebarProps>;
36
34
  export default SharedSidebar;
@@ -1,2 +1,2 @@
1
- export declare const renderEditablePackagingEntrySummaryOptions: (editablePackagingEntry: any, priceDetails: any, translations: any, currencyCode?: string) => any;
1
+ export declare const renderEditablePackagingEntrySummaryOptions: (editablePackagingEntry: any, priceDetails: any, translations: any) => any;
2
2
  export declare const getImageSrcFromHtml: (html?: string | null) => string | undefined;
@@ -21325,7 +21325,7 @@ const SidebarFlight = ({ title, flightMetaData, translations }) => {
21325
21325
  React__default.createElement("div", { className: "pricing-summary__value" }, translations.SIDEBAR.LUGGAGE_INCLUDED)))));
21326
21326
  };
21327
21327
 
21328
- const SharedSidebar = ({ productName, thumbnailUrl, isLoading, translations, headerComponent, travelerRooms, startDateText, endDateText, loaderComponent, departureFlightMetaData, returnFlightMetaData, accommodations, packagingAccommodations, isOnRequest, includedServiceTypes, basePrice, commission, showCommission, totalPrice, includedCosts, extraCosts, deposit, basePricePerPaxType, seperateExtraPricePerPaxType, isUnavailable, agent, footerComponent, currencyCode = 'EUR' }) => {
21328
+ const SharedSidebar = ({ productName, thumbnailUrl, isLoading, translations, headerComponent, travelerRooms, startDateText, endDateText, loaderComponent, departureFlightMetaData, returnFlightMetaData, accommodations, packagingAccommodations, isOnRequest, includedServiceTypes, basePrice, commission, totalPrice, includedCosts, extraCosts, deposit, basePricePerPaxType, seperateExtraPricePerPaxType, isUnavailable, agent, footerComponent }) => {
21329
21329
  if (!translations)
21330
21330
  return null;
21331
21331
  const [active, setActive] = useState(false);
@@ -21336,6 +21336,8 @@ const SharedSidebar = ({ productName, thumbnailUrl, isLoading, translations, hea
21336
21336
  const canShowPriceBreakdownSection = Boolean(basePrice && basePrice > 0) || !isEmpty$1(includedCosts) || !isEmpty$1(extraCosts);
21337
21337
  const canShowTotalPriceSection = Boolean(totalPrice && totalPrice > 0);
21338
21338
  const remainingAmount = Number(((totalPrice ?? 0) - (deposit ?? 0)).toFixed(2));
21339
+ // TODO: Determine currency code based on the data, for now default to EUR
21340
+ let currencyCode = 'EUR';
21339
21341
  return (React__default.createElement("div", { className: buildClassName(['booking__sidebar', active && 'booking__sidebar--active']) },
21340
21342
  headerComponent,
21341
21343
  React__default.createElement("div", { className: "booking__sidebar-frame" },
@@ -21465,7 +21467,7 @@ const SharedSidebar = ({ productName, thumbnailUrl, isLoading, translations, hea
21465
21467
  translations.SIDEBAR.DEPOSIT_TEXT4,
21466
21468
  React__default.createElement("strong", null, translations.SIDEBAR.DEPOSIT_TEXT5),
21467
21469
  translations.SIDEBAR.DEPOSIT_TEXT6))))) : (React__default.createElement("div", { className: "pricing-summary__group" },
21468
- (agent && showCommission) && (React__default.createElement("div", { className: "pricing-summary__row pricing-summary__row--total-price" },
21470
+ agent && (React__default.createElement("div", { className: "pricing-summary__row pricing-summary__row--total-price" },
21469
21471
  React__default.createElement("div", { className: "pricing-summary__property" },
21470
21472
  React__default.createElement("h6", { className: "pricing-summary__title" }, translations.SIDEBAR.COMMISSION)),
21471
21473
  React__default.createElement("div", { className: "pricing-summary__value" },
@@ -21481,7 +21483,7 @@ const SharedSidebar = ({ productName, thumbnailUrl, isLoading, translations, hea
21481
21483
  };
21482
21484
 
21483
21485
  const SidebarContainer = ({ productName, thumbnailUrl }) => {
21484
- const { sidebarHeaderComponent, sidebarFooterComponent, loaderComponent, showPricesPerPaxType, maxChildAge, showCommission } = useContext(SettingsContext);
21486
+ const { sidebarHeaderComponent, sidebarFooterComponent, loaderComponent, showPricesPerPaxType, maxChildAge } = useContext(SettingsContext);
21485
21487
  const bookingAttributes = useSelector(selectBookingAttributes);
21486
21488
  const selectFormRooms = useMemo(() => makeSelectFormRooms(maxChildAge), [maxChildAge]);
21487
21489
  const rooms = useSelector(selectFormRooms);
@@ -21498,7 +21500,7 @@ const SidebarContainer = ({ productName, thumbnailUrl }) => {
21498
21500
  const isUnavailable = useSelector(selectIsUnavailable) || false;
21499
21501
  const isLoading = isFetchingProductOptions || isFetchingPriceDetails;
21500
21502
  const agent = useSelector(selectAgentAdressId);
21501
- return (React__default.createElement(SharedSidebar, { productName: productName, thumbnailUrl: thumbnailUrl, isLoading: isLoading, startDateText: getDateText(bookingAttributes?.startDate), endDateText: bookingAttributes?.startDate !== bookingAttributes?.endDate ? getDateText(bookingAttributes?.endDate) : undefined, travelerRooms: travelerRooms, departureFlightMetaData: departureFlightMetaData, returnFlightMetaData: returnFlightMetaData, basePrice: useSelector(selectBasePrice), commission: useSelector(selectCommission), showCommission: showCommission, totalPrice: useSelector(selectTotalPrice), includedCosts: useSelector(selectSeparatePackagePriceDetails$1), extraCosts: useSelector(selectSeparateExtraPriceDetails), accommodations: accommodations, includedServiceTypes: includedServiceTypes, deposit: useSelector(selectDeposit), isOnRequest: useSelector(selectIsOnRequest), headerComponent: sidebarHeaderComponent ?? undefined, footerComponent: sidebarFooterComponent ?? undefined, loaderComponent: loaderComponent ?? undefined, isUnavailable: isUnavailable, basePricePerPaxType: showPricesPerPaxType ? useSelector(selectBasePricePerPaxType) : undefined, seperateExtraPricePerPaxType: showPricesPerPaxType ? useSelector(selectSeparateExtraPriceDetailsPerPaxType) : undefined, translations: translations, agent: agent, currencyCode: useSelector(selectCurrencyCode) }));
21503
+ return (React__default.createElement(SharedSidebar, { productName: productName, thumbnailUrl: thumbnailUrl, isLoading: isLoading, startDateText: getDateText(bookingAttributes?.startDate), endDateText: bookingAttributes?.startDate !== bookingAttributes?.endDate ? getDateText(bookingAttributes?.endDate) : undefined, travelerRooms: travelerRooms, departureFlightMetaData: departureFlightMetaData, returnFlightMetaData: returnFlightMetaData, basePrice: useSelector(selectBasePrice), commission: useSelector(selectCommission), totalPrice: useSelector(selectTotalPrice), includedCosts: useSelector(selectSeparatePackagePriceDetails$1), extraCosts: useSelector(selectSeparateExtraPriceDetails), accommodations: accommodations, includedServiceTypes: includedServiceTypes, deposit: useSelector(selectDeposit), isOnRequest: useSelector(selectIsOnRequest), headerComponent: sidebarHeaderComponent ?? undefined, footerComponent: sidebarFooterComponent ?? undefined, loaderComponent: loaderComponent ?? undefined, isUnavailable: isUnavailable, basePricePerPaxType: showPricesPerPaxType ? useSelector(selectBasePricePerPaxType) : undefined, seperateExtraPricePerPaxType: showPricesPerPaxType ? useSelector(selectSeparateExtraPriceDetailsPerPaxType) : undefined, translations: translations, agent: agent }));
21502
21504
  };
21503
21505
 
21504
21506
  const SummaryPerPaxOptionGroup = ({ group }) => {
@@ -21680,7 +21682,7 @@ const Summary = () => {
21680
21682
  }
21681
21683
  else {
21682
21684
  const location = window.location;
21683
- bookRequest.payload.redirectUrl = `${location.protocol}//${location.host}${settings.basePath ?? location.pathname}?${bookingQueryString}`;
21685
+ bookRequest.payload.redirectUrl = `${location.protocol}//${location.host}${settings.basePath}?${bookingQueryString}`;
21684
21686
  }
21685
21687
  }
21686
21688
  }
@@ -22611,12 +22613,7 @@ const TravelersForm = () => {
22611
22613
  navigate(`${!settings.skipBasePathInRouting ? settings.basePath : ''}${settings.summary.pathSuffix}?${bookingQueryString}`);
22612
22614
  return;
22613
22615
  }
22614
- if (travelersFirstStep) {
22615
- dispatch(fetchPackage());
22616
- }
22617
- else {
22618
- dispatch(fetchPriceDetails());
22619
- }
22616
+ dispatch(fetchPackage());
22620
22617
  if (settings.skipRouter)
22621
22618
  dispatch(setCurrentStep$1(travelersFirstStep ? FLIGHT_OPTIONS_FORM_STEP : SUMMARY_STEP));
22622
22619
  else
@@ -22627,8 +22624,6 @@ const TravelersForm = () => {
22627
22624
  dispatch(fetchPriceDetails());
22628
22625
  }, [dispatch]);
22629
22626
  useEffect(() => {
22630
- if (!travelersFirstStep)
22631
- return;
22632
22627
  if (!bookingAttributes?.rooms?.length)
22633
22628
  return;
22634
22629
  if (!hasMounted) {
@@ -22653,7 +22648,7 @@ const TravelersForm = () => {
22653
22648
  }
22654
22649
  };
22655
22650
  fetchAll();
22656
- }, [bookingAttributes?.rooms, dispatch, hasMounted, travelersFirstStep]);
22651
+ }, [bookingAttributes?.rooms, dispatch, hasMounted]);
22657
22652
  const roomsQuery = useMemo(() => formik.values.rooms
22658
22653
  .map((room) => {
22659
22654
  const adults = room.adults ? room.adults.length : 0;
@@ -31019,10 +31014,10 @@ const findAccommodationForDay = (nodes, currentDay) => {
31019
31014
  };
31020
31015
  const buildItineraryHtml = (itinerary, translations) => {
31021
31016
  if (!itinerary) {
31022
- return `
31023
- <div class="itinerary-shell">
31024
- <div class="itinerary-empty">Geen reisroute beschikbaar.</div>
31025
- </div>
31017
+ return `
31018
+ <div class="itinerary-shell">
31019
+ <div class="itinerary-empty">Geen reisroute beschikbaar.</div>
31020
+ </div>
31026
31021
  `;
31027
31022
  }
31028
31023
  const allNodes = itinerary.nodes ?? [];
@@ -31036,66 +31031,66 @@ const buildItineraryHtml = (itinerary, translations) => {
31036
31031
  const hasAccommodationInCurrentNode = uniqueItems.some(isAccommodationItem);
31037
31032
  const activeAccommodation = findAccommodationForDay(allNodes, startDay);
31038
31033
  const accommodationBanner = !hasAccommodationInCurrentNode && activeAccommodation
31039
- ? `
31040
- <div class="itinerary-node__accommodation-banner">
31041
- Accommodatie voor deze dag: <strong>${escapeHtml(getAccommodationName(activeAccommodation))}</strong>
31042
- </div>
31034
+ ? `
31035
+ <div class="itinerary-node__accommodation-banner">
31036
+ Accommodatie voor deze dag: <strong>${escapeHtml(getAccommodationName(activeAccommodation))}</strong>
31037
+ </div>
31043
31038
  `
31044
31039
  : '';
31045
31040
  const itemsHtml = hasItems
31046
31041
  ? uniqueItems
31047
- .map((item) => `
31048
- <article class="itinerary-item" data-template="${escapeHtml(item.templateName)}">
31049
- ${item.contents ?? ''}
31050
- </article>
31042
+ .map((item) => `
31043
+ <article class="itinerary-item" data-template="${escapeHtml(item.templateName)}">
31044
+ ${item.contents ?? ''}
31045
+ </article>
31051
31046
  `)
31052
31047
  .join('')
31053
31048
  : `<div class="itinerary-node__empty">${translations.ITINERARY.NO_ITEMS}</div>`;
31054
- return `
31055
- <section class="itinerary-node">
31056
- <header class="itinerary-node__header">
31057
-
31058
- <div class="itinerary-node__day">
31059
- <p class="itinerary-node__day-day">${day}</p>
31060
- <p class="itinerary-node__day-month">${month}</p>
31061
- </div>
31062
-
31063
- <div>
31064
- <h2 class="itinerary-node__title">${escapeHtml(node.title)}</h2>
31065
- </div>
31066
- </header>
31067
-
31068
- <div class="itinerary-node__content">
31069
- ${accommodationBanner}
31070
- ${itemsHtml}
31071
- </div>
31072
- </section>
31049
+ return `
31050
+ <section class="itinerary-node">
31051
+ <header class="itinerary-node__header">
31052
+
31053
+ <div class="itinerary-node__day">
31054
+ <p class="itinerary-node__day-day">${day}</p>
31055
+ <p class="itinerary-node__day-month">${month}</p>
31056
+ </div>
31057
+
31058
+ <div>
31059
+ <h2 class="itinerary-node__title">${escapeHtml(node.title)}</h2>
31060
+ </div>
31061
+ </header>
31062
+
31063
+ <div class="itinerary-node__content">
31064
+ ${accommodationBanner}
31065
+ ${itemsHtml}
31066
+ </div>
31067
+ </section>
31073
31068
  `;
31074
31069
  })
31075
31070
  .join('');
31076
31071
  const defaultItemsHtml = itinerary.defaultItems && itinerary.defaultItems.length > 0
31077
- ? `
31078
- <section class="itinerary-default-items">
31079
- <h2 class="itinerary-default-items__title">Algemene info</h2>
31072
+ ? `
31073
+ <section class="itinerary-default-items">
31074
+ <h2 class="itinerary-default-items__title">Algemene info</h2>
31080
31075
  ${getUniqueItems(itinerary.defaultItems)
31081
- .map((item) => `
31082
- <article class="itinerary-item" data-template="${escapeHtml(item.templateName)}">
31083
- ${item.contents ?? ''}
31084
- </article>
31076
+ .map((item) => `
31077
+ <article class="itinerary-item" data-template="${escapeHtml(item.templateName)}">
31078
+ ${item.contents ?? ''}
31079
+ </article>
31085
31080
  `)
31086
- .join('')}
31087
- </section>
31081
+ .join('')}
31082
+ </section>
31088
31083
  `
31089
31084
  : '';
31090
- return `
31091
- <div class="itinerary-shell">
31092
- ${itinerary.title ? `<header class="itinerary-shell__header"><h1 class="itinerary-shell__title">${escapeHtml(itinerary.title)}</h1></header>` : ''}
31093
-
31094
- <div class="itinerary-shell__content">
31095
- ${nodesHtml}
31096
- ${defaultItemsHtml}
31097
- </div>
31098
- </div>
31085
+ return `
31086
+ <div class="itinerary-shell">
31087
+ ${itinerary.title ? `<header class="itinerary-shell__header"><h1 class="itinerary-shell__title">${escapeHtml(itinerary.title)}</h1></header>` : ''}
31088
+
31089
+ <div class="itinerary-shell__content">
31090
+ ${nodesHtml}
31091
+ ${defaultItemsHtml}
31092
+ </div>
31093
+ </div>
31099
31094
  `;
31100
31095
  };
31101
31096
  const FullItinerary = ({ isLoading }) => {
@@ -31115,141 +31110,141 @@ const FullItinerary = ({ isLoading }) => {
31115
31110
  }
31116
31111
  const shadowRoot = host.shadowRoot ?? host.attachShadow({ mode: 'open' });
31117
31112
  shadowRootRef.current = shadowRoot;
31118
- shadowRoot.innerHTML = `
31119
- <style>
31120
- :host {
31121
- all: initial;
31122
- display: block;
31123
- width: 100%;
31124
- }
31125
-
31126
- *,
31127
- *::before,
31128
- *::after {
31129
- box-sizing: border-box;
31130
- }
31131
-
31132
- .itinerary-shell {
31133
- width: 100%;
31134
- margin: 0 auto;
31135
- font-family: 'Outfit', sans-serif;
31136
- color: #222;
31137
- }
31138
-
31139
- .itinerary-shell__header {
31140
- margin-bottom: 24px;
31141
- }
31142
-
31143
- .itinerary-shell__title {
31144
- margin: 0;
31145
- font-size: 32px;
31146
- line-height: 1.2;
31147
- }
31148
-
31149
- .itinerary-shell__content {
31150
- display: grid;
31151
- gap: 24px;
31152
- }
31153
-
31154
- .itinerary-node {
31155
- border: 1px solid #e5e7eb;
31156
- border-radius: 16px;
31157
- overflow: hidden;
31158
- background: #fff;
31159
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
31160
- }
31161
-
31162
- .itinerary-node__header {
31163
- display: flex;
31164
- gap: 16px;
31165
- align-items: center;
31166
- border-bottom: 1px solid #eef0f2;
31167
- background: #fafafa;
31168
- }
31169
-
31170
- .itinerary-node__day {
31171
- flex: 50px 0 0;
31172
- display: flex;
31173
- flex-flow: column;
31174
- align-items: center;
31175
- justify-content: center;
31176
- background: #1f9470;
31177
- color: white;
31178
- border: 1.5px solid var(--tide-booking-color-secondary);
31179
- }
31180
-
31181
- .itinerary-node__day-month {
31182
- margin: 0px;
31183
- }
31184
-
31185
- .itinerary-node__day-day {
31186
- margin: 0px;
31187
- font-weight: var(--tide-booking-search-results-label-date-month-font-weight);
31188
- color: var(--tide-booking-search-results-label-date-month-color);
31189
- font-size: 24px;
31190
- }
31191
-
31192
- .itinerary-node__title {
31193
- margin: 0;
31194
- font-size: 22px;
31195
- line-height: 1.25;
31196
- }
31197
-
31198
- .itinerary-node__content {
31199
- display: grid;
31200
- gap: 20px;
31201
- padding: 20px;
31202
- }
31203
-
31204
- .itinerary-node__accommodation-banner {
31205
- padding: 12px 16px;
31206
- border: 1px solid #dbeafe;
31207
- border-radius: 12px;
31208
- background: #eff6ff;
31209
- color: #1e3a8a;
31210
- font-size: 14px;
31211
- line-height: 1.4;
31212
- }
31213
-
31214
- .itinerary-item {
31215
- display: block;
31216
- border-radius: 12px;
31217
- overflow: hidden;
31218
- background: #fff;
31219
- }
31220
-
31221
- .itinerary-node__empty,
31222
- .itinerary-empty {
31223
- padding: 20px;
31224
- border: 1px dashed #d1d5db;
31225
- border-radius: 12px;
31226
- color: #6b7280;
31227
- background: #fafafa;
31228
- }
31229
-
31230
- .itinerary-default-items {
31231
- border: 1px solid #e5e7eb;
31232
- border-radius: 16px;
31233
- padding: 20px;
31234
- background: #fff;
31235
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
31236
- }
31237
-
31238
- .itinerary-default-items__title {
31239
- margin: 0 0 16px;
31240
- font-size: 22px;
31241
- }
31242
-
31243
- @media (max-width: 768px) {
31244
- .itinerary-shell {
31245
- padding: 16px;
31246
- }
31247
- }
31248
-
31249
- ${itinerary?.styleSheetBody ?? ''}
31250
- </style>
31251
-
31252
- ${html}
31113
+ shadowRoot.innerHTML = `
31114
+ <style>
31115
+ :host {
31116
+ all: initial;
31117
+ display: block;
31118
+ width: 100%;
31119
+ }
31120
+
31121
+ *,
31122
+ *::before,
31123
+ *::after {
31124
+ box-sizing: border-box;
31125
+ }
31126
+
31127
+ .itinerary-shell {
31128
+ width: 100%;
31129
+ margin: 0 auto;
31130
+ font-family: 'Outfit', sans-serif;
31131
+ color: #222;
31132
+ }
31133
+
31134
+ .itinerary-shell__header {
31135
+ margin-bottom: 24px;
31136
+ }
31137
+
31138
+ .itinerary-shell__title {
31139
+ margin: 0;
31140
+ font-size: 32px;
31141
+ line-height: 1.2;
31142
+ }
31143
+
31144
+ .itinerary-shell__content {
31145
+ display: grid;
31146
+ gap: 24px;
31147
+ }
31148
+
31149
+ .itinerary-node {
31150
+ border: 1px solid #e5e7eb;
31151
+ border-radius: 16px;
31152
+ overflow: hidden;
31153
+ background: #fff;
31154
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
31155
+ }
31156
+
31157
+ .itinerary-node__header {
31158
+ display: flex;
31159
+ gap: 16px;
31160
+ align-items: center;
31161
+ border-bottom: 1px solid #eef0f2;
31162
+ background: #fafafa;
31163
+ }
31164
+
31165
+ .itinerary-node__day {
31166
+ flex: 50px 0 0;
31167
+ display: flex;
31168
+ flex-flow: column;
31169
+ align-items: center;
31170
+ justify-content: center;
31171
+ background: #1f9470;
31172
+ color: white;
31173
+ border: 1.5px solid var(--tide-booking-color-secondary);
31174
+ }
31175
+
31176
+ .itinerary-node__day-month {
31177
+ margin: 0px;
31178
+ }
31179
+
31180
+ .itinerary-node__day-day {
31181
+ margin: 0px;
31182
+ font-weight: var(--tide-booking-search-results-label-date-month-font-weight);
31183
+ color: var(--tide-booking-search-results-label-date-month-color);
31184
+ font-size: 24px;
31185
+ }
31186
+
31187
+ .itinerary-node__title {
31188
+ margin: 0;
31189
+ font-size: 22px;
31190
+ line-height: 1.25;
31191
+ }
31192
+
31193
+ .itinerary-node__content {
31194
+ display: grid;
31195
+ gap: 20px;
31196
+ padding: 20px;
31197
+ }
31198
+
31199
+ .itinerary-node__accommodation-banner {
31200
+ padding: 12px 16px;
31201
+ border: 1px solid #dbeafe;
31202
+ border-radius: 12px;
31203
+ background: #eff6ff;
31204
+ color: #1e3a8a;
31205
+ font-size: 14px;
31206
+ line-height: 1.4;
31207
+ }
31208
+
31209
+ .itinerary-item {
31210
+ display: block;
31211
+ border-radius: 12px;
31212
+ overflow: hidden;
31213
+ background: #fff;
31214
+ }
31215
+
31216
+ .itinerary-node__empty,
31217
+ .itinerary-empty {
31218
+ padding: 20px;
31219
+ border: 1px dashed #d1d5db;
31220
+ border-radius: 12px;
31221
+ color: #6b7280;
31222
+ background: #fafafa;
31223
+ }
31224
+
31225
+ .itinerary-default-items {
31226
+ border: 1px solid #e5e7eb;
31227
+ border-radius: 16px;
31228
+ padding: 20px;
31229
+ background: #fff;
31230
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
31231
+ }
31232
+
31233
+ .itinerary-default-items__title {
31234
+ margin: 0 0 16px;
31235
+ font-size: 22px;
31236
+ }
31237
+
31238
+ @media (max-width: 768px) {
31239
+ .itinerary-shell {
31240
+ padding: 16px;
31241
+ }
31242
+ }
31243
+
31244
+ ${itinerary?.styleSheetBody ?? ''}
31245
+ </style>
31246
+
31247
+ ${html}
31253
31248
  `;
31254
31249
  }, [html, itinerary?.styleSheetBody, isLoading]);
31255
31250
  return (React__default.createElement(React__default.Fragment, null,
@@ -31353,7 +31348,7 @@ const DayByDayExcursions = () => {
31353
31348
  })));
31354
31349
  };
31355
31350
 
31356
- const renderEditablePackagingEntrySummaryOptions = (editablePackagingEntry, priceDetails, translations, currencyCode) => {
31351
+ const renderEditablePackagingEntrySummaryOptions = (editablePackagingEntry, priceDetails, translations) => {
31357
31352
  const priceDetailsByProduct = groupBy(priceDetails?.details ?? [], (detail) => `${detail.productCode}|${detail.accommodationCode}`);
31358
31353
  return (editablePackagingEntry?.lines ?? []).map((line) => {
31359
31354
  const groupedPriceDetails = priceDetailsByProduct[`${line.productCode}|${line.accommodationCode}`] ?? [];
@@ -31377,7 +31372,7 @@ const renderEditablePackagingEntrySummaryOptions = (editablePackagingEntry, pric
31377
31372
  visiblePriceDetails.map((detail, index) => (React__default.createElement("li", { className: "list__item", key: `${line.guid}-price-${index}` },
31378
31373
  detail.priceDescription,
31379
31374
  ": ",
31380
- detail.total !== undefined && detail.total !== null ? formatPrice$3(detail.total, currencyCode ?? 'EUR') : '')))),
31375
+ detail.total?.toLocaleString(undefined, { style: 'currency', currency: 'EUR' }))))),
31381
31376
  React__default.createElement("p", null,
31382
31377
  "(",
31383
31378
  line.from === line.to ? (getDateText(line.from)) : (React__default.createElement(React__default.Fragment, null,
@@ -31497,7 +31492,7 @@ const WLSidebar = ({ activeSearchSeed, packagingAccoResult }) => {
31497
31492
  const separateExtraPriceDetails = priceDetails?.details.filter((pd) => !pd.isInPackage && pd.isSeparate) ?? [];
31498
31493
  const totalPrice = sum([basePrice, ...separateExtraPriceDetails.map((priceDetail) => priceDetail.price * priceDetail.amount)]);
31499
31494
  const includedCosts = selectSeparatePackagePriceDetails(priceDetails?.details.filter((pd) => pd.isInPackage) ?? []);
31500
- return (React__default.createElement(SharedSidebar, { productName: location ?? '', thumbnailUrl: accoImage ?? context.destinationImage?.url, translations: translations, travelerRooms: travelerRooms, startDateText: first(sortedLines)?.from && formatDate(new Date(first(sortedLines).from)), endDateText: last(sortedLines)?.to && formatDate(new Date(last(sortedLines).to)), isLoading: !editablePackagingEntry || !priceDetails, loaderComponent: React__default.createElement(Spinner, null), departureFlightMetaData: outboundFlightMetaData, returnFlightMetaData: returnFlightMetaData, includedServiceTypes: editablePackagingEntry.lines.map((line) => line.serviceType), packagingAccommodations: accommodationLines, basePrice: basePrice, commission: priceDetails?.commission, totalPrice: totalPrice, includedCosts: includedCosts, extraCosts: separateExtraPriceDetails, deposit: priceDetails?.deposit, isUnavailable: false, agent: context.agentId, currencyCode: packagingAccoResult?.currencyCode }));
31495
+ return (React__default.createElement(SharedSidebar, { productName: location ?? '', thumbnailUrl: accoImage ?? context.destinationImage?.url, translations: translations, travelerRooms: travelerRooms, startDateText: first(sortedLines)?.from && formatDate(new Date(first(sortedLines).from)), endDateText: last(sortedLines)?.to && formatDate(new Date(last(sortedLines).to)), isLoading: !editablePackagingEntry || !priceDetails, loaderComponent: React__default.createElement(Spinner, null), departureFlightMetaData: outboundFlightMetaData, returnFlightMetaData: returnFlightMetaData, includedServiceTypes: editablePackagingEntry.lines.map((line) => line.serviceType), packagingAccommodations: accommodationLines, basePrice: basePrice, commission: priceDetails?.commission, totalPrice: totalPrice, includedCosts: includedCosts, extraCosts: separateExtraPriceDetails, deposit: priceDetails?.deposit, isUnavailable: false, agent: context.agentId }));
31501
31496
  };
31502
31497
 
31503
31498
  const formatBirthDate = (birthDate) => {
@@ -31791,7 +31786,7 @@ const BookPackagingEntry = ({ activeSearchSeed, isLoading, isConfirmationPage })
31791
31786
  stepLabels[step])) },
31792
31787
  isConfirmationPage && isLoading && React__default.createElement(Spinner, { label: translations.SUMMARY.PROCESS_BOOKING }),
31793
31788
  currentStep === 0 && (React__default.createElement(SharedTravelersForm, { formik: formik, translations: translations, travellersSettings: travellersSettings, countries: countries, travelersFirstStep: false, isUnavailable: false, useCompactForm: false, showAgentSelection: false })),
31794
- currentStep === 1 && (React__default.createElement(SharedSummary, { translations: translations, travelerFormValues: formik.values, isSubmitting: isSubmitting, skipPayment: !context.generatePaymentUrl, userValidated: userValidated, remarks: remarks, enableVoucher: false, allowOption: false, isOffer: false, onUserValidatedChange: setUserValidated, onRemarksChange: setRemarks, onSubmit: handleSummarySubmit, renderOptions: () => renderEditablePackagingEntrySummaryOptions(editablePackagingEntry, priceDetails, translations, selectedPackagingAccoResult?.currencyCode), renderPreviousButton: () => (React__default.createElement("button", { type: "button", title: translations.STEPS.PREVIOUS, onClick: () => dispatch(setCurrentStep(0)), className: "cta cta--secondary" }, translations.STEPS.PREVIOUS)) })),
31789
+ currentStep === 1 && (React__default.createElement(SharedSummary, { translations: translations, travelerFormValues: formik.values, isSubmitting: isSubmitting, skipPayment: !context.generatePaymentUrl, userValidated: userValidated, remarks: remarks, enableVoucher: false, allowOption: false, isOffer: false, onUserValidatedChange: setUserValidated, onRemarksChange: setRemarks, onSubmit: handleSummarySubmit, renderOptions: () => renderEditablePackagingEntrySummaryOptions(editablePackagingEntry, priceDetails), renderPreviousButton: () => (React__default.createElement("button", { type: "button", title: translations.STEPS.PREVIOUS, onClick: () => dispatch(setCurrentStep(0)), className: "cta cta--secondary" }, translations.STEPS.PREVIOUS)) })),
31795
31790
  currentStep === 2 && (React__default.createElement(SharedConfirmation, { bookingNumber: bookingNumber ?? editablePackagingEntry?.dossierNumber ?? '', isOption: false, isOffer: false, translations: translations.CONFIRMATION })),
31796
31791
  currentStep === 3 && React__default.createElement("div", null))),
31797
31792
  React__default.createElement("div", { className: "backdrop", id: "backdrop" }),
@@ -35944,20 +35939,20 @@ function ItineraryMapView({ destinations: propDestinations, adults = 2, dateFrom
35944
35939
  const isStartEnd = dest.isStart || dest.isEnd;
35945
35940
  let iconHtml;
35946
35941
  if (isStartEnd) {
35947
- iconHtml = `
35948
- <div class="map-view__marker map-view__marker--plane">
35949
- <svg viewBox="0 0 576 512" fill="currentColor" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
35950
- <path d="M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10.1-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.3-15.8-20.6l49-196.3L112 288 68.8 377.6c-3 6.1-9.2 10.4-16 10.4l-2.8 0c-9.2 0-16-8.8-13.3-17.6L80 256L36.7 141.6C34 132.8 40.8 124 50 124l2.8 0c6.8 0 13 4.3 16 10.4L112 224l102.9 0-49-196.3C163.5 17.3 171.2 7 181.8 7l56.2 0c11.5 0 22.1 6 27.8 16.1L365.7 192l116.6 0z"/>
35951
- </svg>
35942
+ iconHtml = `
35943
+ <div class="map-view__marker map-view__marker--plane">
35944
+ <svg viewBox="0 0 576 512" fill="currentColor" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
35945
+ <path d="M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10.1-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.3-15.8-20.6l49-196.3L112 288 68.8 377.6c-3 6.1-9.2 10.4-16 10.4l-2.8 0c-9.2 0-16-8.8-13.3-17.6L80 256L36.7 141.6C34 132.8 40.8 124 50 124l2.8 0c6.8 0 13 4.3 16 10.4L112 224l102.9 0-49-196.3C163.5 17.3 171.2 7 181.8 7l56.2 0c11.5 0 22.1 6 27.8 16.1L365.7 192l116.6 0z"/>
35946
+ </svg>
35952
35947
  </div>`;
35953
35948
  }
35954
35949
  else {
35955
35950
  stopIndex++;
35956
35951
  const imgStyle = dest.imageUrl ? `style="background-image:url('${dest.imageUrl}')"` : '';
35957
- iconHtml = `
35958
- <div class="map-view__marker map-view__marker--stop" ${imgStyle}>
35959
- ${!dest.imageUrl ? `<span class="map-view__marker-number">${stopIndex}</span>` : ''}
35960
- <span class="map-view__marker-badge">${stopIndex}</span>
35952
+ iconHtml = `
35953
+ <div class="map-view__marker map-view__marker--stop" ${imgStyle}>
35954
+ ${!dest.imageUrl ? `<span class="map-view__marker-number">${stopIndex}</span>` : ''}
35955
+ <span class="map-view__marker-badge">${stopIndex}</span>
35961
35956
  </div>`;
35962
35957
  }
35963
35958
  const icon = L.divIcon({
@@ -12,7 +12,6 @@ interface SharedSidebarProps {
12
12
  returnFlightMetaData?: any;
13
13
  basePrice?: number;
14
14
  commission?: number;
15
- showCommission?: boolean;
16
15
  totalPrice?: number;
17
16
  remainingAmountText?: string;
18
17
  includedCosts?: any[];
@@ -30,7 +29,6 @@ interface SharedSidebarProps {
30
29
  seperateExtraPricePerPaxType?: PricePerPaxType[];
31
30
  translations: any;
32
31
  agent?: number;
33
- currencyCode?: string;
34
32
  }
35
33
  declare const SharedSidebar: React.FC<SharedSidebarProps>;
36
34
  export default SharedSidebar;
@@ -1,2 +1,2 @@
1
- export declare const renderEditablePackagingEntrySummaryOptions: (editablePackagingEntry: any, priceDetails: any, translations: any, currencyCode?: string) => any;
1
+ export declare const renderEditablePackagingEntrySummaryOptions: (editablePackagingEntry: any, priceDetails: any, translations: any) => any;
2
2
  export declare const getImageSrcFromHtml: (html?: string | null) => string | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qite/tide-booking-component",
3
- "version": "1.4.128",
3
+ "version": "1.4.129",
4
4
  "description": "React Booking wizard & Booking product component for Tide",
5
5
  "main": "build/build-cjs/index.js",
6
6
  "types": "build/build-cjs/src/index.d.ts",