@qite/tide-booking-component 1.2.2 → 1.2.4

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 (50) hide show
  1. package/build/build-cjs/booking-product/components/footer.d.ts +1 -0
  2. package/build/build-cjs/booking-product/components/rooms.d.ts +2 -0
  3. package/build/build-cjs/booking-wizard/features/booking/selectors.d.ts +1 -1
  4. package/build/build-cjs/booking-wizard/types.d.ts +0 -1
  5. package/build/build-cjs/index.js +292 -52
  6. package/build/build-cjs/shared/utils/localization-util.d.ts +3 -0
  7. package/build/build-esm/booking-product/components/footer.d.ts +1 -0
  8. package/build/build-esm/booking-product/components/rooms.d.ts +2 -0
  9. package/build/build-esm/booking-wizard/features/booking/selectors.d.ts +1 -1
  10. package/build/build-esm/booking-wizard/types.d.ts +0 -1
  11. package/build/build-esm/index.js +293 -53
  12. package/build/build-esm/shared/utils/localization-util.d.ts +3 -0
  13. package/package.json +1 -1
  14. package/rollup.config.js +23 -23
  15. package/src/booking-product/components/footer.tsx +7 -1
  16. package/src/booking-product/components/product.tsx +5 -1
  17. package/src/booking-product/components/rating.tsx +21 -21
  18. package/src/booking-product/components/rooms.tsx +5 -2
  19. package/src/booking-wizard/components/icon.tsx +250 -1
  20. package/src/booking-wizard/components/labeled-input.tsx +64 -64
  21. package/src/booking-wizard/components/labeled-select.tsx +69 -69
  22. package/src/booking-wizard/features/booking/selectors.ts +12 -2
  23. package/src/booking-wizard/features/flight-options/flight-filter.tsx +18 -5
  24. package/src/booking-wizard/features/flight-options/flight-option-flight.tsx +8 -6
  25. package/src/booking-wizard/features/flight-options/flight-option.tsx +1 -1
  26. package/src/booking-wizard/features/flight-options/flight-utils.ts +1 -1
  27. package/src/booking-wizard/features/product-options/option-pax-card.tsx +93 -22
  28. package/src/booking-wizard/features/product-options/option-units-card.tsx +93 -21
  29. package/src/booking-wizard/features/sidebar/sidebar-flight.tsx +2 -2
  30. package/src/booking-wizard/features/summary/summary.tsx +3 -1
  31. package/src/shared/translations/fr-BE.json +4 -1
  32. package/src/shared/translations/nl-BE.json +4 -1
  33. package/src/shared/utils/class-util.ts +9 -9
  34. package/styles/booking-wizard-variables.scss +530 -0
  35. package/styles/booking-wizard.scss +23 -1
  36. package/styles/components/_booking.scss +1409 -0
  37. package/styles/components/_checkbox.scss +215 -0
  38. package/styles/components/_cta.scss +80 -14
  39. package/styles/components/_date-range-picker.scss +1 -0
  40. package/styles/components/_flight-option.scss +1389 -0
  41. package/styles/components/_form.scss +258 -0
  42. package/styles/components/_list.scss +82 -0
  43. package/styles/components/_mixins.scss +17 -5
  44. package/styles/components/_placeholders.scss +2 -2
  45. package/styles/components/_pricing-summary.scss +117 -0
  46. package/styles/components/_select-wrapper.scss +66 -0
  47. package/styles/components/_step-indicators.scss +160 -0
  48. package/styles/components/_table.scss +81 -0
  49. package/styles/components/_tree.scss +540 -0
  50. package/tsconfig.json +24 -24
