@qite/tide-booking-component 1.4.38 → 1.4.40

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 (99) hide show
  1. package/build/build-cjs/booking-wizard/types.d.ts +1 -0
  2. package/build/build-cjs/content/components/login.d.ts +3 -0
  3. package/build/build-cjs/index.js +7618 -1952
  4. package/build/build-cjs/qsm/components/double-search-input-group/index.d.ts +2 -1
  5. package/build/build-cjs/qsm/components/search-input/index.d.ts +1 -0
  6. package/build/build-cjs/qsm/components/search-input-group/index.d.ts +3 -1
  7. package/build/build-cjs/qsm/store/qsm-slice.d.ts +6 -2
  8. package/build/build-cjs/qsm/types.d.ts +17 -32
  9. package/build/build-cjs/search-results/components/filters/flight-filters.d.ts +8 -0
  10. package/build/build-cjs/search-results/components/flight/flight-accommodation-results.d.ts +4 -1
  11. package/build/build-cjs/search-results/components/flight/flight-option.d.ts +7 -0
  12. package/build/build-cjs/search-results/components/flight/flight-search-context/index.d.ts +36 -0
  13. package/build/build-cjs/search-results/components/icon.d.ts +1 -0
  14. package/build/build-cjs/search-results/components/item-picker/index.d.ts +5 -3
  15. package/build/build-cjs/search-results/components/search-results-container/flight-search-results.d.ts +6 -0
  16. package/build/build-cjs/search-results/store/search-results-slice.d.ts +2 -0
  17. package/build/build-cjs/search-results/types.d.ts +31 -1
  18. package/build/build-cjs/search-results/utils/flight-utils.d.ts +16 -0
  19. package/build/build-cjs/shared/components/flyin.d.ts +9 -0
  20. package/build/build-cjs/shared/types.d.ts +6 -0
  21. package/build/build-cjs/shared/utils/localization-util.d.ts +91 -0
  22. package/build/build-esm/booking-wizard/types.d.ts +1 -0
  23. package/build/build-esm/content/components/login.d.ts +3 -0
  24. package/build/build-esm/index.js +8053 -2356
  25. package/build/build-esm/qsm/components/double-search-input-group/index.d.ts +2 -1
  26. package/build/build-esm/qsm/components/search-input/index.d.ts +1 -0
  27. package/build/build-esm/qsm/components/search-input-group/index.d.ts +3 -1
  28. package/build/build-esm/qsm/store/qsm-slice.d.ts +6 -2
  29. package/build/build-esm/qsm/types.d.ts +17 -32
  30. package/build/build-esm/search-results/components/filters/flight-filters.d.ts +8 -0
  31. package/build/build-esm/search-results/components/flight/flight-accommodation-results.d.ts +4 -1
  32. package/build/build-esm/search-results/components/flight/flight-option.d.ts +7 -0
  33. package/build/build-esm/search-results/components/flight/flight-search-context/index.d.ts +36 -0
  34. package/build/build-esm/search-results/components/icon.d.ts +1 -0
  35. package/build/build-esm/search-results/components/item-picker/index.d.ts +5 -3
  36. package/build/build-esm/search-results/components/search-results-container/flight-search-results.d.ts +6 -0
  37. package/build/build-esm/search-results/store/search-results-slice.d.ts +2 -0
  38. package/build/build-esm/search-results/types.d.ts +31 -1
  39. package/build/build-esm/search-results/utils/flight-utils.d.ts +16 -0
  40. package/build/build-esm/shared/components/flyin.d.ts +9 -0
  41. package/build/build-esm/shared/types.d.ts +6 -0
  42. package/build/build-esm/shared/utils/localization-util.d.ts +91 -0
  43. package/package.json +4 -3
  44. package/rollup.config.js +2 -2
  45. package/src/booking-product/components/dates.tsx +1 -1
  46. package/src/booking-wizard/features/booking/booking-slice.ts +4 -2
  47. package/src/booking-wizard/types.ts +1 -0
  48. package/src/content/components/login.tsx +162 -0
  49. package/src/content/components/slider.tsx +1 -1
  50. package/src/content/features/content-page/content-page-self-contained.tsx +56 -75
  51. package/src/qsm/components/QSMContainer/qsm-container.tsx +197 -75
  52. package/src/qsm/components/double-search-input-group/index.tsx +14 -75
  53. package/src/qsm/components/mobile-filter-modal/index.tsx +18 -11
  54. package/src/qsm/components/search-input/index.tsx +9 -2
  55. package/src/qsm/components/search-input-group/index.tsx +19 -31
  56. package/src/qsm/components/travel-class-picker/index.tsx +1 -0
  57. package/src/qsm/components/travel-input/index.tsx +4 -4
  58. package/src/qsm/components/travel-input-group/index.tsx +4 -3
  59. package/src/qsm/components/travel-nationality-picker/index.tsx +1 -0
  60. package/src/qsm/components/travel-type-picker/index.tsx +1 -0
  61. package/src/qsm/qsm-configuration-context.ts +6 -17
  62. package/src/qsm/store/qsm-slice.ts +13 -1
  63. package/src/qsm/types.ts +19 -39
  64. package/src/search-results/components/filters/flight-filters.tsx +671 -0
  65. package/src/search-results/components/flight/flight-accommodation-results.tsx +20 -562
  66. package/src/search-results/components/flight/flight-banner.tsx +1 -1
  67. package/src/search-results/components/flight/flight-option.tsx +243 -0
  68. package/src/search-results/components/flight/flight-search-context/index.tsx +508 -0
  69. package/src/search-results/components/hotel/hotel-card.tsx +0 -1
  70. package/src/search-results/components/icon.tsx +84 -44
  71. package/src/search-results/components/item-picker/index.tsx +16 -11
  72. package/src/search-results/components/search-results-container/flight-search-results.tsx +120 -0
  73. package/src/search-results/components/search-results-container/search-results-container.tsx +85 -70
  74. package/src/search-results/store/search-results-slice.ts +6 -0
  75. package/src/search-results/types.ts +37 -1
  76. package/src/search-results/utils/flight-utils.ts +106 -0
  77. package/src/shared/components/flyin.tsx +334 -0
  78. package/src/shared/translations/ar-SA.json +13 -1
  79. package/src/shared/translations/da-DK.json +13 -1
  80. package/src/shared/translations/de-DE.json +13 -1
  81. package/src/shared/translations/en-GB.json +13 -1
  82. package/src/shared/translations/es-ES.json +13 -1
  83. package/src/shared/translations/fr-BE.json +13 -1
  84. package/src/shared/translations/fr-FR.json +13 -1
  85. package/src/shared/translations/is-IS.json +13 -1
  86. package/src/shared/translations/it-IT.json +13 -1
  87. package/src/shared/translations/ja-JP.json +13 -1
  88. package/src/shared/translations/nl-BE.json +13 -1
  89. package/src/shared/translations/nl-NL.json +13 -1
  90. package/src/shared/translations/no-NO.json +13 -1
  91. package/src/shared/translations/pl-PL.json +13 -1
  92. package/src/shared/translations/pt-PT.json +13 -1
  93. package/src/shared/translations/sv-SE.json +13 -1
  94. package/src/shared/types.ts +7 -0
  95. package/src/shared/utils/localization-util.ts +71 -0
  96. package/styles/booking-search-results.scss +1 -0
  97. package/styles/components/_flyin.scss +550 -0
  98. package/styles/components/_login.scss +133 -0
  99. package/styles/content-blocks.scss +1 -0
