@qite/tide-booking-component 1.4.80 → 1.4.82

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 (45) hide show
  1. package/build/build-cjs/index.js +280 -150
  2. package/build/build-cjs/src/booking-wizard/features/booking/api.d.ts +4 -0
  3. package/build/build-cjs/src/booking-wizard/features/booking/booking-slice.d.ts +16 -0
  4. package/build/build-cjs/src/booking-wizard/features/booking/selectors.d.ts +1 -0
  5. package/build/build-cjs/src/booking-wizard/types.d.ts +1 -0
  6. package/build/build-cjs/src/qsm/store/qsm-slice.d.ts +2 -1
  7. package/build/build-cjs/src/qsm/types.d.ts +2 -2
  8. package/build/build-cjs/src/search-results/types.d.ts +1 -0
  9. package/build/build-cjs/src/shared/components/flyin/flyin.d.ts +1 -1
  10. package/build/build-cjs/src/shared/types.d.ts +0 -13
  11. package/build/build-esm/index.js +281 -144
  12. package/build/build-esm/src/booking-wizard/features/booking/api.d.ts +4 -0
  13. package/build/build-esm/src/booking-wizard/features/booking/booking-slice.d.ts +16 -0
  14. package/build/build-esm/src/booking-wizard/features/booking/selectors.d.ts +1 -0
  15. package/build/build-esm/src/booking-wizard/types.d.ts +1 -0
  16. package/build/build-esm/src/qsm/store/qsm-slice.d.ts +2 -1
  17. package/build/build-esm/src/qsm/types.d.ts +2 -2
  18. package/build/build-esm/src/search-results/types.d.ts +1 -0
  19. package/build/build-esm/src/shared/components/flyin/flyin.d.ts +1 -1
  20. package/build/build-esm/src/shared/types.d.ts +0 -13
  21. package/package.json +2 -2
  22. package/src/booking-wizard/features/booking/api.ts +8 -2
  23. package/src/booking-wizard/features/booking/booking-slice.ts +15 -1
  24. package/src/booking-wizard/features/booking/selectors.ts +2 -0
  25. package/src/booking-wizard/features/travelers-form/travelers-form.tsx +46 -23
  26. package/src/booking-wizard/settings-context.ts +2 -1
  27. package/src/booking-wizard/types.ts +1 -0
  28. package/src/content/featured-trips/featured-trip-card.tsx +18 -16
  29. package/src/content/features/content-page/content-page-self-contained.tsx +2 -2
  30. package/src/qsm/components/QSMContainer/qsm-container.tsx +1 -2
  31. package/src/qsm/components/travel-input/index.tsx +1 -1
  32. package/src/qsm/components/travel-input-group/index.tsx +1 -1
  33. package/src/qsm/qsm-configuration-context.ts +1 -1
  34. package/src/qsm/store/qsm-slice.ts +2 -1
  35. package/src/qsm/types.ts +2 -2
  36. package/src/search-results/components/hotel/hotel-card.tsx +5 -1
  37. package/src/search-results/components/round-trip/round-trip-results.tsx +15 -1
  38. package/src/search-results/components/search-results-container/flight-search-results.tsx +1 -1
  39. package/src/search-results/components/search-results-container/search-results-container.tsx +39 -13
  40. package/src/search-results/types.ts +1 -0
  41. package/src/shared/components/flyin/flyin.tsx +1 -1
  42. package/src/shared/types.ts +0 -14
  43. package/styles/booking-search-results-variables.scss +1 -1
  44. package/styles/components/_content.scss +7 -0
  45. package/styles/components/_search.scss +134 -441
@@ -22,5 +22,9 @@ declare const packageApi: {
22
22
  ) => Promise<{
23
23
  [key: string]: string;
24
24
  }>;
25
+ fetchCountries: (
26
+ signal: AbortSignal,
27
+ apiSettings?: ApiSettingsState
28
+ ) => Promise<import('@qite/tide-client').PageResult<import('@qite/tide-client').CountryItem>>;
25
29
  };
26
30
  export default packageApi;
@@ -10,6 +10,7 @@ import {
10
10
  BookingPackage,
11
11
  BookingPackageRoom,
12
12
  BookingTravelAgent,
13
+ CountryItem,
13
14
  PerBookingPackageOption
14
15
  } from '@qite/tide-client/build/types';