@@ -0,0 +1,540 @@
1
+ .tree {
2
+ @extend %reset;
3
+ border: 0px solid transparent;
4
+ border-radius: 5px;
5
+ background-color: transparent;
6
+
7
+ * {
8
+ @extend %reset;
9
+ }
10
+
11
+ > .tree__level {
12
+ padding-top: 0;
13
+ padding-left: 0;
14
+ margin: 3px 0;
15
+ }
16
+
17
+ &__body .tree__level {
18
+ padding: 0;
19
+ margin-top: 0;
20
+ border-top: 1.5px solid rgba(0, 0, 0, 0.05);
21
+ }
22
+
23
+ &__columns-actions {
24
+ width: 100%;
25
+ margin-top: -15px * 0.2;
26
+ margin-left: auto;
27
+ display: flex;
28
+ flex-grow: 1;
29
+ flex-shrink: 0;
30
+ white-space: nowrap;
31
+ @include transitionEasing($duration: 0.15s);
32
+
33
+ @include media-lg {
34
+ padding-right: 0;
35
+ transform: translateY(-15px);
36
+ }
37
+
38
+ @include media-xl {
39
+ width: 400px;
40
+ max-width: 40vw;
41
+ justify-content: flex-end;
42
+ transform: none;
43
+ }
44
+
45
+ .tree__column {
46
+ @include media-lg {
47
+ width: 200px;
48
+ }
49
+
50
+ &--price {
51
+ @include media-lg {
52
+ width: 100px;
53
+ transform: translateY(3px);
54
+ }
55
+
56
+ @include media-xl {
57
+ transform: none;
58
+ }
59
+ }
60
+ }
61
+ }
62
+
63
+ &__columns {
64
+ @include row--lg;
65
+ width: 100%;
66
+ gap: 5px;
67
+
68
+ @include media-lg {
69
+ width: 100%;
70
+ gap: initial;
71
+ }
72
+
73
+ @include media-xl {
74
+ width: auto;
75
+ }
76
+ }
77
+
78
+ &__column {
79
+ padding-right: 0;
80
+ display: inline-flex;
81
+ flex-direction: column;
82
+ box-sizing: border-box;
83
+
84
+ @include media-lg {
85
+ position: relative;
86
+ padding-right: 15px;
87
+ flex-direction: row;
88
+ }
89
+
90
+ .price {
91
+ position: absolute;
92
+ top: 10px;
93
+ right: 35px;
94
+ font-size: 14px;
95
+
96
+ @include media-lg {
97
+ position: static;
98
+ top: initial;
99
+ right: initial;
100
+ margin-left: auto;
101
+ font-size: 16px;
102
+ }
103
+ }
104
+ }
105
+
106
+ &__column--price {
107
+ width: 70PX;
108
+ padding-left: 10px;
109
+ margin-left: auto;
110
+ text-align: left;
111
+ justify-content: flex-start;
112
+ transition: opacity ease-out 0.12s;
113
+
114
+ @include media-lg {
115
+ padding-left: 0;
116
+ transform: translateY(15px);
117
+ }
118
+
119
+ @include media-xl {
120
+ transform: none;
121
+ }
122
+ }
123
+
124
+ &__level {
125
+ padding-top: 15px * 0.7;
126
+ padding-left: 15px * 4;
127
+ margin-bottom: -7px;
128
+
129
+ .tree__column--price {
130
+ padding: 0;
131
+
132
+ @include media-lg {
133
+ justify-content: flex-end;
134
+ }
135
+ }
136
+
137
+ .tree__level {
138
+ &:first-child {
139
+ .tree__product-name {
140
+ @include media-lg {
141
+ margin: 0;
142
+ }
143
+
144
+ @include media-xl {
145
+ transform: translateX(-30px);
146
+ }
147
+ }
148
+ }
149
+ }
150
+
151
+ tr:last-child {
152
+ .checkbox:last-child {
153
+ padding-bottom: 7.5px;
154
+
155
+ @include media-lg {
156
+ padding-top: 20px;
157
+ }
158
+ }
159
+
160
+ .radiobutton:last-child {
161
+ padding-top: 20px;
162
+ padding-bottom: 7.5px;
163
+ }
164
+ }
165
+ }
166
+
167
+ &__level + &__level {
168
+ padding: 0;
169
+ }
170
+
171
+ &__level-heading {
172
+ margin-bottom: 3px;
173
+ }
174
+
175
+ &__package-label {
176
+ width: 100%;
177
+ margin-bottom: 10px;
178
+ font-size: 13px;
179
+ text-transform: uppercase;
180
+ color: $black;
181
+
182
+ @include media-lg {
183
+ position: absolute;
184
+ width: auto;
185
+ top: -25px;
186
+ margin: 0;
187
+ }
188
+ }
189
+
190
+ &__product-name {
191
+ max-width: 100%;
192
+ padding-bottom: 0;
193
+ margin: 0;
194
+ white-space: normal;
195
+
196
+ @include media-lg {
197
+ padding-top: 3px;
198
+ padding-bottom: 12.5px;
199
+ margin: 0 15px;
200
+ transform: translateY(15px);
201
+ }
202
+
203
+ @include media-xl {
204
+ transform: none;
205
+ }
206
+ }
207
+
208
+ &__radiogroup {
209
+ margin: 15px * 0.3 0;
210
+
211
+ .radiobutton + .radiobutton {
212
+ margin-top: 0;
213
+ }
214
+ }
215
+
216
+ .checkbox {
217
+ padding: 2.5px 0 0 28px;
218
+ flex-grow: 1;
219
+
220
+ @include media-lg {
221
+ padding: 20px 15px 0 28px;
222
+ }
223
+
224
+ &__input {
225
+ &:checked {
226
+ color: $black;
227
+
228
+ & + * {
229
+ color: var(--tide-booking-checkbox-input-checked-color-text);
230
+ }
231
+ }
232
+ }
233
+
234
+ &__label {
235
+ width: 100%;
236
+ display: flex;
237
+ flex-flow: row wrap;
238
+ padding: 10px 0;
239
+ margin-bottom: 0;
240
+ line-height: 1.3;
241
+
242
+ @include media-lg {
243
+ padding: 0;
244
+ }
245
+ }
246
+
247
+ &__label-text {
248
+ padding-right: 15px * 3;
249
+ margin-bottom: 7.5px;
250
+ white-space: nowrap;
251
+
252
+ @include media-lg {
253
+ max-width: 20px;
254
+ margin-bottom: 0;
255
+ display: flex;
256
+ align-items: flex-start;
257
+ }
258
+ }
259
+
260
+ &__label-addition {
261
+ margin-left: 15px * 0.7;
262
+ }
263
+
264
+ &__input {
265
+ width: 20px;
266
+ height: 20px;
267
+ min-height: 20px;
268
+ max-height: 20px;
269
+ top: 12px;
270
+ border-radius: var(--tide-booking-checkbox-border-radius) !important;
271
+ border: var(--tide-booking-checkbox-border);
272
+ background-color: var(--tide-booking-checkbox-background);
273
+
274
+ @include media-lg {
275
+ top: 18px;
276
+ }
277
+ }
278
+
279
+ &__input--parent {
280
+ top: 7.5px;
281
+
282
+ @include media-lg {
283
+ top: 18px;
284
+ }
285
+
286
+ & + span {
287
+ margin-top: -5px;
288
+ margin-bottom: 7.5px;
289
+
290
+ @include media-lg {
291
+ margin-top: 0;
292
+ margin: 0;
293
+ }
294
+ }
295
+ }
296
+
297
+ &__input:after {
298
+ width: 4px;
299
+ height: 10px;
300
+ left: 5px;
301
+ top: 0;
302
+ transform: rotate(45deg) !important;
303
+ display: none;
304
+ border-bottom: 2px solid var(--tide-booking-checkbox-input-checked-check-color);
305
+ border-right: 2px solid var(--tide-booking-checkbox-input-checked-check-color);
306
+ border-radius: 0;
307
+ background-color: transparent;
308
+ }
309
+
310
+ &__input:checked {
311
+ border: var(--tide-booking-checkbox-input-checked-border);
312
+ background-color: var(--tide-booking-checkbox-input-checked-background);
313
+
314
+ & + span + .tree__columns-actions .tree__columns .tree__column--price {
315
+ opacity: 0;
316
+ pointer-events: none;
317
+ }
318
+ }
319
+
320
+ &__input:checked:after {
321
+ display: flex;
322
+ transform: translate3D(18px, 0, 0);
323
+
324
+ @include media-lg {
325
+ transform: translate3D(22px, 0, 0);
326
+ }
327
+ }
328
+
329
+ &--label .checkbox__input {
330
+ border: none;
331
+ background-color: transparent;
332
+ }
333
+ }
334
+
335
+ thead .checkbox {
336
+ margin-bottom: 15px;
337
+ }
338
+
339
+ .radiobutton {
340
+ padding: 2.5px 0 0 28px;
341
+ flex-grow: 1;
342
+
343
+ @include media-lg {
344
+ padding: 15px 15px 0 28px;
345
+ }
346
+
347
+ &__input {
348
+ width: 20px;
349
+ height: 20px;
350
+ top: 18px;
351
+
352
+ @include media-lg {
353
+ width: 20px;
354
+ height: 20px;
355
+ }
356
+
357
+ &:checked {
358
+ border-color: $color-primary;
359
+ color: $color-primary;
360
+
361
+ & + * {
362
+ color: $color-primary;
363
+ }
364
+
365
+ & + span + .tree__columns-actions .tree__columns .tree__column--price {
366
+ opacity: 0;
367
+ pointer-events: none;
368
+ font-size: 0;
369
+ }
370
+ }
371
+
372
+ &:after {
373
+ width: 10px;
374
+ height: 10px;
375
+
376
+ @include media-lg {
377
+ width: 12px;
378
+ height: 12px;
379
+ }
380
+ }
381
+
382
+ &--parent {
383
+ top: 7.5px;
384
+
385
+ @include media-lg {
386
+ top: 14px;
387
+ }
388
+
389
+ & + span {
390
+ margin-top: 5px;
391
+
392
+ @include media-lg {
393
+ margin: 0;
394
+ }
395
+ }
396
+ }
397
+ }
398
+
399
+ &__label {
400
+ width: 100%;
401
+ padding: 0;
402
+ display: flex;
403
+ flex-flow: row wrap;
404
+ line-height: 1.3;
405
+
406
+ &-addition {
407
+ margin-left: 15px * 0.7;
408
+ }
409
+
410
+ &-text {
411
+ padding-right: 15px * 3;
412
+ margin-bottom: 7.5px;
413
+ flex-direction: column;
414
+ white-space: nowrap;
415
+
416
+ @include media-lg {
417
+ max-width: 250px;
418
+ padding-right: 0;
419
+ margin-bottom: 0;
420
+ display: flex;
421
+ align-items: flex-start;
422
+ }
423
+
424
+ @include media-xl {
425
+ max-width: 200px;
426
+ }
427
+ }
428
+ }
429
+
430
+ &--label .radiobutton__input {
431
+ border: none;
432
+ background-color: transparent;
433
+ }
434
+ }
435
+
436
+ &.tree--selected {
437
+ padding-bottom: 7.5px !important;
438
+ }
439
+
440
+ &--selected {
441
+ border-color: $tree-border-selected;
442
+ color: $color-primary;
443
+ background-color: $tree-background-selected;
444
+
445
+ * {
446
+ color: $color-primary;
447
+ }
448
+
449
+ .checkbox__input:checked + * {
450
+ color: $color-primary;
451
+ }
452
+
453
+ .radiobutton__input:checked + * {
454
+ color: $color-primary;
455
+ }
456
+
457
+ input:not(:empty),
458
+ select {
459
+ color: $black;
460
+ }
461
+ }
462
+ }
463
+
464
+ .tree__columns-actions + .tree__body .tree__column:first-child {
465
+ @include media-lg {
466
+ width: 200px;
467
+ }
468
+
469
+ @include media-xl {
470
+ width: 200px;
471
+ }
472
+ }
473
+
474
+ .booking-card {
475
+ &__group--package {
476
+ .radiobutton {
477
+ &__input--parent {
478
+ & + span {
479
+ & + .tree__columns-actions {
480
+ transform: none;
481
+ }
482
+ }
483
+ }
484
+ }
485
+
486
+ .tree {
487
+ &__columns {
488
+ transform: translateY(-3px);
489
+ }
490
+
491
+ &__columns-actions {
492
+ padding: 0;
493
+ margin: 0;
494
+ transform: none;
495
+
496
+ @include media-lg {
497
+ padding-top: 15px;
498
+ padding-right: 45px;
499
+ margin-top: 0;
500
+ margin-bottom: 15px;
501
+ margin-left: auto;
502
+ transform: translate3D(-15px, -7.5px, 0) !important;
503
+ }
504
+
505
+ @include media-xl {
506
+ padding-top: 20px;
507
+ transform: translateX(15px) !important;
508
+ }
509
+ }
510
+
511
+ &__column {
512
+ padding: 0;
513
+
514
+ @include media-lg {
515
+ padding: 0 15px 0 0;
516
+ }
517
+ }
518
+
519
+ &__product-name {
520
+ margin: 0 0 5px;
521
+
522
+ @include media-lg {
523
+ margin: 0 25px 0 15px;
524
+ }
525
+
526
+ @include media-xl {
527
+ margin: 0 15px;
528
+ }
529
+ }
530
+
531
+ .radiobutton {
532
+ padding: 0 !important;
533
+
534
+ @include media-lg {
535
+ padding: 5px 15px 0 45px !important;
536
+ }
537
+ }
538
+ }
539
+ }
540
+ }
package/tsconfig.json CHANGED
@@ -1,24 +1,24 @@
1
- {
2
- "compilerOptions": {
3
- "target": "es5",
4
- "module": "esnext",
5
- "lib": ["es2019", "dom"],
6
- "jsx": "react",
7
- "moduleResolution": "Node",
8
- "declaration": true,
9
- "declarationDir": "build",
10
- "sourceMap": true,
11
- "strict": true,
12
- "strictNullChecks": true,
13
- "esModuleInterop": true,
14
- "skipLibCheck": true,
15
- "forceConsistentCasingInFileNames": true,
16
- "noUnusedLocals": true,
17
- "noImplicitThis": true,
18
- "noImplicitAny": true,
19
- "noEmit": true,
20
- "resolveJsonModule": true
21
- },
22
- "include": ["src/**/*"],
23
- "exclude": ["./node-modules/*"]
24
- }
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es5",
4
+ "module": "esnext",
5
+ "lib": ["es2019", "dom"],
6
+ "jsx": "react",
7
+ "moduleResolution": "Node",
8
+ "declaration": true,
9
+ "declarationDir": "build",
10
+ "sourceMap": true,
11
+ "strict": true,
12
+ "strictNullChecks": true,
13
+ "esModuleInterop": true,
14
+ "skipLibCheck": true,
15
+ "forceConsistentCasingInFileNames": true,
16
+ "noUnusedLocals": true,
17
+ "noImplicitThis": true,
18
+ "noImplicitAny": true,
19
+ "noEmit": true,
20
+ "resolveJsonModule": true
21
+ },
22
+ "include": ["src/**/*"],
23
+ "exclude": ["./node-modules/*"]
24
+ }