@@ -0,0 +1,334 @@
1
+ import React, { useEffect, useRef } from 'react';
2
+
3
+ type FlyInProps = {
4
+ isOpen: boolean;
5
+ setIsOpen: (open: boolean) => void;
6
+ className?: string;
7
+ onPanelRef?: (el: HTMLDivElement | null) => void;
8
+ };
9
+
10
+ const FlyIn: React.FC<FlyInProps> = ({ isOpen, setIsOpen, className = '', onPanelRef }) => {
11
+ const panelRef = useRef<HTMLDivElement>(null);
12
+
13
+ // expose DOM node if needed
14
+ useEffect(() => {
15
+ onPanelRef?.(panelRef.current);
16
+ return () => onPanelRef?.(null);
17
+ }, [onPanelRef]);
18
+
19
+ // click outside detection
20
+ useEffect(() => {
21
+ const handleClickOutside = (event: MouseEvent) => {
22
+ if (isOpen && panelRef.current && !panelRef.current.contains(event.target as Node)) {
23
+ setIsOpen(false);
24
+ }
25
+ };
26
+
27
+ document.addEventListener('mousedown', handleClickOutside);
28
+ return () => document.removeEventListener('mousedown', handleClickOutside);
29
+ }, [isOpen, setIsOpen]);
30
+
31
+ // body scroll lock
32
+ useEffect(() => {
33
+ document.body.style.overflow = isOpen ? 'hidden' : '';
34
+ return () => {
35
+ document.body.style.overflow = '';
36
+ };
37
+ }, [isOpen]);
38
+
39
+ return (
40
+ <div className={`flyin ${isOpen ? 'flyin--active' : ''} ${className}`}>
41
+ <div className={`flyin__panel ${isOpen ? 'flyin__panel--active' : ''}`} ref={panelRef}>
42
+ <div className="flyin__content">
43
+ <div className="flyin__content-title-row">
44
+ <span className="flyin__content-title">Select your fare</span>
45
+ <span className="flyin__close" onClick={() => setIsOpen(!isOpen)}>
46
+ Close
47
+ </span>
48
+ </div>
49
+
50
+ <div className="flyin__content-text-row">
51
+ <div className="flyin__content-text-col">
52
+ <span className="flyin__content-text-title-row">Departure flight BRU - VIE</span>
53
+ <span className="flyin__content-text">09:10 - 11:00 (1h 50m, non-stop), 2 travellers</span>
54
+ </div>
55
+
56
+ <div className="flyin__content-text-icon-row">
57
+ <span className="logo" aria-hidden="true"></span>
58
+ <span>Austrian Airlines</span>
59
+ </div>
60
+
61
+ <div className="flyin__content-arrow-row">
62
+ <div className="flyin__content-arrow is-disabled" aria-disabled="true">
63
+
64
+ </div>
65
+ <div className="flyin__content-arrow">▶</div>
66
+ </div>
67
+ </div>
68
+ </div>
69
+
70
+ <div className="flyin__content-cards-wrapper">
71
+ <div className="flyin__content-cards">
72
+ <div className="flyin__content-card flyin__content-card--selected">
73
+ <div className="flyin__content-card-top">
74
+ <span className="flyin__content-card-top-price">€129.00</span>
75
+ <span className="flyin__content-card-top-tag">Basic</span>
76
+ </div>
77
+
78
+ <div className="flyin__content-card-middle">
79
+ <div className="flyin__content-card-middle-rows">
80
+ <div className="flyin__content-card-middle-row">
81
+ <span className="flyin__content-card-middle-row-left">Number of travellers</span>
82
+ <span className="flyin__content-card-middle-row-right">2</span>
83
+ </div>
84
+
85
+ <div className="flyin__content-card-middle-row">
86
+ <span className="flyin__content-card-middle-row-left">Travel class</span>
87
+ <span className="flyin__content-card-middle-row-right">Economy (Light)</span>
88
+ </div>
89
+
90
+ <div className="flyin__content-card-middle-row">
91
+ <span className="flyin__content-card-middle-row-left">Booking class</span>
92
+ <span className="flyin__content-card-middle-row-right">K</span>
93
+ </div>
94
+
95
+ <div className="flyin__content-card-middle-row">
96
+ <span className="flyin__content-card-middle-row-left">Fare basis</span>
97
+ <span className="flyin__content-card-middle-row-right">KOWBE</span>
98
+ </div>
99
+
100
+ <div className="flyin__content-data">
101
+ <div className="flyin__content-data__item">
102
+ <div className="flyin__content-data__item-icon">
103
+ <img src="icons/search-flightcard-suitcase-icon.svg" width="16" height="16" alt="" />
104
+ </div>
105
+ <div className="flyin__content-data__item-content">
106
+ <div className="flyin__content-data__item-content-title">Carry-on luggage</div>
107
+ <div className="flyin__content-data__item-content-description">1 x 8kg</div>
108
+ </div>
109
+ </div>
110
+
111
+ <div className="flyin__content-data__item">
112
+ <div className="flyin__content-data__item-icon">
113
+ <img src="icons/search-flightcard-suitcase-icon.svg" width="16" height="16" alt="" />
114
+ </div>
115
+ <div className="flyin__content-data__item-content">
116
+ <div className="flyin__content-data__item-content-title">Checked luggage</div>
117
+ <div className="flyin__content-data__item-content-description">Not included</div>
118
+ </div>
119
+ </div>
120
+
121
+ <div className="flyin__content-data__item">
122
+ <div className="flyin__content-data__item-icon">
123
+ <img src="icons/seat-selection.svg" width="16" height="16" alt="" />
124
+ </div>
125
+ <div className="flyin__content-data__item-content">
126
+ <div className="flyin__content-data__item-content-title">Seat selection</div>
127
+ <div className="flyin__content-data__item-content-description">Not included</div>
128
+ </div>
129
+ </div>
130
+
131
+ <div className="flyin__content-data__item">
132
+ <div className="flyin__content-data__item-icon">
133
+ <img src="icons/ticket-change.svg" width="16" height="16" alt="" />
134
+ </div>
135
+ <div className="flyin__content-data__item-content">
136
+ <div className="flyin__content-data__item-content-title">Refund</div>
137
+ <div className="flyin__content-data__item-content-description">Not allowed</div>
138
+ </div>
139
+ </div>
140
+
141
+ <div className="flyin__content-data__item">
142
+ <div className="flyin__content-data__item-icon flyin__content-data__item-icon--other">
143
+ <img src="icons/other-icon.svg" width="20" height="20" alt="" />
144
+ </div>
145
+ <div className="flyin__content-data__item-content">
146
+ <div className="flyin__content-data__item-content-title">Other</div>
147
+ <ul className="flyin__content-data__item-content-description flyin__content-data__item-content-description--list">
148
+ <li>Boarding group last</li>
149
+ <li>No changes</li>
150
+ </ul>
151
+ </div>
152
+ </div>
153
+ </div>
154
+ </div>
155
+ </div>
156
+
157
+ <div className="flyin__content-card-bottom">
158
+ <span>Current selection</span>
159
+ </div>
160
+ </div>
161
+
162
+ <div className="flyin__content-card">
163
+ <div className="flyin__content-card-top">
164
+ <span className="flyin__content-card-top-price">€169.00</span>
165
+ <span className="flyin__content-card-top-tag">Standard</span>
166
+ </div>
167
+
168
+ <div className="flyin__content-card-middle">
169
+ <div className="flyin__content-card-middle-rows">
170
+ <div className="flyin__content-card-middle-row">
171
+ <span className="flyin__content-card-middle-row-left">Number of travellers</span>
172
+ <span className="flyin__content-card-middle-row-right">2</span>
173
+ </div>
174
+
175
+ <div className="flyin__content-card-middle-row">
176
+ <span className="flyin__content-card-middle-row-left">Travel class</span>
177
+ <span className="flyin__content-card-middle-row-right">Economy (Standard)</span>
178
+ </div>
179
+
180
+ <div className="flyin__content-card-middle-row">
181
+ <span className="flyin__content-card-middle-row-left">Booking class</span>
182
+ <span className="flyin__content-card-middle-row-right">M</span>
183
+ </div>
184
+
185
+ <div className="flyin__content-card-middle-row">
186
+ <span className="flyin__content-card-middle-row-left">Fare basis</span>
187
+ <span className="flyin__content-card-middle-row-right">MOWBE</span>
188
+ </div>
189
+
190
+ <div className="flyin__content-data">
191
+ <div className="flyin__content-data__item">
192
+ <div className="flyin__content-data__item-icon">
193
+ <img src="icons/search-flightcard-suitcase-icon.svg" width="16" height="16" alt="" />
194
+ </div>
195
+ <div className="flyin__content-data__item-content">
196
+ <div className="flyin__content-data__item-content-title">Carry-on luggage</div>
197
+ <div className="flyin__content-data__item-content-description">1 x 8kg</div>
198
+ </div>
199
+ </div>
200
+
201
+ <div className="flyin__content-data__item">
202
+ <div className="flyin__content-data__item-icon">
203
+ <img src="icons/search-flightcard-suitcase-icon.svg" width="16" height="16" alt="" />
204
+ </div>
205
+ <div className="flyin__content-data__item-content">
206
+ <div className="flyin__content-data__item-content-title">Checked luggage</div>
207
+ <div className="flyin__content-data__item-content-description">1 x 23kg</div>
208
+ </div>
209
+ </div>
210
+
211
+ <div className="flyin__content-data__item">
212
+ <div className="flyin__content-data__item-icon">
213
+ <img src="icons/seat-selection.svg" width="16" height="16" alt="" />
214
+ </div>
215
+ <div className="flyin__content-data__item-content">
216
+ <div className="flyin__content-data__item-content-title">Seat selection</div>
217
+ <div className="flyin__content-data__item-content-description">Included</div>
218
+ </div>
219
+ </div>
220
+
221
+ <div className="flyin__content-data__item">
222
+ <div className="flyin__content-data__item-icon">
223
+ <img src="icons/check-in.svg" width="16" height="16" alt="" />
224
+ </div>
225
+ <div className="flyin__content-data__item-content">
226
+ <div className="flyin__content-data__item-content-title">Priority</div>
227
+ <div className="flyin__content-data__item-content-description">Fast check-in</div>
228
+ </div>
229
+ </div>
230
+
231
+ <div className="flyin__content-data__item">
232
+ <div className="flyin__content-data__item-icon">
233
+ <img src="icons/other-icon.svg" width="16" height="16" alt="" />
234
+ </div>
235
+ <div className="flyin__content-data__item-content">
236
+ <div className="flyin__content-data__item-content-title">Other</div>
237
+ <ul className="flyin__content-data__item-content-description flyin__content-data__item-content-description--list">
238
+ <li>Changes allowed with fee</li>
239
+ </ul>
240
+ </div>
241
+ </div>
242
+ </div>
243
+ </div>
244
+ </div>
245
+
246
+ <div className="flyin__content-card-button">Select</div>
247
+ </div>
248
+
249
+ <div className="flyin__content-card">
250
+ <div className="flyin__content-card-top">
251
+ <span className="flyin__content-card-top-price">€219.00</span>
252
+ <span className="flyin__content-card-top-tag">Flex</span>
253
+ </div>
254
+
255
+ <div className="flyin__content-card-middle">
256
+ <div className="flyin__content-card-middle-rows">
257
+ <div className="flyin__content-card-middle-row">
258
+ <span className="flyin__content-card-middle-row-left">Number of travellers</span>
259
+ <span className="flyin__content-card-middle-row-right">2</span>
260
+ </div>
261
+
262
+ <div className="flyin__content-card-middle-row">
263
+ <span className="flyin__content-card-middle-row-left">Travel class</span>
264
+ <span className="flyin__content-card-middle-row-right">Economy (Flex)</span>
265
+ </div>
266
+
267
+ <div className="flyin__content-card-middle-row">
268
+ <span className="flyin__content-card-middle-row-left">Booking class</span>
269
+ <span className="flyin__content-card-middle-row-right">Y</span>
270
+ </div>
271
+
272
+ <div className="flyin__content-card-middle-row">
273
+ <span className="flyin__content-card-middle-row-left">Fare basis</span>
274
+ <span className="flyin__content-card-middle-row-right">YOWBE</span>
275
+ </div>
276
+
277
+ <div className="flyin__content-data">
278
+ <div className="flyin__content-data__item">
279
+ <div className="flyin__content-data__item-icon">
280
+ <img src="icons/search-flightcard-suitcase-icon.svg" width="16" height="16" alt="" />
281
+ </div>
282
+ <div className="flyin__content-data__item-content">
283
+ <div className="flyin__content-data__item-content-title">Carry-on luggage</div>
284
+ <div className="flyin__content-data__item-content-description">1 x 8kg</div>
285
+ </div>
286
+ </div>
287
+
288
+ <div className="flyin__content-data__item">
289
+ <div className="flyin__content-data__item-icon">
290
+ <img src="icons/search-flightcard-suitcase-icon.svg" width="16" height="16" alt="" />
291
+ </div>
292
+ <div className="flyin__content-data__item-content">
293
+ <div className="flyin__content-data__item-content-title">Checked luggage</div>
294
+ <div className="flyin__content-data__item-content-description">1 x 23kg</div>
295
+ </div>
296
+ </div>
297
+
298
+ <div className="flyin__content-data__item">
299
+ <div className="flyin__content-data__item-icon">
300
+ <img src="icons/lounge.svg" width="16" height="16" alt="" />
301
+ </div>
302
+ <div className="flyin__content-data__item-content">
303
+ <div className="flyin__content-data__item-content-title">Lounge</div>
304
+ <div className="flyin__content-data__item-content-description">Included</div>
305
+ </div>
306
+ </div>
307
+
308
+ <div className="flyin__content-data__item">
309
+ <div className="flyin__content-data__item-icon">
310
+ <img src="icons/ticket-change.svg" width="16" height="16" alt="" />
311
+ </div>
312
+ <div className="flyin__content-data__item-content">
313
+ <div className="flyin__content-data__item-content-title">Refund</div>
314
+ <div className="flyin__content-data__item-content-description">Allowed with fee</div>
315
+ </div>
316
+ </div>
317
+ </div>
318
+ </div>
319
+ </div>
320
+
321
+ <div className="flyin__content-card-button">Select</div>
322
+ </div>
323
+ </div>
324
+ </div>
325
+
326
+ <div className="flyin__button-wrapper">
327
+ <button className="flyin__button">Next</button>
328
+ </div>
329
+ </div>
330
+ </div>
331
+ );
332
+ };
333
+
334
+ export default FlyIn;
@@ -314,6 +314,18 @@
314
314
  "STOP_TIME": "مدة التوقف",
