@qite/tide-booking-component 1.4.108 → 1.4.110
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/build/build-cjs/index.js +1607 -886
- package/build/build-cjs/src/booking-wizard/components/step-route.d.ts +2 -2
- package/build/build-cjs/src/booking-wizard/features/sidebar/sidebar-flight.d.ts +1 -0
- package/build/build-cjs/src/booking-wizard/features/sidebar/sidebar-util.d.ts +2 -1
- package/build/build-cjs/src/booking-wizard/features/sidebar/sidebar.d.ts +0 -31
- package/build/build-cjs/src/search-results/components/book-packaging-entry/index.d.ts +7 -0
- package/build/build-cjs/src/search-results/components/book-packaging-entry/wl-sidebar.d.ts +7 -0
- package/build/build-cjs/src/search-results/components/spinner/spinner.d.ts +4 -1
- package/build/build-cjs/src/search-results/store/search-results-slice.d.ts +5 -1
- package/build/build-cjs/src/shared/booking/BookingPanel.d.ts +13 -0
- package/build/build-cjs/src/shared/booking/Sidebar.d.ts +34 -0
- package/build/build-cjs/src/shared/booking/StepIndicators.d.ts +7 -0
- package/build/build-cjs/src/shared/components/flyin/flyin.d.ts +2 -0
- package/build/build-cjs/src/shared/components/flyin/packaging-flights-flyin.d.ts +2 -0
- package/build/build-cjs/src/shared/utils/localization-util.d.ts +1 -0
- package/build/build-esm/index.js +1591 -881
- package/build/build-esm/src/booking-wizard/components/step-route.d.ts +2 -2
- package/build/build-esm/src/booking-wizard/features/sidebar/sidebar-flight.d.ts +1 -0
- package/build/build-esm/src/booking-wizard/features/sidebar/sidebar-util.d.ts +2 -1
- package/build/build-esm/src/booking-wizard/features/sidebar/sidebar.d.ts +0 -31
- package/build/build-esm/src/search-results/components/book-packaging-entry/index.d.ts +7 -0
- package/build/build-esm/src/search-results/components/book-packaging-entry/wl-sidebar.d.ts +7 -0
- package/build/build-esm/src/search-results/components/spinner/spinner.d.ts +4 -1
- package/build/build-esm/src/search-results/store/search-results-slice.d.ts +5 -1
- package/build/build-esm/src/shared/booking/BookingPanel.d.ts +13 -0
- package/build/build-esm/src/shared/booking/Sidebar.d.ts +34 -0
- package/build/build-esm/src/shared/booking/StepIndicators.d.ts +7 -0
- package/build/build-esm/src/shared/components/flyin/flyin.d.ts +2 -0
- package/build/build-esm/src/shared/components/flyin/packaging-flights-flyin.d.ts +2 -0
- package/build/build-esm/src/shared/utils/localization-util.d.ts +1 -0
- package/package.json +1 -1
- package/src/booking-wizard/components/step-indicator.tsx +10 -31
- package/src/booking-wizard/components/step-route.tsx +39 -14
- package/src/booking-wizard/features/sidebar/index.tsx +10 -4
- package/src/booking-wizard/features/sidebar/sidebar-flight.tsx +2 -2
- package/src/booking-wizard/features/sidebar/sidebar-util.ts +1 -5
- package/src/booking-wizard/features/sidebar/sidebar.tsx +331 -326
- package/src/content/components/image-with-text.tsx +0 -1
- package/src/qsm/components/QSMContainer/qsm-container.tsx +189 -83
- package/src/qsm/components/item-picker/index.tsx +2 -6
- package/src/qsm/components/mobile-filter-modal/index.tsx +15 -1
- package/src/search-results/components/book-packaging-entry/index.tsx +48 -0
- package/src/search-results/components/book-packaging-entry/wl-sidebar.tsx +165 -0
- package/src/search-results/components/excursions/day-by-day-excursions.tsx +6 -2
- package/src/search-results/components/excursions/excursion-results.tsx +1 -1
- package/src/search-results/components/flight/flight-selection/independent-flight-selection.tsx +12 -3
- package/src/search-results/components/hotel/hotel-accommodation-results.tsx +6 -3
- package/src/search-results/components/itinerary/full-itinerary.tsx +1 -1
- package/src/search-results/components/itinerary/index.tsx +13 -12
- package/src/search-results/components/search-results-container/flight-search-results.tsx +1 -1
- package/src/search-results/components/search-results-container/search-results-container.tsx +239 -204
- package/src/search-results/components/spinner/spinner.tsx +12 -4
- package/src/search-results/store/search-results-slice.ts +16 -2
- package/src/shared/booking/BookingPanel.tsx +25 -0
- package/src/shared/booking/Sidebar.tsx +432 -0
- package/src/shared/booking/StepIndicators.tsx +30 -0
- package/src/shared/components/flyin/accommodation-flyin.tsx +3 -4
- package/src/shared/components/flyin/flights-flyin.tsx +1 -1
- package/src/shared/components/flyin/flyin.tsx +12 -4
- package/src/shared/components/flyin/group-tour-flyin.tsx +3 -4
- package/src/shared/components/flyin/packaging-flights-flyin.tsx +11 -4
- package/src/shared/components/icon.tsx +13 -0
- package/src/shared/translations/ar-SA.json +7 -1
- package/src/shared/translations/da-DK.json +7 -1
- package/src/shared/translations/de-DE.json +7 -1
- package/src/shared/translations/en-GB.json +8 -2
- package/src/shared/translations/es-ES.json +7 -1
- package/src/shared/translations/fr-BE.json +7 -1
- package/src/shared/translations/fr-FR.json +7 -1
- package/src/shared/translations/is-IS.json +7 -1
- package/src/shared/translations/it-IT.json +7 -1
- package/src/shared/translations/ja-JP.json +7 -1
- package/src/shared/translations/nl-BE.json +7 -1
- package/src/shared/translations/nl-NL.json +7 -1
- package/src/shared/translations/no-NO.json +7 -1
- package/src/shared/translations/pl-PL.json +7 -1
- package/src/shared/translations/pt-PT.json +7 -1
- package/src/shared/translations/sv-SE.json +7 -1
- package/src/shared/utils/localization-util.ts +8 -0
- package/styles/components/_footer.scss +2 -8
- package/styles/components/_loader.scss +82 -0
- package/styles/components/_search.scss +14 -7
- package/styles/content-blocks-variables.scss +14 -14
- /package/build/build-cjs/src/{booking-wizard/components → shared/booking}/product-card.d.ts +0 -0
- /package/build/build-esm/src/{booking-wizard/components → shared/booking}/product-card.d.ts +0 -0
- /package/src/{booking-wizard/components → shared/booking}/product-card.tsx +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
interface
|
|
2
|
+
interface StepRouteProps {
|
|
3
3
|
number: number;
|
|
4
4
|
title: string;
|
|
5
5
|
component: JSX.Element;
|
|
6
6
|
}
|
|
7
|
-
declare const StepRoute: React.FC<
|
|
7
|
+
declare const StepRoute: React.FC<StepRouteProps>;
|
|
8
8
|
export default StepRoute;
|
|
@@ -4,7 +4,8 @@ export declare const getTravelersText: (
|
|
|
4
4
|
rooms: {
|
|
5
5
|
adults: RoomTraveler[];
|
|
6
6
|
children: RoomTraveler[];
|
|
7
|
-
}[]
|
|
7
|
+
}[],
|
|
8
|
+
translations: any
|
|
8
9
|
) => string[];
|
|
9
10
|
export declare const getDateText: (date: string | undefined, hideYear?: boolean) => string | undefined;
|
|
10
11
|
export declare const getDatePeriodText: (translations: Record<string, any>, from?: string, to?: string, nightsOnly?: boolean) => string | undefined;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { BookingPackageFlightMetaData, BookingPackageRoom, BookingPriceDetail } from '@qite/tide-client/build/types';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { PricePerPaxType } from '../../types';
|
|
4
|
-
interface SidebarProps {
|
|
5
|
-
productName: string;
|
|
6
|
-
thumbnailUrl?: string;
|
|
7
|
-
isLoading: boolean;
|
|
8
|
-
travelerRooms?: string[];
|
|
9
|
-
startDateText?: string;
|
|
10
|
-
endDateText?: string;
|
|
11
|
-
departureFlightMetaData?: BookingPackageFlightMetaData;
|
|
12
|
-
returnFlightMetaData?: BookingPackageFlightMetaData;
|
|
13
|
-
basePrice?: number;
|
|
14
|
-
commission?: number;
|
|
15
|
-
totalPrice?: number;
|
|
16
|
-
remainingAmountText?: string;
|
|
17
|
-
includedCosts?: BookingPriceDetail[];
|
|
18
|
-
extraCosts?: BookingPriceDetail[];
|
|
19
|
-
deposit?: number;
|
|
20
|
-
accommodations?: BookingPackageRoom[];
|
|
21
|
-
includedServiceTypes?: number[];
|
|
22
|
-
isOnRequest?: boolean;
|
|
23
|
-
headerComponent?: JSX.Element;
|
|
24
|
-
footerComponent?: JSX.Element;
|
|
25
|
-
loaderComponent?: JSX.Element;
|
|
26
|
-
isUnavailable?: boolean;
|
|
27
|
-
basePricePerPaxType?: PricePerPaxType[];
|
|
28
|
-
seperateExtraPricePerPaxType?: PricePerPaxType[];
|
|
29
|
-
}
|
|
30
|
-
declare const Sidebar: React.FC<SidebarProps>;
|
|
31
|
-
export default Sidebar;
|
|
@@ -43,6 +43,8 @@ export interface SearchResultsState {
|
|
|
43
43
|
excursionSearchParams: ExcursionSearchParams | null;
|
|
44
44
|
selectedExcursionSearchResult: PackagingAccommodationResponse | null;
|
|
45
45
|
confirmedExcursionsByDay: Record<string, PackagingAccommodationResponse[]>;
|
|
46
|
+
bookPackagingEntry: boolean;
|
|
47
|
+
currentStep: number;
|
|
46
48
|
}
|
|
47
49
|
export declare const setResults: import('@reduxjs/toolkit').ActionCreatorWithPayload<BookingPackageItem[], 'searchResults/setResults'>,
|
|
48
50
|
setFilteredResults: import('@reduxjs/toolkit').ActionCreatorWithPayload<BookingPackageItem[], 'searchResults/setFilteredResults'>,
|
|
@@ -127,6 +129,8 @@ export declare const setResults: import('@reduxjs/toolkit').ActionCreatorWithPay
|
|
|
127
129
|
dayKey: string;
|
|
128
130
|
},
|
|
129
131
|
'searchResults/clearConfirmedExcursionsForDay'
|
|
130
|
-
|
|
132
|
+
>,
|
|
133
|
+
setBookPackagingEntry: import('@reduxjs/toolkit').ActionCreatorWithPayload<boolean, 'searchResults/setBookPackagingEntry'>,
|
|
134
|
+
setCurrentStep: import('@reduxjs/toolkit').ActionCreatorWithPayload<number, 'searchResults/setCurrentStep'>;
|
|
131
135
|
declare const _default: import('@reduxjs/toolkit').Reducer<SearchResultsState>;
|
|
132
136
|
export default _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface BookingPanelProps {
|
|
3
|
+
currentStep: number;
|
|
4
|
+
stepLabels: string[];
|
|
5
|
+
renderTitle: (step: number) => React.ReactNode;
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
StepIndicatorsComponent: React.ComponentType<{
|
|
8
|
+
currentStep: number;
|
|
9
|
+
stepLabels: string[];
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
|
+
declare const BookingPanel: React.FC<BookingPanelProps>;
|
|
13
|
+
export default BookingPanel;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { BookingPackageRoom, PackagingEntryLine } from '@qite/tide-client';
|
|
3
|
+
import { PricePerPaxType } from '../../booking-wizard/types';
|
|
4
|
+
interface SharedSidebarProps {
|
|
5
|
+
productName: string;
|
|
6
|
+
thumbnailUrl?: string;
|
|
7
|
+
isLoading?: boolean;
|
|
8
|
+
travelerRooms?: string[];
|
|
9
|
+
startDateText?: string;
|
|
10
|
+
endDateText?: string;
|
|
11
|
+
departureFlightMetaData?: any;
|
|
12
|
+
returnFlightMetaData?: any;
|
|
13
|
+
basePrice?: number;
|
|
14
|
+
commission?: number;
|
|
15
|
+
totalPrice?: number;
|
|
16
|
+
remainingAmountText?: string;
|
|
17
|
+
includedCosts?: any[];
|
|
18
|
+
extraCosts?: any[];
|
|
19
|
+
deposit?: number;
|
|
20
|
+
accommodations?: BookingPackageRoom[];
|
|
21
|
+
packagingAccommodations?: PackagingEntryLine[];
|
|
22
|
+
includedServiceTypes?: number[];
|
|
23
|
+
isOnRequest?: boolean;
|
|
24
|
+
headerComponent?: React.ReactNode;
|
|
25
|
+
footerComponent?: React.ReactNode;
|
|
26
|
+
loaderComponent?: React.ReactNode;
|
|
27
|
+
isUnavailable?: boolean;
|
|
28
|
+
basePricePerPaxType?: PricePerPaxType[];
|
|
29
|
+
seperateExtraPricePerPaxType?: PricePerPaxType[];
|
|
30
|
+
translations: any;
|
|
31
|
+
agent?: number;
|
|
32
|
+
}
|
|
33
|
+
declare const SharedSidebar: React.FC<SharedSidebarProps>;
|
|
34
|
+
export default SharedSidebar;
|
|
@@ -2,6 +2,8 @@ import React from 'react';
|
|
|
2
2
|
type FlightsFlyInProps = {
|
|
3
3
|
isOpen: boolean;
|
|
4
4
|
setIsOpen: (open: boolean) => void;
|
|
5
|
+
toggleFilters?: () => void;
|
|
6
|
+
filtersOpen: boolean;
|
|
5
7
|
};
|
|
6
8
|
declare const PackageingFlightsFlyIn: React.FC<FlightsFlyInProps>;
|
|
7
9
|
export default PackageingFlightsFlyIn;
|
|
@@ -429,3 +429,4 @@ export declare const calculateDays: (fromDate: Date, toDate: Date) => number;
|
|
|
429
429
|
export declare const getSortingName: (translations: any, sortByType: SortByType) => string;
|
|
430
430
|
export declare const findSortByType: (sortByTypes: SortByType[], sortKey: string, direction: string) => SortByType;
|
|
431
431
|
export declare const getDatesBetween: (fromDate: string, toDate: string) => Date[];
|
|
432
|
+
export declare const getDateOnlyTime: (date?: string | Date | null) => number;
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React, { useContext } from 'react';
|
|
2
2
|
import { useSelector } from 'react-redux';
|
|
3
|
-
import { buildClassName } from '../../shared/utils/class-util';
|
|
4
3
|
import { selectTranslations, selectTravelersFirstStep } from '../features/booking/selectors';
|
|
5
4
|
import SettingsContext from '../settings-context';
|
|
5
|
+
import SharedStepIndicators from '../../shared/booking/StepIndicators';
|
|
6
6
|
|
|
7
7
|
interface StepIndicatorsProps {
|
|
8
8
|
currentStep: number;
|
|
@@ -10,48 +10,27 @@ interface StepIndicatorsProps {
|
|
|
10
10
|
|
|
11
11
|
const StepIndicators: React.FC<StepIndicatorsProps> = ({ currentStep }) => {
|
|
12
12
|
const { flightOptions, roomOptions } = useContext(SettingsContext);
|
|
13
|
-
|
|
14
13
|
const translations = useSelector(selectTranslations);
|
|
15
14
|
const travelersFirstStep = useSelector(selectTravelersFirstStep);
|
|
16
15
|
|
|
17
|
-
const
|
|
18
|
-
|
|
16
|
+
const stepLabels: string[] = [];
|
|
19
17
|
if (travelersFirstStep) {
|
|
20
|
-
|
|
18
|
+
stepLabels.push(translations.STEPS.PERSONAL_DETAILS);
|
|
21
19
|
}
|
|
22
20
|
if (!flightOptions.isHidden) {
|
|
23
|
-
|
|
21
|
+
stepLabels.push(translations.STEPS.FLIGHT_OPTIONS);
|
|
24
22
|
}
|
|
25
23
|
if (!roomOptions.isHidden) {
|
|
26
|
-
|
|
24
|
+
stepLabels.push(translations.STEPS.ROOM_OPTIONS);
|
|
27
25
|
}
|
|
28
|
-
|
|
29
|
-
allSteps.push(translations.STEPS.EXTRA_OPTIONS);
|
|
30
|
-
|
|
26
|
+
stepLabels.push(translations.STEPS.EXTRA_OPTIONS);
|
|
31
27
|
if (!travelersFirstStep) {
|
|
32
|
-
|
|
28
|
+
stepLabels.push(translations.STEPS.PERSONAL_DETAILS);
|
|
33
29
|
}
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
stepLabels.push(translations.STEPS.SUMMARY);
|
|
31
|
+
stepLabels.push(translations.STEPS.CONFIRMATION);
|
|
36
32
|
|
|
37
|
-
return
|
|
38
|
-
<div className="step-indicators">
|
|
39
|
-
<div className="step-indicators__items">
|
|
40
|
-
{allSteps.map((stepName, index) => (
|
|
41
|
-
<div
|
|
42
|
-
key={`${index + 1}-${stepName}`}
|
|
43
|
-
className={buildClassName([
|
|
44
|
-
'step-indicators__item',
|
|
45
|
-
currentStep === index + 1 && 'step-indicators__item--active',
|
|
46
|
-
currentStep > index + 1 && 'step-indicators__item--completed'
|
|
47
|
-
])}>
|
|
48
|
-
<div className="step-indicators__icon step-indicators__icon">{index + 1}</div>
|
|
49
|
-
<div className="step-indicators__text">{stepName}</div>
|
|
50
|
-
</div>
|
|
51
|
-
))}
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|
|
54
|
-
);
|
|
33
|
+
return <SharedStepIndicators currentStep={currentStep} stepLabels={stepLabels} />;
|
|
55
34
|
};
|
|
56
35
|
|
|
57
36
|
export default StepIndicators;
|
|
@@ -1,25 +1,50 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
2
|
import StepIndicators from './step-indicator';
|
|
3
|
+
import BookingPanel from '../../shared/booking/BookingPanel';
|
|
4
|
+
import SettingsContext from '../settings-context';
|
|
5
|
+
import { useSelector } from 'react-redux';
|
|
6
|
+
import { selectTranslations, selectTravelersFirstStep } from '../features/booking/selectors';
|
|
3
7
|
|
|
4
|
-
interface
|
|
8
|
+
interface StepRouteProps {
|
|
5
9
|
number: number;
|
|
6
10
|
title: string;
|
|
7
11
|
component: JSX.Element;
|
|
8
12
|
}
|
|
9
13
|
|
|
10
|
-
const StepRoute: React.FC<
|
|
14
|
+
const StepRoute: React.FC<StepRouteProps> = ({ number, title, component }) => {
|
|
15
|
+
const { flightOptions, roomOptions } = useContext(SettingsContext);
|
|
16
|
+
const translations = useSelector(selectTranslations);
|
|
17
|
+
const travelersFirstStep = useSelector(selectTravelersFirstStep);
|
|
18
|
+
|
|
19
|
+
const stepLabels: string[] = [];
|
|
20
|
+
if (travelersFirstStep) {
|
|
21
|
+
stepLabels.push(translations.STEPS.PERSONAL_DETAILS);
|
|
22
|
+
}
|
|
23
|
+
if (!flightOptions.isHidden) {
|
|
24
|
+
stepLabels.push(translations.STEPS.FLIGHT_OPTIONS);
|
|
25
|
+
}
|
|
26
|
+
if (!roomOptions.isHidden) {
|
|
27
|
+
stepLabels.push(translations.STEPS.ROOM_OPTIONS);
|
|
28
|
+
}
|
|
29
|
+
stepLabels.push(translations.STEPS.EXTRA_OPTIONS);
|
|
30
|
+
if (!travelersFirstStep) {
|
|
31
|
+
stepLabels.push(translations.STEPS.PERSONAL_DETAILS);
|
|
32
|
+
}
|
|
33
|
+
stepLabels.push(translations.STEPS.SUMMARY);
|
|
34
|
+
stepLabels.push(translations.STEPS.CONFIRMATION);
|
|
35
|
+
|
|
11
36
|
return (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
37
|
+
<BookingPanel
|
|
38
|
+
currentStep={number}
|
|
39
|
+
stepLabels={stepLabels}
|
|
40
|
+
StepIndicatorsComponent={StepIndicators}
|
|
41
|
+
renderTitle={(step) => (
|
|
42
|
+
<>
|
|
43
|
+
{step + 1}. {stepLabels[step]}
|
|
44
|
+
</>
|
|
45
|
+
)}>
|
|
46
|
+
{component}
|
|
47
|
+
</BookingPanel>
|
|
23
48
|
);
|
|
24
49
|
};
|
|
25
50
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
selectAgentAdressId,
|
|
2
3
|
selectDepartureFlight,
|
|
3
4
|
selectIncludedServiceTypes,
|
|
4
5
|
selectIsFetchingProductOptions,
|
|
@@ -7,7 +8,8 @@ import {
|
|
|
7
8
|
selectPackageRooms,
|
|
8
9
|
selectReturnFlight,
|
|
9
10
|
selectRoomOptionDepartureFlightsMetaData,
|
|
10
|
-
selectRoomOptionReturnFlightsMetaData
|
|
11
|
+
selectRoomOptionReturnFlightsMetaData,
|
|
12
|
+
selectTranslations
|
|
11
13
|
} from '../booking/selectors';
|
|
12
14
|
import { getDateText, getTravelersText } from './sidebar-util';
|
|
13
15
|
import { selectFormRooms } from '../travelers-form/travelers-form-slice';
|
|
@@ -26,7 +28,7 @@ import { useSelector } from 'react-redux';
|
|
|
26
28
|
|
|
27
29
|
import React from 'react';
|
|
28
30
|
import SettingsContext from '../../settings-context';
|
|
29
|
-
import
|
|
31
|
+
import SharedSidebar from '../../../shared/booking/Sidebar';
|
|
30
32
|
import { selectBookingAttributes } from '../booking/selectors';
|
|
31
33
|
import { useContext } from 'react';
|
|
32
34
|
|
|
@@ -39,7 +41,8 @@ const SidebarContainer: React.FC<SidebarProps> = ({ productName, thumbnailUrl })
|
|
|
39
41
|
const { sidebarHeaderComponent, sidebarFooterComponent, loaderComponent, showPricesPerPaxType } = useContext(SettingsContext);
|
|
40
42
|
const bookingAttributes = useSelector(selectBookingAttributes);
|
|
41
43
|
const rooms = useSelector(selectFormRooms);
|
|
42
|
-
const
|
|
44
|
+
const translations = useSelector(selectTranslations);
|
|
45
|
+
const travelerRooms = getTravelersText(rooms, translations);
|
|
43
46
|
const departureFlight = useSelector(selectDepartureFlight);
|
|
44
47
|
const departureFlightMetaData = departureFlight?.flightMetaData ?? useSelector(selectRoomOptionDepartureFlightsMetaData)?.[0];
|
|
45
48
|
const returnFlight = useSelector(selectReturnFlight);
|
|
@@ -50,9 +53,10 @@ const SidebarContainer: React.FC<SidebarProps> = ({ productName, thumbnailUrl })
|
|
|
50
53
|
const includedServiceTypes = useSelector(selectIncludedServiceTypes);
|
|
51
54
|
const isUnavailable = useSelector(selectIsUnavailable) || false;
|
|
52
55
|
const isLoading = isFetchingProductOptions || isFetchingPriceDetails;
|
|
56
|
+
const agent = useSelector(selectAgentAdressId);
|
|
53
57
|
|
|
54
58
|
return (
|
|
55
|
-
<
|
|
59
|
+
<SharedSidebar
|
|
56
60
|
productName={productName}
|
|
57
61
|
thumbnailUrl={thumbnailUrl}
|
|
58
62
|
isLoading={isLoading}
|
|
@@ -76,6 +80,8 @@ const SidebarContainer: React.FC<SidebarProps> = ({ productName, thumbnailUrl })
|
|
|
76
80
|
isUnavailable={isUnavailable}
|
|
77
81
|
basePricePerPaxType={showPricesPerPaxType ? useSelector(selectBasePricePerPaxType) : undefined}
|
|
78
82
|
seperateExtraPricePerPaxType={showPricesPerPaxType ? useSelector(selectSeparateExtraPriceDetailsPerPaxType) : undefined}
|
|
83
|
+
translations={translations}
|
|
84
|
+
agent={agent}
|
|
79
85
|
/>
|
|
80
86
|
);
|
|
81
87
|
};
|
|
@@ -8,13 +8,13 @@ import { getAirlines, getDateText, parseFlightLines } from './sidebar-util';
|
|
|
8
8
|
interface SidebarFlightProps {
|
|
9
9
|
title: string;
|
|
10
10
|
flightMetaData: BookingPackageFlightMetaData;
|
|
11
|
+
translations?: any;
|
|
11
12
|
}
|
|
12
13
|
|
|
13
|
-
const SidebarFlight: React.FC<SidebarFlightProps> = ({ title, flightMetaData }) => {
|
|
14
|
+
const SidebarFlight: React.FC<SidebarFlightProps> = ({ title, flightMetaData, translations }) => {
|
|
14
15
|
const flightLines = parseFlightLines(flightMetaData);
|
|
15
16
|
const firstFlight = first(flightLines);
|
|
16
17
|
const lastFlight = last(flightLines);
|
|
17
|
-
const translations = useSelector(selectTranslations);
|
|
18
18
|
|
|
19
19
|
return (
|
|
20
20
|
<div className="pricing-summary__group">
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import { BookingPackageFlightMetaData } from '@qite/tide-client/build/types';
|
|
2
2
|
import { differenceInCalendarDays, format, parseISO } from 'date-fns';
|
|
3
3
|
import { compact, orderBy, uniq } from 'lodash';
|
|
4
|
-
import { useSelector } from 'react-redux';
|
|
5
4
|
import { FlightLine, RoomTraveler } from '../../types';
|
|
6
|
-
import { selectTranslations } from '../booking/selectors';
|
|
7
|
-
|
|
8
|
-
export const getTravelersText = (rooms: { adults: RoomTraveler[]; children: RoomTraveler[] }[]): string[] => {
|
|
9
|
-
const translations = useSelector(selectTranslations);
|
|
10
5
|
|
|
6
|
+
export const getTravelersText = (rooms: { adults: RoomTraveler[]; children: RoomTraveler[] }[], translations: any): string[] => {
|
|
11
7
|
return rooms.map((r) =>
|
|
12
8
|
compact([
|
|
13
9
|
r.adults.length,
|