@qite/tide-booking-component 1.1.3 → 1.2.0

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 (63) hide show
  1. package/build/build-cjs/booking-product/components/multi-range-filter.d.ts +12 -0
  2. package/build/build-cjs/booking-wizard/features/booking/api.d.ts +4 -1
  3. package/build/build-cjs/booking-wizard/features/booking/booking-slice.d.ts +7 -3
  4. package/build/build-cjs/booking-wizard/features/booking/selectors.d.ts +23 -17
  5. package/build/build-cjs/booking-wizard/features/flight-options/flight-filter.d.ts +9 -0
  6. package/build/build-cjs/booking-wizard/features/flight-options/flight-option-flight.d.ts +8 -0
  7. package/build/build-cjs/booking-wizard/features/flight-options/flight-option-modal.d.ts +3 -0
  8. package/build/build-cjs/booking-wizard/features/flight-options/flight-option.d.ts +4 -9
  9. package/build/build-cjs/booking-wizard/features/flight-options/flight-utils.d.ts +6 -0
  10. package/build/build-cjs/booking-wizard/features/room-options/room-utils.d.ts +9 -0
  11. package/build/build-cjs/booking-wizard/features/room-options/room.d.ts +12 -0
  12. package/build/build-cjs/booking-wizard/features/room-options/traveler-rooms.d.ts +9 -0
  13. package/build/build-cjs/booking-wizard/types.d.ts +101 -0
  14. package/build/build-cjs/index.js +1563 -606
  15. package/build/build-cjs/shared/utils/localization-util.d.ts +30 -2
  16. package/build/build-esm/booking-product/components/multi-range-filter.d.ts +12 -0
  17. package/build/build-esm/booking-wizard/features/booking/api.d.ts +4 -1
  18. package/build/build-esm/booking-wizard/features/booking/booking-slice.d.ts +7 -3
  19. package/build/build-esm/booking-wizard/features/booking/selectors.d.ts +23 -17
  20. package/build/build-esm/booking-wizard/features/flight-options/flight-filter.d.ts +9 -0
  21. package/build/build-esm/booking-wizard/features/flight-options/flight-option-flight.d.ts +8 -0
  22. package/build/build-esm/booking-wizard/features/flight-options/flight-option-modal.d.ts +3 -0
  23. package/build/build-esm/booking-wizard/features/flight-options/flight-option.d.ts +4 -9
  24. package/build/build-esm/booking-wizard/features/flight-options/flight-utils.d.ts +6 -0
  25. package/build/build-esm/booking-wizard/features/room-options/room-utils.d.ts +9 -0
  26. package/build/build-esm/booking-wizard/features/room-options/room.d.ts +12 -0
  27. package/build/build-esm/booking-wizard/features/room-options/traveler-rooms.d.ts +9 -0
  28. package/build/build-esm/booking-wizard/types.d.ts +101 -0
  29. package/build/build-esm/index.js +1564 -607
  30. package/build/build-esm/shared/utils/localization-util.d.ts +30 -2
  31. package/package.json +3 -3
  32. package/rollup.config.js +23 -23
  33. package/src/booking-product/components/multi-range-filter.css +115 -0
  34. package/src/booking-product/components/multi-range-filter.tsx +114 -0
  35. package/src/booking-wizard/components/labeled-input.tsx +64 -64
  36. package/src/booking-wizard/components/labeled-select.tsx +69 -69
  37. package/src/booking-wizard/components/step-indicator.tsx +3 -3
  38. package/src/booking-wizard/features/booking/api.ts +12 -1
  39. package/src/booking-wizard/features/booking/booking-self-contained.tsx +50 -20
  40. package/src/booking-wizard/features/booking/booking-slice.ts +45 -9
  41. package/src/booking-wizard/features/booking/booking.tsx +67 -56
  42. package/src/booking-wizard/features/booking/selectors.ts +38 -11
  43. package/src/booking-wizard/features/flight-options/flight-filter.tsx +343 -0
  44. package/src/booking-wizard/features/flight-options/flight-option-flight.tsx +350 -0
  45. package/src/booking-wizard/features/flight-options/flight-option.tsx +30 -759
  46. package/src/booking-wizard/features/flight-options/flight-utils.ts +401 -0
  47. package/src/booking-wizard/features/flight-options/index.tsx +55 -368
  48. package/src/booking-wizard/features/price-details/util.ts +6 -6
  49. package/src/booking-wizard/features/product-options/option-room.tsx +3 -5
  50. package/src/booking-wizard/features/product-options/options-form.tsx +46 -54
  51. package/src/booking-wizard/features/room-options/index.tsx +48 -144
  52. package/src/booking-wizard/features/room-options/room-utils.ts +143 -0
  53. package/src/booking-wizard/features/room-options/room.tsx +124 -0
  54. package/src/booking-wizard/features/room-options/traveler-rooms.tsx +63 -0
  55. package/src/booking-wizard/features/sidebar/sidebar-util.ts +2 -2
  56. package/src/booking-wizard/features/summary/summary.tsx +2 -2
  57. package/src/booking-wizard/features/travelers-form/travelers-form.tsx +1 -1
  58. package/src/booking-wizard/types.ts +116 -0
  59. package/src/shared/components/rating.tsx +21 -21
  60. package/src/shared/translations/fr-BE.json +222 -192
  61. package/src/shared/translations/nl-BE.json +222 -192
  62. package/src/shared/utils/class-util.ts +9 -9
  63. package/tsconfig.json +24 -24
