@qite/tide-booking-component 1.4.2 → 1.4.5

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 (132) hide show
  1. package/.vs/ProjectSettings.json +3 -3
  2. package/.vs/VSWorkspaceState.json +5 -5
  3. package/README.md +8 -8
  4. package/build/build-cjs/booking-wizard/components/phone-input.d.ts +17 -0
  5. package/build/build-cjs/booking-wizard/features/booking/selectors.d.ts +41 -12
  6. package/build/build-cjs/booking-wizard/features/summary/summary-flight.d.ts +2 -2
  7. package/build/build-cjs/booking-wizard/features/travelers-form/controls/gender-control.d.ts +5 -0
  8. package/build/build-cjs/booking-wizard/features/travelers-form/travelers-form-util.d.ts +7 -0
  9. package/build/build-cjs/booking-wizard/features/travelers-form/validate-form.d.ts +2 -2
  10. package/build/build-cjs/booking-wizard/types.d.ts +13 -0
  11. package/build/build-cjs/index.js +458 -273
  12. package/build/build-cjs/shared/utils/localization-util.d.ts +3 -0
  13. package/build/build-esm/booking-wizard/components/phone-input.d.ts +17 -0
  14. package/build/build-esm/booking-wizard/features/booking/selectors.d.ts +41 -12
  15. package/build/build-esm/booking-wizard/features/summary/summary-flight.d.ts +2 -2
  16. package/build/build-esm/booking-wizard/features/travelers-form/controls/gender-control.d.ts +5 -0
  17. package/build/build-esm/booking-wizard/features/travelers-form/travelers-form-util.d.ts +7 -0
  18. package/build/build-esm/booking-wizard/features/travelers-form/validate-form.d.ts +2 -2
  19. package/build/build-esm/booking-wizard/types.d.ts +13 -0
  20. package/build/build-esm/index.js +460 -275
  21. package/build/build-esm/shared/utils/localization-util.d.ts +3 -0
  22. package/package.json +1 -1
  23. package/rollup.config.js +23 -23
  24. package/src/booking-product/components/age-select.tsx +35 -35
  25. package/src/booking-product/components/amount-input.tsx +78 -78
  26. package/src/booking-product/components/date-range-picker/calendar-day.tsx +58 -58
  27. package/src/booking-product/components/date-range-picker/calendar.tsx +178 -178
  28. package/src/booking-product/components/date-range-picker/index.tsx +196 -196
  29. package/src/booking-product/components/dates.tsx +136 -136
  30. package/src/booking-product/components/footer.tsx +69 -69
  31. package/src/booking-product/components/header.tsx +79 -79
  32. package/src/booking-product/components/icon.tsx +251 -251
  33. package/src/booking-product/components/rating.tsx +21 -21
  34. package/src/booking-product/components/rooms.tsx +199 -199
  35. package/src/booking-product/index.tsx +30 -30
  36. package/src/booking-product/settings-context.ts +14 -14
  37. package/src/booking-product/types.ts +28 -28
  38. package/src/booking-product/utils/api.ts +25 -25
  39. package/src/booking-product/utils/price.ts +28 -28
  40. package/src/booking-wizard/api-settings-slice.ts +24 -24
  41. package/src/booking-wizard/components/icon.tsx +508 -508
  42. package/src/booking-wizard/components/labeled-input.tsx +64 -64
  43. package/src/booking-wizard/components/labeled-select.tsx +69 -69
  44. package/src/booking-wizard/components/message.tsx +34 -34
  45. package/src/booking-wizard/components/multi-range-filter.tsx +113 -113
  46. package/src/booking-wizard/components/phone-input.tsx +181 -0
  47. package/src/booking-wizard/components/product-card.tsx +37 -37
  48. package/src/booking-wizard/components/step-indicator.tsx +51 -51
  49. package/src/booking-wizard/components/step-route.tsx +27 -27
  50. package/src/booking-wizard/declarations.d.ts +4 -4
  51. package/src/booking-wizard/features/booking/api.ts +49 -49
  52. package/src/booking-wizard/features/booking/booking-slice.ts +2 -0
  53. package/src/booking-wizard/features/booking/booking.tsx +28 -28
  54. package/src/booking-wizard/features/booking/constants.ts +16 -16
  55. package/src/booking-wizard/features/booking/selectors.ts +17 -14
  56. package/src/booking-wizard/features/error/error.tsx +78 -78
  57. package/src/booking-wizard/features/flight-options/flight-filter.tsx +432 -432
  58. package/src/booking-wizard/features/flight-options/flight-option-flight.tsx +385 -385
  59. package/src/booking-wizard/features/flight-options/flight-option-modal.tsx +229 -229
  60. package/src/booking-wizard/features/flight-options/flight-option.tsx +80 -80
  61. package/src/booking-wizard/features/flight-options/index.tsx +196 -196
  62. package/src/booking-wizard/features/price-details/price-details-api.ts +24 -24
  63. package/src/booking-wizard/features/price-details/price-details-slice.ts +178 -178
  64. package/src/booking-wizard/features/price-details/util.ts +155 -155
  65. package/src/booking-wizard/features/product-options/no-options.tsx +21 -21
  66. package/src/booking-wizard/features/product-options/none-option.tsx +121 -121
  67. package/src/booking-wizard/features/product-options/option-booking-airline-group.tsx +64 -64
  68. package/src/booking-wizard/features/product-options/option-booking-group.tsx +216 -216
  69. package/src/booking-wizard/features/product-options/option-item.tsx +321 -321
  70. package/src/booking-wizard/features/product-options/option-pax-card.tsx +201 -201
  71. package/src/booking-wizard/features/product-options/option-pax-group.tsx +175 -175
  72. package/src/booking-wizard/features/product-options/option-unit-group.tsx +198 -198
  73. package/src/booking-wizard/features/product-options/option-units-card.tsx +185 -185
  74. package/src/booking-wizard/features/room-options/index.tsx +187 -187
  75. package/src/booking-wizard/features/room-options/room-utils.ts +190 -190
  76. package/src/booking-wizard/features/room-options/room.tsx +161 -161
  77. package/src/booking-wizard/features/room-options/traveler-rooms.tsx +75 -75
  78. package/src/booking-wizard/features/sidebar/sidebar-flight.tsx +4 -2
  79. package/src/booking-wizard/features/sidebar/sidebar-util.ts +2 -0
  80. package/src/booking-wizard/features/summary/summary-booking-option-unit.tsx +25 -25
  81. package/src/booking-wizard/features/summary/summary-flight.tsx +7 -6
  82. package/src/booking-wizard/features/summary/summary-per-booking-option-group.tsx +69 -69
  83. package/src/booking-wizard/features/summary/summary-per-pax-option-group.tsx +63 -63
  84. package/src/booking-wizard/features/summary/summary-per-unit-option-group.tsx +66 -66
  85. package/src/booking-wizard/features/summary/summary-slice.ts +28 -28
  86. package/src/booking-wizard/features/summary/summary.tsx +91 -62
  87. package/src/booking-wizard/features/travelers-form/controls/gender-control.tsx +70 -0
  88. package/src/booking-wizard/features/travelers-form/travelers-form-util.ts +11 -0
  89. package/src/booking-wizard/features/travelers-form/travelers-form.tsx +451 -313
  90. package/src/booking-wizard/features/travelers-form/type-ahead-input.tsx +101 -101
  91. package/src/booking-wizard/features/travelers-form/validate-form.ts +84 -98
  92. package/src/booking-wizard/index.tsx +36 -36
  93. package/src/booking-wizard/store.ts +31 -31
  94. package/src/booking-wizard/types.ts +15 -0
  95. package/src/index.ts +4 -4
  96. package/src/shared/components/loader.tsx +16 -16
  97. package/src/shared/translations/en-GB.json +3 -0
  98. package/src/shared/translations/fr-BE.json +3 -0
  99. package/src/shared/translations/nl-BE.json +3 -0
  100. package/src/shared/types.ts +4 -4
  101. package/src/shared/utils/class-util.ts +9 -9
  102. package/src/shared/utils/localization-util.ts +62 -62
  103. package/src/shared/utils/query-string-util.ts +119 -119
  104. package/styles/booking-product-variables.scss +394 -394
  105. package/styles/booking-product.scss +446 -446
  106. package/styles/booking-wizard.scss +1 -0
  107. package/styles/components/_animations.scss +39 -39
  108. package/styles/components/_base.scss +107 -107
  109. package/styles/components/_button.scss +238 -238
  110. package/styles/components/_checkbox.scss +219 -219
  111. package/styles/components/_cta.scss +208 -208
  112. package/styles/components/_date-list.scss +41 -41
  113. package/styles/components/_date-range-picker.scss +225 -225
  114. package/styles/components/_decrement-increment.scss +35 -35
  115. package/styles/components/_flight-option.scss +1429 -1429
  116. package/styles/components/_info-message.scss +71 -71
  117. package/styles/components/_input.scss +25 -25
  118. package/styles/components/_list.scss +187 -187
  119. package/styles/components/_loader.scss +72 -72
  120. package/styles/components/_mixins.scss +550 -550
  121. package/styles/components/_phone-input.scss +8 -0
  122. package/styles/components/_placeholders.scss +166 -166
  123. package/styles/components/_pricing-summary.scss +155 -155
  124. package/styles/components/_qsm.scss +17 -17
  125. package/styles/components/_radiobutton.scss +170 -170
  126. package/styles/components/_select-wrapper.scss +80 -80
  127. package/styles/components/_spinner.scss +29 -29
  128. package/styles/components/_table.scss +81 -81
  129. package/styles/components/_tree.scss +530 -530
  130. package/styles/components/_typeahead.scss +281 -281
  131. package/styles/components/_variables.scss +89 -89
  132. package/tsconfig.json +24 -24