15
16
  import { BookingStep } from './constants';
@@ -46,6 +47,7 @@ export interface BookingState {
46
47
  travelersFirstStep: boolean;
47
48
  isFetching?: boolean;
48
49
  hasMounted: boolean;
50
+ countries?: CountryItem[];
49
51
  }
50
52
  export declare const fetchPackage: import('@reduxjs/toolkit').AsyncThunk<
51
53
  void,
@@ -61,6 +63,20 @@ export declare const fetchPackage: import('@reduxjs/toolkit').AsyncThunk<
61
63
  rejectedMeta?: unknown;
62
64
  }
63
65
  >;
66
+ export declare const fetchCountries: import('@reduxjs/toolkit').AsyncThunk<
67
+ import('@qite/tide-client/build/types').PageResult<CountryItem>,
68
+ void,
69
+ {
70
+ state?: unknown;
71
+ dispatch?: import('@reduxjs/toolkit').ThunkDispatch<unknown, unknown, import('@reduxjs/toolkit').UnknownAction>;
72
+ extra?: unknown;
73
+ rejectValue?: unknown;
74
+ serializedErrorType?: unknown;
75
+ pendingMeta?: unknown;
76
+ fulfilledMeta?: unknown;
77
+ rejectedMeta?: unknown;
78
+ }
79
+ >;
64
80
  export declare const setOfficeId: import('@reduxjs/toolkit').ActionCreatorWithPayload<number, 'booking/setOfficeId'>,
65
81
  setLanguageCode: import('@reduxjs/toolkit').ActionCreatorWithPayload<string, 'booking/setLanguageCode'>,
66
82
  setTranslations: import('@reduxjs/toolkit').ActionCreatorWithPayload<any, 'booking/setTranslations'>,
@@ -336,6 +336,7 @@ export declare const selectCalculateDeposit: (state: RootState) => boolean;
336
336
  export declare const selectIsRetry: (state: RootState) => boolean;
337
337
  export declare const selectStartDate: (state: RootState) => string | undefined;
338
338
  export declare const selectAgents: (state: RootState) => import('@qite/tide-client').BookingTravelAgent[] | undefined;
339
+ export declare const selectCountries: (state: RootState) => import('@qite/tide-client').CountryItem[] | undefined;
339
340
  export declare const selectProductCode: (state: RootState) => string | undefined;
340
341
  export declare const selectAccommodationCodes: (state: RootState) => string[];
341
342
  export declare const selectAccommodationViews: (state: RootState) =>
@@ -26,6 +26,7 @@ export interface Settings {
26
26
  mainBookerFormFields?: FormField[];
27
27
  countries?: Country[];
28
28
  travelersFirstStep?: boolean;
29
+ showAllCountries?: boolean;
29
30
  };
