@travelswitchhq/flight-search-react 1.0.0 → 1.0.2
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/dist/index.cjs +266 -206
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +266 -206
- package/dist/index.mjs.map +1 -1
- package/package.json +47 -47
package/dist/index.mjs
CHANGED
|
@@ -8,31 +8,36 @@ import { JSEncrypt } from "jsencrypt";
|
|
|
8
8
|
|
|
9
9
|
// src/flight-search-widget.styles.ts
|
|
10
10
|
var flightSearchWidgetStyles = `
|
|
11
|
-
|
|
12
|
-
--font-family: Montserrat, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
13
|
-
--
|
|
14
|
-
--label-color: #66797F;
|
|
15
|
-
--body-text: #0B1215;
|
|
16
|
-
--btn-radius: 8px;
|
|
17
|
-
--radius:
|
|
18
|
-
--primary-btn:
|
|
19
|
-
--primary-button-text: #ffffff;
|
|
20
|
-
--button-primary-border:
|
|
21
|
-
--form-border: #d8dcde;
|
|
22
|
-
--white: #ffffff;
|
|
23
|
-
--gray: #999;
|
|
24
|
-
--
|
|
25
|
-
--widget-
|
|
26
|
-
--widget-
|
|
27
|
-
--widget-
|
|
28
|
-
--widget-
|
|
29
|
-
--widget-shadow
|
|
30
|
-
--
|
|
31
|
-
--
|
|
32
|
-
--
|
|
33
|
-
--
|
|
34
|
-
--
|
|
35
|
-
--
|
|
11
|
+
.sw-container {
|
|
12
|
+
--sw-font-family: Montserrat, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
13
|
+
--sw-en-font-family: Arial, sans-serif;
|
|
14
|
+
--sw-label-color: #66797F;
|
|
15
|
+
--sw-body-text: #0B1215;
|
|
16
|
+
--sw-btn-radius: 8px;
|
|
17
|
+
--sw-radius: var(--sw-size-md-1);
|
|
18
|
+
--sw-primary-btn: var(--primary);
|
|
19
|
+
--sw-primary-button-text: #ffffff;
|
|
20
|
+
--sw-button-primary-border: var(--primary);
|
|
21
|
+
--sw-form-border: #d8dcde;
|
|
22
|
+
--sw-white: #ffffff;
|
|
23
|
+
--sw-gray: #999;
|
|
24
|
+
--sw-error: #f60b0b;
|
|
25
|
+
--sw-widget-bg: #f5f5f8;
|
|
26
|
+
--sw-widget-font-size: 1.4rem;
|
|
27
|
+
--sw-widget-z-index-base: 1000;
|
|
28
|
+
--sw-widget-transition: all 0.2s ease;
|
|
29
|
+
--sw-widget-shadow: 0 var(--sw-size-sm) 8px rgba(0, 0, 0, 0.1);
|
|
30
|
+
--sw-widget-shadow-hover: 0 4px var(--sw-size-md-1) rgba(0, 0, 0, 0.15);
|
|
31
|
+
--sw-space-sm: 2px;
|
|
32
|
+
--sw-space-md: 10px;
|
|
33
|
+
--sw-space-lg: 20px;
|
|
34
|
+
--sw-size-sm: 2px;
|
|
35
|
+
--sw-size-md: 10px;
|
|
36
|
+
--sw-size-md-1: 12px;
|
|
37
|
+
--sw-size-md-2: 14px;
|
|
38
|
+
--sw-size-md-3: 16px;
|
|
39
|
+
--sw-size-md-4: 18px;
|
|
40
|
+
--sw-size-lg: 20px;
|
|
36
41
|
}
|
|
37
42
|
.sw-container {
|
|
38
43
|
contain: layout;
|
|
@@ -43,15 +48,15 @@ var flightSearchWidgetStyles = `
|
|
|
43
48
|
margin: 0;
|
|
44
49
|
padding: 0;
|
|
45
50
|
box-sizing: border-box;
|
|
46
|
-
color: var(--body-text);
|
|
47
|
-
font-family: var(--font-family);
|
|
48
|
-
font-size: var(--widget-font-size);
|
|
51
|
+
color: var(--sw-body-text);
|
|
52
|
+
font-family: var(--sw-font-family);
|
|
53
|
+
font-size: var(--sw-widget-font-size);
|
|
49
54
|
font-weight: 400;
|
|
50
55
|
line-height: 1.5;
|
|
51
56
|
-webkit-font-smoothing: antialiased;
|
|
52
57
|
-moz-osx-font-smoothing: grayscale;
|
|
53
58
|
-webkit-tap-highlight-color: transparent;
|
|
54
|
-
background: var(--widget-bg);
|
|
59
|
+
background: var(--sw-widget-bg);
|
|
55
60
|
*,
|
|
56
61
|
*::before,
|
|
57
62
|
*::after {
|
|
@@ -60,7 +65,7 @@ var flightSearchWidgetStyles = `
|
|
|
60
65
|
}
|
|
61
66
|
.sw-container button,
|
|
62
67
|
.sw-container input {
|
|
63
|
-
font-family: var(--font-family);
|
|
68
|
+
font-family: var(--sw-font-family);
|
|
64
69
|
}
|
|
65
70
|
.sw-container h1,
|
|
66
71
|
.sw-container h2,
|
|
@@ -72,7 +77,7 @@ var flightSearchWidgetStyles = `
|
|
|
72
77
|
display: block;
|
|
73
78
|
margin: 0;
|
|
74
79
|
color: inherit;
|
|
75
|
-
font-family: var(--font-family);
|
|
80
|
+
font-family: var(--sw-font-family);
|
|
76
81
|
font-weight: normal;
|
|
77
82
|
line-height: 1.4;
|
|
78
83
|
}
|
|
@@ -115,7 +120,7 @@ var flightSearchWidgetStyles = `
|
|
|
115
120
|
justify-content: space-between;
|
|
116
121
|
}
|
|
117
122
|
.sw-container .enFont{
|
|
118
|
-
font-family: var(--
|
|
123
|
+
font-family: var(--sw-en-font-family);
|
|
119
124
|
}
|
|
120
125
|
.sw-container .sw-text-ellipsis {
|
|
121
126
|
display: -webkit-box;
|
|
@@ -124,34 +129,35 @@ var flightSearchWidgetStyles = `
|
|
|
124
129
|
text-overflow: ellipsis;
|
|
125
130
|
}
|
|
126
131
|
.sw-container .sw-text-label {
|
|
127
|
-
color: var(--label-color);
|
|
132
|
+
color: var(--sw-label-color);
|
|
128
133
|
}
|
|
129
134
|
.sw-booking-form {
|
|
130
135
|
position: relative;
|
|
131
136
|
display: grid;
|
|
132
137
|
grid-template-columns: 1fr repeat(4, minmax(0, 1fr)) minmax(80px, 0.8fr);
|
|
133
|
-
gap: var(--
|
|
138
|
+
gap: var(--sw-space-sm);
|
|
134
139
|
min-height: 55px;
|
|
135
140
|
min-width: 0;
|
|
136
|
-
border-radius: var(--radius);
|
|
141
|
+
border-radius: var(--sw-radius);
|
|
137
142
|
overflow: visible;
|
|
138
143
|
}
|
|
139
144
|
.sw-card-box {
|
|
140
145
|
position: relative;
|
|
141
146
|
display: block;
|
|
142
147
|
padding: 20px;
|
|
143
|
-
background-color: var(--white);
|
|
144
|
-
border-radius: var(--radius);
|
|
148
|
+
background-color: var(--sw-white);
|
|
149
|
+
border-radius: var(--sw-radius);
|
|
150
|
+
}
|
|
151
|
+
.sw-card-box .br-right{
|
|
152
|
+
border-top-right-radius: var(--sw-radius);
|
|
153
|
+
border-bottom-right-radius: var(--sw-radius);
|
|
145
154
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
border-
|
|
149
|
-
border-bottom-right-radius: var(--radius);
|
|
155
|
+
.sw-card-box .br-left{
|
|
156
|
+
border-top-left-radius: var(--sw-radius);
|
|
157
|
+
border-bottom-left-radius: var(--sw-radius);
|
|
150
158
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
border-top-left-radius: var(--radius);
|
|
154
|
-
border-bottom-left-radius: var(--radius);
|
|
159
|
+
.sw-com-cal .p-disabled{
|
|
160
|
+
opacity: 0.3;
|
|
155
161
|
}
|
|
156
162
|
.sw-form-field {
|
|
157
163
|
display: flex;
|
|
@@ -173,11 +179,12 @@ body[dir="ltr"] .sw-card-box .br-left{
|
|
|
173
179
|
padding: 0;
|
|
174
180
|
overflow: hidden;
|
|
175
181
|
white-space: nowrap;
|
|
176
|
-
color: var(--label-color);
|
|
182
|
+
color: var(--sw-label-color);
|
|
177
183
|
font-size: 12px;
|
|
178
184
|
font-weight: 500;
|
|
179
185
|
-webkit-box-orient: vertical;
|
|
180
186
|
text-overflow: ellipsis;
|
|
187
|
+
text-align: initial;
|
|
181
188
|
}
|
|
182
189
|
.p-button-label {
|
|
183
190
|
flex: unset;
|
|
@@ -193,13 +200,13 @@ body[dir="ltr"] .sw-card-box .br-left{
|
|
|
193
200
|
outline: none;
|
|
194
201
|
background: transparent;
|
|
195
202
|
box-shadow: none;
|
|
196
|
-
color: var(--body-text);
|
|
203
|
+
color: var(--sw-body-text);
|
|
197
204
|
font-size: 14px;
|
|
198
205
|
font-weight: 500;
|
|
199
206
|
}
|
|
200
207
|
.sw-form-field input::placeholder,
|
|
201
208
|
.sw-form-field .p-inputtext::placeholder {
|
|
202
|
-
color: var(--label-color) !important;
|
|
209
|
+
color: var(--sw-label-color) !important;
|
|
203
210
|
}
|
|
204
211
|
.sw-form-swap {
|
|
205
212
|
position: absolute;
|
|
@@ -210,7 +217,7 @@ body[dir="ltr"] .sw-card-box .br-left{
|
|
|
210
217
|
align-items: center;
|
|
211
218
|
justify-content: center;
|
|
212
219
|
padding: 3px;
|
|
213
|
-
border: 1px solid var(--form-border);
|
|
220
|
+
border: 1px solid var(--sw-form-border);
|
|
214
221
|
border-radius: 50%;
|
|
215
222
|
background-color: #fff;
|
|
216
223
|
cursor: pointer;
|
|
@@ -236,16 +243,16 @@ padding-inline-start: 25px;
|
|
|
236
243
|
outline: none;
|
|
237
244
|
background: transparent;
|
|
238
245
|
cursor: pointer;
|
|
239
|
-
color: var(--body-text);
|
|
246
|
+
color: var(--sw-body-text);
|
|
240
247
|
font-size: 14px;
|
|
241
248
|
font-weight: 500;
|
|
242
249
|
}
|
|
243
250
|
.sw-custom-dropdown-trigger .sw-placeholder {
|
|
244
|
-
color: var(--label-color);
|
|
251
|
+
color: var(--sw-label-color);
|
|
245
252
|
}
|
|
246
253
|
.sw-dropdown-arrow {
|
|
247
254
|
margin-left: 8px;
|
|
248
|
-
color: var(--label-color);
|
|
255
|
+
color: var(--sw-label-color);
|
|
249
256
|
font-size: 10px;
|
|
250
257
|
transition: transform 0.2s ease;
|
|
251
258
|
}
|
|
@@ -254,7 +261,7 @@ padding-inline-start: 25px;
|
|
|
254
261
|
top: calc(100% + 5px);
|
|
255
262
|
left: 0;
|
|
256
263
|
right: 0;
|
|
257
|
-
z-index: calc(var(--widget-z-index-base) + 5);
|
|
264
|
+
z-index: calc(var(--sw-widget-z-index-base) + 5);
|
|
258
265
|
display: block;
|
|
259
266
|
visibility: visible;
|
|
260
267
|
opacity: 1;
|
|
@@ -267,10 +274,10 @@ padding-inline-start: 25px;
|
|
|
267
274
|
padding: 0;
|
|
268
275
|
overflow: auto;
|
|
269
276
|
overflow-x: hidden;
|
|
270
|
-
background: var(--white);
|
|
271
|
-
border: 1px solid var(--form-border);
|
|
272
|
-
border-radius: var(--radius);
|
|
273
|
-
box-shadow: var(--widget-shadow);
|
|
277
|
+
background: var(--sw-white);
|
|
278
|
+
border: 1px solid var(--sw-form-border);
|
|
279
|
+
border-radius: var(--sw-radius);
|
|
280
|
+
box-shadow: var(--sw-widget-shadow);
|
|
274
281
|
}
|
|
275
282
|
.sw-dropdown::-webkit-scrollbar {
|
|
276
283
|
display: none;
|
|
@@ -284,7 +291,7 @@ padding-inline-start: 25px;
|
|
|
284
291
|
margin: 0 20px;
|
|
285
292
|
padding: 10px 0;
|
|
286
293
|
cursor: pointer;
|
|
287
|
-
font-family: var(--font-family);
|
|
294
|
+
font-family: var(--sw-font-family);
|
|
288
295
|
}
|
|
289
296
|
.p-autocomplete-item{
|
|
290
297
|
font-size: 14px;
|
|
@@ -323,7 +330,7 @@ padding-inline-start: 25px;
|
|
|
323
330
|
margin: 0;
|
|
324
331
|
padding: 0;
|
|
325
332
|
cursor: pointer;
|
|
326
|
-
color: var(--body-text);
|
|
333
|
+
color: var(--sw-body-text);
|
|
327
334
|
font-size: 14px;
|
|
328
335
|
transition: background-color 0.2s ease;
|
|
329
336
|
}
|
|
@@ -343,26 +350,26 @@ padding-inline-start: 25px;
|
|
|
343
350
|
background-color: var(--secondary-light);
|
|
344
351
|
}
|
|
345
352
|
.sw-custom-dropdown-item:first-child {
|
|
346
|
-
border-top-left-radius: var(--btn-radius);
|
|
347
|
-
border-top-right-radius: var(--btn-radius);
|
|
353
|
+
border-top-left-radius: var(--sw-btn-radius);
|
|
354
|
+
border-top-right-radius: var(--sw-btn-radius);
|
|
348
355
|
}
|
|
349
356
|
.sw-custom-dropdown-item:last-child {
|
|
350
|
-
border-bottom-left-radius: var(--btn-radius);
|
|
351
|
-
border-bottom-right-radius: var(--btn-radius);
|
|
357
|
+
border-bottom-left-radius: var(--sw-btn-radius);
|
|
358
|
+
border-bottom-right-radius: var(--sw-btn-radius);
|
|
352
359
|
}
|
|
353
360
|
.sw-rooms-guests-menu {
|
|
354
361
|
position: absolute;
|
|
355
362
|
top: 100%;
|
|
356
363
|
right: 0;
|
|
357
|
-
z-index: var(--widget-z-index-base);
|
|
364
|
+
z-index: var(--sw-widget-z-index-base);
|
|
358
365
|
display: block;
|
|
359
366
|
width: 75%;
|
|
360
367
|
margin-top: 4px;
|
|
361
368
|
padding: 20px;
|
|
362
|
-
background: var(--white);
|
|
363
|
-
border: 1px solid var(--form-border);
|
|
364
|
-
border-radius: var(--radius);
|
|
365
|
-
box-shadow: var(--widget-shadow);
|
|
369
|
+
background: var(--sw-white);
|
|
370
|
+
border: 1px solid var(--sw-form-border);
|
|
371
|
+
border-radius: var(--sw-radius);
|
|
372
|
+
box-shadow: var(--sw-widget-shadow);
|
|
366
373
|
}
|
|
367
374
|
.sw-pos-rel {
|
|
368
375
|
position: relative;
|
|
@@ -395,29 +402,29 @@ padding-inline-start: 25px;
|
|
|
395
402
|
.sw-room-controls-child {
|
|
396
403
|
display: grid;
|
|
397
404
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
398
|
-
gap: var(--
|
|
405
|
+
gap: var(--sw-space-lg);
|
|
399
406
|
min-width: 0;
|
|
400
407
|
}
|
|
401
408
|
.sw-room-controls-child .p-dropdown {
|
|
402
409
|
padding: 10px;
|
|
403
|
-
border: 1px solid var(--form-border);
|
|
404
|
-
border-radius: var(--radius);
|
|
410
|
+
border: 1px solid var(--sw-form-border);
|
|
411
|
+
border-radius: var(--sw-radius);
|
|
405
412
|
}
|
|
406
413
|
.sw-room-controls-child .p-dropdown-item {
|
|
407
414
|
padding: 10px;
|
|
408
415
|
font-size: 14px;
|
|
409
416
|
}
|
|
410
417
|
.sw-room-controls-child .p-dropdown-panel {
|
|
411
|
-
background: var(--white);
|
|
412
|
-
border: 1px solid var(--form-border);
|
|
413
|
-
border-radius: var(--btn-radius);
|
|
418
|
+
background: var(--sw-white);
|
|
419
|
+
border: 1px solid var(--sw-form-border);
|
|
420
|
+
border-radius: var(--sw-btn-radius);
|
|
414
421
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
|
415
422
|
}
|
|
416
423
|
.sw-room-controls-group {
|
|
417
424
|
display: grid;
|
|
418
425
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
419
426
|
justify-content: center;
|
|
420
|
-
gap: var(--
|
|
427
|
+
gap: var(--sw-space-md);
|
|
421
428
|
min-width: 0;
|
|
422
429
|
}
|
|
423
430
|
.sw-room-control-item {
|
|
@@ -425,11 +432,11 @@ padding-inline-start: 25px;
|
|
|
425
432
|
flex-direction: column;
|
|
426
433
|
flex: 1 1 auto;
|
|
427
434
|
justify-content: space-between;
|
|
428
|
-
gap: var(--
|
|
435
|
+
gap: var(--sw-space-sm);
|
|
429
436
|
min-width: 0;
|
|
430
437
|
}
|
|
431
438
|
.sw-room-control-label {
|
|
432
|
-
color: var(--body-text);
|
|
439
|
+
color: var(--sw-body-text);
|
|
433
440
|
font-size: 14px;
|
|
434
441
|
font-weight: 400;
|
|
435
442
|
}
|
|
@@ -451,19 +458,13 @@ padding-inline-start: 25px;
|
|
|
451
458
|
border-radius: 50%;
|
|
452
459
|
background: var(--primary);
|
|
453
460
|
cursor: pointer;
|
|
454
|
-
color: var(--white);
|
|
461
|
+
color: var(--sw-white);
|
|
455
462
|
font-size: 20px;
|
|
456
463
|
font-weight: 500;
|
|
457
|
-
transition: var(--widget-transition);
|
|
464
|
+
transition: var(--sw-widget-transition);
|
|
458
465
|
}
|
|
459
466
|
.sw-count-button:focus-visible {
|
|
460
|
-
outline:
|
|
461
|
-
outline-offset: 2px;
|
|
462
|
-
}
|
|
463
|
-
.sw-count-button:hover:not(:disabled) {
|
|
464
|
-
background: var(--primary-btn);
|
|
465
|
-
opacity: 0.9;
|
|
466
|
-
transform: scale(1.05);
|
|
467
|
+
outline: none;
|
|
467
468
|
}
|
|
468
469
|
.sw-count-button.sw-disabled {
|
|
469
470
|
opacity: 0.6;
|
|
@@ -475,7 +476,7 @@ padding-inline-start: 25px;
|
|
|
475
476
|
.sw-count-value {
|
|
476
477
|
min-width: 30px;
|
|
477
478
|
text-align: center;
|
|
478
|
-
color: var(--body-text);
|
|
479
|
+
color: var(--sw-body-text);
|
|
479
480
|
font-size: 16px;
|
|
480
481
|
font-weight: 500;
|
|
481
482
|
}
|
|
@@ -488,7 +489,7 @@ padding-inline-start: 25px;
|
|
|
488
489
|
margin: 0 !important;
|
|
489
490
|
padding: 1rem;
|
|
490
491
|
border: 1px solid var(--primary);
|
|
491
|
-
border-radius: var(--radius);
|
|
492
|
+
border-radius: var(--sw-radius);
|
|
492
493
|
background-color: transparent;
|
|
493
494
|
cursor: pointer;
|
|
494
495
|
color: var(--primary);
|
|
@@ -505,12 +506,12 @@ padding-inline-start: 25px;
|
|
|
505
506
|
gap: 10px;
|
|
506
507
|
margin-top: 15px;
|
|
507
508
|
padding-top: 15px;
|
|
508
|
-
border-top: 1px solid var(--form-border);
|
|
509
|
+
border-top: 1px solid var(--sw-form-border);
|
|
509
510
|
}
|
|
510
511
|
.sw-reset-button {
|
|
511
512
|
padding: 10px 20px;
|
|
512
513
|
border: 1px solid var(--primary);
|
|
513
|
-
border-radius: var(--btn-radius);
|
|
514
|
+
border-radius: var(--sw-btn-radius);
|
|
514
515
|
background: transparent;
|
|
515
516
|
cursor: pointer;
|
|
516
517
|
color: var(--primary);
|
|
@@ -518,24 +519,17 @@ padding-inline-start: 25px;
|
|
|
518
519
|
font-weight: 500;
|
|
519
520
|
transition: all 0.2s ease;
|
|
520
521
|
}
|
|
521
|
-
.sw-reset-button:hover {
|
|
522
|
-
background: var(--primary-light);
|
|
523
|
-
}
|
|
524
522
|
.sw-apply-button {
|
|
525
523
|
padding: 10px 20px;
|
|
526
|
-
border: 1px solid var(--button-primary-border);
|
|
527
|
-
border-radius: var(--btn-radius);
|
|
528
|
-
background: var(--primary-btn);
|
|
524
|
+
border: 1px solid var(--sw-button-primary-border);
|
|
525
|
+
border-radius: var(--sw-btn-radius);
|
|
526
|
+
background: var(--sw-primary-btn);
|
|
529
527
|
cursor: pointer;
|
|
530
|
-
color: var(--primary-button-text);
|
|
528
|
+
color: var(--sw-primary-button-text);
|
|
531
529
|
font-size: 14px;
|
|
532
530
|
font-weight: 500;
|
|
533
531
|
transition: all 0.2s ease;
|
|
534
532
|
}
|
|
535
|
-
.sw-apply-button:hover {
|
|
536
|
-
opacity: 0.9;
|
|
537
|
-
background: var(--primary);
|
|
538
|
-
}
|
|
539
533
|
.sw-search-button,
|
|
540
534
|
.sw-search-button.p-button {
|
|
541
535
|
display: flex;
|
|
@@ -547,25 +541,19 @@ padding-inline-start: 25px;
|
|
|
547
541
|
min-height: 56px;
|
|
548
542
|
margin: 0;
|
|
549
543
|
padding: 0 15px;
|
|
550
|
-
border: 1px solid var(--button-primary-border);
|
|
551
|
-
background-color: var(--primary-btn);
|
|
544
|
+
border: 1px solid var(--sw-button-primary-border);
|
|
545
|
+
background-color: var(--sw-primary-btn);
|
|
552
546
|
cursor: pointer;
|
|
553
|
-
color: var(--primary-button-text);
|
|
547
|
+
color: var(--sw-primary-button-text);
|
|
554
548
|
font-size: 16px;
|
|
555
549
|
font-weight: 400;
|
|
556
|
-
transition: var(--widget-transition);
|
|
550
|
+
transition: var(--sw-widget-transition);
|
|
557
551
|
}
|
|
558
552
|
.sw-search-button:focus-visible,
|
|
559
553
|
.sw-search-button.p-button:focus-visible {
|
|
560
554
|
outline: 2px solid var(--primary);
|
|
561
555
|
outline-offset: 2px;
|
|
562
556
|
}
|
|
563
|
-
.sw-search-button:hover:not(:disabled),
|
|
564
|
-
.sw-search-button.p-button:hover:not(:disabled) {
|
|
565
|
-
background-color: var(--primary);
|
|
566
|
-
opacity: 0.9;
|
|
567
|
-
box-shadow: var(--widget-shadow-hover);
|
|
568
|
-
}
|
|
569
557
|
.sw-search-button .p-button-icon-left {
|
|
570
558
|
margin: 0;
|
|
571
559
|
}
|
|
@@ -579,17 +567,17 @@ padding-inline-start: 25px;
|
|
|
579
567
|
min-width: 100%;
|
|
580
568
|
margin-top: 5px !important;
|
|
581
569
|
padding: 15px;
|
|
582
|
-
background-color: var(--white);
|
|
583
|
-
border: 1px solid var(--form-border);
|
|
584
|
-
border-radius: var(--radius);
|
|
585
|
-
box-shadow: var(--widget-shadow);
|
|
570
|
+
background-color: var(--sw-white);
|
|
571
|
+
border: 1px solid var(--sw-form-border);
|
|
572
|
+
border-radius: var(--sw-radius);
|
|
573
|
+
box-shadow: var(--sw-widget-shadow);
|
|
586
574
|
}
|
|
587
575
|
.sw-srh-wrap {
|
|
588
576
|
display: flex;
|
|
589
577
|
gap: 2px;
|
|
590
578
|
}
|
|
591
579
|
.sw-com-cal p{
|
|
592
|
-
color: var(--body-text);
|
|
580
|
+
color: var(--sw-body-text);
|
|
593
581
|
font-size: 14px;
|
|
594
582
|
font-weight: 500;
|
|
595
583
|
}
|
|
@@ -624,10 +612,10 @@ padding-inline-start: 25px;
|
|
|
624
612
|
margin: 0;
|
|
625
613
|
padding: 0 5px;
|
|
626
614
|
border: 0;
|
|
627
|
-
border-color: var(--white);
|
|
615
|
+
border-color: var(--sw-white);
|
|
628
616
|
outline: none;
|
|
629
617
|
background: transparent;
|
|
630
|
-
color: var(--body-text);
|
|
618
|
+
color: var(--sw-body-text);
|
|
631
619
|
font-size: 16px;
|
|
632
620
|
font-weight: 500;
|
|
633
621
|
line-height: 20px;
|
|
@@ -640,18 +628,18 @@ padding-inline-start: 25px;
|
|
|
640
628
|
}
|
|
641
629
|
.p-datepicker .p-datepicker-header button {
|
|
642
630
|
border: 0;
|
|
643
|
-
border-color: var(--white);
|
|
631
|
+
border-color: var(--sw-white);
|
|
644
632
|
outline: none;
|
|
645
633
|
box-shadow: none !important;
|
|
646
634
|
background: transparent;
|
|
647
|
-
color: var(--body-text);
|
|
635
|
+
color: var(--sw-body-text);
|
|
648
636
|
font-size: 16px;
|
|
649
637
|
font-weight: 500;
|
|
650
638
|
line-height: 20px;
|
|
651
639
|
}
|
|
652
640
|
.p-datepicker .p-datepicker-calendar-container th {
|
|
653
641
|
padding: 10px 0;
|
|
654
|
-
color: var(--body-text);
|
|
642
|
+
color: var(--sw-body-text);
|
|
655
643
|
font-size: 14px;
|
|
656
644
|
font-weight: 400;
|
|
657
645
|
line-height: 1.4;
|
|
@@ -667,7 +655,7 @@ padding-inline-start: 25px;
|
|
|
667
655
|
height: 45px;
|
|
668
656
|
}
|
|
669
657
|
.p-datepicker-group-container .p-datepicker-group:not(:last-child) {
|
|
670
|
-
border-inline-end: 1px solid var(--form-border);
|
|
658
|
+
border-inline-end: 1px solid var(--sw-form-border);
|
|
671
659
|
padding-inline-end: 10px;
|
|
672
660
|
margin-inline-end: 10px;
|
|
673
661
|
}
|
|
@@ -677,7 +665,7 @@ padding-inline-start: 25px;
|
|
|
677
665
|
.p-datepicker .p-highlight {
|
|
678
666
|
position: relative;
|
|
679
667
|
background: var(--primary) !important;
|
|
680
|
-
color: var(--white) !important;
|
|
668
|
+
color: var(--sw-white) !important;
|
|
681
669
|
}
|
|
682
670
|
.sw-product-tabs {
|
|
683
671
|
position: relative;
|
|
@@ -718,7 +706,7 @@ padding-inline-start: 25px;
|
|
|
718
706
|
gap: 10px;
|
|
719
707
|
width: fit-content;
|
|
720
708
|
margin-top: 15px;
|
|
721
|
-
color: var(--body-text);
|
|
709
|
+
color: var(--sw-body-text);
|
|
722
710
|
font-size: 14px;
|
|
723
711
|
}
|
|
724
712
|
.sw-advanced-search-options .p-toggleable-content {
|
|
@@ -739,7 +727,7 @@ padding-inline-start: 25px;
|
|
|
739
727
|
gap: 10px;
|
|
740
728
|
cursor: pointer;
|
|
741
729
|
user-select: none;
|
|
742
|
-
color: var(--body-text);
|
|
730
|
+
color: var(--sw-body-text);
|
|
743
731
|
font-size: 14px;
|
|
744
732
|
}
|
|
745
733
|
.sw-material-checkbox input {
|
|
@@ -768,7 +756,7 @@ padding-inline-start: 25px;
|
|
|
768
756
|
min-width: 20px;
|
|
769
757
|
height: 20px;
|
|
770
758
|
background-color: #fff;
|
|
771
|
-
border: 1px solid var(--form-border);
|
|
759
|
+
border: 1px solid var(--sw-form-border);
|
|
772
760
|
border-radius: 4px;
|
|
773
761
|
transition: background-color 0.3s, border-color 0.3s;
|
|
774
762
|
}
|
|
@@ -795,8 +783,8 @@ padding-inline-start: 25px;
|
|
|
795
783
|
.sw-tab-content {
|
|
796
784
|
height: 40px;
|
|
797
785
|
padding: 6px 15px;
|
|
798
|
-
border: 1px solid var(--form-border);
|
|
799
|
-
border-radius: var(--radius);
|
|
786
|
+
border: 1px solid var(--sw-form-border);
|
|
787
|
+
border-radius: var(--sw-radius);
|
|
800
788
|
align-content: center;
|
|
801
789
|
}
|
|
802
790
|
@media print {
|
|
@@ -828,9 +816,9 @@ padding-inline-start: 25px;
|
|
|
828
816
|
.sw-srh-grid {
|
|
829
817
|
display: grid;
|
|
830
818
|
grid-template-columns: minmax(200px, 2fr) minmax(100px, 1fr) minmax(80px, 0.6fr) minmax(60px, 0.4fr);
|
|
831
|
-
gap: var(--
|
|
819
|
+
gap: var(--sw-space-sm, 2px);
|
|
832
820
|
margin-top: 15px;
|
|
833
|
-
border-radius: var(--radius);
|
|
821
|
+
border-radius: var(--sw-radius);
|
|
834
822
|
min-width: 0;
|
|
835
823
|
overflow: visible;
|
|
836
824
|
}
|
|
@@ -881,7 +869,7 @@ padding-inline-start: 25px;
|
|
|
881
869
|
position: relative;
|
|
882
870
|
}
|
|
883
871
|
.sw-srh-mc {
|
|
884
|
-
|
|
872
|
+
grid-template-columns: 43% 20% 25% 11.5% !important;
|
|
885
873
|
min-width: 0;
|
|
886
874
|
}
|
|
887
875
|
.sw-srh-mc .sw-com-cal .p-inputtext{
|
|
@@ -896,7 +884,7 @@ padding-inline-start: 25px;
|
|
|
896
884
|
display: flex;
|
|
897
885
|
align-items: flex-end;
|
|
898
886
|
width: fit-content;
|
|
899
|
-
grid-column-start:
|
|
887
|
+
grid-column-start: 3;
|
|
900
888
|
}
|
|
901
889
|
.sw-srh-mc .sw-srh-mc-foot button {
|
|
902
890
|
display: flex;
|
|
@@ -924,12 +912,12 @@ padding-inline-start: 25px;
|
|
|
924
912
|
font-size: 1.4rem;
|
|
925
913
|
}
|
|
926
914
|
.sw-srh-mc .sw-traveller {
|
|
927
|
-
|
|
928
|
-
|
|
915
|
+
grid-row-start: 1;
|
|
916
|
+
grid-column-start: 3;
|
|
929
917
|
}
|
|
930
918
|
.sw-srh-mc button {
|
|
931
|
-
|
|
932
|
-
|
|
919
|
+
grid-row-start: 1;
|
|
920
|
+
grid-column-start: 4;
|
|
933
921
|
}
|
|
934
922
|
.sw-srh-box {
|
|
935
923
|
grid-column-start: 1;
|
|
@@ -939,8 +927,8 @@ padding-inline-start: 25px;
|
|
|
939
927
|
min-width: 270px;
|
|
940
928
|
padding: 10px;
|
|
941
929
|
padding-inline-end: 2rem;
|
|
942
|
-
border: 1px solid var(--form-border);
|
|
943
|
-
border-radius: var(--radius);
|
|
930
|
+
border: 1px solid var(--sw-form-border);
|
|
931
|
+
border-radius: var(--sw-radius);
|
|
944
932
|
gap: 0.5rem;
|
|
945
933
|
font-size: 14px;
|
|
946
934
|
}
|
|
@@ -981,7 +969,7 @@ padding-inline-start: 25px;
|
|
|
981
969
|
font-size: 14px;
|
|
982
970
|
}
|
|
983
971
|
.sw-srh-pax p {
|
|
984
|
-
color: var(--label-color);
|
|
972
|
+
color: var(--sw-label-color);
|
|
985
973
|
font-size: 12px;
|
|
986
974
|
}
|
|
987
975
|
.sw-srh-button-wrapper button {
|
|
@@ -997,15 +985,15 @@ padding-inline-start: 25px;
|
|
|
997
985
|
}
|
|
998
986
|
.sw-srh-button-wrapper button.sw-active-button {
|
|
999
987
|
background-color: var(--secondary);
|
|
1000
|
-
color: var(--white);
|
|
988
|
+
color: var(--sw-white);
|
|
1001
989
|
}
|
|
1002
990
|
.sw-traveller .sw-rooms-guests-menu {
|
|
1003
|
-
width:
|
|
991
|
+
width: 500px;
|
|
1004
992
|
}
|
|
1005
993
|
.sw-srh-class {
|
|
1006
994
|
display: flex;
|
|
1007
995
|
flex-wrap: wrap;
|
|
1008
|
-
gap: var(--
|
|
996
|
+
gap: var(--sw-space-md, 10px);
|
|
1009
997
|
align-items: stretch;
|
|
1010
998
|
}
|
|
1011
999
|
.sw-srh-class .sw-tab-content {
|
|
@@ -1018,22 +1006,22 @@ padding-inline-start: 25px;
|
|
|
1018
1006
|
.sw-srh-class .sw-tab-checkbox input:checked + .sw-tab-content,
|
|
1019
1007
|
.sw-srh-class .sw-tab-checkbox input[type=radio]:checked + .sw-tab-content {
|
|
1020
1008
|
background-color: var(--primary);
|
|
1021
|
-
color: var(--white);
|
|
1009
|
+
color: var(--sw-white);
|
|
1022
1010
|
}
|
|
1023
1011
|
.sw-srh-h-grid {
|
|
1024
1012
|
position: relative;
|
|
1025
1013
|
display: grid;
|
|
1026
1014
|
grid-template-columns: 2.2fr 1.8fr 3fr 1.8fr 1.15fr;
|
|
1027
|
-
gap: var(--
|
|
1015
|
+
gap: var(--sw-space-sm, 2px);
|
|
1028
1016
|
min-height: 55px;
|
|
1029
1017
|
min-width: 0;
|
|
1030
1018
|
overflow: visible;
|
|
1031
|
-
border-radius: var(--radius);
|
|
1019
|
+
border-radius: var(--sw-radius);
|
|
1032
1020
|
}
|
|
1033
1021
|
.sw-srh-loc {
|
|
1034
1022
|
display: block !important;
|
|
1035
1023
|
padding: 15px 0 12px;
|
|
1036
|
-
border-bottom: 1px solid var(--form-border);
|
|
1024
|
+
border-bottom: 1px solid var(--sw-form-border);
|
|
1037
1025
|
}
|
|
1038
1026
|
.sw-srh-count-wrapper,
|
|
1039
1027
|
.sw-srh-loc {
|
|
@@ -1049,7 +1037,7 @@ padding-inline-start: 25px;
|
|
|
1049
1037
|
width: 40px;
|
|
1050
1038
|
height: 40px;
|
|
1051
1039
|
background: #f4f5f5;
|
|
1052
|
-
border-radius: var(--radius);
|
|
1040
|
+
border-radius: var(--sw-radius);
|
|
1053
1041
|
}
|
|
1054
1042
|
.sw-hotel-search-form-icon.sw-fill {
|
|
1055
1043
|
background: var(--primary-light);
|
|
@@ -1080,7 +1068,7 @@ padding-inline-start: 25px;
|
|
|
1080
1068
|
align-items: center;
|
|
1081
1069
|
gap: 5px;
|
|
1082
1070
|
padding: 8px 12px;
|
|
1083
|
-
border: 1px solid var(--form-border);
|
|
1071
|
+
border: 1px solid var(--sw-form-border);
|
|
1084
1072
|
border-radius: 20px;
|
|
1085
1073
|
font-size: 14px;
|
|
1086
1074
|
line-height: 1;
|
|
@@ -1097,7 +1085,7 @@ padding-inline-start: 25px;
|
|
|
1097
1085
|
}
|
|
1098
1086
|
.sw-hsrh-chk-main {
|
|
1099
1087
|
display: flex;
|
|
1100
|
-
gap: var(--
|
|
1088
|
+
gap: var(--sw-space-md, 10px);
|
|
1101
1089
|
font-size: 1.4rem;
|
|
1102
1090
|
font-weight: 400;
|
|
1103
1091
|
flex-wrap: wrap;
|
|
@@ -1105,7 +1093,7 @@ padding-inline-start: 25px;
|
|
|
1105
1093
|
.sw-srh-class {
|
|
1106
1094
|
display: flex;
|
|
1107
1095
|
flex-wrap: wrap;
|
|
1108
|
-
gap: var(--
|
|
1096
|
+
gap: var(--sw-space-md, 10px);
|
|
1109
1097
|
align-items: stretch;
|
|
1110
1098
|
}
|
|
1111
1099
|
.sw-srh-class .sw-tab-content {
|
|
@@ -1245,10 +1233,11 @@ function FlightSearchWidget({
|
|
|
1245
1233
|
const [airlineQuery, setAirlineQuery] = useState("");
|
|
1246
1234
|
const [airlineSuggestions, setAirlineSuggestions] = useState([]);
|
|
1247
1235
|
const [selectedAirlines, setSelectedAirlines] = useState([]);
|
|
1236
|
+
const [airlineLimitError, setAirlineLimitError] = useState(null);
|
|
1248
1237
|
const [validationErrors, setValidationErrors] = useState({});
|
|
1249
1238
|
const createDefaultSegment = () => ({
|
|
1250
|
-
origin: "
|
|
1251
|
-
destination: "
|
|
1239
|
+
origin: "",
|
|
1240
|
+
destination: "",
|
|
1252
1241
|
departureDate: /* @__PURE__ */ new Date(),
|
|
1253
1242
|
returnDate: new Date((/* @__PURE__ */ new Date()).setDate((/* @__PURE__ */ new Date()).getDate() + 1)),
|
|
1254
1243
|
dateRange: [/* @__PURE__ */ new Date(), new Date((/* @__PURE__ */ new Date()).setDate((/* @__PURE__ */ new Date()).getDate() + 1))],
|
|
@@ -1260,8 +1249,8 @@ function FlightSearchWidget({
|
|
|
1260
1249
|
const [formState, setFormState] = useState(() => ({
|
|
1261
1250
|
tripType: "round-trip",
|
|
1262
1251
|
segments: [{
|
|
1263
|
-
origin: "
|
|
1264
|
-
destination: "
|
|
1252
|
+
origin: "",
|
|
1253
|
+
destination: "",
|
|
1265
1254
|
departureDate: /* @__PURE__ */ new Date(),
|
|
1266
1255
|
returnDate: new Date((/* @__PURE__ */ new Date()).setDate((/* @__PURE__ */ new Date()).getDate() + 1)),
|
|
1267
1256
|
dateRange: [/* @__PURE__ */ new Date(), new Date((/* @__PURE__ */ new Date()).setDate((/* @__PURE__ */ new Date()).getDate() + 1))],
|
|
@@ -1382,7 +1371,16 @@ function FlightSearchWidget({
|
|
|
1382
1371
|
const updated = [...prev];
|
|
1383
1372
|
if (!updated[segmentIndex]) return prev;
|
|
1384
1373
|
if (dropdownType === "origin") updated[segmentIndex] = { ...updated[segmentIndex], origin: display };
|
|
1385
|
-
else
|
|
1374
|
+
else {
|
|
1375
|
+
updated[segmentIndex] = { ...updated[segmentIndex], destination: display };
|
|
1376
|
+
if (tripType === "multi-city" || tripType === "custom-search") {
|
|
1377
|
+
const nextIndex = segmentIndex + 1;
|
|
1378
|
+
const nextSeg = updated[nextIndex];
|
|
1379
|
+
if (nextSeg) {
|
|
1380
|
+
updated[nextIndex] = { ...nextSeg, origin: display };
|
|
1381
|
+
}
|
|
1382
|
+
}
|
|
1383
|
+
}
|
|
1386
1384
|
return updated;
|
|
1387
1385
|
});
|
|
1388
1386
|
closeAirportDropdown(dropdownType, segmentIndex);
|
|
@@ -1532,12 +1530,14 @@ function FlightSearchWidget({
|
|
|
1532
1530
|
if (tripType === "multi-city" || tripType === "custom-search") {
|
|
1533
1531
|
setSegments((prev) => {
|
|
1534
1532
|
const maxSegments = getMaxSegments();
|
|
1533
|
+
const baseDate = prev[0]?.departureDate;
|
|
1534
|
+
const fallbackDate = baseDate instanceof Date && !isNaN(baseDate.getTime()) ? baseDate : /* @__PURE__ */ new Date();
|
|
1535
1535
|
if (prev.length === 0) {
|
|
1536
1536
|
const first = createDefaultSegment();
|
|
1537
1537
|
const second = {
|
|
1538
|
-
origin: "
|
|
1539
|
-
destination: "
|
|
1540
|
-
departureDate:
|
|
1538
|
+
origin: "",
|
|
1539
|
+
destination: "",
|
|
1540
|
+
departureDate: fallbackDate,
|
|
1541
1541
|
returnDate: null,
|
|
1542
1542
|
dateRange: null,
|
|
1543
1543
|
travelerClass: first.travelerClass,
|
|
@@ -1550,9 +1550,9 @@ function FlightSearchWidget({
|
|
|
1550
1550
|
if (prev.length === 1) {
|
|
1551
1551
|
const first = prev[0];
|
|
1552
1552
|
const second = {
|
|
1553
|
-
origin: "
|
|
1554
|
-
destination: "
|
|
1555
|
-
departureDate:
|
|
1553
|
+
origin: "",
|
|
1554
|
+
destination: "",
|
|
1555
|
+
departureDate: fallbackDate,
|
|
1556
1556
|
returnDate: null,
|
|
1557
1557
|
dateRange: null,
|
|
1558
1558
|
travelerClass: first.travelerClass,
|
|
@@ -1578,15 +1578,41 @@ function FlightSearchWidget({
|
|
|
1578
1578
|
const trimmed = value.trim();
|
|
1579
1579
|
return trimmed.length > 0 && trimmed !== placeholder;
|
|
1580
1580
|
};
|
|
1581
|
+
const normalizeMultiCityDates = (list) => {
|
|
1582
|
+
let prevDate = null;
|
|
1583
|
+
return list.map((segment, idx) => {
|
|
1584
|
+
const current = segment.departureDate;
|
|
1585
|
+
let nextDate = current;
|
|
1586
|
+
const currentValid = current instanceof Date && !isNaN(current.getTime());
|
|
1587
|
+
const prevValid = prevDate instanceof Date && !isNaN(prevDate.getTime());
|
|
1588
|
+
if (prevValid && (!currentValid || current.getTime() < prevDate.getTime())) {
|
|
1589
|
+
nextDate = prevDate;
|
|
1590
|
+
}
|
|
1591
|
+
const nextSegment = nextDate === segment.departureDate ? segment : { ...segment, departureDate: nextDate };
|
|
1592
|
+
if (nextDate instanceof Date && !isNaN(nextDate.getTime())) {
|
|
1593
|
+
prevDate = nextDate;
|
|
1594
|
+
} else if (idx === 0) {
|
|
1595
|
+
prevDate = null;
|
|
1596
|
+
}
|
|
1597
|
+
return nextSegment;
|
|
1598
|
+
});
|
|
1599
|
+
};
|
|
1600
|
+
const getLastValidDepartureDate = (list) => {
|
|
1601
|
+
for (let i = list.length - 1; i >= 0; i -= 1) {
|
|
1602
|
+
const date = list[i]?.departureDate;
|
|
1603
|
+
if (date instanceof Date && !isNaN(date.getTime())) {
|
|
1604
|
+
return date;
|
|
1605
|
+
}
|
|
1606
|
+
}
|
|
1607
|
+
return null;
|
|
1608
|
+
};
|
|
1581
1609
|
const handleSegmentFieldChange = (index, field, value) => {
|
|
1582
1610
|
setSegments((prev) => {
|
|
1583
1611
|
const updated = [...prev];
|
|
1584
1612
|
if (!updated[index]) return prev;
|
|
1585
1613
|
updated[index] = { ...updated[index], [field]: value };
|
|
1586
|
-
if (field === "departureDate" && (tripType === "multi-city" || tripType === "custom-search")
|
|
1587
|
-
|
|
1588
|
-
updated[i] = { ...updated[i], departureDate: value };
|
|
1589
|
-
}
|
|
1614
|
+
if (field === "departureDate" && (tripType === "multi-city" || tripType === "custom-search")) {
|
|
1615
|
+
return normalizeMultiCityDates(updated);
|
|
1590
1616
|
}
|
|
1591
1617
|
return updated;
|
|
1592
1618
|
});
|
|
@@ -1621,16 +1647,26 @@ function FlightSearchWidget({
|
|
|
1621
1647
|
}
|
|
1622
1648
|
}));
|
|
1623
1649
|
};
|
|
1650
|
+
const swapSegmentLocations = (index) => {
|
|
1651
|
+
setSegments((prev) => {
|
|
1652
|
+
const updated = [...prev];
|
|
1653
|
+
const current = updated[index];
|
|
1654
|
+
if (!current) return prev;
|
|
1655
|
+
updated[index] = { ...current, origin: current.destination, destination: current.origin };
|
|
1656
|
+
return updated;
|
|
1657
|
+
});
|
|
1658
|
+
};
|
|
1624
1659
|
const addFlightSegment = () => {
|
|
1625
1660
|
const maxSegments = getMaxSegments();
|
|
1626
1661
|
if (segments.length < maxSegments) {
|
|
1627
1662
|
const template = segments[0] ?? createDefaultSegment();
|
|
1663
|
+
const lastDeparture = getLastValidDepartureDate(segments) ?? /* @__PURE__ */ new Date();
|
|
1628
1664
|
setSegments((prev) => [
|
|
1629
1665
|
...prev,
|
|
1630
1666
|
{
|
|
1631
|
-
origin: "
|
|
1632
|
-
destination: "
|
|
1633
|
-
departureDate:
|
|
1667
|
+
origin: "",
|
|
1668
|
+
destination: "",
|
|
1669
|
+
departureDate: lastDeparture,
|
|
1634
1670
|
returnDate: null,
|
|
1635
1671
|
dateRange: null,
|
|
1636
1672
|
travelerClass: template.travelerClass,
|
|
@@ -1832,7 +1868,11 @@ function FlightSearchWidget({
|
|
|
1832
1868
|
className: `sw-custom-dropdown-trigger ${value === placeholder || !value ? "sw-placeholder" : ""}`,
|
|
1833
1869
|
value: value === placeholder ? "" : value ?? "",
|
|
1834
1870
|
placeholder,
|
|
1835
|
-
onFocus:
|
|
1871
|
+
onFocus: (e) => {
|
|
1872
|
+
onOpen();
|
|
1873
|
+
e.currentTarget.select();
|
|
1874
|
+
},
|
|
1875
|
+
onClick: (e) => e.currentTarget.select(),
|
|
1836
1876
|
onChange: (e) => {
|
|
1837
1877
|
const val = e.target.value;
|
|
1838
1878
|
handleSegmentFieldChange(segmentIndex, dropdownType, val);
|
|
@@ -1882,44 +1922,49 @@ function FlightSearchWidget({
|
|
|
1882
1922
|
};
|
|
1883
1923
|
const isOriginOpen = segmentDropdowns[index]?.origin ?? false;
|
|
1884
1924
|
const isDestOpen = segmentDropdowns[index]?.destination ?? false;
|
|
1885
|
-
return /* @__PURE__ */ jsxs(
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1925
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1926
|
+
/* @__PURE__ */ jsxs("div", { className: "sw-srh-wrap sw-srh-box sw-pos-rel", children: [
|
|
1927
|
+
renderAirportDropdown(index, "origin", originDropdownRef || originRef, isOriginOpen, () => toggleSegmentDropdown(index, "origin")),
|
|
1928
|
+
/* @__PURE__ */ jsx("div", { className: "sw-form-swap", "aria-label": "Swap origin and destination", onClick: () => swapSegmentLocations(index), children: /* @__PURE__ */ jsx("svg", { width: "30px", height: "30px", fill: "var(--sw-body-text)", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx("path", { fillRule: "evenodd", d: "M14.6403 5.2477a.7483.7483 0 0 1 1.0612.0084l4.0871 4.1684a.7555.7555 0 0 1 .1573.8195.7502.7502 0 0 1-.6921.4623H6.8305c-.4145 0-.7504-.3373-.7504-.7533 0-.4161.336-.7534.7504-.7534h10.6317L14.632 6.3131a.7556.7556 0 0 1 .0083-1.0654ZM9.368 18.8148a.7483.7483 0 0 1-1.0611-.0084l-4.087-4.1684a.7555.7555 0 0 1-.1574-.8195.7503.7503 0 0 1 .6921-.4623H17.178c.4144 0 .7503.3373.7503.7533 0 .4161-.3359.7534-.7503.7534H6.5463l2.8301 2.8865a.7555.7555 0 0 1-.0083 1.0654Z", clipRule: "evenodd" }) }) }),
|
|
1929
|
+
renderAirportDropdown(index, "destination", destinationDropdownRef || destinationRef, isDestOpen, () => toggleSegmentDropdown(index, "destination"))
|
|
1930
|
+
] }, index),
|
|
1931
|
+
isMultiCityOrCustom && /* @__PURE__ */ jsxs("div", { className: "sw-srh-wrap sw-pos-rel", children: [
|
|
1932
|
+
/* @__PURE__ */ jsxs("div", { className: "sw-form-field sw-com-cal", children: [
|
|
1933
|
+
/* @__PURE__ */ jsx("label", { htmlFor: `departure-${index}`, children: "Departure" }),
|
|
1934
|
+
/* @__PURE__ */ jsx(
|
|
1935
|
+
Calendar,
|
|
1936
|
+
{
|
|
1937
|
+
numberOfMonths: 2,
|
|
1938
|
+
id: `departure-${index}`,
|
|
1939
|
+
appendTo: "self",
|
|
1940
|
+
value: segment.departureDate ?? null,
|
|
1941
|
+
onChange: (e) => {
|
|
1942
|
+
const raw = e.value;
|
|
1943
|
+
const nextDate = raw instanceof Date ? raw : typeof raw === "string" ? new Date(raw) : null;
|
|
1944
|
+
handleSegmentFieldChange(
|
|
1945
|
+
index,
|
|
1946
|
+
"departureDate",
|
|
1947
|
+
nextDate && !isNaN(nextDate.getTime()) ? nextDate : null
|
|
1948
|
+
);
|
|
1949
|
+
},
|
|
1950
|
+
dateFormat: "dd M yy",
|
|
1951
|
+
placeholder: "29 Jan 2026",
|
|
1952
|
+
className: "p-inputtext-sm",
|
|
1953
|
+
minDate: getMinDateForSegment(index)
|
|
1954
|
+
}
|
|
1955
|
+
)
|
|
1956
|
+
] }),
|
|
1957
|
+
canRemove && /* @__PURE__ */ jsx("div", { className: "sw-srh-wrap", children: /* @__PURE__ */ jsx(
|
|
1958
|
+
"a",
|
|
1892
1959
|
{
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
onChange: (e) => {
|
|
1898
|
-
const raw = e.value;
|
|
1899
|
-
const nextDate = raw instanceof Date ? raw : typeof raw === "string" ? new Date(raw) : null;
|
|
1900
|
-
handleSegmentFieldChange(
|
|
1901
|
-
index,
|
|
1902
|
-
"departureDate",
|
|
1903
|
-
nextDate && !isNaN(nextDate.getTime()) ? nextDate : null
|
|
1904
|
-
);
|
|
1905
|
-
},
|
|
1906
|
-
dateFormat: "dd M yy",
|
|
1907
|
-
placeholder: "29 Jan 2026",
|
|
1908
|
-
className: "p-inputtext-sm",
|
|
1909
|
-
minDate: getMinDateForSegment(index)
|
|
1960
|
+
type: "button",
|
|
1961
|
+
className: "sw-remove-segment",
|
|
1962
|
+
onClick: () => removeFlightSegment(index),
|
|
1963
|
+
children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 200 200", width: "35", height: "35", xmlns: "http://www.w3.org/2000/svg", role: "presentation", children: /* @__PURE__ */ jsx("path", { d: "M124.697 135.303L100 110.606l-24.697 24.697l-10.606-10.606L89.393 100L64.697 75.303l10.606-10.606L100 89.394l24.697-24.697l10.606 10.606L110.607 100l24.696 24.697z" }) })
|
|
1910
1964
|
}
|
|
1911
|
-
)
|
|
1912
|
-
] })
|
|
1913
|
-
|
|
1914
|
-
"a",
|
|
1915
|
-
{
|
|
1916
|
-
type: "button",
|
|
1917
|
-
className: "sw-remove-segment",
|
|
1918
|
-
onClick: () => removeFlightSegment(index),
|
|
1919
|
-
children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 200 200", width: "35", height: "35", xmlns: "http://www.w3.org/2000/svg", role: "presentation", children: /* @__PURE__ */ jsx("path", { d: "M124.697 135.303L100 110.606l-24.697 24.697l-10.606-10.606L89.393 100L64.697 75.303l10.606-10.606L100 89.394l24.697-24.697l10.606 10.606L110.607 100l24.696 24.697z" }) })
|
|
1920
|
-
}
|
|
1921
|
-
) })
|
|
1922
|
-
] }, index);
|
|
1965
|
+
) })
|
|
1966
|
+
] })
|
|
1967
|
+
] });
|
|
1923
1968
|
};
|
|
1924
1969
|
return /* @__PURE__ */ jsx(PrimeReactProvider, { value: { hideOverlaysOnDocumentScrolling: false }, children: /* @__PURE__ */ jsx("div", { className: "tfsw-root sw-container", style: themeStyle, children: /* @__PURE__ */ jsxs("div", { className: "sw-card-box", children: [
|
|
1925
1970
|
/* @__PURE__ */ jsx("div", { className: "sw-srh-main-head", children: /* @__PURE__ */ jsx("div", { className: "sw-srh-head", children: /* @__PURE__ */ jsx("div", { className: "sw-srh-round-text", children: [
|
|
@@ -1941,8 +1986,17 @@ function FlightSearchWidget({
|
|
|
1941
1986
|
/* @__PURE__ */ jsx("h5", { className: "sw-tab-content", children: option.label })
|
|
1942
1987
|
] }, option.value)) }) }) }),
|
|
1943
1988
|
/* @__PURE__ */ jsxs("form", { className: `sw-srh-grid ${tripType === "multi-city" || tripType === "custom-search" ? "sw-srh-mc" : ""}`, onSubmit: handleSubmit, children: [
|
|
1944
|
-
tripType === "multi-city" || tripType === "custom-search" ? segments.map((segment, index) => renderFlightSegment(index, segment, true)) : /* @__PURE__ */ jsxs("div", { className: "sw-srh-wrap sw-srh-box", children: [
|
|
1989
|
+
tripType === "multi-city" || tripType === "custom-search" ? segments.map((segment, index) => renderFlightSegment(index, segment, true)) : /* @__PURE__ */ jsxs("div", { className: "sw-srh-wrap sw-srh-box sw-pos-rel", children: [
|
|
1945
1990
|
renderAirportDropdown(0, "origin", originDropdownRef, isOriginDropdownOpen, () => setIsOriginDropdownOpen(true)),
|
|
1991
|
+
/* @__PURE__ */ jsx(
|
|
1992
|
+
"div",
|
|
1993
|
+
{
|
|
1994
|
+
className: "sw-form-swap",
|
|
1995
|
+
"aria-label": "Swap origin and destination",
|
|
1996
|
+
onClick: () => swapSegmentLocations(0),
|
|
1997
|
+
children: /* @__PURE__ */ jsx("svg", { width: "30px", height: "30px", fill: "var(--body-text)", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx("path", { "fill-rule": "evenodd", d: "M14.6403 5.2477a.7483.7483 0 0 1 1.0612.0084l4.0871 4.1684a.7555.7555 0 0 1 .1573.8195.7502.7502 0 0 1-.6921.4623H6.8305c-.4145 0-.7504-.3373-.7504-.7533 0-.4161.336-.7534.7504-.7534h10.6317L14.632 6.3131a.7556.7556 0 0 1 .0083-1.0654ZM9.368 18.8148a.7483.7483 0 0 1-1.0611-.0084l-4.087-4.1684a.7555.7555 0 0 1-.1574-.8195.7503.7503 0 0 1 .6921-.4623H17.178c.4144 0 .7503.3373.7503.7533 0 .4161-.3359.7534-.7503.7534H6.5463l2.8301 2.8865a.7555.7555 0 0 1-.0083 1.0654Z", "clip-rule": "evenodd" }) })
|
|
1998
|
+
}
|
|
1999
|
+
),
|
|
1946
2000
|
renderAirportDropdown(0, "destination", destinationDropdownRef, isDestinationDropdownOpen, () => setIsDestinationDropdownOpen(true))
|
|
1947
2001
|
] }),
|
|
1948
2002
|
(tripType === "round-trip" || tripType === "one-way") && /* @__PURE__ */ jsx("div", { className: "sw-srh-wrap sw-pos-rel ", children: tripType === "round-trip" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -2196,6 +2250,11 @@ function FlightSearchWidget({
|
|
|
2196
2250
|
},
|
|
2197
2251
|
onChange: (e) => {
|
|
2198
2252
|
const next = e.value ?? [];
|
|
2253
|
+
if (next.length > 3) {
|
|
2254
|
+
setAirlineLimitError("You can select up to 3 airlines.");
|
|
2255
|
+
return;
|
|
2256
|
+
}
|
|
2257
|
+
setAirlineLimitError(null);
|
|
2199
2258
|
setSelectedAirlines(next);
|
|
2200
2259
|
setAdvancedOptions((prev) => ({
|
|
2201
2260
|
...prev,
|
|
@@ -2208,6 +2267,7 @@ function FlightSearchWidget({
|
|
|
2208
2267
|
placeholder: "Preferred airline"
|
|
2209
2268
|
}
|
|
2210
2269
|
),
|
|
2270
|
+
airlineLimitError && /* @__PURE__ */ jsx("small", { style: { color: "var(--sw-error)" }, children: airlineLimitError }),
|
|
2211
2271
|
/* @__PURE__ */ jsxs("div", { className: "sw-fsrh-chk-main", children: [
|
|
2212
2272
|
/* @__PURE__ */ jsxs("label", { className: "sw-material-checkbox", children: [
|
|
2213
2273
|
/* @__PURE__ */ jsx(
|