@qite/tide-booking-component 1.4.33 → 1.4.35

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 (64) hide show
  1. package/build/build-cjs/index.js +1674 -416
  2. package/build/build-cjs/qsm/types.d.ts +0 -1
  3. package/build/build-cjs/search-results/components/filters/filters.d.ts +2 -2
  4. package/build/build-cjs/search-results/components/flight/flight-results.d.ts +2 -0
  5. package/build/build-cjs/search-results/components/hotel/hotel-card.d.ts +1 -0
  6. package/build/build-cjs/search-results/components/itinerary/index.d.ts +2 -2
  7. package/build/build-cjs/search-results/store/search-results-slice.d.ts +11 -2
  8. package/build/build-cjs/search-results/types.d.ts +0 -14
  9. package/build/build-esm/index.js +1674 -416
  10. package/build/build-esm/qsm/types.d.ts +0 -1
  11. package/build/build-esm/search-results/components/filters/filters.d.ts +2 -2
  12. package/build/build-esm/search-results/components/flight/flight-results.d.ts +2 -0
  13. package/build/build-esm/search-results/components/hotel/hotel-card.d.ts +1 -0
  14. package/build/build-esm/search-results/components/itinerary/index.d.ts +2 -2
  15. package/build/build-esm/search-results/store/search-results-slice.d.ts +11 -2
  16. package/build/build-esm/search-results/types.d.ts +0 -14
  17. package/package.json +77 -77
  18. package/src/booking-product/components/product.tsx +26 -22
  19. package/src/booking-wizard/features/booking/booking-self-contained.tsx +303 -304
  20. package/src/booking-wizard/features/travelers-form/controls/gender-control.tsx +5 -5
  21. package/src/booking-wizard/features/travelers-form/travelers-form.tsx +10 -10
  22. package/src/content/components/icon.tsx +1 -1
  23. package/src/content/features/content-page/content-page-self-contained.tsx +0 -1
  24. package/src/qsm/components/QSMContainer/qsm-container.tsx +217 -218
  25. package/src/qsm/components/mobile-filter-modal/index.tsx +12 -10
  26. package/src/qsm/components/travel-class-picker/index.tsx +5 -3
  27. package/src/qsm/components/travel-input/index.tsx +15 -12
  28. package/src/qsm/components/travel-input-group/index.tsx +14 -3
  29. package/src/qsm/components/travel-nationality-picker/index.tsx +5 -3
  30. package/src/qsm/components/travel-type-picker/index.tsx +5 -3
  31. package/src/qsm/qsm-configuration-context.ts +0 -1
  32. package/src/qsm/store/qsm-slice.ts +261 -261
  33. package/src/qsm/types.ts +144 -145
  34. package/src/search-results/components/filters/filters.tsx +15 -16
  35. package/src/search-results/components/flight/flight-results.tsx +168 -1099
  36. package/src/search-results/components/hotel/hotel-accommodation-results.tsx +21 -24
  37. package/src/search-results/components/hotel/hotel-card.tsx +4 -3
  38. package/src/search-results/components/icon.tsx +1 -1
  39. package/src/search-results/components/itinerary/index.tsx +229 -129
  40. package/src/search-results/components/round-trip/round-trip-results.tsx +1 -1
  41. package/src/search-results/components/search-results-container/search-results-container.tsx +353 -337
  42. package/src/search-results/components/spinner/spinner.tsx +3 -1
  43. package/src/search-results/components/tab-views/index.tsx +13 -7
  44. package/src/search-results/features/flights/flight-search-results-self-contained.tsx +1 -14
  45. package/src/search-results/features/hotels/hotel-search-results-self-contained.tsx +1 -14
  46. package/src/search-results/store/search-results-slice.ts +37 -3
  47. package/src/search-results/types.ts +0 -15
  48. package/src/shared/translations/ar-SA.json +70 -0
  49. package/src/shared/translations/da-DK.json +70 -0
  50. package/src/shared/translations/de-DE.json +70 -0
  51. package/src/shared/translations/en-GB.json +71 -1
  52. package/src/shared/translations/es-ES.json +70 -0
  53. package/src/shared/translations/fr-BE.json +71 -1
  54. package/src/shared/translations/fr-FR.json +70 -0
  55. package/src/shared/translations/is-IS.json +72 -2
  56. package/src/shared/translations/it-IT.json +70 -0
  57. package/src/shared/translations/ja-JP.json +72 -2
  58. package/src/shared/translations/nl-BE.json +70 -0
  59. package/src/shared/translations/nl-NL.json +70 -0
  60. package/src/shared/translations/no-NO.json +72 -2
  61. package/src/shared/translations/pl-PL.json +70 -0
  62. package/src/shared/translations/pt-PT.json +70 -0
  63. package/src/shared/translations/sv-SE.json +72 -2
  64. package/styles/components/_search.scss +7 -1