315
315
  "ACCOMMODATION": "الإقامة",
316
316
  "VIEW_DETAILS": "عرض التفاصيل",
317
- "NIGHTS": "ليالٍ"
317
+ "NIGHTS": "ليالٍ",
318
+ "MORNING_RANGE": "الصباح",
319
+ "AFTERNOON_RANGE": "بعد الظهر",
320
+ "EVENING_RANGE": "المساء",
321
+ "NIGHT_RANGE": "الليل",
322
+ "DEPARTURE_RANGE": "نطاق المغادرة",
323
+ "DEPARTURE_AIRPORTS": "مطارات المغادرة",
324
+ "ARRIVAL_AIRPORTS": "مطارات الوصول",
325
+ "PRICE": "السعر",
326
+ "DEPARTURE_TIME_ASC": "وقت المغادرة تصاعدياً",
327
+ "DEPARTURE_TIME_DESC": "وقت المغادرة تنازلياً",
328
+ "DURATION_ASC": "المدة تصاعدياً",
329
+ "DURATION_DESC": "المدة تنازلياً"
318
330
  }
319
331
  }
@@ -314,6 +314,18 @@
314
314
  "STOP_TIME": "Skiftetid",
315
315
  "ACCOMMODATION": "Indkvartering",
316
316
  "VIEW_DETAILS": "Se detaljer",
