@qite/tide-booking-component 1.4.99 → 1.4.101
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.
- package/build/build-cjs/index.js +260 -48
- package/build/build-cjs/src/search-results/components/itinerary/full-itinerary.d.ts +6 -0
- package/build/build-cjs/src/search-results/store/search-results-slice.d.ts +13 -2
- package/build/build-esm/index.js +260 -48
- package/build/build-esm/src/search-results/components/itinerary/full-itinerary.d.ts +6 -0
- package/build/build-esm/src/search-results/store/search-results-slice.d.ts +13 -2
- package/package.json +2 -2
- package/src/search-results/components/itinerary/full-itinerary.tsx +266 -0
- package/src/search-results/components/itinerary/index.tsx +19 -12
- package/src/search-results/components/search-results-container/search-results-container.tsx +59 -15
- package/src/search-results/store/search-results-slice.ts +22 -3
package/build/build-cjs/index.js
CHANGED
|
@@ -12791,7 +12791,7 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
12791
12791
|
return ENDPOINT$8 + '/details/' + transactionId + '/alternate-flights';
|
|
12792
12792
|
};
|
|
12793
12793
|
var ENDPOINT_BOOKABLE_DATES = ENDPOINT$8 + '/bookable-dates';
|
|
12794
|
-
var ENDPOINT_PRICE_DETAILS = ENDPOINT$8 + '/price-details';
|
|
12794
|
+
var ENDPOINT_PRICE_DETAILS$1 = ENDPOINT$8 + '/price-details';
|
|
12795
12795
|
var ENDPOINT_BOOK = ENDPOINT$8 + '/book';
|
|
12796
12796
|
var ENDPOINT_UPDATE = ENDPOINT$8 + '/update';
|
|
12797
12797
|
var ENDPOINT_AGENTS = ENDPOINT$8 + '/agents';
|
|
@@ -12891,7 +12891,7 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
12891
12891
|
return post(url, apiKey, body, config.token, signal, true);
|
|
12892
12892
|
};
|
|
12893
12893
|
var priceDetails = function (config, request, signal, languageCode) {
|
|
12894
|
-
var url = '' + config.host + ENDPOINT_PRICE_DETAILS;
|
|
12894
|
+
var url = '' + config.host + ENDPOINT_PRICE_DETAILS$1;
|
|
12895
12895
|
var apiKey = config.apiKey;
|
|
12896
12896
|
var body = JSON.stringify(request);
|
|
12897
12897
|
return post(url, apiKey, body, config.token, signal, true, languageCode);
|
|
@@ -13417,10 +13417,11 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
13417
13417
|
var ENDPOINT = '/api/web/packaging';
|
|
13418
13418
|
var ENDPOINT_START_TRANSACTION = ENDPOINT + '/start';
|
|
13419
13419
|
var ENDPOINT_ACCOMMODATIONS = ENDPOINT + '/accommodations';
|
|
13420
|
+
var ENDPOINT_PRICE_DETAILS = ENDPOINT + '/price-details';
|
|
13421
|
+
var ENDPOINT_ITINERARY = ENDPOINT + '/itinerary';
|
|
13420
13422
|
var ENDPOINT_ENTRY = function (magicLinkCode) {
|
|
13421
13423
|
return ENDPOINT + '/entry/' + magicLinkCode;
|
|
13422
13424
|
};
|
|
13423
|
-
// MANUAL PACKAGING SEARCH
|
|
13424
13425
|
var startTransaction = function (config, signal) {
|
|
13425
13426
|
var apiKey = config.apiKey;
|
|
13426
13427
|
var url = '' + config.host + ENDPOINT_START_TRANSACTION;
|
|
@@ -13437,6 +13438,18 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
13437
13438
|
var url = '' + config.host + ENDPOINT_ENTRY(magicLinkCode);
|
|
13438
13439
|
return get(url, apiKey, config.token, signal, true);
|
|
13439
13440
|
};
|
|
13441
|
+
var getPriceDetails = function (config, request, signal) {
|
|
13442
|
+
var url = '' + config.host + ENDPOINT_PRICE_DETAILS;
|
|
13443
|
+
var apiKey = config.apiKey;
|
|
13444
|
+
var body = JSON.stringify(request);
|
|
13445
|
+
return post(url, apiKey, body, config.token, signal, true);
|
|
13446
|
+
};
|
|
13447
|
+
var getItinerary = function (config, request, signal) {
|
|
13448
|
+
var url = '' + config.host + ENDPOINT_ITINERARY;
|
|
13449
|
+
var apiKey = config.apiKey;
|
|
13450
|
+
var body = JSON.stringify(request);
|
|
13451
|
+
return post(url, apiKey, body, config.token, signal, true);
|
|
13452
|
+
};
|
|
13440
13453
|
|
|
13441
13454
|
exports.AllotmentType = AllotmentType;
|
|
13442
13455
|
exports.ContactForm = ContactForm;
|
|
@@ -13489,9 +13502,11 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
13489
13502
|
exports.getEntryStatus = getEntryStatus;
|
|
13490
13503
|
exports.getEntryTotals = getEntryTotals;
|
|
13491
13504
|
exports.getInvoiceList = getInvoiceList;
|
|
13505
|
+
exports.getItinerary = getItinerary;
|
|
13492
13506
|
exports.getLocations = getLocations;
|
|
13493
13507
|
exports.getMolliePayment = getMolliePayment;
|
|
13494
13508
|
exports.getPortal = getPortal;
|
|
13509
|
+
exports.getPriceDetails = getPriceDetails;
|
|
13495
13510
|
exports.getPrintActions = getPrintActions;
|
|
13496
13511
|
exports.getStyleSheet = getStyleSheet;
|
|
13497
13512
|
exports.getTranslationDictionary = getTranslationDictionary;
|
|
@@ -33812,7 +33827,9 @@ var initialState$1 = {
|
|
|
33812
33827
|
flyInIsOpen: false,
|
|
33813
33828
|
editablePackagingEntry: null,
|
|
33814
33829
|
transactionId: null,
|
|
33815
|
-
accommodationFlyInStep: 'details'
|
|
33830
|
+
accommodationFlyInStep: 'details',
|
|
33831
|
+
priceDetails: null,
|
|
33832
|
+
itinerary: null
|
|
33816
33833
|
};
|
|
33817
33834
|
var searchResultsSlice = toolkit.createSlice({
|
|
33818
33835
|
name: 'searchResults',
|
|
@@ -33905,6 +33922,12 @@ var searchResultsSlice = toolkit.createSlice({
|
|
|
33905
33922
|
},
|
|
33906
33923
|
setAccommodationFlyInStep: function (state, action) {
|
|
33907
33924
|
state.accommodationFlyInStep = action.payload;
|
|
33925
|
+
},
|
|
33926
|
+
setPriceDetails: function (state, action) {
|
|
33927
|
+
state.priceDetails = action.payload;
|
|
33928
|
+
},
|
|
33929
|
+
setItinerary: function (state, action) {
|
|
33930
|
+
state.itinerary = action.payload;
|
|
33908
33931
|
}
|
|
33909
33932
|
}
|
|
33910
33933
|
});
|
|
@@ -33929,7 +33952,9 @@ _a.resetSearchState;
|
|
|
33929
33952
|
var setFlyInIsOpen = _a.setFlyInIsOpen,
|
|
33930
33953
|
setEditablePackagingEntry = _a.setEditablePackagingEntry,
|
|
33931
33954
|
setTransactionId = _a.setTransactionId,
|
|
33932
|
-
setAccommodationFlyInStep = _a.setAccommodationFlyInStep
|
|
33955
|
+
setAccommodationFlyInStep = _a.setAccommodationFlyInStep,
|
|
33956
|
+
setPriceDetails = _a.setPriceDetails,
|
|
33957
|
+
setItinerary = _a.setItinerary;
|
|
33933
33958
|
var searchResultsReducer = searchResultsSlice.reducer;
|
|
33934
33959
|
|
|
33935
33960
|
var ItemPicker = function (_a) {
|
|
@@ -35195,14 +35220,16 @@ var getSegmentTitle = function (segment) {
|
|
|
35195
35220
|
var Itinerary = function (_a) {
|
|
35196
35221
|
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
35197
35222
|
var isOpen = _a.isOpen,
|
|
35198
|
-
handleSetIsOpen = _a.handleSetIsOpen
|
|
35199
|
-
|
|
35200
|
-
|
|
35223
|
+
handleSetIsOpen = _a.handleSetIsOpen,
|
|
35224
|
+
isLoading = _a.isLoading,
|
|
35225
|
+
onEditAccommodation = _a.onEditAccommodation;
|
|
35201
35226
|
var context = React.useContext(SearchResultsConfigurationContext);
|
|
35202
35227
|
var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
|
|
35203
|
-
var
|
|
35204
|
-
|
|
35205
|
-
|
|
35228
|
+
var _q = reactRedux.useSelector(function (state) {
|
|
35229
|
+
return state.searchResults;
|
|
35230
|
+
}),
|
|
35231
|
+
editablePackagingEntry = _q.editablePackagingEntry,
|
|
35232
|
+
priceDetails = _q.priceDetails;
|
|
35206
35233
|
var packagingEntry =
|
|
35207
35234
|
editablePackagingEntry !== null && editablePackagingEntry !== void 0
|
|
35208
35235
|
? editablePackagingEntry
|
|
@@ -35290,7 +35317,7 @@ var Itinerary = function (_a) {
|
|
|
35290
35317
|
console.log('otherSegments', otherSegments);
|
|
35291
35318
|
console.log('groupedOtherSegments', groupedOtherSegments);
|
|
35292
35319
|
var numberOfPax = ((_p = packagingEntry.pax) === null || _p === void 0 ? void 0 : _p.length) || 1;
|
|
35293
|
-
var totalPrice = packagingEntry.price || 0;
|
|
35320
|
+
var totalPrice = (priceDetails === null || priceDetails === void 0 ? void 0 : priceDetails.total) || packagingEntry.price || 0;
|
|
35294
35321
|
var pricePerPerson = totalPrice / numberOfPax;
|
|
35295
35322
|
return React__default['default'].createElement(
|
|
35296
35323
|
'div',
|
|
@@ -35346,18 +35373,24 @@ var Itinerary = function (_a) {
|
|
|
35346
35373
|
React__default['default'].createElement(
|
|
35347
35374
|
'div',
|
|
35348
35375
|
{ className: 'search__filter__prices' },
|
|
35349
|
-
|
|
35350
|
-
'
|
|
35351
|
-
|
|
35352
|
-
|
|
35353
|
-
|
|
35354
|
-
|
|
35355
|
-
|
|
35356
|
-
|
|
35357
|
-
|
|
35358
|
-
|
|
35359
|
-
|
|
35360
|
-
|
|
35376
|
+
isLoading
|
|
35377
|
+
? React__default['default'].createElement(Spinner, null)
|
|
35378
|
+
: React__default['default'].createElement(
|
|
35379
|
+
React__default['default'].Fragment,
|
|
35380
|
+
null,
|
|
35381
|
+
React__default['default'].createElement(
|
|
35382
|
+
'div',
|
|
35383
|
+
{ className: 'search__filter__prices__wrapper' },
|
|
35384
|
+
React__default['default'].createElement('h3', { className: 'search__filter__prices--amount' }, formatPrice$2(pricePerPerson, 'EUR')),
|
|
35385
|
+
React__default['default'].createElement('p', null, translations.SRP.PACKAGE_PRICE_PER_PERSON),
|
|
35386
|
+
React__default['default'].createElement(
|
|
35387
|
+
'p',
|
|
35388
|
+
null,
|
|
35389
|
+
React__default['default'].createElement('strong', null, '(', formatPrice$2(totalPrice, 'EUR'), ' ', translations.SRP.TOTAL, ')')
|
|
35390
|
+
)
|
|
35391
|
+
),
|
|
35392
|
+
React__default['default'].createElement('button', { className: 'cta' }, translations.QSM.CONFIRM)
|
|
35393
|
+
)
|
|
35361
35394
|
),
|
|
35362
35395
|
React__default['default'].createElement(
|
|
35363
35396
|
'div',
|
|
@@ -47236,14 +47269,6 @@ var getSelectedOptionsPerRoom = function (details) {
|
|
|
47236
47269
|
};
|
|
47237
47270
|
});
|
|
47238
47271
|
};
|
|
47239
|
-
var getRoomIndexFromLine = function (line) {
|
|
47240
|
-
var _a, _b;
|
|
47241
|
-
if (!((_a = line.pax) === null || _a === void 0 ? void 0 : _a.length)) return 0;
|
|
47242
|
-
var firstPax = __spreadArray([], line.pax, true).sort(function (a, b) {
|
|
47243
|
-
return a.order - b.order;
|
|
47244
|
-
})[0];
|
|
47245
|
-
return (_b = firstPax === null || firstPax === void 0 ? void 0 : firstPax.room) !== null && _b !== void 0 ? _b : 0;
|
|
47246
|
-
};
|
|
47247
47272
|
var getRequestRoomsFromPackagingSegments = function (entry, segments) {
|
|
47248
47273
|
var _a;
|
|
47249
47274
|
var accommodationLines = __spreadArray([], segments !== null && segments !== void 0 ? segments : [], true)
|
|
@@ -47309,6 +47334,118 @@ var getRequestRoomsFromPackagingSegments = function (entry, segments) {
|
|
|
47309
47334
|
});
|
|
47310
47335
|
};
|
|
47311
47336
|
|
|
47337
|
+
var formatNodeDate = function (date) {
|
|
47338
|
+
if (!date) return '';
|
|
47339
|
+
try {
|
|
47340
|
+
return new Intl.DateTimeFormat('nl-BE', {
|
|
47341
|
+
weekday: 'long',
|
|
47342
|
+
day: '2-digit',
|
|
47343
|
+
month: '2-digit',
|
|
47344
|
+
year: 'numeric'
|
|
47345
|
+
}).format(date);
|
|
47346
|
+
} catch (_a) {
|
|
47347
|
+
return '';
|
|
47348
|
+
}
|
|
47349
|
+
};
|
|
47350
|
+
var escapeHtml = function (value) {
|
|
47351
|
+
if (!value) return '';
|
|
47352
|
+
return value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''');
|
|
47353
|
+
};
|
|
47354
|
+
var buildItineraryHtml = function (itinerary) {
|
|
47355
|
+
var _a;
|
|
47356
|
+
if (!itinerary) {
|
|
47357
|
+
return '\n <div class="itinerary-shell">\n <div class="itinerary-empty">Geen reisroute beschikbaar.</div>\n </div>\n ';
|
|
47358
|
+
}
|
|
47359
|
+
var nodesHtml = ((_a = itinerary.nodes) !== null && _a !== void 0 ? _a : [])
|
|
47360
|
+
.map(function (node) {
|
|
47361
|
+
var hasItems = Array.isArray(node.items) && node.items.length > 0;
|
|
47362
|
+
var itemsHtml = hasItems
|
|
47363
|
+
? node.items
|
|
47364
|
+
.map(function (item) {
|
|
47365
|
+
var _a;
|
|
47366
|
+
return '\n <article class="itinerary-item" data-template="'
|
|
47367
|
+
.concat(escapeHtml(item.templateName), '">\n ')
|
|
47368
|
+
.concat((_a = item.contents) !== null && _a !== void 0 ? _a : '', '\n </article>\n ');
|
|
47369
|
+
})
|
|
47370
|
+
.join('')
|
|
47371
|
+
: '<div class="itinerary-node__empty">Geen items voor deze dag.</div>';
|
|
47372
|
+
return '\n <section class="itinerary-node">\n <header class="itinerary-node__header">\n <div class="itinerary-node__day">Dag '
|
|
47373
|
+
.concat(node.startDay)
|
|
47374
|
+
.concat(
|
|
47375
|
+
node.endDay > node.startDay ? ' - '.concat(node.endDay) : '',
|
|
47376
|
+
'</div>\n <div class="itinerary-node__meta">\n <h2 class="itinerary-node__title">'
|
|
47377
|
+
)
|
|
47378
|
+
.concat(escapeHtml(node.title), '</h2>\n <div class="itinerary-node__date">')
|
|
47379
|
+
.concat(
|
|
47380
|
+
escapeHtml(formatNodeDate(node.startDate)),
|
|
47381
|
+
'</div>\n </div>\n </header>\n\n <div class="itinerary-node__content">\n '
|
|
47382
|
+
)
|
|
47383
|
+
.concat(itemsHtml, '\n </div>\n </section>\n ');
|
|
47384
|
+
})
|
|
47385
|
+
.join('');
|
|
47386
|
+
var defaultItemsHtml =
|
|
47387
|
+
itinerary.defaultItems && itinerary.defaultItems.length > 0
|
|
47388
|
+
? '\n <section class="itinerary-default-items">\n <h2 class="itinerary-default-items__title">Algemene info</h2>\n '.concat(
|
|
47389
|
+
itinerary.defaultItems
|
|
47390
|
+
.map(function (item) {
|
|
47391
|
+
var _a;
|
|
47392
|
+
return '\n <article class="itinerary-item" data-template="'
|
|
47393
|
+
.concat(escapeHtml(item.templateName), '">\n ')
|
|
47394
|
+
.concat((_a = item.contents) !== null && _a !== void 0 ? _a : '', '\n </article>\n ');
|
|
47395
|
+
})
|
|
47396
|
+
.join(''),
|
|
47397
|
+
'\n </section>\n '
|
|
47398
|
+
)
|
|
47399
|
+
: '';
|
|
47400
|
+
return '\n <div class="itinerary-shell">\n '
|
|
47401
|
+
.concat(
|
|
47402
|
+
itinerary.title
|
|
47403
|
+
? '<header class="itinerary-shell__header"><h1 class="itinerary-shell__title">'.concat(escapeHtml(itinerary.title), '</h1></header>')
|
|
47404
|
+
: '',
|
|
47405
|
+
'\n\n <div class="itinerary-shell__content">\n '
|
|
47406
|
+
)
|
|
47407
|
+
.concat(nodesHtml, '\n ')
|
|
47408
|
+
.concat(defaultItemsHtml, '\n </div>\n </div>\n ');
|
|
47409
|
+
};
|
|
47410
|
+
var FullItinerary = function (_a) {
|
|
47411
|
+
var isLoading = _a.isLoading;
|
|
47412
|
+
if (isLoading) {
|
|
47413
|
+
return React__default['default'].createElement(Spinner, null);
|
|
47414
|
+
}
|
|
47415
|
+
var itinerary = reactRedux.useSelector(function (state) {
|
|
47416
|
+
return state.searchResults;
|
|
47417
|
+
}).itinerary;
|
|
47418
|
+
var hostRef = React.useRef(null);
|
|
47419
|
+
var shadowRootRef = React.useRef(null);
|
|
47420
|
+
var html = React.useMemo(
|
|
47421
|
+
function () {
|
|
47422
|
+
return buildItineraryHtml(itinerary);
|
|
47423
|
+
},
|
|
47424
|
+
[itinerary]
|
|
47425
|
+
);
|
|
47426
|
+
React.useEffect(
|
|
47427
|
+
function () {
|
|
47428
|
+
var _a;
|
|
47429
|
+
if (!hostRef.current) {
|
|
47430
|
+
return;
|
|
47431
|
+
}
|
|
47432
|
+
if (!shadowRootRef.current) {
|
|
47433
|
+
shadowRootRef.current = hostRef.current.attachShadow({ mode: 'open' });
|
|
47434
|
+
}
|
|
47435
|
+
var shadowRoot = shadowRootRef.current;
|
|
47436
|
+
shadowRoot.innerHTML =
|
|
47437
|
+
"\n <style>\n :host {\n all: initial;\n }\n\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n .itinerary-shell {\n width: 100%;\n margin: 0 auto;\n font-family: 'Outfit', sans-serif;\n color: #222;\n }\n\n .itinerary-shell__header {\n margin-bottom: 24px;\n }\n\n .itinerary-shell__title {\n margin: 0;\n font-size: 32px;\n line-height: 1.2;\n }\n\n .itinerary-shell__content {\n display: grid;\n gap: 24px;\n }\n\n .itinerary-node {\n border: 1px solid #e5e7eb;\n border-radius: 16px;\n overflow: hidden;\n background: #fff;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);\n }\n\n .itinerary-node__header {\n display: flex;\n gap: 16px;\n align-items: flex-start;\n padding: 20px 20px 16px;\n border-bottom: 1px solid #eef0f2;\n background: #fafafa;\n }\n\n .itinerary-node__day {\n flex: 0 0 auto;\n min-width: 72px;\n padding: 8px 12px;\n border-radius: 999px;\n font-size: 14px;\n font-weight: 700;\n line-height: 1;\n background: #111827;\n color: #fff;\n text-align: center;\n }\n\n .itinerary-node__meta {\n min-width: 0;\n }\n\n .itinerary-node__title {\n margin: 0;\n font-size: 22px;\n line-height: 1.25;\n }\n\n .itinerary-node__date {\n margin-top: 6px;\n font-size: 14px;\n color: #6b7280;\n }\n\n .itinerary-node__content {\n display: grid;\n gap: 20px;\n padding: 20px;\n }\n\n .itinerary-item {\n display: block;\n border-radius: 12px;\n overflow: hidden;\n background: #fff;\n }\n\n .itinerary-node__empty,\n .itinerary-empty {\n padding: 20px;\n border: 1px dashed #d1d5db;\n border-radius: 12px;\n color: #6b7280;\n background: #fafafa;\n }\n\n .itinerary-default-items {\n border: 1px solid #e5e7eb;\n border-radius: 16px;\n padding: 20px;\n background: #fff;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);\n }\n\n .itinerary-default-items__title {\n margin: 0 0 16px;\n font-size: 22px;\n }\n\n @media (max-width: 768px) {\n .itinerary-shell {\n padding: 16px;\n }\n\n .itinerary-node__header {\n flex-direction: column;\n }\n\n .itinerary-node__day {\n min-width: auto;\n }\n }\n\n "
|
|
47438
|
+
.concat(
|
|
47439
|
+
(_a = itinerary === null || itinerary === void 0 ? void 0 : itinerary.styleSheetBody) !== null && _a !== void 0 ? _a : '',
|
|
47440
|
+
'\n </style>\n\n '
|
|
47441
|
+
)
|
|
47442
|
+
.concat(html, '\n ');
|
|
47443
|
+
},
|
|
47444
|
+
[html, itinerary === null || itinerary === void 0 ? void 0 : itinerary.styleSheetBody]
|
|
47445
|
+
);
|
|
47446
|
+
return React__default['default'].createElement('div', { ref: hostRef });
|
|
47447
|
+
};
|
|
47448
|
+
|
|
47312
47449
|
var SearchResultsContainer = function () {
|
|
47313
47450
|
var _a, _b;
|
|
47314
47451
|
var currentSearch = typeof window !== 'undefined' ? window.location.search : '';
|
|
@@ -47332,7 +47469,8 @@ var SearchResultsContainer = function () {
|
|
|
47332
47469
|
packagingAccoSearchDetails = _c.packagingAccoSearchDetails,
|
|
47333
47470
|
editablePackagingEntry = _c.editablePackagingEntry,
|
|
47334
47471
|
transactionId = _c.transactionId,
|
|
47335
|
-
accommodationFlyInStep = _c.accommodationFlyInStep
|
|
47472
|
+
accommodationFlyInStep = _c.accommodationFlyInStep,
|
|
47473
|
+
itinerary = _c.itinerary;
|
|
47336
47474
|
var isMobile = useMediaQuery('(max-width: 1200px)');
|
|
47337
47475
|
var _d = React.useState(false),
|
|
47338
47476
|
initialFiltersSet = _d[0],
|
|
@@ -47347,11 +47485,17 @@ var SearchResultsContainer = function () {
|
|
|
47347
47485
|
detailsIsLoading = _g[0],
|
|
47348
47486
|
setDetailsIsLoading = _g[1];
|
|
47349
47487
|
var _h = React.useState(false),
|
|
47350
|
-
|
|
47351
|
-
|
|
47352
|
-
var _j = React.useState(
|
|
47353
|
-
|
|
47354
|
-
|
|
47488
|
+
pricesAreLoading = _h[0],
|
|
47489
|
+
setPricesAreLoading = _h[1];
|
|
47490
|
+
var _j = React.useState(false),
|
|
47491
|
+
itineraryIsLoading = _j[0],
|
|
47492
|
+
setItineraryIsLoading = _j[1];
|
|
47493
|
+
var _k = React.useState(false),
|
|
47494
|
+
itineraryOpen = _k[0],
|
|
47495
|
+
setItineraryOpen = _k[1];
|
|
47496
|
+
var _l = React.useState(null),
|
|
47497
|
+
selectedAccommodationSeed = _l[0],
|
|
47498
|
+
setSelectedAccommodationSeed = _l[1];
|
|
47355
47499
|
var panelRef = React.useRef(null);
|
|
47356
47500
|
var sortByTypes = [
|
|
47357
47501
|
{ direction: 'asc', label: 'default' },
|
|
@@ -47553,7 +47697,6 @@ var SearchResultsContainer = function () {
|
|
|
47553
47697
|
};
|
|
47554
47698
|
var handleConfirmHotelSwap = function () {
|
|
47555
47699
|
var updatedEntry = swapHotelInPackagingEntry();
|
|
47556
|
-
console.log('Updated entry after hotel swap', updatedEntry);
|
|
47557
47700
|
if (!updatedEntry) return;
|
|
47558
47701
|
dispatch(setEditablePackagingEntry(updatedEntry));
|
|
47559
47702
|
handleFlyInToggle(false);
|
|
@@ -47570,18 +47713,17 @@ var SearchResultsContainer = function () {
|
|
|
47570
47713
|
var selectedOptionsPerRoom = getSelectedOptionsPerRoom(details);
|
|
47571
47714
|
if (!selectedOptionsPerRoom.length) return null;
|
|
47572
47715
|
var selectedHotel = details[0];
|
|
47716
|
+
var roomIndex = 0;
|
|
47573
47717
|
var updatedLines = sourceEntry.lines.map(function (line) {
|
|
47574
47718
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
47575
47719
|
if (line.serviceType !== ACCOMMODATION_SERVICE_TYPE) {
|
|
47576
47720
|
return line;
|
|
47577
47721
|
}
|
|
47578
|
-
// TODO: fix roomIndex
|
|
47579
|
-
var roomIndex = getRoomIndexFromLine(line);
|
|
47580
|
-
console.log('Processing line', line, 'with room index', roomIndex);
|
|
47581
47722
|
var selectedRoom = selectedOptionsPerRoom.find(function (x) {
|
|
47582
47723
|
return x.roomIndex === roomIndex;
|
|
47583
47724
|
});
|
|
47584
47725
|
var selectedOption = selectedRoom === null || selectedRoom === void 0 ? void 0 : selectedRoom.option;
|
|
47726
|
+
roomIndex++;
|
|
47585
47727
|
if (!selectedOption) {
|
|
47586
47728
|
return line;
|
|
47587
47729
|
}
|
|
@@ -47675,7 +47817,6 @@ var SearchResultsContainer = function () {
|
|
|
47675
47817
|
return [4 /*yield*/, build.search(config, searchRequest)];
|
|
47676
47818
|
case 1:
|
|
47677
47819
|
packageSearchResults = _b.sent();
|
|
47678
|
-
console.log('Search results', packageSearchResults);
|
|
47679
47820
|
enrichedFilters = enrichFiltersWithResults(packageSearchResults, context.filters, (_a = context.tags) !== null && _a !== void 0 ? _a : []);
|
|
47680
47821
|
if (!initialFiltersSet) {
|
|
47681
47822
|
dispatch(resetFilters(enrichedFilters));
|
|
@@ -47749,7 +47890,6 @@ var SearchResultsContainer = function () {
|
|
|
47749
47890
|
searchRequest = buildPackagingAccommodationRequestFromSeed(seed, currentTransactionId);
|
|
47750
47891
|
searchRequest.portalId = context.portalId;
|
|
47751
47892
|
searchRequest.agentId = context.agentId;
|
|
47752
|
-
console.log('Packaging accommodation search request', searchRequest);
|
|
47753
47893
|
return [4 /*yield*/, build.searchPackagingAccommodations(config, searchRequest)];
|
|
47754
47894
|
case 1:
|
|
47755
47895
|
packageAccoSearchResults = _b.sent();
|
|
@@ -47790,7 +47930,6 @@ var SearchResultsContainer = function () {
|
|
|
47790
47930
|
currentTransactionId =
|
|
47791
47931
|
((_a = context === null || context === void 0 ? void 0 : context.packagingEntry) === null || _a === void 0 ? void 0 : _a.transactionId) ||
|
|
47792
47932
|
transactionId;
|
|
47793
|
-
console.log('Current transaction ID', currentTransactionId);
|
|
47794
47933
|
if (!!currentTransactionId) return [3 /*break*/, 2];
|
|
47795
47934
|
dispatch(setIsLoading(true));
|
|
47796
47935
|
return [4 /*yield*/, runStartTransaction()];
|
|
@@ -48036,7 +48175,6 @@ var SearchResultsContainer = function () {
|
|
|
48036
48175
|
return [4 /*yield*/, build.searchPackagingAccommodations(config, detailSearchRequest)];
|
|
48037
48176
|
case 2:
|
|
48038
48177
|
packageAccoSearchDetails = _f.sent();
|
|
48039
|
-
console.log('Packaging Acco Search details', packageAccoSearchDetails);
|
|
48040
48178
|
dispatch(setPackagingAccoSearchDetails(packageAccoSearchDetails));
|
|
48041
48179
|
setDetailsIsLoading(false);
|
|
48042
48180
|
return [3 /*break*/, 4];
|
|
@@ -48131,6 +48269,79 @@ var SearchResultsContainer = function () {
|
|
|
48131
48269
|
rooms: getRequestRoomsFromPackagingSegments(entry, sortedSegments)
|
|
48132
48270
|
};
|
|
48133
48271
|
};
|
|
48272
|
+
React.useEffect(
|
|
48273
|
+
function () {
|
|
48274
|
+
var fetchPriceDetails = function () {
|
|
48275
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
48276
|
+
var config, priceDetails, err_6;
|
|
48277
|
+
return __generator(this, function (_a) {
|
|
48278
|
+
switch (_a.label) {
|
|
48279
|
+
case 0:
|
|
48280
|
+
if (!context || !editablePackagingEntry) return [2 /*return*/];
|
|
48281
|
+
setPricesAreLoading(true);
|
|
48282
|
+
_a.label = 1;
|
|
48283
|
+
case 1:
|
|
48284
|
+
_a.trys.push([1, 3, , 4]);
|
|
48285
|
+
config = {
|
|
48286
|
+
host: context.tideConnection.host,
|
|
48287
|
+
apiKey: context.tideConnection.apiKey
|
|
48288
|
+
};
|
|
48289
|
+
return [4 /*yield*/, build.getPriceDetails(config, editablePackagingEntry)];
|
|
48290
|
+
case 2:
|
|
48291
|
+
priceDetails = _a.sent();
|
|
48292
|
+
dispatch(setPriceDetails(priceDetails));
|
|
48293
|
+
setPricesAreLoading(false);
|
|
48294
|
+
return [3 /*break*/, 4];
|
|
48295
|
+
case 3:
|
|
48296
|
+
err_6 = _a.sent();
|
|
48297
|
+
console.error('Error fetching price details', err_6);
|
|
48298
|
+
setPricesAreLoading(false);
|
|
48299
|
+
return [3 /*break*/, 4];
|
|
48300
|
+
case 4:
|
|
48301
|
+
return [2 /*return*/];
|
|
48302
|
+
}
|
|
48303
|
+
});
|
|
48304
|
+
});
|
|
48305
|
+
};
|
|
48306
|
+
var fetchItinerary = function () {
|
|
48307
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
48308
|
+
var config, itinerary_1, err_7;
|
|
48309
|
+
return __generator(this, function (_a) {
|
|
48310
|
+
switch (_a.label) {
|
|
48311
|
+
case 0:
|
|
48312
|
+
console.log('Fetching itinerary for entry', editablePackagingEntry);
|
|
48313
|
+
if (!context || !editablePackagingEntry) return [2 /*return*/];
|
|
48314
|
+
setItineraryIsLoading(true);
|
|
48315
|
+
_a.label = 1;
|
|
48316
|
+
case 1:
|
|
48317
|
+
_a.trys.push([1, 3, , 4]);
|
|
48318
|
+
config = {
|
|
48319
|
+
host: context.tideConnection.host,
|
|
48320
|
+
apiKey: context.tideConnection.apiKey
|
|
48321
|
+
};
|
|
48322
|
+
return [4 /*yield*/, build.getItinerary(config, editablePackagingEntry)];
|
|
48323
|
+
case 2:
|
|
48324
|
+
itinerary_1 = _a.sent();
|
|
48325
|
+
console.log('Fetched itinerary', itinerary_1);
|
|
48326
|
+
dispatch(setItinerary(itinerary_1));
|
|
48327
|
+
setItineraryIsLoading(false);
|
|
48328
|
+
return [3 /*break*/, 4];
|
|
48329
|
+
case 3:
|
|
48330
|
+
err_7 = _a.sent();
|
|
48331
|
+
console.error('Error fetching itinerary', err_7);
|
|
48332
|
+
setItineraryIsLoading(false);
|
|
48333
|
+
return [3 /*break*/, 4];
|
|
48334
|
+
case 4:
|
|
48335
|
+
return [2 /*return*/];
|
|
48336
|
+
}
|
|
48337
|
+
});
|
|
48338
|
+
});
|
|
48339
|
+
};
|
|
48340
|
+
fetchPriceDetails();
|
|
48341
|
+
fetchItinerary();
|
|
48342
|
+
},
|
|
48343
|
+
[editablePackagingEntry]
|
|
48344
|
+
);
|
|
48134
48345
|
return React__default['default'].createElement(
|
|
48135
48346
|
'div',
|
|
48136
48347
|
{ id: 'tide-booking', className: 'search__bg' },
|
|
@@ -48182,7 +48393,7 @@ var SearchResultsContainer = function () {
|
|
|
48182
48393
|
handleSetIsOpen: function () {
|
|
48183
48394
|
return setItineraryOpen(!itineraryOpen);
|
|
48184
48395
|
},
|
|
48185
|
-
isLoading:
|
|
48396
|
+
isLoading: pricesAreLoading,
|
|
48186
48397
|
onEditAccommodation: handleEditAccommodation
|
|
48187
48398
|
}),
|
|
48188
48399
|
React__default['default'].createElement(
|
|
@@ -48321,7 +48532,8 @@ var SearchResultsContainer = function () {
|
|
|
48321
48532
|
}),
|
|
48322
48533
|
context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
|
|
48323
48534
|
context.packagingEntry &&
|
|
48324
|
-
|
|
48535
|
+
itinerary &&
|
|
48536
|
+
React__default['default'].createElement(FullItinerary, { isLoading: itineraryIsLoading })
|
|
48325
48537
|
)
|
|
48326
48538
|
),
|
|
48327
48539
|
React__default['default'].createElement(FlyIn, {
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { AccommodationFlyInStep, ExtendedFlightSearchResponseItem, Filter, SortByType } from '../types';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
BookingPackage,
|
|
4
|
+
BookingPackageItem,
|
|
5
|
+
BookingPriceDetails,
|
|
6
|
+
ClientPortalItinerary,
|
|
7
|
+
PackagingAccommodationResponse,
|
|
8
|
+
PackagingEntry
|
|
9
|
+
} from '@qite/tide-client/build/types';
|
|
3
10
|
export interface SearchResultsState {
|
|
4
11
|
results: BookingPackageItem[];
|
|
5
12
|
filteredResults: BookingPackageItem[];
|
|
@@ -20,6 +27,8 @@ export interface SearchResultsState {
|
|
|
20
27
|
editablePackagingEntry: PackagingEntry | null;
|
|
21
28
|
transactionId: string | null;
|
|
22
29
|
accommodationFlyInStep: AccommodationFlyInStep;
|
|
30
|
+
priceDetails: BookingPriceDetails | null;
|
|
31
|
+
itinerary: ClientPortalItinerary | null;
|
|
23
32
|
}
|
|
24
33
|
export declare const setResults: import('@reduxjs/toolkit').ActionCreatorWithPayload<BookingPackageItem[], 'searchResults/setResults'>,
|
|
25
34
|
setFilteredResults: import('@reduxjs/toolkit').ActionCreatorWithPayload<BookingPackageItem[], 'searchResults/setFilteredResults'>,
|
|
@@ -62,6 +71,8 @@ export declare const setResults: import('@reduxjs/toolkit').ActionCreatorWithPay
|
|
|
62
71
|
setFlyInIsOpen: import('@reduxjs/toolkit').ActionCreatorWithPayload<boolean, 'searchResults/setFlyInIsOpen'>,
|
|
63
72
|
setEditablePackagingEntry: import('@reduxjs/toolkit').ActionCreatorWithPayload<PackagingEntry | null, 'searchResults/setEditablePackagingEntry'>,
|
|
64
73
|
setTransactionId: import('@reduxjs/toolkit').ActionCreatorWithPayload<string | null, 'searchResults/setTransactionId'>,
|
|
65
|
-
setAccommodationFlyInStep: import('@reduxjs/toolkit').ActionCreatorWithPayload<AccommodationFlyInStep, 'searchResults/setAccommodationFlyInStep'
|
|
74
|
+
setAccommodationFlyInStep: import('@reduxjs/toolkit').ActionCreatorWithPayload<AccommodationFlyInStep, 'searchResults/setAccommodationFlyInStep'>,
|
|
75
|
+
setPriceDetails: import('@reduxjs/toolkit').ActionCreatorWithPayload<BookingPriceDetails | null, 'searchResults/setPriceDetails'>,
|
|
76
|
+
setItinerary: import('@reduxjs/toolkit').ActionCreatorWithPayload<ClientPortalItinerary | null, 'searchResults/setItinerary'>;
|
|
66
77
|
declare const _default: import('@reduxjs/toolkit').Reducer<SearchResultsState>;
|
|
67
78
|
export default _default;
|