@@ -35,7 +35,6 @@ export interface QSMConfiguration {
35
35
  maxChildAge?: number;
36
36
  maxInfantAge?: number;
37
37
  onSubmit: (data: any) => void;
38
- submitLabel: string;
39
38
  submitIcon: ReactNode;
40
39
  nationalities: Nationality[];
41
40
  languageCode?: string;
@@ -2,8 +2,8 @@ import React from 'react';
2
2
  import { Filter } from '../../types';
3
3
  interface FiltersProps {
4
4
  filters: Filter[];
5
- isMobileFiltersOpen: boolean;
6
- handleSetIsMobileFiltersOpen: () => void;
5
+ isOpen: boolean;
6
+ handleSetIsOpen: () => void;
7
7
  handleApplyFilters: () => void;
8
8
  isLoading?: boolean;
9
9
  }
@@ -1,5 +1,7 @@
1
1
  import React from 'react';
2
+ import { BookingPackageFlight } from '@qite/tide-client';
2
3
  interface FlightResultsProps {
4
+ flights: BookingPackageFlight[];
3
5
  isDeparture?: boolean;
4
6
  }
5
7
  declare const FlightResults: React.FC<FlightResultsProps>;
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import { HotelResult } from '../../types';
3
3
  interface HotelCardProps {
4
4
  result: HotelResult;
5
+ translations?: any;
5
6
  }
6
7
  declare const HotelCard: React.FC<HotelCardProps>;
7
8
  export default HotelCard;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  interface ItineraryProps {
3
- isMobileFiltersOpen: boolean;
4
- handleSetIsMobileFiltersOpen: () => void;
3
+ isOpen: boolean;
4
+ handleSetIsOpen: () => void;
5
5
  isLoading?: boolean;
6
6
  }
7
7
  declare const Itinerary: React.FC<ItineraryProps>;
@@ -1,8 +1,10 @@
1
1
  import { Filter } from '../types';
2
- import { BookingPackageItem } from '@qite/tide-client/build/types';
2
+ import { BookingPackage, BookingPackageItem, EntryLight } from '@qite/tide-client/build/types';
3
3
  export interface SearchResultsState {
4
4
  results: BookingPackageItem[];
5
5
  selectedHotelId: number | null;
6
+ bookingPackageDetails: BookingPackage | null;
7
+ entry: EntryLight | null;
6
8
  isLoading: boolean;
7
9
  filters: Filter[];
8
10
  sortKey: string | null;
@@ -11,6 +13,13 @@ export interface SearchResultsState {
11
13
  }
12
14
  export declare const setResults: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
13
15
  results: BookingPackageItem[];
14
- }, "searchResults/setResults">, setSelectedHotel: import("@reduxjs/toolkit").ActionCreatorWithPayload<number | null, "searchResults/setSelectedHotel">, setIsLoading: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "searchResults/setIsLoading">, setFilters: import("@reduxjs/toolkit").ActionCreatorWithPayload<Filter[], "searchResults/setFilters">, resetFilters: import("@reduxjs/toolkit").ActionCreatorWithPayload<Filter[], "searchResults/resetFilters">, setSortKey: import("@reduxjs/toolkit").ActionCreatorWithPayload<string | null, "searchResults/setSortKey">, setActiveTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<string | null, "searchResults/setActiveTab">, setCurrentPage: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "searchResults/setCurrentPage">, resetSearchState: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"searchResults/resetSearchState">;
16
+ }, "searchResults/setResults">, setSelectedHotel: import("@reduxjs/toolkit").ActionCreatorWithPayload<number | null, "searchResults/setSelectedHotel">, setBookingPackageDetails: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
17
+ details: BookingPackage;
18
+ }, "searchResults/setBookingPackageDetails">, setEntry: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
19
+ entry: EntryLight;
20
+ }, "searchResults/setEntry">, selectFlight: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
21
+ flightOptionId: string;
22
+ isDeparture: boolean;
23
+ }, "searchResults/selectFlight">, setIsLoading: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "searchResults/setIsLoading">, setFilters: import("@reduxjs/toolkit").ActionCreatorWithPayload<Filter[], "searchResults/setFilters">, resetFilters: import("@reduxjs/toolkit").ActionCreatorWithPayload<Filter[], "searchResults/resetFilters">, setSortKey: import("@reduxjs/toolkit").ActionCreatorWithPayload<string | null, "searchResults/setSortKey">, setActiveTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<string | null, "searchResults/setActiveTab">, setCurrentPage: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "searchResults/setCurrentPage">, resetSearchState: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"searchResults/resetSearchState">;
15
24
  declare const _default: import("redux").Reducer<SearchResultsState, import("redux").AnyAction>;