317
- "NIGHTS": "nætter"
317
+ "NIGHTS": "nætter",
318
+ "MORNING_RANGE": "Morgen",
319
+ "AFTERNOON_RANGE": "Eftermiddag",
320
+ "EVENING_RANGE": "Aften",
321
+ "NIGHT_RANGE": "Nat",
322
+ "DEPARTURE_RANGE": "Afgangstidspunkt",
323
+ "DEPARTURE_AIRPORTS": "Afgangslufthavne",
324
+ "ARRIVAL_AIRPORTS": "Ankomstlufthavne",
325
+ "PRICE": "Pris",
326
+ "DEPARTURE_TIME_ASC": "Afgangstid stigende",
327
+ "DEPARTURE_TIME_DESC": "Afgangstid faldende",
328
+ "DURATION_ASC": "Varighed stigende",
329
+ "DURATION_DESC": "Varighed faldende"
318
330
  }
319
331
  }
@@ -291,6 +291,10 @@
291
291
  "SEARCHRESULTCTA": "Details anzeigen",
292
292
  "SORTBY": "Sortieren nach",
293
293
  "PRICE_ASC": "Preis (aufsteigend)",
294
+ "DEPARTURE_TIME_ASC": "Abflugzeit aufsteigend",
295
+ "DEPARTURE_TIME_DESC": "Abflugzeit absteigend",
296
+ "DURATION_ASC": "Dauer aufsteigend",
297
+ "DURATION_DESC": "Dauer absteigend",
294
298
  "PRICE_DESC": "Preis (absteigend)",