30
31
  summary: {
31
32
  pathSuffix: string;
@@ -1,6 +1,7 @@
1
1
  import { MobileFilterType, Room, TravelerType, TypeaheadOption } from '../types';
2
2
  import { ReactNode } from 'react';
3
- import { TravelType, TravelClass, PortalQsmType } from '../../shared/types';
3
+ import { TravelType, TravelClass } from '../../shared/types';
4
+ import { PortalQsmType } from '@qite/tide-client';
4
5
  export interface QSMState {
5
6
  qsmType?: PortalQsmType;
6
7
  selectedOrigin?: string;
@@ -1,6 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
- import { PortalQsmType, TravelClass, TravelType } from '../shared/types';
3
- import { WebsiteConfigurationSearchConfiguration } from '@qite/tide-client';
2
+ import { TravelClass, TravelType } from '../shared/types';
3
+ import { WebsiteConfigurationSearchConfiguration, PortalQsmType } from '@qite/tide-client';
4
4
  export interface QSMConfiguration {
5
5
  type?: PortalQsmType;
6
6
  searchConfigurations: WebsiteConfigurationSearchConfiguration[];
@@ -3,6 +3,7 @@ import { ReactNode } from 'react';
3
3
  export type FlightSelectionMode = 'paired' | 'independent';
4
4
  export interface SearchResultsConfiguration {
5
5
  searchConfiguration: WebsiteConfigurationSearchConfiguration;
6
+ portalId?: number;
6
7
  tideConnection: {
7
8
  host: string;
8
9
  apiKey: string;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { PortalQsmType } from '../../types';
2
+ import { PortalQsmType } from '@qite/tide-client';
3
3
  type FlyInProps = {
4
4
  title: string;
5
5
  srpType: PortalQsmType;
@@ -1,17 +1,4 @@
1
1
  import { ReactNode } from 'react';
2
- export declare enum PortalQsmType {
3
- Multidestination = 0,
4
- Accommodation = 1,
5
- AccommodationAndFlight = 2,
6
- Flight = 3,
7
- RoundTrip = 4,
8
- GroupTour = 5,
9
- Package = 6,
10
- Ticket = 7,
11
- Car = 8,
12
- Transfer = 9,
13
- Cruise = 10
14
- }
15
2
  export interface ApiSettingsState {
16
3
  apiUrl: string;
17
4
  apiKey: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qite/tide-booking-component",
3
- "version": "1.4.80",
3
+ "version": "1.4.82",
4
4
  "description": "React Booking wizard & Booking product component for Tide",
5
5
  "main": "build/build-cjs/index.js",
6
6
  "types": "build/build-cjs/src/index.d.ts",
@@ -29,7 +29,7 @@
29
29
  "devDependencies": {
30
30
  "@jsonurl/jsonurl": "^1.1.4",
31
31
  "@popperjs/core": "^2.10.2",
32
- "@qite/tide-client": "^1.1.148",
32
+ "@qite/tide-client": "^1.1.150",
33
33
  "@reduxjs/toolkit": "^2.8.2",
34
34
  "@rollup/plugin-commonjs": "^19.0.1",
35
35
  "@rollup/plugin-json": "^4.1.0",
@@ -1,4 +1,4 @@
1
- import { agents, details, generateBookingAccommodations } from '@qite/tide-client';
1
+ import { agents, details, generateBookingAccommodations, getCountries } from '@qite/tide-client';
2
2
  import {
3
3
  BookingPackage,
4
4
  BookingPackageDetailsRequest,
@@ -30,9 +30,15 @@ const fetchAccommodationViews = async (request: GenerateBookingAccommodationRequ
30
30
  return await generateBookingAccommodations(tideClientConfig, request, signal);
31
31
  };
32
32
 
33
+ const fetchCountries = async (signal: AbortSignal, apiSettings?: ApiSettingsState) => {
34
+ const tideClientConfig = buildTideClientConfig(apiSettings);
35
+ return await getCountries(tideClientConfig, signal);
36
+ };
37
+
33
38
  const packageApi = {
34
39
  fetchDetails,
35
40
  fetchAgents,
36
- fetchAccommodationViews
41
+ fetchAccommodationViews,
42
+ fetchCountries
37
43
  };
38
44
  export default packageApi;
@@ -17,6 +17,7 @@ import {
17
17
  BookingPackageRequestRoom,
18
18
  BookingPackageRoom,
19
19
  BookingTravelAgent,
20
+ CountryItem,
20
21
  GenerateBookingAccommodationRequest,
21
22
  PerBookingPackageOption,
22
23
  SelectedFlight
@@ -67,6 +68,7 @@ export interface BookingState {
67
68
  travelersFirstStep: boolean;
68
69
  isFetching?: boolean;
69
70
  hasMounted: boolean;
71
+ countries?: CountryItem[];
70
72
  }
71
73
 
72
74
  const initialState: BookingState = {
@@ -105,17 +107,24 @@ const initialState: BookingState = {
105
107
  translations: undefined,
106
108
  travelersFirstStep: false,
107
109
  isFetching: false,
108
- hasMounted: false
110
+ hasMounted: false,
111
+ countries: undefined
109
112
  };
110
113
 
111
114
  export const fetchPackage = createAsyncThunk('booking/fetchPackage', async (_, { dispatch }) => {
112
115
  dispatch(setFetchingPackage(true));
113
116
  await dispatch(fetchAgents());
117
+ await dispatch(fetchCountries());
114
118
  await dispatch(fetchPackageDetails());
115
119
  await dispatch(fetchAccommodationViews());
116
120
  dispatch(setFetchingPackage(false));
117
121
  });
118
122
 
123
+ export const fetchCountries = createAsyncThunk('booking/countries', async (_, { dispatch, getState, signal }) => {
124
+ const settings = getState() as RootState;
125
+ return await packageApi.fetchCountries(signal, settings.apiSettings);
126
+ });
127
+
119
128
  const fetchAgents = createAsyncThunk('booking/agents', async (_, { dispatch, getState, signal }) => {
120
129
  const settings = getState() as RootState;
121
130
  return await packageApi.fetchAgents(signal, settings.apiSettings);
@@ -570,6 +579,11 @@ const bookingSlice = createSlice({
570
579
  state.accommodationViews = action.payload;
571
580
  }
572
581
  });
582
+ builder.addCase(fetchCountries.fulfilled, (state, action) => {
583
+ if (action.payload.items) {
584
+ state.countries = action.payload.items;
585
+ }
586
+ });
573
587
  }
574
588
  });
575
589
 
@@ -157,6 +157,8 @@ export const selectStartDate = (state: RootState) => state.booking.package?.opti
157
157
 
158
158
  export const selectAgents = (state: RootState) => state.booking.agents;
159
159
 
160
+ export const selectCountries = (state: RootState) => state.booking.countries;
161
+
160
162
  export const selectProductCode = (state: RootState) => state.booking.productAttributes?.productCode;
161
163
 
162
164
  export const selectAccommodationCodes = (state: RootState) => {
@@ -2,7 +2,14 @@ import { compact, get, sortBy } from 'lodash';
2
2
  import React, { useContext, useEffect, useState } from 'react';
3
3
  import { useSelector } from 'react-redux';
4
4
  import { fetchPackage, setCurrentStep, setHasMounted, setIsFetching } from '../booking/booking-slice';
5
- import { selectBookingAttributes, selectHasMounted, selectIsFetching, selectIsUnavailable, selectTravelersFirstStep } from '../booking/selectors';
5
+ import {
6
+ selectBookingAttributes,
7
+ selectCountries,
8
+ selectHasMounted,
9
+ selectIsFetching,
10
+ selectIsUnavailable,
11
+ selectTravelersFirstStep
12
+ } from '../booking/selectors';
6
13
  import { selectFormRooms, selectTravelersFormValues, setFormValues } from './travelers-form-slice';
7
14
 
8
15
  import { Link, useNavigate } from 'react-router-dom';
@@ -100,8 +107,10 @@ const TravelersForm: React.FC<TravelersFormProps> = () => {
100
107
  const bookingAttributes = useSelector(selectBookingAttributes);
101
108
  const isFetching = useSelector(selectIsFetching);
102
109
  const hasMounted = useSelector(selectHasMounted);
110
+ const countries = useSelector(selectCountries);
103
111
 
104
112
  const useCompactForm = !!settings.travellers.compactForm && !!settings.agentAdressId;
113
+ const showAllCountries = !!settings.travellers.showAllCountries;
105
114
 
106
115
  const initialValues =
107
116
  useSelector(selectTravelersFormValues) ?? createInitialValues(formRooms, startDate, agentAdressId, translations.TRAVELERS_FORM.PERSON, useCompactForm);
@@ -397,11 +406,17 @@ const TravelersForm: React.FC<TravelersFormProps> = () => {
397
406
  value: undefined,
398
407
  label: translations.TRAVELERS_FORM.SELECT_COUNTRY
399
408
  },
400
- ...(settings.travellers?.countries?.map((country) => ({
401
- key: country.iso2,
402
- value: country.iso2,
403
- label: country.name
404
- })) ?? [])
409
+ ...(showAllCountries
410
+ ? countries?.map((country) => ({
411
+ key: country.iso2,
412
+ value: country.iso2,
413
+ label: country.name
414
+ })) ?? []
415
+ : settings.travellers?.countries?.map((country) => ({
416
+ key: country.iso2,
417
+ value: country.iso2,
418
+ label: country.name
419
+ })) ?? [])
405
420
  ]}
406
421
  />
407
422
  );
@@ -917,24 +932,32 @@ const TravelersForm: React.FC<TravelersFormProps> = () => {
917
932
  options={[
918
933
  {
919
934
  key: 'empty',
920
- label: translations.TRAVELERS_FORM.SELECT_COUNTRY,
921
- value: undefined
935
+ value: undefined,
936
+ label: translations.TRAVELERS_FORM.SELECT_COUNTRY
922
937
  },
923
- {
924
- key: 'be',
925
- value: 'be',
926
- label: translations.TRAVELERS_FORM.COUNTRIES.BELGIUM
927
- },
928
- {
929
- key: 'nl',
930
- value: 'nl',
931
- label: translations.TRAVELERS_FORM.COUNTRIES.NETHERLANDS
932
- },
933
- {
934
- key: 'fr',
935
- value: 'fr',
936
- label: translations.TRAVELERS_FORM.COUNTRIES.FRANCE
937
- }
938
+ ...(showAllCountries
939
+ ? countries?.map((country) => ({
940
+ key: country.iso2,
941
+ value: country.iso2,
942
+ label: country.name
943
+ })) ?? []
944
+ : [
945
+ {
946
+ key: 'be',
947
+ value: 'be',
948
+ label: translations.TRAVELERS_FORM.COUNTRIES.BELGIUM
949
+ },
950
+ {
951
+ key: 'nl',
952
+ value: 'nl',
953
+ label: translations.TRAVELERS_FORM.COUNTRIES.NETHERLANDS
954
+ },
955
+ {
956
+ key: 'fr',
957
+ value: 'fr',
958
+ label: translations.TRAVELERS_FORM.COUNTRIES.FRANCE
959
+ }
960
+ ])
938
961
  ]}
939
962
  />
940
963
  </div>
@@ -27,7 +27,8 @@ const SettingsContext = React.createContext<WizardSettingsContextProps>({
27
27
  },
28
28
  travellers: {
29
29
  pathSuffix: '/reizigers',
30
- travelersFirstStep: false
30
+ travelersFirstStep: false,
31
+ showAllCountries: false
31
32
  },
32
33
  summary: {
33
34
  pathSuffix: '/samenvatting',
@@ -27,6 +27,7 @@ export interface Settings {
27
27
  mainBookerFormFields?: FormField[];
28
28
  countries?: Country[];
29
29
  travelersFirstStep?: boolean;
30
+ showAllCountries?: boolean;
30
31
  };
31
32
  summary: {
32
33
  pathSuffix: string;
@@ -10,24 +10,26 @@ const FeaturedTripCard: React.FC<FeaturedTrip> = ({ imageSrc, imageAlt, title, l
10
10
  <div className="image-card">
11
11
  <img src={imageSrc} alt={imageAlt} className="image-card__image" />
12
12
  <div className="image-card__content">
13
- <h3 className="image-card__title">{title}</h3>
14
- <div className="image-card__options">
15
- <div className="image-card__option">
16
- <Icon name="ui-location" width={16} height={16} />
17
- <span>{location}</span>
13
+ <div className="image-card__top">
14
+ <h3 className="image-card__title">{title}</h3>
15
+ <div className="image-card__options">
16
+ <div className="image-card__option">
17
+ <Icon name="ui-location" width={16} height={16} />
18
+ <span>{location}</span>
19
+ </div>
20
+ {/* <div className="image-card__option">
21
+ <Icon name="ui-moon" width={16} height={16} />
22
+ <span>2 nights</span>
23
+ </div>
24
+ <div className="image-card__option">
25
+ <Icon name="ui-plane" width={16} height={16} />
26
+ <span>3 transports</span>
27
+ </div> */}
18
28
  </div>
19
- {/* <div className="image-card__option">
20
- <Icon name="ui-moon" width={16} height={16} />
21
- <span>2 nights</span>
22
- </div>
23
- <div className="image-card__option">
24
- <Icon name="ui-plane" width={16} height={16} />
25
- <span>3 transports</span>
26
- </div> */}
29
+ {/* <p className="image__card__description">
30
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Placeat nulla aliquam, quis accusantium quae inventore, accusamus cumque culpa, quasi officia magnam suscipit laboriosam. Velit eveniet, id modi aperiam natus veritatis.
31
+ </p> */}
27
32
  </div>
28
- {/* <p className="image__card__description">
29
- Lorem ipsum dolor sit amet consectetur adipisicing elit. Placeat nulla aliquam, quis accusantium quae inventore, accusamus cumque culpa, quasi officia magnam suscipit laboriosam. Velit eveniet, id modi aperiam natus veritatis.
30
- </p> */}
31
33
  <div className="image-card__bottom">
32
34
  {/* <div className="image-card__price">
33
35
  From
@@ -1,12 +1,12 @@
1
1
  import React from 'react';
2
- import { Navbar, PortalQsmType } from '../../../../src';
2
+ import { Navbar } from '../../../../src';
3
3
  import { TideLogo, language, languages, topLinks, navItems } from '../../../../src/content/navbar/placeholderData';
4
4
  import Icon from '../../components/icon';
5
5
  import ContactForm from '../../components/contact';
6
6
  import Slider from '../../components/slider';
7
7
  import { Nationality, QSMConfiguration, TypeaheadOption } from '../../../qsm/types';
8
8
  import QSM from '../../../qsm';
9
- import { WebsiteConfigurationSearchConfiguration } from '@qite/tide-client';
9
+ import { PortalQsmType, WebsiteConfigurationSearchConfiguration } from '@qite/tide-client';
10
10
 
11
11
  interface ContentPageSelfContainedProps {
12
12
  path: string;
@@ -17,8 +17,7 @@ import { DateRange } from '../../../booking-product/types';
17
17
  import { QSMState, setFromDate, setSelectedQsmType, setToDate, setTripType } from '../../store/qsm-slice';
18
18
  import { BaseFieldConfig, DoubleFieldConfig } from '../../types';
19
19
  import { getTranslations } from '../../../shared/utils/localization-util';
20
- import { PortalQsmType } from '../../../shared/types';
21
- import { DateAmountType } from '@qite/tide-client';
20
+ import { DateAmountType, PortalQsmType } from '@qite/tide-client';
22
21
  import { first } from 'lodash';
23
22
 
24
23
  const QSMContainer: React.FC = () => {
@@ -7,7 +7,7 @@ import { getTranslations } from '../../../shared/utils/localization-util';
7
7
  import TravelClassPicker from '../travel-class-picker';
8
8
  import TravelTypePicker from '../travel-type-picker';
9
9
  import Icon from '../icon';
10
- import { PortalQsmType } from '../../../shared/types';
10
+ import { PortalQsmType } from '@qite/tide-client';
11
11
 
12
12
  const TravelInput: React.FC = () => {
13
13
  const dispatch = useDispatch();
@@ -7,7 +7,7 @@ import { QSMRootState } from '../../store/qsm-store';
7
7
  import QSMConfigurationContext from '../../qsm-configuration-context';
8
8
  import Icon from '../icon';
9
9
  import { getTranslations } from '../../../shared/utils/localization-util';
10
- import { PortalQsmType } from '../../../shared/types';
10
+ import { PortalQsmType } from '@qite/tide-client';
11
11
 
12
12
  const selectTravelerSummary = (state: QSMRootState, areTravelersInRooms: boolean | undefined) => {
13
13
  const { adults, kids, babies, rooms, selectedTravelType } = state.qsm;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { QSMConfiguration } from './types';
3
- import { PortalQsmType } from '../shared/types';
3
+ import { PortalQsmType } from '@qite/tide-client';
4
4
 
5
5
  const QSMConfigurationContext = React.createContext<QSMConfiguration>({
6
6
  type: PortalQsmType.Accommodation,
@@ -2,7 +2,8 @@ import { createSlice, PayloadAction } from '@reduxjs/toolkit';
2
2
 
3
3
  import { MobileFilterType, Room, TravelerType, TypeaheadOption } from '../types';
4
4
  import { ReactNode } from 'react';
5
- import { TravelType, TravelClass, PortalQsmType } from '../../shared/types';
5
+ import { TravelType, TravelClass } from '../../shared/types';
6
+ import { PortalQsmType } from '@qite/tide-client';
6
7
 
7
8
  export interface QSMState {
8
9
  qsmType?: PortalQsmType;
package/src/qsm/types.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
- import { PortalQsmType, TravelClass, TravelType } from '../shared/types';
3
- import { WebsiteConfigurationSearchConfiguration } from '@qite/tide-client';
2
+ import { TravelClass, TravelType } from '../shared/types';
3
+ import { WebsiteConfigurationSearchConfiguration, PortalQsmType } from '@qite/tide-client';
4
4
 
5
5
  export interface QSMConfiguration {
6
6
  type?: PortalQsmType;
@@ -20,7 +20,11 @@ const HotelCard: React.FC<HotelCardProps> = ({ result, translations }) => {
20
20
 
21
21
  if (result.contents?.length) {
22
22
  return (
23
- <div className="search__result-card__wrapper">
23
+ <div
24
+ key={result.id}
25
+ className="search__result-card__wrapper search__result-card__wrapper--custom"
26
+ onMouseEnter={(e) => (e.currentTarget.style.transform = 'scale(1.02)')}
27
+ onMouseLeave={(e) => (e.currentTarget.style.transform = 'scale(1)')}>
24
28
  <div
25
29
  dangerouslySetInnerHTML={{
26
30
  __html: result.contents
@@ -3,11 +3,16 @@ import Icon from '../icon';
3
3
 
4
4
  interface RoundTripResultsProps {}
5
5
 
6
+ // search__results__cards--list
7
+
6
8
  const RoundTripResults: React.FC<RoundTripResultsProps> = () => {
7
9
  return (
8
10
  <div className="search__results__cards search__results__cards--list">
9
11
  <div className="search__result-card">
10
12
  <div className="search__result-card__allotment">
13
+ <div className="search__result-card__allotment__img-wrapper">
14
+ <img src="https://cdn.pixabay.com/photo/2024/05/15/12/31/lake-8763490_1280.jpg" alt="river" className="search__result-card__allotment__img" />
15
+ </div>
11
16
  <div className="search__result-card__allotment__title__wrapper">
12
17
  <h3 className="search__result-card__allotment__title">
13
18
  Rondreis Noord-India: Rajasthan
@@ -64,6 +69,9 @@ const RoundTripResults: React.FC<RoundTripResultsProps> = () => {
64
69
  </div>
65
70
  <div className="search__result-card">
66
71
  <div className="search__result-card__allotment">
72
+ <div className="search__result-card__allotment__img-wrapper">
73
+ <img src="https://cdn.pixabay.com/photo/2024/05/15/12/31/lake-8763490_1280.jpg" alt="river" className="search__result-card__allotment__img" />
74
+ </div>
67
75
  <div className="search__result-card__allotment__title__wrapper">
68
76
  <h3 className="search__result-card__allotment__title">
69
77
  Rondreis Thailand
@@ -72,7 +80,10 @@ const RoundTripResults: React.FC<RoundTripResultsProps> = () => {
72
80
  BIJNA GAR
73
81
  </span>
74
82
  </h3>
75
-
83
+ <p className="search__result-card__allotment__description">
84
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Quod quis explicabo, animi illum expedita molestias quae atque laboriosam consequatur
85
+ nulla error non delectus nesciunt id voluptatem quia nobis? Debitis, rerum!
86
+ </p>
76
87
  <div className="search__result-card__allotment__container">
77
88
  <div className="search__result-card__allotment__header">
78
89
  <div className="search__result-card__allotment__wrapper">
@@ -120,6 +131,9 @@ const RoundTripResults: React.FC<RoundTripResultsProps> = () => {
120
131
  </div>
121
132
  <div className="search__result-card">
122
133
  <div className="search__result-card__allotment">
134
+ <div className="search__result-card__allotment__img-wrapper">
135
+ <img src="https://cdn.pixabay.com/photo/2024/05/15/12/31/lake-8763490_1280.jpg" alt="river" className="search__result-card__allotment__img" />
136
+ </div>
123
137
  <div className="search__result-card__allotment__title__wrapper">
124
138
  <h3 className="search__result-card__allotment__title">Rondreis Timboektoe</h3>
125
139
 
@@ -11,7 +11,7 @@ import FlightFilters from '../filters/flight-filters';
11
11
  import { ExtendedFlightSearchResponseItem, FlightSelectionMode } from '../../types';
12
12
  import { getSortingName } from '../../utils/flight-utils';
13
13
  import Spinner from '../spinner/spinner';
14
- import { PortalQsmType } from '../../../shared/types';
14
+ import { PortalQsmType } from '@qite/tide-client';
15
15
 
16
16
  interface FlightResultsContainerProps {
17
17
  isMobile: boolean;