@@ -1,18 +1,19 @@
1
1
  import React, { useContext, useEffect, useState } from "react";
2
2
 
3
3
  import { BookingPackageFlight } from "@qite/tide-client/build/types";
4
- import { Link, navigate } from "@reach/router";
4
+ import { navigate } from "@reach/router";
5
+ import { isEmpty } from "lodash";
5
6
  import { useSelector } from "react-redux";
6
7
  import { buildClassName } from "../../../shared/utils/class-util";
7
8
  import SettingsContext from "../../settings-context";
8
9
  import { useAppDispatch } from "../../store";
10
+ import { FlightFilterOptions, GroupedFlights } from "../../types";
9
11
  import {
10
12
  setCurrentStep,
11
- setOutwardFlight,
12
- setPackage,
13
- setReturnFlight
13
+ setFlights,
14
+ setPackage
14
15
  } from "../booking/booking-slice";
15
- import { OPTIONS_FORM_STEP, ROOM_OPTIONS_FORM_STEP } from "../booking/constants";
16
+ import { ROOM_OPTIONS_FORM_STEP } from "../booking/constants";
16
17
  import {
17
18
  selectBookingQueryString,
18
19
  selectIsFetchingProductOptions,
@@ -21,38 +22,40 @@ import {
21
22
  selectTranslations
22
23
  } from "../booking/selectors";
23
24
  import { fetchPriceDetails } from "../price-details/price-details-slice";
25
+ import FlightFilter from "./flight-filter";
24
26
  import FlightOption from "./flight-option";
25
27
  import FlightOptionModal from "./flight-option-modal";
28
+ import { buildFilterOptions, buildGroupedFlights, filterGroupedFlights } from "./flight-utils";
26
29
 
27
30
  interface FlightOptionsFormProps { }
28
31
 
29
32
  const FlightOptionsForm: React.FC<FlightOptionsFormProps> = () => {
30
33
  const settings = useContext(SettingsContext);
31
34
 
32
- const translations = useSelector(selectTranslations);
35
+ const translations = useSelector(selectTranslations);
33
36
  const dispatch = useAppDispatch();
34
37
  const packageDetails = useSelector(selectPackageDetails);
35
38
  const bookingQueryString = useSelector(selectBookingQueryString);
36
39
  const isLoading = useSelector(selectIsFetchingProductOptions);
37
40
  const flights = useSelector(selectPackageFlights);
38
41
 
42
+ const [filterOptions, setFilterOptions] = useState<FlightFilterOptions | undefined>();
43
+ const [flightGroups, setFlightGroups] = useState<GroupedFlights[]>([]);
44
+
39
45
  const handleSubmit: React.FormEventHandler<HTMLFormElement> = (e) => {
40
46
  if (settings.skipRouter) {
41
- dispatch(setCurrentStep(OPTIONS_FORM_STEP));
47
+ dispatch(setCurrentStep(ROOM_OPTIONS_FORM_STEP));
42
48
  } else {
43
- navigate(`${settings.basePath}${settings.options.pathSuffix}?${bookingQueryString}`);
49
+ if (settings.roomOptions.isHidden) {
50
+ navigate(`${settings.basePath}${settings.options.pathSuffix}?${bookingQueryString}`);
51
+ } else {
52
+ navigate(`${settings.basePath}${settings.roomOptions.pathSuffix}?${bookingQueryString}`);
53
+ }
44
54
  }
45
55
 
46
56
  e.preventDefault();
47
57
  };
48
58
 
49
- const goPrevious = () => {
50
- dispatch(setCurrentStep(ROOM_OPTIONS_FORM_STEP));
51
- };
52
-
53
- const selectedOptionGuid = packageDetails?.options.find(x => x.isSelected)?.id!;
54
- const selectedOutwardFlight = flights.outward?.find(x => x.isSelected);
55
- const selectedReturnFlight = flights.return?.find(x => x.isSelected);
56
59
  const currentFlightPrice = (flights.outward?.find(x => x.isSelected)?.price || 0)
57
60
  + (flights.return?.find(x => x.isSelected)?.price || 0);
58
61
 
@@ -97,20 +100,23 @@ const FlightOptionsForm: React.FC<FlightOptionsFormProps> = () => {
97
100
  }
98
101
  }
99
102
  dispatch(fetchPriceDetails());
100
- }, []);
101
103
 