295
299
  "DEPARTURE_ASC": "Abreisedatum (früheste zuerst)",
296
300
  "FILTERS": "Filter",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "Umsteigezeit",
315
319
  "ACCOMMODATION": "Unterkunft",
316
320
  "VIEW_DETAILS": "Details anzeigen",
317
- "NIGHTS": "Nächte"
321
+ "NIGHTS": "Nächte",
322
+ "MORNING_RANGE": "Morgen",
323
+ "AFTERNOON_RANGE": "Nachmittag",
324
+ "EVENING_RANGE": "Abend",
325
+ "NIGHT_RANGE": "Nacht",
326
+ "DEPARTURE_RANGE": "Abflugzeitraum",
327
+ "DEPARTURE_AIRPORTS": "Abflughäfen",
328
+ "ARRIVAL_AIRPORTS": "Ankunftsflughäfen",
329
+ "PRICE": "Preis"
318
330
  }
319
331
  }
@@ -296,6 +296,10 @@
296
296
  "SORTBY": "Sort by",
297
297
  "PRICE_ASC": "Price (low to high)",
298
298
  "PRICE_DESC": "Price (high to low)",
299
+ "DEPARTURE_TIME_ASC": "Departure time ascending",
300
+ "DEPARTURE_TIME_DESC": "Departure time descending",
301
+ "DURATION_ASC": "Duration ascending",
302
+ "DURATION_DESC": "Duration descending",
299
303
  "DEPARTURE_ASC": "Departure date (soonest first)",
