mautourco-components 0.2.4 → 0.2.7
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/README.md +190 -190
- package/dist/components/atoms/Avatar/Avatar.d.ts +14 -14
- package/dist/components/atoms/Avatar/Avatar.js +31 -31
- package/dist/components/atoms/Button/Button.css +320 -320
- package/dist/components/atoms/Button/Button.d.ts +27 -27
- package/dist/components/atoms/Button/Button.js +35 -35
- package/dist/components/atoms/Checkbox/Checkbox.d.ts +13 -13
- package/dist/components/atoms/Checkbox/Checkbox.js +39 -39
- package/dist/components/atoms/Icon/Icon.d.ts +10 -10
- package/dist/components/atoms/Icon/Icon.js +123 -123
- package/dist/components/atoms/Icon/icons/ArrivalIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/ArrivalIcon.js +31 -31
- package/dist/components/atoms/Icon/icons/BuildingIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/BuildingIcon.js +36 -36
- package/dist/components/atoms/Icon/icons/CalendarIcon.d.ts +12 -12
- package/dist/components/atoms/Icon/icons/CalendarIcon.js +41 -41
- package/dist/components/atoms/Icon/icons/CalendarOutlineIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/CalendarOutlineIcon.js +36 -36
- package/dist/components/atoms/Icon/icons/CarIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/CarIcon.js +30 -30
- package/dist/components/atoms/Icon/icons/Check.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/Check.js +30 -30
- package/dist/components/atoms/Icon/icons/CheckCircleIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/CheckCircleIcon.js +30 -30
- package/dist/components/atoms/Icon/icons/Chevron.d.ts +9 -9
- package/dist/components/atoms/Icon/icons/Chevron.js +54 -54
- package/dist/components/atoms/Icon/icons/ChevronDownIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/ChevronDownIcon.js +30 -30
- package/dist/components/atoms/Icon/icons/Close.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/Close.js +30 -30
- package/dist/components/atoms/Icon/icons/DeleteIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/DeleteIcon.js +30 -30
- package/dist/components/atoms/Icon/icons/DepartureIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/DepartureIcon.js +30 -30
- package/dist/components/atoms/Icon/icons/EyeIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/EyeIcon.js +30 -30
- package/dist/components/atoms/Icon/icons/FacebookIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/FacebookIcon.js +36 -36
- package/dist/components/atoms/Icon/icons/HomeIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/HomeIcon.js +25 -25
- package/dist/components/atoms/Icon/icons/InfoIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/InfoIcon.js +30 -30
- package/dist/components/atoms/Icon/icons/LinkedInIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/LinkedInIcon.js +36 -36
- package/dist/components/atoms/Icon/icons/MapPinIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/MapPinIcon.js +30 -30
- package/dist/components/atoms/Icon/icons/MautoucoLogo.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/MautoucoLogo.js +37 -37
- package/dist/components/atoms/Icon/icons/MenuIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/MenuIcon.js +37 -37
- package/dist/components/atoms/Icon/icons/MinusIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/MinusIcon.js +25 -25
- package/dist/components/atoms/Icon/icons/MoreIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/MoreIcon.js +30 -30
- package/dist/components/atoms/Icon/icons/PlaneIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/PlaneIcon.js +36 -36
- package/dist/components/atoms/Icon/icons/PlusIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/PlusIcon.js +25 -25
- package/dist/components/atoms/Icon/icons/Search.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/Search.js +30 -30
- package/dist/components/atoms/Icon/icons/Settings.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/Settings.js +30 -30
- package/dist/components/atoms/Icon/icons/ShipIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/ShipIcon.js +36 -36
- package/dist/components/atoms/Icon/icons/StrollerIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/StrollerIcon.js +30 -30
- package/dist/components/atoms/Icon/icons/TwitterIcon.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/TwitterIcon.js +36 -36
- package/dist/components/atoms/Icon/icons/User.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/User.js +30 -30
- package/dist/components/atoms/Icon/icons/UserIcon.d.ts +12 -12
- package/dist/components/atoms/Icon/icons/UserIcon.js +41 -41
- package/dist/components/atoms/Icon/icons/Youtube.d.ts +8 -8
- package/dist/components/atoms/Icon/icons/Youtube.js +36 -36
- package/dist/components/atoms/Illustration/Illustration.d.ts +14 -14
- package/dist/components/atoms/Illustration/Illustration.js +33 -33
- package/dist/components/atoms/Illustration/illustrations.d.ts +51 -51
- package/dist/components/atoms/Illustration/illustrations.js +97 -97
- package/dist/components/atoms/Inputs/DropdownInput/DropdownInput.d.ts +12 -12
- package/dist/components/atoms/Inputs/DropdownInput/DropdownInput.js +53 -53
- package/dist/components/atoms/Inputs/Input/Input.d.ts +15 -15
- package/dist/components/atoms/Inputs/Input/Input.js +27 -27
- package/dist/components/atoms/Inputs/Textarea/Textarea.d.ts +14 -14
- package/dist/components/atoms/Inputs/Textarea/Textarea.js +15 -15
- package/dist/components/atoms/Link/Link.d.ts +44 -44
- package/dist/components/atoms/Link/Link.js +76 -76
- package/dist/components/atoms/RatingStar/RatingStar.d.ts +40 -40
- package/dist/components/atoms/RatingStar/RatingStar.js +54 -54
- package/dist/components/atoms/SegmentedButton/SegmentedButton.d.ts +27 -27
- package/dist/components/atoms/SegmentedButton/SegmentedButton.js +49 -49
- package/dist/components/atoms/SelectedValue/SelectedValue.d.ts +11 -11
- package/dist/components/atoms/SelectedValue/SelectedValue.js +29 -29
- package/dist/components/atoms/Slider/Slider.d.ts +52 -52
- package/dist/components/atoms/Slider/Slider.js +30 -30
- package/dist/components/atoms/Spinner/Spinner.d.ts +9 -9
- package/dist/components/atoms/Spinner/Spinner.js +38 -38
- package/dist/components/atoms/Spinner/variants/ButtonSpinner.d.ts +8 -8
- package/dist/components/atoms/Spinner/variants/ButtonSpinner.js +19 -19
- package/dist/components/atoms/Spinner/variants/LoadingSpinner.d.ts +7 -7
- package/dist/components/atoms/Spinner/variants/LoadingSpinner.js +7 -7
- package/dist/components/atoms/Tab/Tab.css +266 -266
- package/dist/components/atoms/Tab/Tab.d.ts +22 -22
- package/dist/components/atoms/Tab/Tab.js +54 -54
- package/dist/components/atoms/Typography/Typography.d.ts +24 -24
- package/dist/components/atoms/Typography/Typography.js +100 -100
- package/dist/components/molecules/Calendar/CalendarInput.d.ts +34 -34
- package/dist/components/molecules/Calendar/CalendarInput.js +49 -49
- package/dist/components/molecules/Calendar/DateTime.d.ts +25 -25
- package/dist/components/molecules/Calendar/DateTime.js +106 -106
- package/dist/components/molecules/Calendar/TimePicker.d.ts +16 -16
- package/dist/components/molecules/Calendar/TimePicker.js +91 -91
- package/dist/components/molecules/LocationDropdown/LocationDropdown.d.ts +34 -34
- package/dist/components/molecules/LocationDropdown/LocationDropdown.js +120 -120
- package/dist/components/molecules/LocationDropdown/index.d.ts +2 -2
- package/dist/components/molecules/LocationDropdown/index.js +1 -1
- package/dist/components/molecules/MultiSelectDropdown/MultiSelectDropdown.d.ts +29 -29
- package/dist/components/molecules/MultiSelectDropdown/MultiSelectDropdown.js +106 -106
- package/dist/components/molecules/RatingTab/RatingTab.d.ts +39 -39
- package/dist/components/molecules/RatingTab/RatingTab.js +41 -41
- package/dist/components/molecules/TabGroup/TabGroup.d.ts +17 -17
- package/dist/components/molecules/TabGroup/TabGroup.js +30 -30
- package/dist/components/molecules/UserCard/UserCard.d.ts +20 -20
- package/dist/components/molecules/UserCard/UserCard.js +57 -57
- package/dist/components/organisms/CardContainer/CardContainer.d.ts +37 -37
- package/dist/components/organisms/CardContainer/CardContainer.js +27 -27
- package/dist/components/organisms/DateTimePicker/DateTimePicker.d.ts +15 -15
- package/dist/components/organisms/DateTimePicker/DateTimePicker.js +66 -66
- package/dist/components/organisms/Dialog/Dialog.d.ts +103 -103
- package/dist/components/organisms/Dialog/Dialog.js +162 -162
- package/dist/components/organisms/Footer/Footer.d.ts +38 -38
- package/dist/components/organisms/Footer/Footer.js +74 -74
- package/dist/components/organisms/PaxSelector/PaxSelector.d.ts +63 -63
- package/dist/components/organisms/PaxSelector/PaxSelector.js +402 -402
- package/dist/components/organisms/RoundTrip/RoundTrip.d.ts +54 -54
- package/dist/components/organisms/RoundTrip/RoundTrip.js +179 -179
- package/dist/components/organisms/RoundTrip/index.d.ts +2 -2
- package/dist/components/organisms/RoundTrip/index.js +1 -1
- package/dist/components/organisms/SearchBarTransfer/SearchBarTransfer.d.ts +35 -35
- package/dist/components/organisms/SearchBarTransfer/SearchBarTransfer.js +192 -192
- package/dist/components/organisms/SearchBarTransfer/index.d.ts +2 -2
- package/dist/components/organisms/SearchBarTransfer/index.js +1 -1
- package/dist/components/organisms/TopNavigation/DesktopNav.d.ts +33 -33
- package/dist/components/organisms/TopNavigation/DesktopNav.js +32 -26
- package/dist/components/organisms/TopNavigation/MobileNav.d.ts +32 -32
- package/dist/components/organisms/TopNavigation/MobileNav.js +45 -45
- package/dist/components/organisms/TopNavigation/TopNavigation.d.ts +33 -33
- package/dist/components/organisms/TopNavigation/TopNavigation.js +20 -20
- package/dist/components/organisms/TransferLine/TransferLine.d.ts +53 -53
- package/dist/components/organisms/TransferLine/TransferLine.js +179 -179
- package/dist/components/ui/button.d.ts +10 -10
- package/dist/components/ui/button.js +56 -56
- package/dist/components/ui/calendar.d.ts +8 -8
- package/dist/components/ui/calendar.js +87 -87
- package/dist/components/ui/popover.d.ts +7 -7
- package/dist/components/ui/popover.js +42 -42
- package/dist/hooks/useMobile.d.ts +5 -5
- package/dist/hooks/useMobile.js +26 -26
- package/dist/index.d.ts +49 -49
- package/dist/index.js +46 -46
- package/dist/lib/utils.d.ts +7 -7
- package/dist/lib/utils.js +13 -13
- package/dist/styles/components/avatar.css +122 -122
- package/dist/styles/components/calendar.css +140 -140
- package/dist/styles/components/checkbox.css +206 -206
- package/dist/styles/components/dropdown.css +269 -269
- package/dist/styles/components/forms.css +209 -209
- package/dist/styles/components/illustration.css +123 -123
- package/dist/styles/components/molecule/calendarInput.css +133 -133
- package/dist/styles/components/molecule/dateTime.css +126 -126
- package/dist/styles/components/molecule/location-dropdown.css +132 -132
- package/dist/styles/components/molecule/timePicker.css +122 -122
- package/dist/styles/components/multiselect-dropdown.css +286 -286
- package/dist/styles/components/organism/card-container.css +148 -148
- package/dist/styles/components/organism/dialog.css +168 -168
- package/dist/styles/components/organism/footer.css +119 -119
- package/dist/styles/components/organism/pax-selector.css +617 -617
- package/dist/styles/components/organism/round-trip.css +139 -139
- package/dist/styles/components/organism/search-bar-transfer.css +158 -161
- package/dist/styles/components/organism/topnavigation.css +143 -143
- package/dist/styles/components/organism/transfer-line.css +138 -138
- package/dist/styles/components/rating-star.css +145 -145
- package/dist/styles/components/rating-tab.css +179 -179
- package/dist/styles/components/scrollbar.css +155 -155
- package/dist/styles/components/segmented-button.css +214 -214
- package/dist/styles/components/selected-value.css +175 -175
- package/dist/styles/components/slider.css +182 -182
- package/dist/styles/components/typography.css +245 -245
- package/dist/styles/tokens/tokens.css +119 -119
- package/dist/styles/tokens/tokens.d.ts +3108 -3108
- package/dist/styles/tokens/tokens.js +2652 -2652
- package/package.json +103 -103
- package/src/components/atoms/Avatar/Avatar.tsx +60 -60
- package/src/components/atoms/Button/Button.css +200 -200
- package/src/components/atoms/Button/Button.tsx +82 -82
- package/src/components/atoms/Checkbox/Checkbox.tsx +83 -83
- package/src/components/atoms/Icon/Icon.tsx +163 -163
- package/src/components/atoms/Icon/icons/ArrivalIcon.tsx +52 -52
- package/src/components/atoms/Icon/icons/BuildingIcon.tsx +50 -50
- package/src/components/atoms/Icon/icons/CalendarIcon.tsx +63 -63
- package/src/components/atoms/Icon/icons/CalendarOutlineIcon.tsx +50 -50
- package/src/components/atoms/Icon/icons/CarIcon.tsx +44 -44
- package/src/components/atoms/Icon/icons/Check.tsx +36 -36
- package/src/components/atoms/Icon/icons/CheckCircleIcon.tsx +48 -48
- package/src/components/atoms/Icon/icons/Chevron.tsx +73 -73
- package/src/components/atoms/Icon/icons/ChevronDownIcon.tsx +46 -46
- package/src/components/atoms/Icon/icons/Close.tsx +39 -39
- package/src/components/atoms/Icon/icons/DeleteIcon.tsx +44 -44
- package/src/components/atoms/Icon/icons/DepartureIcon.tsx +50 -50
- package/src/components/atoms/Icon/icons/EyeIcon.tsx +44 -44
- package/src/components/atoms/Icon/icons/FacebookIcon.tsx +50 -50
- package/src/components/atoms/Icon/icons/HomeIcon.tsx +52 -52
- package/src/components/atoms/Icon/icons/InfoIcon.tsx +44 -44
- package/src/components/atoms/Icon/icons/LinkedInIcon.tsx +50 -50
- package/src/components/atoms/Icon/icons/MapPinIcon.tsx +44 -44
- package/src/components/atoms/Icon/icons/MautoucoLogo.tsx +93 -93
- package/src/components/atoms/Icon/icons/MenuIcon.tsx +49 -49
- package/src/components/atoms/Icon/icons/MinusIcon.tsx +45 -45
- package/src/components/atoms/Icon/icons/MoreIcon.tsx +44 -44
- package/src/components/atoms/Icon/icons/PlaneIcon.tsx +50 -50
- package/src/components/atoms/Icon/icons/PlusIcon.tsx +45 -45
- package/src/components/atoms/Icon/icons/Search.tsx +37 -37
- package/src/components/atoms/Icon/icons/Settings.tsx +38 -38
- package/src/components/atoms/Icon/icons/ShipIcon.tsx +50 -50
- package/src/components/atoms/Icon/icons/StrollerIcon.tsx +44 -44
- package/src/components/atoms/Icon/icons/TwitterIcon.tsx +50 -50
- package/src/components/atoms/Icon/icons/User.tsx +37 -37
- package/src/components/atoms/Icon/icons/UserIcon.tsx +63 -63
- package/src/components/atoms/Icon/icons/Youtube.tsx +50 -50
- package/src/components/atoms/Illustration/Illustration.tsx +28 -28
- package/src/components/atoms/Illustration/illustrations.ts +116 -116
- package/src/components/atoms/Inputs/DropdownInput/DropdownInput.tsx +96 -96
- package/src/components/atoms/Inputs/Textarea/Textarea.tsx +51 -51
- package/src/components/atoms/Link/Link.tsx +168 -168
- package/src/components/atoms/RatingStar/RatingStar.tsx +114 -114
- package/src/components/atoms/SegmentedButton/SegmentedButton.tsx +94 -94
- package/src/components/atoms/SelectedValue/SelectedValue.tsx +59 -59
- package/src/components/atoms/Slider/Slider.tsx +95 -95
- package/src/components/atoms/Spinner/Spinner.tsx +56 -56
- package/src/components/atoms/Spinner/variants/ButtonSpinner.tsx +37 -37
- package/src/components/atoms/Spinner/variants/LoadingSpinner.tsx +22 -22
- package/src/components/atoms/Tab/Tab.css +147 -147
- package/src/components/atoms/Tab/Tab.tsx +96 -96
- package/src/components/atoms/Typography/Typography.tsx +153 -153
- package/src/components/molecules/Calendar/CalendarInput.tsx +135 -135
- package/src/components/molecules/Calendar/DateTime.tsx +172 -172
- package/src/components/molecules/Calendar/TimePicker.tsx +174 -174
- package/src/components/molecules/LocationDropdown/LocationDropdown.tsx +234 -234
- package/src/components/molecules/LocationDropdown/index.ts +2 -2
- package/src/components/molecules/RatingTab/RatingTab.tsx +96 -96
- package/src/components/molecules/TabGroup/TabGroup.tsx +60 -60
- package/src/components/molecules/UserCard/UserCard.stories.tsx +36 -36
- package/src/components/molecules/UserCard/UserCard.tsx +173 -173
- package/src/components/organisms/CardContainer/CardContainer.tsx +66 -66
- package/src/components/organisms/DateTimePicker/DateTimePicker.tsx +110 -110
- package/src/components/organisms/Dialog/Dialog.tsx +352 -352
- package/src/components/organisms/Footer/Footer.tsx +290 -290
- package/src/components/organisms/PaxSelector/PaxSelector.tsx +979 -979
- package/src/components/organisms/RoundTrip/RoundTrip.tsx +335 -335
- package/src/components/organisms/RoundTrip/index.ts +2 -2
- package/src/components/organisms/SearchBarTransfer/SearchBarTransfer.tsx +388 -388
- package/src/components/organisms/SearchBarTransfer/index.ts +2 -2
- package/src/components/organisms/TopNavigation/DesktopNav.tsx +133 -122
- package/src/components/organisms/TopNavigation/MobileNav.tsx +212 -212
- package/src/components/organisms/TopNavigation/TopNavigation.tsx +45 -45
- package/src/components/organisms/TransferLine/TransferLine.tsx +369 -369
- package/src/components/ui/button.tsx +60 -60
- package/src/components/ui/calendar.tsx +246 -246
- package/src/components/ui/popover.tsx +46 -46
- package/src/styles/components/avatar.css +58 -58
- package/src/styles/components/calendar.css +85 -85
- package/src/styles/components/checkbox.css +130 -130
- package/src/styles/components/dropdown.css +214 -214
- package/src/styles/components/forms.css +147 -147
- package/src/styles/components/illustration.css +7 -7
- package/src/styles/components/molecule/calendarInput.css +156 -156
- package/src/styles/components/molecule/dateTime.css +14 -14
- package/src/styles/components/molecule/location-dropdown.css +204 -204
- package/src/styles/components/molecule/timePicker.css +78 -78
- package/src/styles/components/multiselect-dropdown.css +230 -230
- package/src/styles/components/organism/card-container.css +49 -49
- package/src/styles/components/organism/dialog.css +241 -241
- package/src/styles/components/organism/footer.css +113 -113
- package/src/styles/components/organism/pax-selector.css +702 -702
- package/src/styles/components/organism/round-trip.css +55 -55
- package/src/styles/components/organism/search-bar-transfer.css +128 -127
- package/src/styles/components/organism/topnavigation.css +161 -161
- package/src/styles/components/organism/transfer-line.css +86 -86
- package/src/styles/components/rating-star.css +39 -39
- package/src/styles/components/rating-tab.css +83 -83
- package/src/styles/components/scrollbar.css +63 -63
- package/src/styles/components/segmented-button.css +134 -134
- package/src/styles/components/selected-value.css +80 -80
- package/src/styles/components/slider.css +86 -86
- package/src/styles/components/typography.css +251 -251
- package/src/styles/fonts.css +50 -0
- package/src/styles/tokens/tokens.css +119 -119
- package/src/styles/tokens/tokens.js +12 -6
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { PaxData } from "../PaxSelector/PaxSelector";
|
|
3
|
-
import { LocationOption, LocationGroup, LocationData } from "../../molecules/LocationDropdown/LocationDropdown";
|
|
4
|
-
import "../../../styles/components/organism/round-trip.css";
|
|
5
|
-
export type { LocationData };
|
|
6
|
-
export interface RoundTripTransfer {
|
|
7
|
-
type: "arrival" | "departure";
|
|
8
|
-
paxData?: PaxData;
|
|
9
|
-
transferDate?: string;
|
|
10
|
-
pickupPoint?: LocationData;
|
|
11
|
-
dropoffPoint?: LocationData;
|
|
12
|
-
}
|
|
13
|
-
export interface RoundTripData {
|
|
14
|
-
id: string;
|
|
15
|
-
paxData?: PaxData;
|
|
16
|
-
arrivalDate?: string;
|
|
17
|
-
departureDate?: string;
|
|
18
|
-
pickupDropoffPoint?: LocationData;
|
|
19
|
-
accommodation?: LocationData;
|
|
20
|
-
transfers: [RoundTripTransfer, RoundTripTransfer];
|
|
21
|
-
}
|
|
22
|
-
export interface RoundTripProps {
|
|
23
|
-
/** Unique identifier for this round trip */
|
|
24
|
-
id: string;
|
|
25
|
-
/** Pax data */
|
|
26
|
-
paxData?: PaxData;
|
|
27
|
-
/** Arrival date */
|
|
28
|
-
arrivalDate?: string;
|
|
29
|
-
/** Departure date */
|
|
30
|
-
departureDate?: string;
|
|
31
|
-
/** Selected pickup/dropoff point ID (for initial value) */
|
|
32
|
-
pickupDropoffPoint?: string;
|
|
33
|
-
/** Selected accommodation ID (for initial value) */
|
|
34
|
-
accommodation?: string;
|
|
35
|
-
/** All location options */
|
|
36
|
-
locations?: {
|
|
37
|
-
options?: LocationOption[];
|
|
38
|
-
groups?: LocationGroup[];
|
|
39
|
-
};
|
|
40
|
-
/** Callback when pax data changes */
|
|
41
|
-
onPaxChange?: (paxData: PaxData) => void;
|
|
42
|
-
/** Callback when dates change */
|
|
43
|
-
onDatesChange?: (arrivalDate: string, departureDate: string) => void;
|
|
44
|
-
/** Callback when pickup/dropoff point changes */
|
|
45
|
-
onPickupDropoffChange?: (location: LocationData | null) => void;
|
|
46
|
-
/** Callback when accommodation changes */
|
|
47
|
-
onAccommodationChange?: (location: LocationData | null) => void;
|
|
48
|
-
/** Callback when any data changes - returns array of 2 transfers */
|
|
49
|
-
onChange?: (data: RoundTripData) => void;
|
|
50
|
-
/** Additional CSS classes */
|
|
51
|
-
className?: string;
|
|
52
|
-
}
|
|
53
|
-
declare const RoundTrip: React.FC<RoundTripProps>;
|
|
54
|
-
export default RoundTrip;
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { PaxData } from "../PaxSelector/PaxSelector";
|
|
3
|
+
import { LocationOption, LocationGroup, LocationData } from "../../molecules/LocationDropdown/LocationDropdown";
|
|
4
|
+
import "../../../styles/components/organism/round-trip.css";
|
|
5
|
+
export type { LocationData };
|
|
6
|
+
export interface RoundTripTransfer {
|
|
7
|
+
type: "arrival" | "departure";
|
|
8
|
+
paxData?: PaxData;
|
|
9
|
+
transferDate?: string;
|
|
10
|
+
pickupPoint?: LocationData;
|
|
11
|
+
dropoffPoint?: LocationData;
|
|
12
|
+
}
|
|
13
|
+
export interface RoundTripData {
|
|
14
|
+
id: string;
|
|
15
|
+
paxData?: PaxData;
|
|
16
|
+
arrivalDate?: string;
|
|
17
|
+
departureDate?: string;
|
|
18
|
+
pickupDropoffPoint?: LocationData;
|
|
19
|
+
accommodation?: LocationData;
|
|
20
|
+
transfers: [RoundTripTransfer, RoundTripTransfer];
|
|
21
|
+
}
|
|
22
|
+
export interface RoundTripProps {
|
|
23
|
+
/** Unique identifier for this round trip */
|
|
24
|
+
id: string;
|
|
25
|
+
/** Pax data */
|
|
26
|
+
paxData?: PaxData;
|
|
27
|
+
/** Arrival date */
|
|
28
|
+
arrivalDate?: string;
|
|
29
|
+
/** Departure date */
|
|
30
|
+
departureDate?: string;
|
|
31
|
+
/** Selected pickup/dropoff point ID (for initial value) */
|
|
32
|
+
pickupDropoffPoint?: string;
|
|
33
|
+
/** Selected accommodation ID (for initial value) */
|
|
34
|
+
accommodation?: string;
|
|
35
|
+
/** All location options */
|
|
36
|
+
locations?: {
|
|
37
|
+
options?: LocationOption[];
|
|
38
|
+
groups?: LocationGroup[];
|
|
39
|
+
};
|
|
40
|
+
/** Callback when pax data changes */
|
|
41
|
+
onPaxChange?: (paxData: PaxData) => void;
|
|
42
|
+
/** Callback when dates change */
|
|
43
|
+
onDatesChange?: (arrivalDate: string, departureDate: string) => void;
|
|
44
|
+
/** Callback when pickup/dropoff point changes */
|
|
45
|
+
onPickupDropoffChange?: (location: LocationData | null) => void;
|
|
46
|
+
/** Callback when accommodation changes */
|
|
47
|
+
onAccommodationChange?: (location: LocationData | null) => void;
|
|
48
|
+
/** Callback when any data changes - returns array of 2 transfers */
|
|
49
|
+
onChange?: (data: RoundTripData) => void;
|
|
50
|
+
/** Additional CSS classes */
|
|
51
|
+
className?: string;
|
|
52
|
+
}
|
|
53
|
+
declare const RoundTrip: React.FC<RoundTripProps>;
|
|
54
|
+
export default RoundTrip;
|
|
@@ -1,179 +1,179 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
13
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
14
|
-
if (ar || !(i in from)) {
|
|
15
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
16
|
-
ar[i] = from[i];
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
20
|
-
};
|
|
21
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
|
-
import { useState, useEffect } from "react";
|
|
23
|
-
import { Text } from "../../atoms/Typography/Typography";
|
|
24
|
-
import PaxSelector from "../PaxSelector/PaxSelector";
|
|
25
|
-
import DateTimePicker from "../DateTimePicker/DateTimePicker";
|
|
26
|
-
import LocationDropdown from "../../molecules/LocationDropdown/LocationDropdown";
|
|
27
|
-
import "../../../styles/components/organism/round-trip.css";
|
|
28
|
-
var RoundTrip = function (_a) {
|
|
29
|
-
var id = _a.id, paxData = _a.paxData, arrivalDate = _a.arrivalDate, departureDate = _a.departureDate, pickupDropoffPoint = _a.pickupDropoffPoint, accommodation = _a.accommodation, _b = _a.locations, locations = _b === void 0 ? { options: [], groups: [] } : _b, onPaxChange = _a.onPaxChange, onDatesChange = _a.onDatesChange, onPickupDropoffChange = _a.onPickupDropoffChange, onAccommodationChange = _a.onAccommodationChange, onChange = _a.onChange, _c = _a.className, className = _c === void 0 ? "" : _c;
|
|
30
|
-
var _d = useState(paxData), internalPaxData = _d[0], setInternalPaxData = _d[1];
|
|
31
|
-
var _e = useState(arrivalDate), internalArrivalDate = _e[0], setInternalArrivalDate = _e[1];
|
|
32
|
-
var _f = useState(departureDate), internalDepartureDate = _f[0], setInternalDepartureDate = _f[1];
|
|
33
|
-
var _g = useState(null), internalPickupDropoffPoint = _g[0], setInternalPickupDropoffPoint = _g[1];
|
|
34
|
-
var _h = useState(null), internalAccommodation = _h[0], setInternalAccommodation = _h[1];
|
|
35
|
-
// Helper function to get all locations (from options and groups)
|
|
36
|
-
var getAllLocations = function (options, groups) {
|
|
37
|
-
var groupOptions = groups.flatMap(function (group) { return group.options; });
|
|
38
|
-
return __spreadArray(__spreadArray([], options, true), groupOptions, true);
|
|
39
|
-
};
|
|
40
|
-
// Get airport/port options and accommodation options
|
|
41
|
-
var getPickupDropoffOptions = function () {
|
|
42
|
-
var allOptions = locations.options || [];
|
|
43
|
-
var allGroups = locations.groups || [];
|
|
44
|
-
// Filter for airport and port
|
|
45
|
-
var airportPortOptions = allOptions.filter(function (opt) { return opt.type === "airport" || opt.type === "port"; });
|
|
46
|
-
// Filter for accommodations
|
|
47
|
-
var accommodationOptions = allOptions.filter(function (opt) { return opt.type === "accommodation"; });
|
|
48
|
-
// Create groups
|
|
49
|
-
var airportPortGroup = {
|
|
50
|
-
id: "airport-port-group",
|
|
51
|
-
label: "Airport & Port",
|
|
52
|
-
options: airportPortOptions,
|
|
53
|
-
};
|
|
54
|
-
var accommodationGroup = {
|
|
55
|
-
id: "accommodation-group",
|
|
56
|
-
label: "Accommodations",
|
|
57
|
-
options: accommodationOptions,
|
|
58
|
-
};
|
|
59
|
-
return {
|
|
60
|
-
options: [],
|
|
61
|
-
groups: [airportPortGroup, accommodationGroup].filter(function (g) { return g.options.length > 0; }),
|
|
62
|
-
};
|
|
63
|
-
};
|
|
64
|
-
var getAccommodationOptions = function () {
|
|
65
|
-
var allOptions = locations.options || [];
|
|
66
|
-
var allGroups = locations.groups || [];
|
|
67
|
-
// Filter for accommodations only
|
|
68
|
-
var accommodationOptions = allOptions.filter(function (opt) { return opt.type === "accommodation"; });
|
|
69
|
-
// Extract accommodation groups if they exist
|
|
70
|
-
var accommodationGroups = allGroups
|
|
71
|
-
.map(function (group) { return (__assign(__assign({}, group), { options: group.options.filter(function (opt) { return opt.type === "accommodation"; }) })); })
|
|
72
|
-
.filter(function (group) { return group.options.length > 0; });
|
|
73
|
-
return {
|
|
74
|
-
options: accommodationOptions,
|
|
75
|
-
groups: accommodationGroups,
|
|
76
|
-
};
|
|
77
|
-
};
|
|
78
|
-
// Initialize location data from IDs
|
|
79
|
-
useEffect(function () {
|
|
80
|
-
var _a = getPickupDropoffOptions(), options = _a.options, groups = _a.groups;
|
|
81
|
-
var allLocations = getAllLocations(options, groups);
|
|
82
|
-
if (pickupDropoffPoint) {
|
|
83
|
-
var location_1 = allLocations.find(function (loc) { return loc.id === pickupDropoffPoint; });
|
|
84
|
-
if (location_1) {
|
|
85
|
-
setInternalPickupDropoffPoint({
|
|
86
|
-
id: location_1.id,
|
|
87
|
-
locationName: location_1.label,
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
// Set default to first airport if available
|
|
93
|
-
var defaultAirport = allLocations.find(function (loc) { return loc.type === "airport"; });
|
|
94
|
-
if (defaultAirport) {
|
|
95
|
-
var defaultData = {
|
|
96
|
-
id: defaultAirport.id,
|
|
97
|
-
locationName: defaultAirport.label,
|
|
98
|
-
};
|
|
99
|
-
setInternalPickupDropoffPoint(defaultData);
|
|
100
|
-
onPickupDropoffChange === null || onPickupDropoffChange === void 0 ? void 0 : onPickupDropoffChange(defaultData);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
104
|
-
}, [pickupDropoffPoint, locations]);
|
|
105
|
-
useEffect(function () {
|
|
106
|
-
var _a = getAccommodationOptions(), options = _a.options, groups = _a.groups;
|
|
107
|
-
var allLocations = getAllLocations(options, groups);
|
|
108
|
-
if (accommodation) {
|
|
109
|
-
var location_2 = allLocations.find(function (loc) { return loc.id === accommodation; });
|
|
110
|
-
if (location_2) {
|
|
111
|
-
setInternalAccommodation({
|
|
112
|
-
id: location_2.id,
|
|
113
|
-
locationName: location_2.label,
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
118
|
-
}, [accommodation, locations]);
|
|
119
|
-
// Update complete data whenever any field changes
|
|
120
|
-
useEffect(function () {
|
|
121
|
-
// Create arrival transfer
|
|
122
|
-
var arrivalTransfer = {
|
|
123
|
-
type: "arrival",
|
|
124
|
-
paxData: internalPaxData,
|
|
125
|
-
transferDate: internalArrivalDate,
|
|
126
|
-
pickupPoint: internalPickupDropoffPoint || undefined,
|
|
127
|
-
dropoffPoint: internalAccommodation || undefined,
|
|
128
|
-
};
|
|
129
|
-
// Create departure transfer
|
|
130
|
-
var departureTransfer = {
|
|
131
|
-
type: "departure",
|
|
132
|
-
paxData: internalPaxData,
|
|
133
|
-
transferDate: internalDepartureDate,
|
|
134
|
-
pickupPoint: internalAccommodation || undefined,
|
|
135
|
-
dropoffPoint: internalPickupDropoffPoint || undefined,
|
|
136
|
-
};
|
|
137
|
-
var completeData = {
|
|
138
|
-
id: id,
|
|
139
|
-
paxData: internalPaxData,
|
|
140
|
-
arrivalDate: internalArrivalDate,
|
|
141
|
-
departureDate: internalDepartureDate,
|
|
142
|
-
pickupDropoffPoint: internalPickupDropoffPoint || undefined,
|
|
143
|
-
accommodation: internalAccommodation || undefined,
|
|
144
|
-
transfers: [arrivalTransfer, departureTransfer],
|
|
145
|
-
};
|
|
146
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(completeData);
|
|
147
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
148
|
-
}, [
|
|
149
|
-
id,
|
|
150
|
-
internalPaxData,
|
|
151
|
-
internalArrivalDate,
|
|
152
|
-
internalDepartureDate,
|
|
153
|
-
internalPickupDropoffPoint,
|
|
154
|
-
internalAccommodation,
|
|
155
|
-
]);
|
|
156
|
-
var handlePaxChange = function (newPaxData) {
|
|
157
|
-
setInternalPaxData(newPaxData);
|
|
158
|
-
onPaxChange === null || onPaxChange === void 0 ? void 0 : onPaxChange(newPaxData);
|
|
159
|
-
};
|
|
160
|
-
var handleDateRangeChange = function (dates) {
|
|
161
|
-
if (Array.isArray(dates) && dates.length === 2) {
|
|
162
|
-
setInternalArrivalDate(dates[0]);
|
|
163
|
-
setInternalDepartureDate(dates[1]);
|
|
164
|
-
onDatesChange === null || onDatesChange === void 0 ? void 0 : onDatesChange(dates[0], dates[1]);
|
|
165
|
-
}
|
|
166
|
-
};
|
|
167
|
-
var handlePickupDropoffChange = function (location) {
|
|
168
|
-
setInternalPickupDropoffPoint(location);
|
|
169
|
-
onPickupDropoffChange === null || onPickupDropoffChange === void 0 ? void 0 : onPickupDropoffChange(location);
|
|
170
|
-
};
|
|
171
|
-
var handleAccommodationChange = function (location) {
|
|
172
|
-
setInternalAccommodation(location);
|
|
173
|
-
onAccommodationChange === null || onAccommodationChange === void 0 ? void 0 : onAccommodationChange(location);
|
|
174
|
-
};
|
|
175
|
-
var pickupDropoffOptions = getPickupDropoffOptions();
|
|
176
|
-
var accommodationOptions = getAccommodationOptions();
|
|
177
|
-
return (_jsx("div", __assign({ className: "round-trip ".concat(className), "data-round-trip-id": id }, { children: _jsxs("div", __assign({ className: "round-trip__content" }, { children: [_jsx("div", __assign({ className: "round-trip__field round-trip__field--pax" }, { children: _jsx(PaxSelector, { label: "Number of pax", value: internalPaxData, onChange: handlePaxChange, placeholder: "2 pax" }) })), _jsxs("div", __assign({ className: "round-trip__field round-trip__field--dates" }, { children: [_jsx(Text, __assign({ size: "sm", variant: "regular", className: "round-trip__field-label" }, { children: "Arrival date - Departure date" })), _jsx(DateTimePicker, { placeholder: "DD/MM/YYYY - DD/MM/YYYY", mode: "calendar", iconPosition: "left", numberOfMonths: 2, iconBGFull: false, showChevron: true, onValueChange: handleDateRangeChange, selectionMode: "range" })] })), _jsx("div", __assign({ className: "round-trip__field round-trip__field--pickup-dropoff" }, { children: _jsx(LocationDropdown, { label: "Pick up / Drop-off point", options: pickupDropoffOptions.options, groups: pickupDropoffOptions.groups, selectedValue: (internalPickupDropoffPoint === null || internalPickupDropoffPoint === void 0 ? void 0 : internalPickupDropoffPoint.id) || null, onSelectionChange: handlePickupDropoffChange, placeholder: "Select pick-up / drop-off point", direction: undefined, type: "airport-port", showGroupTitles: true }) })), _jsx("div", __assign({ className: "round-trip__field round-trip__field--accommodation" }, { children: _jsx(LocationDropdown, { label: "Accommodation", options: accommodationOptions.options, groups: accommodationOptions.groups, selectedValue: (internalAccommodation === null || internalAccommodation === void 0 ? void 0 : internalAccommodation.id) || null, onSelectionChange: handleAccommodationChange, placeholder: "Select accommodation", direction: "dropoff", type: "accommodation", showGroupTitles: false }) }))] })) })));
|
|
178
|
-
};
|
|
179
|
-
export default RoundTrip;
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
13
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
14
|
+
if (ar || !(i in from)) {
|
|
15
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
16
|
+
ar[i] = from[i];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
20
|
+
};
|
|
21
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
|
+
import { useState, useEffect } from "react";
|
|
23
|
+
import { Text } from "../../atoms/Typography/Typography";
|
|
24
|
+
import PaxSelector from "../PaxSelector/PaxSelector";
|
|
25
|
+
import DateTimePicker from "../DateTimePicker/DateTimePicker";
|
|
26
|
+
import LocationDropdown from "../../molecules/LocationDropdown/LocationDropdown";
|
|
27
|
+
import "../../../styles/components/organism/round-trip.css";
|
|
28
|
+
var RoundTrip = function (_a) {
|
|
29
|
+
var id = _a.id, paxData = _a.paxData, arrivalDate = _a.arrivalDate, departureDate = _a.departureDate, pickupDropoffPoint = _a.pickupDropoffPoint, accommodation = _a.accommodation, _b = _a.locations, locations = _b === void 0 ? { options: [], groups: [] } : _b, onPaxChange = _a.onPaxChange, onDatesChange = _a.onDatesChange, onPickupDropoffChange = _a.onPickupDropoffChange, onAccommodationChange = _a.onAccommodationChange, onChange = _a.onChange, _c = _a.className, className = _c === void 0 ? "" : _c;
|
|
30
|
+
var _d = useState(paxData), internalPaxData = _d[0], setInternalPaxData = _d[1];
|
|
31
|
+
var _e = useState(arrivalDate), internalArrivalDate = _e[0], setInternalArrivalDate = _e[1];
|
|
32
|
+
var _f = useState(departureDate), internalDepartureDate = _f[0], setInternalDepartureDate = _f[1];
|
|
33
|
+
var _g = useState(null), internalPickupDropoffPoint = _g[0], setInternalPickupDropoffPoint = _g[1];
|
|
34
|
+
var _h = useState(null), internalAccommodation = _h[0], setInternalAccommodation = _h[1];
|
|
35
|
+
// Helper function to get all locations (from options and groups)
|
|
36
|
+
var getAllLocations = function (options, groups) {
|
|
37
|
+
var groupOptions = groups.flatMap(function (group) { return group.options; });
|
|
38
|
+
return __spreadArray(__spreadArray([], options, true), groupOptions, true);
|
|
39
|
+
};
|
|
40
|
+
// Get airport/port options and accommodation options
|
|
41
|
+
var getPickupDropoffOptions = function () {
|
|
42
|
+
var allOptions = locations.options || [];
|
|
43
|
+
var allGroups = locations.groups || [];
|
|
44
|
+
// Filter for airport and port
|
|
45
|
+
var airportPortOptions = allOptions.filter(function (opt) { return opt.type === "airport" || opt.type === "port"; });
|
|
46
|
+
// Filter for accommodations
|
|
47
|
+
var accommodationOptions = allOptions.filter(function (opt) { return opt.type === "accommodation"; });
|
|
48
|
+
// Create groups
|
|
49
|
+
var airportPortGroup = {
|
|
50
|
+
id: "airport-port-group",
|
|
51
|
+
label: "Airport & Port",
|
|
52
|
+
options: airportPortOptions,
|
|
53
|
+
};
|
|
54
|
+
var accommodationGroup = {
|
|
55
|
+
id: "accommodation-group",
|
|
56
|
+
label: "Accommodations",
|
|
57
|
+
options: accommodationOptions,
|
|
58
|
+
};
|
|
59
|
+
return {
|
|
60
|
+
options: [],
|
|
61
|
+
groups: [airportPortGroup, accommodationGroup].filter(function (g) { return g.options.length > 0; }),
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
var getAccommodationOptions = function () {
|
|
65
|
+
var allOptions = locations.options || [];
|
|
66
|
+
var allGroups = locations.groups || [];
|
|
67
|
+
// Filter for accommodations only
|
|
68
|
+
var accommodationOptions = allOptions.filter(function (opt) { return opt.type === "accommodation"; });
|
|
69
|
+
// Extract accommodation groups if they exist
|
|
70
|
+
var accommodationGroups = allGroups
|
|
71
|
+
.map(function (group) { return (__assign(__assign({}, group), { options: group.options.filter(function (opt) { return opt.type === "accommodation"; }) })); })
|
|
72
|
+
.filter(function (group) { return group.options.length > 0; });
|
|
73
|
+
return {
|
|
74
|
+
options: accommodationOptions,
|
|
75
|
+
groups: accommodationGroups,
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
// Initialize location data from IDs
|
|
79
|
+
useEffect(function () {
|
|
80
|
+
var _a = getPickupDropoffOptions(), options = _a.options, groups = _a.groups;
|
|
81
|
+
var allLocations = getAllLocations(options, groups);
|
|
82
|
+
if (pickupDropoffPoint) {
|
|
83
|
+
var location_1 = allLocations.find(function (loc) { return loc.id === pickupDropoffPoint; });
|
|
84
|
+
if (location_1) {
|
|
85
|
+
setInternalPickupDropoffPoint({
|
|
86
|
+
id: location_1.id,
|
|
87
|
+
locationName: location_1.label,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// Set default to first airport if available
|
|
93
|
+
var defaultAirport = allLocations.find(function (loc) { return loc.type === "airport"; });
|
|
94
|
+
if (defaultAirport) {
|
|
95
|
+
var defaultData = {
|
|
96
|
+
id: defaultAirport.id,
|
|
97
|
+
locationName: defaultAirport.label,
|
|
98
|
+
};
|
|
99
|
+
setInternalPickupDropoffPoint(defaultData);
|
|
100
|
+
onPickupDropoffChange === null || onPickupDropoffChange === void 0 ? void 0 : onPickupDropoffChange(defaultData);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
104
|
+
}, [pickupDropoffPoint, locations]);
|
|
105
|
+
useEffect(function () {
|
|
106
|
+
var _a = getAccommodationOptions(), options = _a.options, groups = _a.groups;
|
|
107
|
+
var allLocations = getAllLocations(options, groups);
|
|
108
|
+
if (accommodation) {
|
|
109
|
+
var location_2 = allLocations.find(function (loc) { return loc.id === accommodation; });
|
|
110
|
+
if (location_2) {
|
|
111
|
+
setInternalAccommodation({
|
|
112
|
+
id: location_2.id,
|
|
113
|
+
locationName: location_2.label,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
118
|
+
}, [accommodation, locations]);
|
|
119
|
+
// Update complete data whenever any field changes
|
|
120
|
+
useEffect(function () {
|
|
121
|
+
// Create arrival transfer
|
|
122
|
+
var arrivalTransfer = {
|
|
123
|
+
type: "arrival",
|
|
124
|
+
paxData: internalPaxData,
|
|
125
|
+
transferDate: internalArrivalDate,
|
|
126
|
+
pickupPoint: internalPickupDropoffPoint || undefined,
|
|
127
|
+
dropoffPoint: internalAccommodation || undefined,
|
|
128
|
+
};
|
|
129
|
+
// Create departure transfer
|
|
130
|
+
var departureTransfer = {
|
|
131
|
+
type: "departure",
|
|
132
|
+
paxData: internalPaxData,
|
|
133
|
+
transferDate: internalDepartureDate,
|
|
134
|
+
pickupPoint: internalAccommodation || undefined,
|
|
135
|
+
dropoffPoint: internalPickupDropoffPoint || undefined,
|
|
136
|
+
};
|
|
137
|
+
var completeData = {
|
|
138
|
+
id: id,
|
|
139
|
+
paxData: internalPaxData,
|
|
140
|
+
arrivalDate: internalArrivalDate,
|
|
141
|
+
departureDate: internalDepartureDate,
|
|
142
|
+
pickupDropoffPoint: internalPickupDropoffPoint || undefined,
|
|
143
|
+
accommodation: internalAccommodation || undefined,
|
|
144
|
+
transfers: [arrivalTransfer, departureTransfer],
|
|
145
|
+
};
|
|
146
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(completeData);
|
|
147
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
148
|
+
}, [
|
|
149
|
+
id,
|
|
150
|
+
internalPaxData,
|
|
151
|
+
internalArrivalDate,
|
|
152
|
+
internalDepartureDate,
|
|
153
|
+
internalPickupDropoffPoint,
|
|
154
|
+
internalAccommodation,
|
|
155
|
+
]);
|
|
156
|
+
var handlePaxChange = function (newPaxData) {
|
|
157
|
+
setInternalPaxData(newPaxData);
|
|
158
|
+
onPaxChange === null || onPaxChange === void 0 ? void 0 : onPaxChange(newPaxData);
|
|
159
|
+
};
|
|
160
|
+
var handleDateRangeChange = function (dates) {
|
|
161
|
+
if (Array.isArray(dates) && dates.length === 2) {
|
|
162
|
+
setInternalArrivalDate(dates[0]);
|
|
163
|
+
setInternalDepartureDate(dates[1]);
|
|
164
|
+
onDatesChange === null || onDatesChange === void 0 ? void 0 : onDatesChange(dates[0], dates[1]);
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
var handlePickupDropoffChange = function (location) {
|
|
168
|
+
setInternalPickupDropoffPoint(location);
|
|
169
|
+
onPickupDropoffChange === null || onPickupDropoffChange === void 0 ? void 0 : onPickupDropoffChange(location);
|
|
170
|
+
};
|
|
171
|
+
var handleAccommodationChange = function (location) {
|
|
172
|
+
setInternalAccommodation(location);
|
|
173
|
+
onAccommodationChange === null || onAccommodationChange === void 0 ? void 0 : onAccommodationChange(location);
|
|
174
|
+
};
|
|
175
|
+
var pickupDropoffOptions = getPickupDropoffOptions();
|
|
176
|
+
var accommodationOptions = getAccommodationOptions();
|
|
177
|
+
return (_jsx("div", __assign({ className: "round-trip ".concat(className), "data-round-trip-id": id }, { children: _jsxs("div", __assign({ className: "round-trip__content" }, { children: [_jsx("div", __assign({ className: "round-trip__field round-trip__field--pax" }, { children: _jsx(PaxSelector, { label: "Number of pax", value: internalPaxData, onChange: handlePaxChange, placeholder: "2 pax" }) })), _jsxs("div", __assign({ className: "round-trip__field round-trip__field--dates" }, { children: [_jsx(Text, __assign({ size: "sm", variant: "regular", className: "round-trip__field-label" }, { children: "Arrival date - Departure date" })), _jsx(DateTimePicker, { placeholder: "DD/MM/YYYY - DD/MM/YYYY", mode: "calendar", iconPosition: "left", numberOfMonths: 2, iconBGFull: false, showChevron: true, onValueChange: handleDateRangeChange, selectionMode: "range" })] })), _jsx("div", __assign({ className: "round-trip__field round-trip__field--pickup-dropoff" }, { children: _jsx(LocationDropdown, { label: "Pick up / Drop-off point", options: pickupDropoffOptions.options, groups: pickupDropoffOptions.groups, selectedValue: (internalPickupDropoffPoint === null || internalPickupDropoffPoint === void 0 ? void 0 : internalPickupDropoffPoint.id) || null, onSelectionChange: handlePickupDropoffChange, placeholder: "Select pick-up / drop-off point", direction: undefined, type: "airport-port", showGroupTitles: true }) })), _jsx("div", __assign({ className: "round-trip__field round-trip__field--accommodation" }, { children: _jsx(LocationDropdown, { label: "Accommodation", options: accommodationOptions.options, groups: accommodationOptions.groups, selectedValue: (internalAccommodation === null || internalAccommodation === void 0 ? void 0 : internalAccommodation.id) || null, onSelectionChange: handleAccommodationChange, placeholder: "Select accommodation", direction: "dropoff", type: "accommodation", showGroupTitles: false }) }))] })) })));
|
|
178
|
+
};
|
|
179
|
+
export default RoundTrip;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { default } from './RoundTrip';
|
|
2
|
-
export type { RoundTripProps, RoundTripData, RoundTripTransfer } from './RoundTrip';
|
|
1
|
+
export { default } from './RoundTrip';
|
|
2
|
+
export type { RoundTripProps, RoundTripData, RoundTripTransfer } from './RoundTrip';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default } from './RoundTrip';
|
|
1
|
+
export { default } from './RoundTrip';
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { RoundTripData } from "../RoundTrip/RoundTrip";
|
|
3
|
-
import { TransferLineData } from "../TransferLine/TransferLine";
|
|
4
|
-
import { LocationOption, LocationGroup } from "../../molecules/LocationDropdown/LocationDropdown";
|
|
5
|
-
import "../../../styles/components/organism/search-bar-transfer.css";
|
|
6
|
-
export type TransferMode = "roundtrip" | "custom";
|
|
7
|
-
export interface SearchBarTransferData {
|
|
8
|
-
mode: TransferMode;
|
|
9
|
-
sameVehicle: boolean;
|
|
10
|
-
roundTripData?: RoundTripData;
|
|
11
|
-
transferLines?: TransferLineData[];
|
|
12
|
-
}
|
|
13
|
-
export interface SearchBarTransferProps {
|
|
14
|
-
/** Initial mode */
|
|
15
|
-
mode?: TransferMode;
|
|
16
|
-
/** Location options for dropdowns */
|
|
17
|
-
locations?: {
|
|
18
|
-
options?: LocationOption[];
|
|
19
|
-
groups?: LocationGroup[];
|
|
20
|
-
};
|
|
21
|
-
/** Default round trip data (for roundtrip mode) */
|
|
22
|
-
defaultRoundTripData?: RoundTripData;
|
|
23
|
-
/** Default transfer lines (for custom mode) */
|
|
24
|
-
defaultTransferLines?: TransferLineData[];
|
|
25
|
-
/** Default "same vehicle" checkbox state */
|
|
26
|
-
defaultSameVehicle?: boolean;
|
|
27
|
-
/** Callback when search button is clicked */
|
|
28
|
-
onSearch?: (data: SearchBarTransferData) => void;
|
|
29
|
-
/** Callback when data changes */
|
|
30
|
-
onChange?: (data: SearchBarTransferData) => void;
|
|
31
|
-
/** Additional CSS classes */
|
|
32
|
-
className?: string;
|
|
33
|
-
}
|
|
34
|
-
declare const SearchBarTransfer: React.FC<SearchBarTransferProps>;
|
|
35
|
-
export default SearchBarTransfer;
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { RoundTripData } from "../RoundTrip/RoundTrip";
|
|
3
|
+
import { TransferLineData } from "../TransferLine/TransferLine";
|
|
4
|
+
import { LocationOption, LocationGroup } from "../../molecules/LocationDropdown/LocationDropdown";
|
|
5
|
+
import "../../../styles/components/organism/search-bar-transfer.css";
|
|
6
|
+
export type TransferMode = "roundtrip" | "custom";
|
|
7
|
+
export interface SearchBarTransferData {
|
|
8
|
+
mode: TransferMode;
|
|
9
|
+
sameVehicle: boolean;
|
|
10
|
+
roundTripData?: RoundTripData;
|
|
11
|
+
transferLines?: TransferLineData[];
|
|
12
|
+
}
|
|
13
|
+
export interface SearchBarTransferProps {
|
|
14
|
+
/** Initial mode */
|
|
15
|
+
mode?: TransferMode;
|
|
16
|
+
/** Location options for dropdowns */
|
|
17
|
+
locations?: {
|
|
18
|
+
options?: LocationOption[];
|
|
19
|
+
groups?: LocationGroup[];
|
|
20
|
+
};
|
|
21
|
+
/** Default round trip data (for roundtrip mode) */
|
|
22
|
+
defaultRoundTripData?: RoundTripData;
|
|
23
|
+
/** Default transfer lines (for custom mode) */
|
|
24
|
+
defaultTransferLines?: TransferLineData[];
|
|
25
|
+
/** Default "same vehicle" checkbox state */
|
|
26
|
+
defaultSameVehicle?: boolean;
|
|
27
|
+
/** Callback when search button is clicked */
|
|
28
|
+
onSearch?: (data: SearchBarTransferData) => void;
|
|
29
|
+
/** Callback when data changes */
|
|
30
|
+
onChange?: (data: SearchBarTransferData) => void;
|
|
31
|
+
/** Additional CSS classes */
|
|
32
|
+
className?: string;
|
|
33
|
+
}
|
|
34
|
+
declare const SearchBarTransfer: React.FC<SearchBarTransferProps>;
|
|
35
|
+
export default SearchBarTransfer;
|