102
- const [value, setValue] = useState("2");
104
+ const filters = buildFilterOptions(flights.outward, flights.return, translations);
105
+ setFilterOptions(filters);
106
+ }, []);
103
107
 
104
- const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
105
- const newValue = event.target.value;
106
- setValue(newValue);
107
- event.target.style.setProperty('--value', newValue);
108
- };
108
+
109
+ useEffect(() => {
110
+ const groups = buildGroupedFlights(flights.outward, flights.return);
111
+ setFlightGroups(groups);
112
+ }, [flights]);
109
113
 
114
+ const filteredGroups = filterGroupedFlights(flightGroups, filterOptions);
115
+ const resultCount = filteredGroups.length;
110
116
 
111
117
  return (
112
118
  <>
113
- <FlightOptionModal />
119
+ <FlightOptionModal />
114
120
  <form
115
121
  className="form"
116
122
  name="booking--flights"
@@ -120,96 +126,39 @@ const FlightOptionsForm: React.FC<FlightOptionsFormProps> = () => {
120
126
  >
121
127
  {isLoading && settings.loaderComponent}
122
128
  {!isLoading && (
123
- <div className="form__group">
124
- <div className="booking-card">
125
- {/* <div className="booking-card__header">
126
- <h2 className="booking-card__header-heading">
127
- {translations.FLIGHTS_FORM.OUTWARD_FLIGHTS}
128
- </h2>
129
- </div> */}
130
- <div className="booking-card__body">
131
- <button className="cta cta--filter">
132
- <svg width={11} height={10}><use href="/icons/svg-sprite.svg#filter"></use></svg>
133
- <span>Filter opties</span>
134
- </button>
135
- <div className="booking-card__group">
136
- <div className="flight outward__flights">
137
- {flights.outward?.map((flight, index) => (
138
- <FlightOption
139
- key={index}
140
- item={flight}
141
- isSelected={flight.isSelected}
142
- group="outward"
143
- selectedReturn={selectedReturnFlight}
144
- currentPrice={currentFlightPrice}
145
- isSameOption={flight.validOptions.some(y => y === selectedOptionGuid)}
146
- relatedFlight={flight.externalGuid ? flights.return?.find(x => x.externalGuid === flight.externalGuid) : null}
147
- onChange={item => {
148
- dispatch(setOutwardFlight(item));
149
- dispatch(fetchPriceDetails());
150
- }}
151
- />
152
- ))}
153
- </div>
154
- </div>
155
- </div>
156
- </div>
157
-
158
- <div className="booking-card">
159
- {/* <div className="booking-card__header">
160
- <h2 className="booking-card__header-heading">
161
- {translations.FLIGHTS_FORM.RETURN_FLIGHTS}
162
- </h2>
163
- </div> */}
164
- <div className="booking-card__body">
165
- <div className="booking-card__group">
166
- <div className="flight return__flights">
167
- {flights.return?.map((flight, index) => (
168
- <FlightOption
169
- key={index}
170
- item={flight}
171
- isSelected={flight.isSelected}
172
- group="return"
173
- selectedOutward={selectedOutwardFlight}
174
- currentPrice={currentFlightPrice}
175
- isSameOption={flight.validOptions.some(y => y === selectedOptionGuid)}
176
- relatedFlight={flight.externalGuid ? flights.outward?.find(x => x.externalGuid === flight.externalGuid) : null}
177
- onChange={item => {
178
- dispatch(setReturnFlight(item));
179
- dispatch(fetchPriceDetails());
180
- }}
181
- />
182
- ))}
183
- </div>
129
+ <div className="form__group">
130
+ <div className="booking-card">
131
+ <div className="booking-card__body">
132
+ {filterOptions && (
133
+ <FlightFilter filterOptions={filterOptions} resultCount={resultCount} applyFilter={setFilterOptions} />
134
+ )}
135
+
136
+ <div className="booking-card__group">
137
+ <div className="flight outward__flights">
138
+ {isEmpty(filteredGroups) && (
139
+ <p>{translations.FLIGHTS_FORM.NO_FLIGHTS_FOUND}</p>
140
+ )}
141
+
142
+ {!isEmpty(filteredGroups) && filteredGroups.map((flight, index) => (
143
+ <FlightOption
144
+ key={index}
145
+ item={flight}
146
+ isSelected={flight.isSelected}
147
+ currentPrice={currentFlightPrice}
148
+ onChange={item => {
149
+ dispatch(setFlights(item));
150
+ dispatch(fetchPriceDetails());
151
+ }}
152
+ />
153
+ ))}
184
154
  </div>
185
155
  </div>
186
156
  </div>
187
157
  </div>
158
+ </div>
188
159
  )}
189
160
 
190
161
  <div className="booking__navigator">
191
- {!settings.roomOptions.isHidden && (
192
- <>
193
- {settings.skipRouter ? (
194
- <button
195
- type="button"
196
- title={translations.STEPS.PREVIOUS}
197
- onClick={() => goPrevious()}
198
- className="cta cta--secondary"
199
- >
200
- {translations.STEPS.PREVIOUS}
201
- </button>
202
- ) : (
203
- <Link
204
- to={`${settings.basePath}${settings.roomOptions.pathSuffix}?${bookingQueryString}`}
205
- title={translations.STEPS.PREVIOUS}
206
- className="cta cta--secondary"
207
- >
208
- {translations.STEPS.PREVIOUS}
209
- </Link>
210
- )}
211
- </>
212
- )}
213
162
  <button
214
163
  type="submit"
215
164
  title={translations.STEPS.NEXT}
@@ -220,268 +169,6 @@ const FlightOptionsForm: React.FC<FlightOptionsFormProps> = () => {
220
169
  </button>
221
170
  </div>
222
171
 
223
- <div className="flight__filter flight__filter--active">
224
- <div className="flight__filter__header">
225
- <div className="flight__filter__header__title">
226
- <h3>Filter opties</h3>
227
- <p>er zijn <strong>4 vluchten</strong> gevonden</p>
228
- </div>
229
- </div>
230
- <div className="flight__filter__body">
231
- <div className="flight__filter__group">
232
- <div className="flight__filter__group__title">
233
- Airlines
234
- <svg width={16} height={16} className="flight__detail__btn__arrow"><use href="/icons/svg-sprite.svg#chevron"></use></svg>
235
- </div>
236
- {/* <div className="flight__filter__checkbox">
237
- <input type="checkbox" id="klm" name="klm" value="klm" />
238
- <label htmlFor="klm">KLM</label>
239
- </div> */}
240
- <div className="flight__filter__group__wrapper">
241
- <div className="tree">
242
- <div className="checkbox flight__filter__checkbox">
243
- <label htmlFor="all" className="checkbox__label">
244
- <input type="checkbox" id="all" className="checkbox__input checkbox__input--parent" />
245
- <span className="radiobutton__label-text">
246
- Alle airlines <span className="amount">(5)</span>
247
- </span>
248
- </label>
249
- </div>
250
- </div>
251
- <div className="tree">
252
- <div className="checkbox flight__filter__checkbox">
253
- <label htmlFor="BRIT" className="checkbox__label">
254
- <input type="checkbox" id="BRIT" className="checkbox__input checkbox__input--parent" />
255
- <span className="radiobutton__label-text">
256
- British airways <span className="amount">(2)</span>
257
- </span>
258
- </label>
259
- </div>
260
- </div>
261
- <div className="tree">
262
- <div className="checkbox flight__filter__checkbox">
263
- <label htmlFor="BRU" className="checkbox__label">
264
- <input type="checkbox" id="BRU" className="checkbox__input checkbox__input--parent" />
265
- <span className="radiobutton__label-text">
266
- Brussels airlines <span className="amount">(1)</span>
267
- </span>
268
- </label>
269
- </div>
270
- </div>
271
- <div className="tree">
272
- <div className="checkbox flight__filter__checkbox">
273
- <label htmlFor="TUI" className="checkbox__label">
274
- <input type="checkbox" id="TUI" className="checkbox__input checkbox__input--parent" />
275
- <span className="radiobutton__label-text">
276
- TUI <span className="amount">(5)</span>
277
- </span>
278
- </label>
279
- </div>
280
- </div>
281
- <div className="tree">
282
- <div className="checkbox flight__filter__checkbox">
283
- <label htmlFor="luft" className="checkbox__label">
284
- <input type="checkbox" id="luft" className="checkbox__input checkbox__input--parent" />
285
- <span className="radiobutton__label-text">
286
- Lufthansa <span className="amount">(3)</span>
287
- </span>
288
- </label>
289
- </div>
290
- </div>
291
- </div>
292
- </div>
293
- <div className="flight__filter__group">
294
- <div className="flight__filter__group__title">
295
- Aantal stops
296
- <svg width={16} height={16} className="flight__detail__btn__arrow"><use href="/icons/svg-sprite.svg#chevron"></use></svg>
297
- </div>
298
- <div className="flight__filter__group__wrapper">
299
- <div className="tree">
300
- <div className="radiobutton flight__filter__checkbox">
301
- <label htmlFor="stops" className="radiobutton__label">
302
- <input type="checkbox" id="stops" className="radiobutton__input radiobutton__input--parent" />
303
- <span className="radiobutton__label-text">
304
- Alle stops <span className="amount">(5)</span>
305
- </span>
306
- </label>
307
- </div>
308
- </div>
309
- <div className="tree">
310
- <div className="radiobutton flight__filter__checkbox">
311
- <label htmlFor="stops" className="radiobutton__label">
312
- <input type="checkbox" id="stops" className="radiobutton__input radiobutton__input--parent" />
313
- <span className="radiobutton__label-text">
314
- Directe vlucht <span className="amount">(5)</span>
315
- </span>
316
- </label>
317
- </div>
318
- </div>
319
- <div className="tree">
320
- <div className="radiobutton flight__filter__checkbox">
321
- <label htmlFor="stops" className="radiobutton__label">
322
- <input type="checkbox" id="stops" className="radiobutton__input radiobutton__input--parent" />
323
- <span className="radiobutton__label-text">
324
- 1 Stop <span className="amount">(1)</span>
325
- </span>
326
- </label>
327
- </div>
328
- </div>
329
- <div className="tree">
330
- <div className="radiobutton flight__filter__checkbox">
331
- <label htmlFor="stops" className="radiobutton__label">
332
- <input type="checkbox" id="stops" className="radiobutton__input radiobutton__input--parent" />
333
- <span className="radiobutton__label-text">
334
- 2 Stops <span className="amount">(2)</span>
335
- </span>
336
- </label>
337
- </div>
338
- </div>
339
- </div>
340
- </div>
341
- <div className="flight__filter__group">
342
- <div className="flight__filter__group__title">
343
- Vlucht heenreis
344
- <svg width={16} height={16} className="flight__detail__btn__arrow"><use href="/icons/svg-sprite.svg#chevron"></use></svg>
345
- </div>
346
- <div className="flight__filter__group__wrapper">
347
- <p>Vertrektijd</p>
348
- <div className="tree">
349
- <div className="checkbox flight__filter__checkbox">
350
- <label htmlFor="ochtend" className="checkbox__label">
351
- <input type="checkbox" id="ochtend" className="checkbox__input checkbox__input--parent" />
352
- <span className="radiobutton__label-text">
353
- Ochtend <span className="amount">(05:00 - 12:00)</span>
354
- </span>
355
- </label>
356
- </div>
357
- </div>
358
- <div className="tree">
359
- <div className="checkbox flight__filter__checkbox">
360
- <label htmlFor="mid" className="checkbox__label">
361
- <input type="checkbox" id="mid" className="checkbox__input checkbox__input--parent" />
362
- <span className="radiobutton__label-text">
363
- Namiddag <span className="amount">(12:00 - 18:00)</span>
364
- </span>
365
- </label>
366
- </div>
367
- </div>
368
- <div className="tree">
369
- <div className="checkbox flight__filter__checkbox">
370
- <label htmlFor="avond" className="checkbox__label">
371
- <input type="checkbox" id="avond" className="checkbox__input checkbox__input--parent" />
372
- <span className="radiobutton__label-text">
373
- Avond <span className="amount">(18:00 - 00:00)</span>
374
- </span>
375
- </label>
376
- </div>
377
- </div>
378
- </div>
379
- <div className="flight__filter__group__wrapper">
380
- <p>Reisduur</p>
381
- <div className="flight__filter__slider">
382
- <input
383
- type="range"
384
- min="2"
385
- max="7"
386
- value={value}
387
- onChange={handleChange}
388
- className="slider slider--progress"
389
- />
390
- <div className="flight__filter__slider__value">
391
- <span>2h 42m</span><span>6h 35m</span>
392
- </div>
393
- </div>
394
- </div>
395
- <div className="flight__filter__group__wrapper">
396
- <p>Overstaptijd</p>
397
- <div className="flight__filter__slider">
398
- <input
399
- type="range"
400
- min="2"
401
- max="7"
402
- value={value}
403
- onChange={handleChange}
404
- className="slider slider--progress"
405
- />
406
- <div className="flight__filter__slider__value">
407
- <span>2h 42m</span><span>6h 35m</span>
408
- </div>
409
- </div>
410
- </div>
411
- </div>
412
- <div className="flight__filter__group">
413
- <div className="flight__filter__group__title">
414
- Vlucht terugreis
415
- <svg width={16} height={16} className="flight__detail__btn__arrow"><use href="/icons/svg-sprite.svg#chevron"></use></svg>
416
- </div>
417
- <div className="flight__filter__group__wrapper">
418
- <p>Vertrektijd</p>
419
- <div className="tree">
420
- <div className="checkbox flight__filter__checkbox">
421
- <label htmlFor="ochtend" className="checkbox__label">
422
- <input type="checkbox" id="ochtend" className="checkbox__input checkbox__input--parent" />
423
- <span className="radiobutton__label-text">
424
- Ochtend <span className="amount">(05:00 - 12:00)</span>
425
- </span>
426
- </label>
427
- </div>
428
- </div>
429
- <div className="tree">
430
- <div className="checkbox flight__filter__checkbox">
431
- <label htmlFor="mid" className="checkbox__label">
432
- <input type="checkbox" id="mid" className="checkbox__input checkbox__input--parent" />
433
- <span className="radiobutton__label-text">
434
- Namiddag <span className="amount">(12:00 - 18:00)</span>
435
- </span>
436
- </label>
437
- </div>
438
- </div>
439
- <div className="tree">
440
- <div className="checkbox flight__filter__checkbox">
441
- <label htmlFor="avond" className="checkbox__label">
442
- <input type="checkbox" id="avond" className="checkbox__input checkbox__input--parent" />
443
- <span className="radiobutton__label-text">
444
- Avond <span className="amount">(18:00 - 00:00)</span>
445
- </span>
446
- </label>
447
- </div>
448
- </div>
449
- </div>
450
- <div className="flight__filter__group__wrapper">
451
- <p>Reisduur</p>
452
- <div className="flight__filter__slider">
453
- <input
454
- type="range"
455
- min="2"
456
- max="7"
457
- value={value}
458
- onChange={handleChange}
459
- className="slider slider--progress"
460
- />
461
- <div className="flight__filter__slider__value">
462
- <span>2h 42m</span><span>6h 35m</span>
463
- </div>
464
- </div>
465
- </div>
466
- <div className="flight__filter__group__wrapper">
467
- <p>Overstaptijd</p>
468
- <div className="flight__filter__slider">
469
- <input
470
- type="range"
471
- min="2"
472
- max="7"
473
- value={value}
474
- onChange={handleChange}
475
- className="slider slider--progress"
476
- />
477
- <div className="flight__filter__slider__value">
478
- <span>2h 42m</span><span>6h 35m</span>
479
- </div>
480
- </div>
481
- </div>
482
- </div>
483
- </div>
484
- </div>
485
172
  </form >
486
173
  </>
487
174
  );
@@ -1,15 +1,15 @@
1
1
  import {
2
+ BookingOptionGroup,
3
+ BookingOptionPax,
4
+ BookingOptionUnit,
2
5
  BookingPackage,
6
+ BookingPackageOption,
7
+ BookingPackageRoom,
3
8
  ChangedLine,
4
- BookingOptionPax,
5
- BookingOptionGroup,
9
+ PerBookingPackageOption,
6
10
  PerPaxPackageOption,
7
- BookingOptionUnit,
8
11
  PerUnitPackageOption,
9
- PerBookingPackageOption,
10
- BookingPackageRoom,
11
12
  } from "@qite/tide-client/build/types";
12
- import { BookingPackageOption } from "@qite/tide-client/build/types/offer/booking-v2/shared/booking-package-option";
13
13
 
14
14
  export const updatePackageDetails = (
15
15
  packageDetails: BookingPackage,
@@ -53,11 +53,9 @@ const OptionRoom: React.FC<OptionRoomProps> = ({
53
53
  const accommodations = uniqBy(
54
54
  compact(
55
55
  packageRoom &&
56
- packageRoom.options.map((option) => {
57
- if (!option.accommodationCode) {
58
- return undefined;
59
- }
60
-
56
+ packageRoom.options
57
+ .filter(x => x.accommodationCode && !x.isLocked)
58
+ .map((option) => {
61
59
  return {
62
60
  accommodationCode: option.accommodationCode,
63
61
  accommodationName: option.accommodationName,