16
25
  export default _default;
@@ -19,22 +19,8 @@ export interface SearchResultsConfiguration {
19
19
  showCustomCards?: boolean;
20
20
  customCardRenderer?: (result: SearchResult) => ReactNode;
21
21
  showMapView?: boolean;
22
- noResultsLabel?: string;
23
22
  isLoading?: boolean;
24
23
  customSpinner?: ReactNode;
25
- translations?: {
26
- filters?: string;
27
- filterTitle?: string;
28
- resetButton?: string;
29
- sortBy?: string;
30
- noResults?: string;
31
- totalResultsLabel?: string;
32
- luggageIncluded?: string;
33
- cancel?: string;
34
- apply?: string;
35
- loading?: string;
36
- searchResultCTA?: string;
37
- };
38
24
  cmsHotelData?: any[];
39
25
  languageCode?: string;
40
26
  }
package/package.json CHANGED
@@ -1,77 +1,77 @@
1
- {
2
- "name": "@qite/tide-booking-component",
3
- "version": "1.4.33",
4
- "description": "React Booking wizard & Booking product component for Tide",
5
- "main": "build/build-cjs/index.js",
6
- "module": "build/build-esm/index.js",
7
- "scripts": {
8
- "start": "rollup -c -w",
9
- "build": "rollup -c",
10
- "tsc": "tsc --noEmit",
11
- "format": "prettier --write .",
12
- "prepare": "husky"
13
- },
14
- "repository": {
15
- "type": "git",
16
- "url": "git+ssh://git@bitbucket.org/qitegeneral/tide-booking-component.git"
17
- },
18
- "keywords": [
19
- "tide",
20
- "booking",
21
- "react",
22
- "component"
23
- ],
24
- "author": "Qite",
25
- "license": "OBSD",
26
- "homepage": "https://bitbucket.org/qitegeneral/tide-booking-component#readme",
27
- "devDependencies": {
28
- "@jsonurl/jsonurl": "^1.1.4",
29
- "@popperjs/core": "^2.10.2",
30
- "@qite/tide-client": "^1.1.123",
31
- "@reach/router": "^1.3.4",
32
- "@reduxjs/toolkit": "^1.6.0",
33
- "@rollup/plugin-commonjs": "^19.0.1",
34
- "@rollup/plugin-json": "^4.1.0",
35
- "@rollup/plugin-node-resolve": "^13.0.2",
36
- "@types/flat": "^5.0.2",
37
- "@types/lodash": "^4.14.171",
38
- "@types/reach__router": "^1.3.9",
39
- "@types/react": "^17.0.2",
40
- "@types/react-dom": "^17.0.2",
41
- "@types/uuid": "^8.3.1",
42
- "date-fns": "^2.22.1",
43
- "flat": "^5.0.2",
44
- "formik": "^2.2.9",
45
- "husky": "^9.1.7",
46
- "lodash": "^4.17.21",
47
- "prettier": "^2.3.2",
48
- "react-popper": "^2.2.5",
49
- "react-redux": "^7.2.4",
50
- "rollup": "^2.53.2",
51
- "rollup-plugin-delete": "^2.0.0",
52
- "rollup-plugin-peer-deps-external": "^2.2.4",
53
- "rollup-plugin-typescript2": "0.36.0",
54
- "tslib": "^2.3.1",
55
- "typescript": "^4.3.5",
56
- "uuid": "^8.3.2"
57
- },
58
- "peerDependencies": {
59
- "@jsonurl/jsonurl": "^1.1.4",
60
- "@popperjs/core": "^2.10.2",
61
- "@reach/router": "^1.3.4",
62
- "@reduxjs/toolkit": "^1.6.0",
63
- "date-fns": "^2.22.1",
64
- "flat": "^5.0.2",
65
- "formik": "^2.2.9",
66
- "immer": "^9.0.5",
67
- "lodash": "^4.17.21",
68
- "react": "^17.0.2",
69
- "react-dom": "^17.0.2",
70
- "react-popper": "^2.2.5",
71
- "react-redux": "^7.2.4",
72
- "uuid": "^8.3.2"
73
- },
74
- "dependencies": {
75
- "react-html-comment": "^2.0.16"
76
- }
77
- }
1
+ {
2
+ "name": "@qite/tide-booking-component",
3
+ "version": "1.4.35",
4
+ "description": "React Booking wizard & Booking product component for Tide",
5
+ "main": "build/build-cjs/index.js",
6
+ "module": "build/build-esm/index.js",
7
+ "scripts": {
8
+ "start": "rollup -c -w",
9
+ "build": "rollup -c",
10
+ "tsc": "tsc --noEmit",
11
+ "format": "prettier --write .",
12
+ "prepare": "husky"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+ssh://git@bitbucket.org/qitegeneral/tide-booking-component.git"
17
+ },
18
+ "keywords": [
19
+ "tide",
20
+ "booking",
21
+ "react",
22
+ "component"
23
+ ],
24
+ "author": "Qite",
25
+ "license": "OBSD",
26
+ "homepage": "https://bitbucket.org/qitegeneral/tide-booking-component#readme",
27
+ "devDependencies": {
28
+ "@jsonurl/jsonurl": "^1.1.4",
29
+ "@popperjs/core": "^2.10.2",
30
+ "@qite/tide-client": "^1.1.126",
31
+ "@reach/router": "^1.3.4",
32
+ "@reduxjs/toolkit": "^1.6.0",
33
+ "@rollup/plugin-commonjs": "^19.0.1",
34
+ "@rollup/plugin-json": "^4.1.0",
35
+ "@rollup/plugin-node-resolve": "^13.0.2",
36
+ "@types/flat": "^5.0.2",
37
+ "@types/lodash": "^4.14.171",
38
+ "@types/reach__router": "^1.3.9",
39
+ "@types/react": "^17.0.2",
40
+ "@types/react-dom": "^17.0.2",
41
+ "@types/uuid": "^8.3.1",
42
+ "date-fns": "^2.22.1",
43
+ "flat": "^5.0.2",
44
+ "formik": "^2.2.9",
45
+ "husky": "^9.1.7",
46
+ "lodash": "^4.17.21",
47
+ "prettier": "^2.3.2",
48
+ "react-popper": "^2.2.5",
49
+ "react-redux": "^7.2.4",
50
+ "rollup": "^2.53.2",
51
+ "rollup-plugin-delete": "^2.0.0",
52
+ "rollup-plugin-peer-deps-external": "^2.2.4",
53
+ "rollup-plugin-typescript2": "0.36.0",
54
+ "tslib": "^2.3.1",
55
+ "typescript": "^4.3.5",
56
+ "uuid": "^8.3.2"
57
+ },
58
+ "peerDependencies": {
59
+ "@jsonurl/jsonurl": "^1.1.4",
60
+ "@popperjs/core": "^2.10.2",
61
+ "@reach/router": "^1.3.4",
62
+ "@reduxjs/toolkit": "^1.6.0",
63
+ "date-fns": "^2.22.1",
64
+ "flat": "^5.0.2",
65
+ "formik": "^2.2.9",
66
+ "immer": "^9.0.5",
67
+ "lodash": "^4.17.21",
68
+ "react": "^17.0.2",
69
+ "react-dom": "^17.0.2",
70
+ "react-popper": "^2.2.5",
71
+ "react-redux": "^7.2.4",
72
+ "uuid": "^8.3.2"
73
+ },
74
+ "dependencies": {
75
+ "react-html-comment": "^2.0.16"
76
+ }
77
+ }
@@ -57,6 +57,7 @@ const Product: React.FC<ProductProps> = ({ productCode, productName, duration, r
57
57
  const [hasTransfer, setHasTransfer] = useState<boolean>(false);
58
58
  const [rooms, setRooms] = useState<ProductRoom[]>([{ adults: 2, children: 0, childAges: [] }]);
59
59
  const [searchResponse, setSearchResponse] = useState<BookingPackageItem[]>([]);
60
+ const [detailResponse, setDetailResponse] = useState<any>();
60
61
  const [dateRange, setDateRange] = useState<DateRange>();
61
62
  const [packageProductName, setPackageProductName] = useState<string>(productName);
62
63
  const [currencyCode, setCurrencyCode] = useState<string>('');
@@ -135,35 +136,14 @@ const Product: React.FC<ProductProps> = ({ productCode, productName, duration, r
135
136
 
136
137
  setIsLoading(true);
137
138
 
138
- let detailResponse;
139
139
  if (displayMode === 'calendar' && searchType === 0) {
140
- detailResponse = await packageApi.fetchDetails(detailsRequest, signal, language, apiSettingsState);
140
+ setDetailResponse(await packageApi.fetchDetails(detailsRequest, signal, language, apiSettingsState));
141
141
  }
142
142
 
143
143
  if (searchType === 1) {
144
144
  setSearchResponse(await packageApi.fetchSearch(searchRequest, signal, apiSettingsState));
145
145
  }
146
146
 
147
- if (detailResponse && !detailResponse.errorCode && detailResponse.payload) {
148
- const selectedOption = detailResponse.payload.options.find((x) => x.isSelected);
149
-
150
- if (selectedOption) {
151
- const hasFlight = selectedOption.includedServiceTypes.some((x) => x === 7);
152
- const hasTranfer = selectedOption.includedServiceTypes.some((x) => x === 13);
153
-
154
- setPrice(selectedOption.price);
155
- setHasFlight(hasFlight);
156
- setHasTransfer(hasTranfer);
157
- setCurrencyCode(detailResponse.payload.currencyCode);
158
- setPackageProductName(selectedOption.name);
159
- }
160
- } else {
161
- setPrice(undefined);
162
- setHasFlight(false);
163
- setHasTransfer(false);
164
- setCurrencyCode('');
165
- }
166
-
167
147
  setIsLoading(false);
168
148
  }
169
149
  };
@@ -256,9 +236,11 @@ const Product: React.FC<ProductProps> = ({ productCode, productName, duration, r
256
236
  if (selectedItem) {
257
237
  setPrice(selectedItem.price);
258
238
  setPackageProductName(selectedItem.name);
239
+ setCurrencyCode(selectedItem.currencyCode);
259
240
  } else {
260
241
  setPrice(searchResponse[0].price);
261
242
  setPackageProductName(searchResponse[0].name);
243
+ setCurrencyCode(searchResponse[0].currencyCode);
262
244
  }
263
245
  } else {
264
246
  setSearchResults([]);
@@ -267,6 +249,28 @@ const Product: React.FC<ProductProps> = ({ productCode, productName, duration, r
267
249
  }
268
250
  }, [searchResponse]);
269
251
 
252
+ useEffect(() => {
253
+ if (detailResponse && !detailResponse.errorCode && detailResponse.payload) {
254
+ const selectedOption = detailResponse.payload.options.find((x: any) => x.isSelected);
255
+
256
+ if (selectedOption) {
257
+ const hasFlight = selectedOption.includedServiceTypes.some((x: any) => x === 7);
258
+ const hasTranfer = selectedOption.includedServiceTypes.some((x: any) => x === 13);
259
+
260
+ setPrice(selectedOption.price);
261
+ setHasFlight(hasFlight);
262
+ setHasTransfer(hasTranfer);
263
+ setCurrencyCode(detailResponse.payload.currencyCode);
264
+ setPackageProductName(selectedOption.name);
265
+ }
266
+ } else if (detailResponse !== undefined) {
267
+ setPrice(undefined);
268
+ setHasFlight(false);
269
+ setHasTransfer(false);
270
+ setCurrencyCode('');
271
+ }
272
+ }, [detailResponse]);
273
+
270
274
  useEffect(() => {
271
275
  if (searchType === 1 && skipNextFetchRef.current) {
272
276
  skipNextFetchRef.current = false;