@@ -166,8 +166,11 @@ export declare const getTranslations: (language: string) => {
166
166
  CHOOSE_AGENT_PLACEHOLDER: string;
167
167
  VALIDATION: {
168
168
  TRAVELER_X_FIELD: string;
169
+ SINGLE_ROOM_TRAVELER_X_FIELD: string;
169
170
  TRAVELER_X_IS_NO_ADULT: string;
171
+ SINGLE_ROOM_TRAVELER_X_IS_NO_ADULT: string;
170
172
  TRAVELER_X_IS_NO_CHILD: string;
173
+ SINGLE_ROOM_TRAVELER_X_IS_NO_CHILD: string;
171
174
  NO_MAIN_BOOKER_SELECTED: string;
172
175
  MAIN_BOOKER_FIELD: string;
173
176
  MAIN_BOOKER_EMAIL_IS_INVALID: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qite/tide-booking-component",
3
- "version": "1.4.2",
3
+ "version": "1.4.5",
4
4
  "description": "React Booking wizard & Booking product component for Tide",
5
5
  "main": "build/build-cjs/index.js",
6
6
  "module": "build/build-esm/index.js",
package/rollup.config.js CHANGED
@@ -1,23 +1,23 @@
1
- import commonjs from "@rollup/plugin-commonjs";
2
- import del from "rollup-plugin-delete";
3
- import json from "@rollup/plugin-json";
4
- import nodeResolve from "@rollup/plugin-node-resolve";
5
- import packageJson from "./package.json";
6
- import peerDepsExternal from "rollup-plugin-peer-deps-external";
7
- import typescript from "rollup-plugin-typescript2";
8
-
9
- export default {
10
- input: "src/index.ts",
11
- output: [
12
- { file: packageJson.main, format: "cjs", banner: "/* eslint-disable */" },
13
- { file: packageJson.module, format: "esm", banner: "/* eslint-disable */" },
14
- ],
15
- plugins: [
16
- peerDepsExternal(),
17
- json(),
18
- nodeResolve(),
19
- commonjs(),
20
- typescript(),
21
- del({ targets: ["build/*"] }),
22
- ],
23
- };
1
+ import commonjs from "@rollup/plugin-commonjs";
2
+ import del from "rollup-plugin-delete";
3
+ import json from "@rollup/plugin-json";
4
+ import nodeResolve from "@rollup/plugin-node-resolve";
5
+ import packageJson from "./package.json";
6
+ import peerDepsExternal from "rollup-plugin-peer-deps-external";
7
+ import typescript from "rollup-plugin-typescript2";
8
+
9
+ export default {
10
+ input: "src/index.ts",
11
+ output: [
12
+ { file: packageJson.main, format: "cjs", banner: "/* eslint-disable */" },
13
+ { file: packageJson.module, format: "esm", banner: "/* eslint-disable */" },
14
+ ],
15
+ plugins: [
16
+ peerDepsExternal(),
17
+ json(),
18
+ nodeResolve(),
19
+ commonjs(),
20
+ typescript(),
21
+ del({ targets: ["build/*"] }),
22
+ ],
23
+ };
@@ -1,35 +1,35 @@
1
- import { range } from "lodash";
2
- import React, { useContext } from "react";
3
- import { getTranslations } from "../../shared/utils/localization-util";
4
- import SettingsContext from "../settings-context";
5
-
6
- interface AgeSelectProps {
7
- value?: number;
8
- disabled?: boolean;
9
- onChange?: (value: number) => void;
10
- }
11
-
12
- const AgeSelect: React.FC<AgeSelectProps> = ({ value, disabled, onChange }) => {
13
- const { language } = useContext(SettingsContext);
14
- const translations = getTranslations(language);
15
-
16
- const handleChange: React.ChangeEventHandler<HTMLSelectElement> = (event) => {
17
- if (onChange) {
18
- onChange(event.target.selectedIndex);
19
- }
20
- };
21
-
22
- return (
23
- <div className="dropdown dropdown--small">
24
- <select onChange={handleChange} value={value ?? 0} disabled={disabled}>
25
- {range(0, 18).map((age) => (
26
- <option key={age} value={age}>
27
- {age} {translations.PRODUCT.YEAR}
28
- </option>
29
- ))}
30
- </select>
31
- </div>
32
- );
33
- };
34
-
35
- export default AgeSelect;
1
+ import { range } from "lodash";
2
+ import React, { useContext } from "react";
3
+ import { getTranslations } from "../../shared/utils/localization-util";
4
+ import SettingsContext from "../settings-context";
5
+
6
+ interface AgeSelectProps {
7
+ value?: number;
8
+ disabled?: boolean;
9
+ onChange?: (value: number) => void;
10
+ }
11
+
12
+ const AgeSelect: React.FC<AgeSelectProps> = ({ value, disabled, onChange }) => {
13
+ const { language } = useContext(SettingsContext);
14
+ const translations = getTranslations(language);
15
+
16
+ const handleChange: React.ChangeEventHandler<HTMLSelectElement> = (event) => {
17
+ if (onChange) {
18
+ onChange(event.target.selectedIndex);
19
+ }
20
+ };
21
+
22
+ return (
23
+ <div className="dropdown dropdown--small">
24
+ <select onChange={handleChange} value={value ?? 0} disabled={disabled}>
25
+ {range(0, 18).map((age) => (
26
+ <option key={age} value={age}>
27
+ {age} {translations.PRODUCT.YEAR}
28
+ </option>
29
+ ))}
30
+ </select>
31
+ </div>
32
+ );
33
+ };
34
+
35
+ export default AgeSelect;
@@ -1,78 +1,78 @@
1
- import React, { useContext } from "react";
2
- import { getTranslations } from "../../shared/utils/localization-util";
3
- import SettingsContext from "../settings-context";
4
- import { buildClassName } from "../../shared/utils/class-util";
5
- import Icon from "./icon";
6
-
7
- interface AmountInputProps {
8
- label: string;
9
- value: number;
10
- disabled?: boolean;
11
- min?: number;
12
- onChange?: (value: number) => void;
13
- }
14
-
15
- const AmountInput: React.FC<AmountInputProps> = ({
16
- label,
17
- value,
18
- disabled,
19
- min,
20
- onChange,
21
- }) => {
22
- const { language } = useContext(SettingsContext);
23
- const translations = getTranslations(language);
24
-
25
- const handleIncreaseClick: React.MouseEventHandler<HTMLButtonElement> = (
26
- event
27
- ) => {
28
- if (onChange) {
29
- onChange(value + 1);
30
- }
31
- };
32
-
33
- const handleDecreaseClick: React.MouseEventHandler<HTMLButtonElement> = (
34
- event
35
- ) => {
36
- if (onChange) {
37
- onChange(Math.max(value - 1, min ?? 0));
38
- }
39
- };
40
-
41
- return (
42
- <div
43
- className={buildClassName([
44
- "decrement-increment",
45
- disabled && "decrement-increment--disabled",
46
- ])}
47
- >
48
- <label className="decrement-increment__label">{label}</label>
49
- <div className="decrement-increment__ui">
50
- {!disabled && (
51
- <button
52
- type="button"
53
- className="button button--decrement"
54
- title={translations.INPUT.DECREASE}
55
- disabled={disabled}
56
- onClick={handleDecreaseClick}
57
- >
58
- <Icon name="ui-min" />
59
- </button>
60
- )}
61
- <span>{value}</span>
62
- {!disabled && (
63
- <button
64
- type="button"
65
- className="button button--increment"
66
- title={translations.INPUT.INCREASE}
67
- disabled={disabled}
68
- onClick={handleIncreaseClick}
69
- >
70
- <Icon name="ui-plus" />
71
- </button>
72
- )}
73
- </div>
74
- </div>
75
- );
76
- };
77
-
78
- export default AmountInput;
1
+ import React, { useContext } from "react";
2
+ import { getTranslations } from "../../shared/utils/localization-util";
3
+ import SettingsContext from "../settings-context";
4
+ import { buildClassName } from "../../shared/utils/class-util";
5
+ import Icon from "./icon";
6
+
7
+ interface AmountInputProps {
8
+ label: string;
9
+ value: number;
10
+ disabled?: boolean;
11
+ min?: number;
12
+ onChange?: (value: number) => void;
13
+ }
14
+
15
+ const AmountInput: React.FC<AmountInputProps> = ({
16
+ label,
17
+ value,
18
+ disabled,
19
+ min,
20
+ onChange,
21
+ }) => {
22
+ const { language } = useContext(SettingsContext);
23
+ const translations = getTranslations(language);
24
+
25
+ const handleIncreaseClick: React.MouseEventHandler<HTMLButtonElement> = (
26
+ event
27
+ ) => {
28
+ if (onChange) {
29
+ onChange(value + 1);
30
+ }
31
+ };
32
+
33
+ const handleDecreaseClick: React.MouseEventHandler<HTMLButtonElement> = (
34
+ event
35
+ ) => {
36
+ if (onChange) {
37
+ onChange(Math.max(value - 1, min ?? 0));
38
+ }
39
+ };
40
+
41
+ return (
42
+ <div
43
+ className={buildClassName([
44
+ "decrement-increment",
45
+ disabled && "decrement-increment--disabled",
46
+ ])}
47
+ >
48
+ <label className="decrement-increment__label">{label}</label>
49
+ <div className="decrement-increment__ui">
50
+ {!disabled && (
51
+ <button
52
+ type="button"
53
+ className="button button--decrement"
54
+ title={translations.INPUT.DECREASE}
55
+ disabled={disabled}
56
+ onClick={handleDecreaseClick}
57
+ >
58
+ <Icon name="ui-min" />
59
+ </button>
60
+ )}
61
+ <span>{value}</span>
62
+ {!disabled && (
63
+ <button
64
+ type="button"
65
+ className="button button--increment"
66
+ title={translations.INPUT.INCREASE}
67
+ disabled={disabled}
68
+ onClick={handleIncreaseClick}
69
+ >
70
+ <Icon name="ui-plus" />
71
+ </button>
72
+ )}
73
+ </div>
74
+ </div>
75
+ );
76
+ };
77
+
78
+ export default AmountInput;
@@ -1,58 +1,58 @@
1
- import React from "react";
2
- import { getDate, isToday } from "date-fns";
3
- import { buildClassName } from "../../../shared/utils/class-util";
4
-
5
- interface CalendarDayProps {
6
- day: Date;
7
- isSelected: boolean;
8
- isDisabled: boolean;
9
- isOutsideMonth: boolean;
10
- extraClassNames?: string[];
11
- onClick: (date: Date) => void;
12
- onMouseOver: (date: Date) => void;
13
- }
14
-
15
- const CalendarDay: React.FC<CalendarDayProps> = ({
16
- day,
17
- isSelected,
18
- isDisabled,
19
- isOutsideMonth,
20
- extraClassNames = [],
21
- children,
22
- onClick,
23
- onMouseOver,
24
- }) => {
25
- const handleClick = () => {
26
- if (onClick && !isDisabled) {
27
- onClick(day);
28
- }
29
- };
30
-
31
- const handleMouseOver = () => {
32
- if (onMouseOver) {
33
- onMouseOver(day);
34
- }
35
- };
36
-
37
- const classNames = buildClassName([
38
- "calendar__day",
39
- isToday(day) && "calendar__day--today",
40
- isDisabled && "calendar__day--disabled",
41
- isOutsideMonth && "calendar__day--outside-month",
42
- isSelected && "calendar__day--selected",
43
- ...extraClassNames,
44
- ]);
45
-
46
- return (
47
- <div
48
- className={classNames}
49
- onClick={handleClick}
50
- onMouseOver={handleMouseOver}
51
- >
52
- {getDate(day).toString().padStart(2, "0")}
53
- {children}
54
- </div>
55
- );
56
- };
57
-
58
- export default CalendarDay;
1
+ import React from "react";
2
+ import { getDate, isToday } from "date-fns";
3
+ import { buildClassName } from "../../../shared/utils/class-util";
4
+
5
+ interface CalendarDayProps {
6
+ day: Date;
7
+ isSelected: boolean;
8
+ isDisabled: boolean;
9
+ isOutsideMonth: boolean;
10
+ extraClassNames?: string[];
11
+ onClick: (date: Date) => void;
12
+ onMouseOver: (date: Date) => void;
13
+ }
14
+
15
+ const CalendarDay: React.FC<CalendarDayProps> = ({
16
+ day,
17
+ isSelected,
18
+ isDisabled,
19
+ isOutsideMonth,
20
+ extraClassNames = [],
21
+ children,
22
+ onClick,
23
+ onMouseOver,
24
+ }) => {
25
+ const handleClick = () => {
26
+ if (onClick && !isDisabled) {
27
+ onClick(day);
28
+ }
29
+ };
30
+
31
+ const handleMouseOver = () => {
32
+ if (onMouseOver) {
33
+ onMouseOver(day);
34
+ }
35
+ };
36
+
37
+ const classNames = buildClassName([
38
+ "calendar__day",
39
+ isToday(day) && "calendar__day--today",
40
+ isDisabled && "calendar__day--disabled",
41
+ isOutsideMonth && "calendar__day--outside-month",
42
+ isSelected && "calendar__day--selected",
43
+ ...extraClassNames,
44
+ ]);
45
+
46
+ return (
47
+ <div
48
+ className={classNames}
49
+ onClick={handleClick}
50
+ onMouseOver={handleMouseOver}
51
+ >
52
+ {getDate(day).toString().padStart(2, "0")}
53
+ {children}
54
+ </div>
55
+ );
56
+ };
57
+
58
+ export default CalendarDay;