300
304
  "FILTERS": "Filters",
301
305
  "SHOW_ITINERARY": "Show itinerary",
@@ -318,6 +322,14 @@
318
322
  "STOP_TIME": "Change time",
319
323
  "ACCOMMODATION": "Accommodation",
320
324
  "VIEW_DETAILS": "View details",
321
- "NIGHTS": "nights"
325
+ "NIGHTS": "nights",
326
+ "PRICE": "Price",
327
+ "MORNING_RANGE": "Morning",
328
+ "AFTERNOON_RANGE": "Afternoon",
329
+ "EVENING_RANGE": "Evening",
330
+ "NIGHT_RANGE": "Night",
331
+ "DEPARTURE_RANGE": "Departure range",
332
+ "DEPARTURE_AIRPORTS": "Departure airports",
333
+ "ARRIVAL_AIRPORTS": "Arrival airports"
322
334
  }
323
335
  }
@@ -292,6 +292,10 @@
292
292
  "SORTBY": "Ordenar por",
293
293
  "PRICE_ASC": "Precio (de menor a mayor)",
294
294
  "PRICE_DESC": "Precio (de mayor a menor)",
295
+ "DEPARTURE_TIME_ASC": "Hora de salida ascendente",
296
+ "DEPARTURE_TIME_DESC": "Hora de salida descendente",
297
+ "DURATION_ASC": "Duración ascendente",
298
+ "DURATION_DESC": "Duración descendente",
295
299
  "DEPARTURE_ASC": "Fecha de salida (más próxima primero)",
296
300
  "FILTERS": "Filtros",
297
301
  "SHOW_ITINERARY": "Mostrar itinerario",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "Tiempo de escala",
315
319
  "ACCOMMODATION": "Alojamiento",
316
320
  "VIEW_DETAILS": "Ver detalles",
317
- "NIGHTS": "noches"
321
+ "NIGHTS": "noches",
322
+ "MORNING_RANGE": "Mañana",
323
+ "AFTERNOON_RANGE": "Tarde",
324
+ "EVENING_RANGE": "Noche",
325
+ "NIGHT_RANGE": "Noche",
326
+ "DEPARTURE_RANGE": "Franja de salida",
327
+ "DEPARTURE_AIRPORTS": "Aeropuertos de salida",
328
+ "ARRIVAL_AIRPORTS": "Aeropuertos de llegada",
329
+ "PRICE": "Precio"
318
330
  }
319
331
  }
@@ -296,6 +296,10 @@
296
296
  "SORTBY": "Trier par",
297
297
  "PRICE_ASC": "Prix (croissant)",
298
298
  "PRICE_DESC": "Prix (décroissant)",
299
+ "DEPARTURE_TIME_ASC": "Heure de départ croissante",
300
+ "DEPARTURE_TIME_DESC": "Heure de départ décroissante",
301
+ "DURATION_ASC": "Durée croissante",
302
+ "DURATION_DESC": "Durée décroissante",
299
303
  "DEPARTURE_ASC": "Date de départ (la plus proche d’abord)",
300
304
  "FILTERS": "Filtres",
301
305
  "SHOW_ITINERARY": "Afficher l’itinéraire",
@@ -318,6 +322,14 @@
318
322
  "STOP_TIME": "Temps d’escale",
319
323
  "ACCOMMODATION": "Hébergement",
320
324
  "VIEW_DETAILS": "Voir les détails",
321
- "NIGHTS": "nuits"
325
+ "NIGHTS": "nuits",
326
+ "MORNING_RANGE": "Matin",
327
+ "AFTERNOON_RANGE": "Après-midi",
328
+ "EVENING_RANGE": "Soir",
329
+ "NIGHT_RANGE": "Nuit",
330
+ "DEPARTURE_RANGE": "Plage de départ",
331
+ "DEPARTURE_AIRPORTS": "Aéroports de départ",
332
+ "ARRIVAL_AIRPORTS": "Aéroports d’arrivée",
333
+ "PRICE": "Prix"
322
334
  }
323
335
  }
@@ -292,6 +292,10 @@
292
292
  "SORTBY": "Trier par",
293
293
  "PRICE_ASC": "Prix (croissant)",
294
294
  "PRICE_DESC": "Prix (décroissant)",
295
+ "DEPARTURE_TIME_ASC": "Heure de départ croissante",
296
+ "DEPARTURE_TIME_DESC": "Heure de départ décroissante",
297
+ "DURATION_ASC": "Durée croissante",
298
+ "DURATION_DESC": "Durée décroissante",
295
299
  "DEPARTURE_ASC": "Date de départ (la plus proche d’abord)",
296
300
  "FILTERS": "Filtres",
297
301
  "SHOW_ITINERARY": "Afficher l’itinéraire",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "Temps d’escale",
315
319
  "ACCOMMODATION": "Hébergement",
316
320
  "VIEW_DETAILS": "Voir les détails",
317
- "NIGHTS": "nuits"
321
+ "NIGHTS": "nuits",
322
+ "MORNING_RANGE": "Matin",
323
+ "AFTERNOON_RANGE": "Après-midi",
324
+ "EVENING_RANGE": "Soir",
325
+ "NIGHT_RANGE": "Nuit",
326
+ "DEPARTURE_RANGE": "Plage de départ",
327
+ "DEPARTURE_AIRPORTS": "Aéroports de départ",
328
+ "ARRIVAL_AIRPORTS": "Aéroports d’arrivée",
329
+ "PRICE": "Prix"
318
330
  }
319
331
  }
@@ -292,6 +292,10 @@
292
292
  "SORTBY": "Raða eftir",
293
293
  "PRICE_ASC": "Verð (lægst til hæst)",
294
294
  "PRICE_DESC": "Verð (hæst til lægst)",
295
+ "DEPARTURE_TIME_ASC": "Brottfarartími hækkandi",
296
+ "DEPARTURE_TIME_DESC": "Brottfarartími lækkandi",
297
+ "DURATION_ASC": "Lengd hækkandi",
298
+ "DURATION_DESC": "Lengd lækkandi",
295
299
  "DEPARTURE_ASC": "Brottfarardagur (nærst fyrst)",
296
300
  "FILTERS": "Síur",
297
301
  "SHOW_ITINERARY": "Sýna ferðaráætlun",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "Skipti tími",
315
319
  "ACCOMMODATION": "Gisting",
316
320
  "VIEW_DETAILS": "Skoða upplýsingar",
317
- "NIGHTS": "nætur"
321
+ "NIGHTS": "nætur",
322
+ "MORNING_RANGE": "Morgunn",
323
+ "AFTERNOON_RANGE": "Síðdegi",
324
+ "EVENING_RANGE": "Kvöld",
325
+ "NIGHT_RANGE": "Nótt",
326
+ "DEPARTURE_RANGE": "Brottfarartímabil",
327
+ "DEPARTURE_AIRPORTS": "Brottfararflugvellir",
328
+ "ARRIVAL_AIRPORTS": "Komuflugvellir",
329
+ "PRICE": "Verð"
318
330
  }
319
331
  }
@@ -292,6 +292,10 @@
292
292
  "SORTBY": "Ordina per",
293
293
  "PRICE_ASC": "Prezzo (dal più basso al più alto)",
294
294
  "PRICE_DESC": "Prezzo (dal più alto al più basso)",
295
+ "DEPARTURE_TIME_ASC": "Orario di partenza crescente",
296
+ "DEPARTURE_TIME_DESC": "Orario di partenza decrescente",
297
+ "DURATION_ASC": "Durata crescente",
298
+ "DURATION_DESC": "Durata decrescente",
295
299
  "DEPARTURE_ASC": "Data di partenza (prima la più vicina)",
296
300
  "FILTERS": "Filtri",
297
301
  "SHOW_ITINERARY": "Mostra itinerario",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "Tempo di cambio",
315
319
  "ACCOMMODATION": "Alloggio",
316
320
  "VIEW_DETAILS": "Visualizza dettagli",
317
- "NIGHTS": "notti"
321
+ "NIGHTS": "notti",
322
+ "MORNING_RANGE": "Mattina",
323
+ "AFTERNOON_RANGE": "Pomeriggio",
324
+ "EVENING_RANGE": "Sera",
325
+ "NIGHT_RANGE": "Notte",
326
+ "DEPARTURE_RANGE": "Fascia di partenza",
327
+ "DEPARTURE_AIRPORTS": "Aeroporti di partenza",
328
+ "ARRIVAL_AIRPORTS": "Aeroporti di arrivo",
329
+ "PRICE": "Prezzo"
318
330
  }
319
331
  }
@@ -292,6 +292,10 @@
292
292
  "SORTBY": "並び替え",
293
293
  "PRICE_ASC": "価格(安い順)",
294
294
  "PRICE_DESC": "価格(高い順)",
295
+ "DEPARTURE_TIME_ASC": "出発時刻(昇順)",
296
+ "DEPARTURE_TIME_DESC": "出発時刻(降順)",
297
+ "DURATION_ASC": "所要時間(昇順)",
298
+ "DURATION_DESC": "所要時間(降順)",
295
299
  "DEPARTURE_ASC": "出発日(早い順)",
296
300
  "FILTERS": "フィルター",
297
301
  "SHOW_ITINERARY": "旅程を表示",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "乗り換え時間",
315
319
  "ACCOMMODATION": "宿泊",
316
320
  "VIEW_DETAILS": "詳細を見る",
317
- "NIGHTS": "泊"
321
+ "NIGHTS": "泊",
322
+ "MORNING_RANGE": "朝",
323
+ "AFTERNOON_RANGE": "午後",
324
+ "EVENING_RANGE": "夕方",
325
+ "NIGHT_RANGE": "夜",
326
+ "DEPARTURE_RANGE": "出発時間帯",
327
+ "DEPARTURE_AIRPORTS": "出発空港",
328
+ "ARRIVAL_AIRPORTS": "到着空港",
329
+ "PRICE": "価格"
318
330
  }
319
331
  }
@@ -296,6 +296,10 @@
296
296
  "SORTBY": "Sorteren op",
297
297
  "PRICE_ASC": "Prijs (laag naar hoog)",
298
298
  "PRICE_DESC": "Prijs (hoog naar laag)",
299
+ "DEPARTURE_TIME_ASC": "Vertrektijd oplopend",
300
+ "DEPARTURE_TIME_DESC": "Vertrektijd aflopend",
301
+ "DURATION_ASC": "Duur oplopend",
302
+ "DURATION_DESC": "Duur aflopend",
299
303
  "DEPARTURE_ASC": "Vertrekdatum (dichtstbij eerst)",
300
304
  "FILTERS": "Filters",
301
305
  "SHOW_ITINERARY": "Toon reisplan",
@@ -318,6 +322,14 @@
318
322
  "STOP_TIME": "Wachttijd",
319
323
  "ACCOMMODATION": "Accommodatie",
320
324
  "VIEW_DETAILS": "Bekijk details",
321
- "NIGHTS": "nachten"
325
+ "NIGHTS": "nachten",
326
+ "MORNING_RANGE": "Ochtend",
327
+ "AFTERNOON_RANGE": "Namiddag",
328
+ "EVENING_RANGE": "Avond",
329
+ "NIGHT_RANGE": "Nacht",
330
+ "DEPARTURE_RANGE": "Vertrektijdstip",
331
+ "DEPARTURE_AIRPORTS": "Vertrekluchthavens",
332
+ "ARRIVAL_AIRPORTS": "Aankomstluchthavens",
333
+ "PRICE": "Prijs"
322
334
  }
323
335
  }
@@ -292,6 +292,10 @@
292
292
  "SORTBY": "Sorteren op",
293
293
  "PRICE_ASC": "Prijs (laag naar hoog)",
294
294
  "PRICE_DESC": "Prijs (hoog naar laag)",
295
+ "DEPARTURE_TIME_ASC": "Vertrektijd oplopend",
296
+ "DEPARTURE_TIME_DESC": "Vertrektijd aflopend",
297
+ "DURATION_ASC": "Duur oplopend",
298
+ "DURATION_DESC": "Duur aflopend",
295
299
  "DEPARTURE_ASC": "Vertrekdatum (dichtstbij eerst)",
296
300
  "FILTERS": "Filters",
297
301
  "SHOW_ITINERARY": "Toon reisplan",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "Wachttijd",
315
319
  "ACCOMMODATION": "Accommodatie",
316
320
  "VIEW_DETAILS": "Bekijk details",
317
- "NIGHTS": "nachten"
321
+ "NIGHTS": "nachten",
322
+ "MORNING_RANGE": "Ochtend",
323
+ "AFTERNOON_RANGE": "Namiddag",
324
+ "EVENING_RANGE": "Avond",
325
+ "NIGHT_RANGE": "Nacht",
326
+ "DEPARTURE_RANGE": "Vertrektijdstip",
327
+ "DEPARTURE_AIRPORTS": "Vertrekluchthavens",
328
+ "ARRIVAL_AIRPORTS": "Aankomstluchthavens",
329
+ "PRICE": "Prijs"
318
330
  }
319
331
  }