related-ui-components 2.1.8 → 2.2.0
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/lib/module/app.js +3 -7
- package/lib/module/app.js.map +1 -1
- package/lib/module/components/TravelBooking/CarRentalForm.js +17 -13
- package/lib/module/components/TravelBooking/CarRentalForm.js.map +1 -1
- package/lib/module/components/TravelBooking/FlightForm.js +19 -10
- package/lib/module/components/TravelBooking/FlightForm.js.map +1 -1
- package/lib/module/components/TravelBooking/FlightSummary.js +28 -17
- package/lib/module/components/TravelBooking/FlightSummary.js.map +1 -1
- package/lib/module/components/TravelBooking/HotelForm.js +12 -3
- package/lib/module/components/TravelBooking/HotelForm.js.map +1 -1
- package/lib/module/components/TravelBooking/index.js +18 -20
- package/lib/module/components/TravelBooking/index.js.map +1 -1
- package/lib/module/components/index.js +1 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/typescript/src/app.d.ts.map +1 -1
- package/lib/typescript/src/components/TravelBooking/CarRentalForm.d.ts +8 -0
- package/lib/typescript/src/components/TravelBooking/CarRentalForm.d.ts.map +1 -1
- package/lib/typescript/src/components/TravelBooking/FlightForm.d.ts +7 -0
- package/lib/typescript/src/components/TravelBooking/FlightForm.d.ts.map +1 -1
- package/lib/typescript/src/components/TravelBooking/FlightSummary.d.ts +2 -0
- package/lib/typescript/src/components/TravelBooking/FlightSummary.d.ts.map +1 -1
- package/lib/typescript/src/components/TravelBooking/HotelForm.d.ts +6 -0
- package/lib/typescript/src/components/TravelBooking/HotelForm.d.ts.map +1 -1
- package/lib/typescript/src/components/TravelBooking/index.d.ts +17 -1
- package/lib/typescript/src/components/TravelBooking/index.d.ts.map +1 -1
- package/lib/typescript/src/components/index.d.ts +1 -0
- package/lib/typescript/src/components/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/app.tsx +7 -1
- package/src/components/TravelBooking/CarRentalForm.tsx +96 -57
- package/src/components/TravelBooking/FlightForm.tsx +70 -47
- package/src/components/TravelBooking/FlightSummary.tsx +49 -40
- package/src/components/TravelBooking/HotelForm.tsx +71 -43
- package/src/components/TravelBooking/index.ts +17 -17
- package/src/components/index.ts +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/TravelBooking/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["default","CarRentalForm","FlightForm","HotelForm","SummaryBar","TabSelector","FlightSummary","HotelSummary"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/TravelBooking/index.ts"],"mappings":";;AACA,SAASA,OAAO,QAAiC,oBAAiB;AAClE,cAAc,oBAAiB;AAE/B,SAASA,OAAO,IAAIC,aAAa,QAAiC,oBAAiB;AACnF,cAAc,oBAAiB;AAC/B,SAASD,OAAO,IAAIE,UAAU,QAA8B,iBAAc;AAC1E,cAAc,iBAAc;AAC5B,SAASF,OAAO,IAAIG,SAAS,QAA6B,gBAAa;AACvE,cAAc,gBAAa;AAC3B,SAASH,OAAO,IAAII,UAAU,QAA8D,iBAAc;AAC1G,cAAc,iBAAc;AAC5B,SAASJ,OAAO,IAAIK,WAAW,QAA+B,kBAAe;AAC7E,cAAc,kBAAe;AAC7B,SAASL,OAAO,IAAIM,aAAa,QAAuD,oBAAiB;AACzG,cAAc,oBAAiB;AAC/B,SAASN,OAAO,IAAIO,YAAY,QAAgD,mBAAgB;AAChG,cAAc,mBAAgB;AAE9B,cAAc,YAAS","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"..\\..\\..\\src","sources":["components/index.ts"],"mappings":";;AAAA,cAAc,iBAAQ;AACtB,cAAc,wBAAe;AAC7B,cAAe,mBAAU;AACzB,cAAc,mBAAU;AACxB,cAAc,sBAAa;AAC3B,cAAc,oBAAW;AACzB,cAAc,kBAAS;AACvB,cAAc,wBAAe;AAC7B,cAAc,kBAAS;AACvB,cAAc,6BAAoB;AAClC,cAAc,wBAAe;AAC7B,cAAc,0BAAiB;AAC/B,cAAc,kBAAS;AACvB,cAAc,sBAAa;AAC3B,cAAc,oBAAW;AACzB,cAAc,4BAAmB;AACjC,cAAc,mBAAU;AACxB,cAAc,qBAAY;AAC1B,cAAc,uBAAc;AAC5B,cAAc,8BAAqB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"..\\..\\..\\src","sources":["components/index.ts"],"mappings":";;AAAA,cAAc,iBAAQ;AACtB,cAAc,wBAAe;AAC7B,cAAe,mBAAU;AACzB,cAAc,mBAAU;AACxB,cAAc,sBAAa;AAC3B,cAAc,oBAAW;AACzB,cAAc,kBAAS;AACvB,cAAc,wBAAe;AAC7B,cAAc,kBAAS;AACvB,cAAc,6BAAoB;AAClC,cAAc,wBAAe;AAC7B,cAAc,0BAAiB;AAC/B,cAAc,kBAAS;AACvB,cAAc,sBAAa;AAC3B,cAAc,oBAAW;AACzB,cAAc,4BAAmB;AACjC,cAAc,mBAAU;AACxB,cAAc,qBAAY;AAC1B,cAAc,uBAAc;AAC5B,cAAc,8BAAqB;AACnC,cAAc,0BAAiB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/app.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/app.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAwC1B,QAAA,MAAM,GAAG,yBAgBR,CAAC;AAUF,eAAe,GAAG,CAAC"}
|
|
@@ -19,6 +19,13 @@ export interface CarRentalFormProps {
|
|
|
19
19
|
dropoff: string | undefined;
|
|
20
20
|
driverAge: number | undefined;
|
|
21
21
|
}) => void;
|
|
22
|
+
onSelectionChange?: (details: {
|
|
23
|
+
from: LocationData | undefined;
|
|
24
|
+
to: LocationData | undefined;
|
|
25
|
+
pickup: string | undefined;
|
|
26
|
+
dropoff: string | undefined;
|
|
27
|
+
driverAge: number | undefined;
|
|
28
|
+
}) => void;
|
|
22
29
|
fromLabel?: string;
|
|
23
30
|
fromPlaceholder?: string;
|
|
24
31
|
toLabel?: string;
|
|
@@ -28,6 +35,7 @@ export interface CarRentalFormProps {
|
|
|
28
35
|
swapIconName?: keyof typeof Ionicons.glyphMap;
|
|
29
36
|
searchIconName?: keyof typeof Ionicons.glyphMap;
|
|
30
37
|
calendarThemeOverrides?: object;
|
|
38
|
+
ageLabel?: string;
|
|
31
39
|
isOneWay?: boolean;
|
|
32
40
|
suggestionData?: CarSuggestions[];
|
|
33
41
|
containerStyle?: StyleProp<ViewStyle>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CarRentalForm.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/CarRentalForm.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"CarRentalForm.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/CarRentalForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,12 @@ export interface FlightFormProps {
|
|
|
17
17
|
return?: string | undefined;
|
|
18
18
|
}) => void;
|
|
19
19
|
onTextChange?: (text: string) => void;
|
|
20
|
+
onSelectionChange?: (details: {
|
|
21
|
+
from: LocationData | undefined;
|
|
22
|
+
to: LocationData | undefined;
|
|
23
|
+
departure: string | undefined;
|
|
24
|
+
return?: string | undefined;
|
|
25
|
+
}) => void;
|
|
20
26
|
fromLabel?: string;
|
|
21
27
|
fromPlaceholder?: string;
|
|
22
28
|
toLabel?: string;
|
|
@@ -32,6 +38,7 @@ export interface FlightFormProps {
|
|
|
32
38
|
inputGroupContainerStyle?: StyleProp<ViewStyle>;
|
|
33
39
|
inputWrapperStyle?: StyleProp<ViewStyle>;
|
|
34
40
|
customInputContainerStyle?: StyleProp<ViewStyle>;
|
|
41
|
+
inputStyle?: StyleProp<ViewStyle>;
|
|
35
42
|
labelStyle?: StyleProp<TextStyle>;
|
|
36
43
|
swapButtonContainerStyle?: StyleProp<ViewStyle>;
|
|
37
44
|
swapButtonStyle?: StyleProp<ViewStyle>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlightForm.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/FlightForm.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"FlightForm.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/FlightForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,8 @@ export interface FlightSummaryProps {
|
|
|
18
18
|
passengersData?: PassengerConfig[];
|
|
19
19
|
flightTypesData?: string[];
|
|
20
20
|
flightClassesData?: string[];
|
|
21
|
+
flightTypeLabel?: string;
|
|
22
|
+
flightClassLabel?: string;
|
|
21
23
|
selection?: FlightSelection;
|
|
22
24
|
onSelectionChange?: (details: FlightSelection) => void;
|
|
23
25
|
containerStyle?: StyleProp<ViewStyle>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlightSummary.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/FlightSummary.tsx"],"names":[],"mappings":"AACA,OAAO,KAAoD,MAAM,OAAO,CAAC;AACzE,OAAO,EACL,SAAS,EAKT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAkB,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExE,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAyCD,MAAM,WAAW,kBAAkB;IAEjC,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"FlightSummary.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/FlightSummary.tsx"],"names":[],"mappings":"AACA,OAAO,KAAoD,MAAM,OAAO,CAAC;AACzE,OAAO,EACL,SAAS,EAKT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAkB,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExE,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAyCD,MAAM,WAAW,kBAAkB;IAEjC,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAGvD,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,yBAAyB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjD,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,mBAAmB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,eAAe,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACvC,uBAAuB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,qBAAqB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,iBAAiB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,4BAA4B,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpD,kBAAkB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,yBAAyB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAEjD,qBAAqB,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACrD,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;IACxD,sBAAsB,CAAC,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IAChE,qBAAqB,CAAC,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;CAC/D;AAGD,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAmO/C,CAAC;AAqEF,eAAe,aAAa,CAAC"}
|
|
@@ -16,6 +16,12 @@ export interface HotelFormProps {
|
|
|
16
16
|
checkout: string | undefined;
|
|
17
17
|
nationality: string | undefined;
|
|
18
18
|
}) => void;
|
|
19
|
+
onSelectionChange?: (details: {
|
|
20
|
+
destination: LocationData | undefined;
|
|
21
|
+
checkin: string | undefined;
|
|
22
|
+
checkout: string | undefined;
|
|
23
|
+
nationality: string | undefined;
|
|
24
|
+
}) => void;
|
|
19
25
|
destinationLabel?: string;
|
|
20
26
|
destinationPlaceholder?: string;
|
|
21
27
|
checkinLabel?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HotelForm.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/HotelForm.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"HotelForm.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/HotelForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,18 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export { default, type TravelBookingProps } from "./TravelBooking";
|
|
2
|
+
export * from "./TravelBooking";
|
|
3
|
+
export { default as CarRentalForm, type CarRentalFormProps } from "./CarRentalForm";
|
|
4
|
+
export * from "./CarRentalForm";
|
|
5
|
+
export { default as FlightForm, type FlightFormProps } from "./FlightForm";
|
|
6
|
+
export * from "./FlightForm";
|
|
7
|
+
export { default as HotelForm, type HotelFormProps } from "./HotelForm";
|
|
8
|
+
export * from "./HotelForm";
|
|
9
|
+
export { default as SummaryBar, type SummaryBarProps, type SelectionCallbackDataType } from "./SummaryBar";
|
|
10
|
+
export * from "./SummaryBar";
|
|
11
|
+
export { default as TabSelector, type TabSelectorProps } from "./TabSelector";
|
|
12
|
+
export * from "./TabSelector";
|
|
13
|
+
export { default as FlightSummary, type FlightSummaryProps, type FlightSelection } from "./FlightSummary";
|
|
14
|
+
export * from "./FlightSummary";
|
|
15
|
+
export { default as HotelSummary, type HotelSummaryProps, type RoomState } from "./HotelSummary";
|
|
16
|
+
export * from "./HotelSummary";
|
|
17
|
+
export * from "./types";
|
|
2
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACnE,cAAc,iBAAiB,CAAA;AAE/B,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACpF,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3E,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACxE,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAC3G,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC9E,cAAc,eAAe,CAAA;AAC7B,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC1G,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,KAAK,iBAAiB,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACjG,cAAc,gBAAgB,CAAA;AAE9B,cAAc,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAC;AAC9B,cAAe,UAAU,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAC;AAC9B,cAAe,UAAU,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC"}
|
package/package.json
CHANGED
package/src/app.tsx
CHANGED
|
@@ -2,6 +2,7 @@ import React from "react";
|
|
|
2
2
|
import { SafeAreaView, StyleSheet, StatusBar } from "react-native";
|
|
3
3
|
import CarouselCardStack from "./components/CarouselCardStack/CarouselCardStack"; // Adjust path as needed
|
|
4
4
|
import { GestureHandlerRootView } from "react-native-gesture-handler";
|
|
5
|
+
import { CarRentalForm, FlightForm, FlightSummary, HotelForm, HotelSummary } from "./components";
|
|
5
6
|
|
|
6
7
|
// Sample data - replace with your actual image URLs
|
|
7
8
|
const DUMMY_DATA = [
|
|
@@ -43,7 +44,12 @@ const App = () => {
|
|
|
43
44
|
<GestureHandlerRootView style={{ flex: 1 }}>
|
|
44
45
|
<StatusBar barStyle="light-content" />
|
|
45
46
|
<SafeAreaView style={styles.appContainer}>
|
|
46
|
-
<
|
|
47
|
+
{/* <FlightSummary></FlightSummary> */}
|
|
48
|
+
{/* <FlightForm></FlightForm> */}
|
|
49
|
+
{/* <HotelSummary></HotelSummary> */}
|
|
50
|
+
{/* <HotelForm></HotelForm> */}
|
|
51
|
+
{/* <CarRentalForm onSelectionChange={console.log}></CarRentalForm> */}
|
|
52
|
+
{/* <CarouselCardStack data={DUMMY_DATA} /> */}
|
|
47
53
|
</SafeAreaView>
|
|
48
54
|
</GestureHandlerRootView>
|
|
49
55
|
</>
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { ThemeType, useTheme } from "../../theme";
|
|
2
|
-
import React, {
|
|
2
|
+
import React, {
|
|
3
|
+
useCallback,
|
|
4
|
+
useEffect,
|
|
5
|
+
useMemo,
|
|
6
|
+
useRef,
|
|
7
|
+
useState,
|
|
8
|
+
} from "react";
|
|
3
9
|
import {
|
|
4
10
|
View,
|
|
5
11
|
Text,
|
|
@@ -25,15 +31,13 @@ export const mockCarSuggestions: CarSuggestions[] = [
|
|
|
25
31
|
{ id: 5, city: "New York", country: "USA", value: "NEW YORK, USA" },
|
|
26
32
|
];
|
|
27
33
|
|
|
28
|
-
// --- Helper Types ---
|
|
29
34
|
type LocationData = string;
|
|
30
35
|
|
|
31
|
-
// --- Component Props ---
|
|
32
36
|
export interface CarRentalFormProps {
|
|
33
37
|
initialFromLocation?: LocationData;
|
|
34
38
|
initialToLocation?: LocationData;
|
|
35
|
-
initialPickupDate?: string;
|
|
36
|
-
initialDropoffDate?: string;
|
|
39
|
+
initialPickupDate?: string;
|
|
40
|
+
initialDropoffDate?: string;
|
|
37
41
|
|
|
38
42
|
onTextChange?: (text: string) => void;
|
|
39
43
|
onInputFocus?: (input: FormInputType) => void;
|
|
@@ -44,8 +48,16 @@ export interface CarRentalFormProps {
|
|
|
44
48
|
onSearchPress?: (details: {
|
|
45
49
|
from: LocationData | undefined;
|
|
46
50
|
to: LocationData | undefined;
|
|
47
|
-
pickup: string | undefined;
|
|
48
|
-
dropoff: string | undefined;
|
|
51
|
+
pickup: string | undefined;
|
|
52
|
+
dropoff: string | undefined;
|
|
53
|
+
driverAge: number | undefined;
|
|
54
|
+
}) => void;
|
|
55
|
+
|
|
56
|
+
onSelectionChange?: (details: {
|
|
57
|
+
from: LocationData | undefined;
|
|
58
|
+
to: LocationData | undefined;
|
|
59
|
+
pickup: string | undefined;
|
|
60
|
+
dropoff: string | undefined;
|
|
49
61
|
driverAge: number | undefined;
|
|
50
62
|
}) => void;
|
|
51
63
|
|
|
@@ -61,6 +73,8 @@ export interface CarRentalFormProps {
|
|
|
61
73
|
searchIconName?: keyof typeof Ionicons.glyphMap;
|
|
62
74
|
calendarThemeOverrides?: object; // Passed to DateRangePicker
|
|
63
75
|
|
|
76
|
+
ageLabel?:string;
|
|
77
|
+
|
|
64
78
|
isOneWay?: boolean;
|
|
65
79
|
|
|
66
80
|
suggestionData?: CarSuggestions[];
|
|
@@ -68,32 +82,32 @@ export interface CarRentalFormProps {
|
|
|
68
82
|
// --- Style Props ---
|
|
69
83
|
containerStyle?: StyleProp<ViewStyle>;
|
|
70
84
|
inputGroupContainerStyle?: StyleProp<ViewStyle>;
|
|
71
|
-
inputWrapperStyle?: StyleProp<ViewStyle>;
|
|
72
|
-
inputGroupStyle?: StyleProp<ViewStyle>;
|
|
73
|
-
labelStyle?: StyleProp<TextStyle>;
|
|
85
|
+
inputWrapperStyle?: StyleProp<ViewStyle>;
|
|
86
|
+
inputGroupStyle?: StyleProp<ViewStyle>;
|
|
87
|
+
labelStyle?: StyleProp<TextStyle>;
|
|
74
88
|
swapButtonContainerStyle?: StyleProp<ViewStyle>;
|
|
75
89
|
swapButtonStyle?: StyleProp<ViewStyle>;
|
|
76
|
-
swapIconStyle?: StyleProp<TextStyle>;
|
|
77
|
-
pickupRowStyle?: StyleProp<ViewStyle>;
|
|
90
|
+
swapIconStyle?: StyleProp<TextStyle>;
|
|
91
|
+
pickupRowStyle?: StyleProp<ViewStyle>;
|
|
78
92
|
searchButtonStyle?: StyleProp<ViewStyle>;
|
|
79
|
-
searchIconStyle?: StyleProp<TextStyle>;
|
|
93
|
+
searchIconStyle?: StyleProp<TextStyle>;
|
|
80
94
|
|
|
81
95
|
// DateRangePicker specific styles (passed down)
|
|
82
96
|
dateRangePickerOuterContainerStyle?: StyleProp<ViewStyle>;
|
|
83
|
-
dateRangePickerLabelStyle?: StyleProp<TextStyle>;
|
|
84
|
-
dateRangePickerInputGroupStyle?: StyleProp<ViewStyle>;
|
|
97
|
+
dateRangePickerLabelStyle?: StyleProp<TextStyle>;
|
|
98
|
+
dateRangePickerInputGroupStyle?: StyleProp<ViewStyle>;
|
|
85
99
|
dateRangePickerCalendarContainerStyle?: StyleProp<ViewStyle>;
|
|
86
100
|
|
|
87
101
|
// SuggestionList specific styles (passed down / used in renderItem)
|
|
88
102
|
suggestionListContainerStyle?: StyleProp<ViewStyle>;
|
|
89
|
-
suggestionItemStyle?: StyleProp<ViewStyle>;
|
|
90
|
-
suggestionItemTextStyle?: StyleProp<TextStyle>;
|
|
103
|
+
suggestionItemStyle?: StyleProp<ViewStyle>;
|
|
104
|
+
suggestionItemTextStyle?: StyleProp<TextStyle>;
|
|
91
105
|
|
|
92
106
|
// Age Picker specific styles
|
|
93
|
-
agePickerWrapperStyle?: StyleProp<ViewStyle>;
|
|
94
|
-
agePickerLabelStyle?: StyleProp<TextStyle>;
|
|
95
|
-
pickerContainerStyle?: StyleProp<ViewStyle>;
|
|
96
|
-
pickerStyle?: StyleProp<TextStyle>;
|
|
107
|
+
agePickerWrapperStyle?: StyleProp<ViewStyle>;
|
|
108
|
+
agePickerLabelStyle?: StyleProp<TextStyle>;
|
|
109
|
+
pickerContainerStyle?: StyleProp<ViewStyle>;
|
|
110
|
+
pickerStyle?: StyleProp<TextStyle>;
|
|
97
111
|
}
|
|
98
112
|
|
|
99
113
|
// --- Component ---
|
|
@@ -139,6 +153,8 @@ const CarRentalForm: React.FC<CarRentalFormProps> = ({
|
|
|
139
153
|
agePickerLabelStyle,
|
|
140
154
|
pickerContainerStyle,
|
|
141
155
|
pickerStyle,
|
|
156
|
+
onSelectionChange,
|
|
157
|
+
ageLabel = "Driver's Age"
|
|
142
158
|
}) => {
|
|
143
159
|
const { theme, isRTL } = useTheme();
|
|
144
160
|
const styles = useMemo(() => themedStyles(theme, isRTL), [theme, isRTL]);
|
|
@@ -161,6 +177,23 @@ const CarRentalForm: React.FC<CarRentalFormProps> = ({
|
|
|
161
177
|
const [age, setAge] = useState<number>();
|
|
162
178
|
const [focusedInput, setFocusedInput] = useState<FormInputType>();
|
|
163
179
|
|
|
180
|
+
useEffect(() => {
|
|
181
|
+
onSelectionChange?.({
|
|
182
|
+
from: fromLocation,
|
|
183
|
+
to: toLocation,
|
|
184
|
+
pickup: pickupDate,
|
|
185
|
+
dropoff: dropoffDate,
|
|
186
|
+
driverAge: age,
|
|
187
|
+
});
|
|
188
|
+
}, [
|
|
189
|
+
fromLocation,
|
|
190
|
+
toLocation,
|
|
191
|
+
pickupDate,
|
|
192
|
+
dropoffDate,
|
|
193
|
+
age,
|
|
194
|
+
onSelectionChange,
|
|
195
|
+
]);
|
|
196
|
+
|
|
164
197
|
// --- Handlers ---
|
|
165
198
|
const handleSwap = useCallback(() => {
|
|
166
199
|
const currentFrom = fromLocation;
|
|
@@ -192,9 +225,8 @@ const CarRentalForm: React.FC<CarRentalFormProps> = ({
|
|
|
192
225
|
setToLocation(item.value);
|
|
193
226
|
toInputRef.current?.blur();
|
|
194
227
|
}
|
|
195
|
-
// setFocusedInput(undefined); // Hide suggestions after selection
|
|
196
228
|
}}
|
|
197
|
-
style={[styles.suggestionItem, suggestionItemStyle]}
|
|
229
|
+
style={[styles.suggestionItem, suggestionItemStyle]}
|
|
198
230
|
>
|
|
199
231
|
<Text style={[styles.suggestionItemText, suggestionItemTextStyle]}>
|
|
200
232
|
{item.value}
|
|
@@ -237,25 +269,26 @@ const CarRentalForm: React.FC<CarRentalFormProps> = ({
|
|
|
237
269
|
data={suggestionData}
|
|
238
270
|
visible={focusedInput === FormInputType.CAR_PICKUP}
|
|
239
271
|
renderItemContent={suggestionRenderItem}
|
|
240
|
-
containerStyle={suggestionListContainerStyle}
|
|
272
|
+
containerStyle={suggestionListContainerStyle}
|
|
241
273
|
/>
|
|
242
274
|
)}
|
|
243
275
|
</View>
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
276
|
+
{onSwapPress && (
|
|
277
|
+
<View style={[styles.swapButtonContainer, swapButtonContainerStyle]}>
|
|
278
|
+
<TouchableOpacity
|
|
279
|
+
style={[styles.swapButton, swapButtonStyle]}
|
|
280
|
+
onPress={handleSwap}
|
|
281
|
+
activeOpacity={0.7}
|
|
282
|
+
>
|
|
283
|
+
<Ionicons
|
|
284
|
+
name={swapIconName}
|
|
285
|
+
size={20}
|
|
286
|
+
color={theme.onSurface}
|
|
287
|
+
style={swapIconStyle}
|
|
288
|
+
/>
|
|
289
|
+
</TouchableOpacity>
|
|
290
|
+
</View>
|
|
291
|
+
)}
|
|
259
292
|
|
|
260
293
|
{/* Apply inputWrapperStyle */}
|
|
261
294
|
<View style={[styles.inputWrapper, inputWrapperStyle]}>
|
|
@@ -302,7 +335,7 @@ const CarRentalForm: React.FC<CarRentalFormProps> = ({
|
|
|
302
335
|
]}
|
|
303
336
|
labelStyle={[labelStyle, dateRangePickerLabelStyle]}
|
|
304
337
|
inputGroupStyle={dateRangePickerInputGroupStyle}
|
|
305
|
-
calendarContainerStyle={dateRangePickerCalendarContainerStyle}
|
|
338
|
+
calendarContainerStyle={dateRangePickerCalendarContainerStyle}
|
|
306
339
|
calendarThemeOverrides={calendarThemeOverrides}
|
|
307
340
|
onDatesChange={(d) => {
|
|
308
341
|
setDropoffDate(d.return);
|
|
@@ -314,7 +347,7 @@ const CarRentalForm: React.FC<CarRentalFormProps> = ({
|
|
|
314
347
|
<View style={[styles.pickupRow, pickupRowStyle]}>
|
|
315
348
|
<View style={[styles.agePickerWrapper, agePickerWrapperStyle]}>
|
|
316
349
|
<Text style={[styles.label, labelStyle, agePickerLabelStyle]}>
|
|
317
|
-
|
|
350
|
+
{ageLabel}
|
|
318
351
|
</Text>
|
|
319
352
|
<View style={[styles.pickerContainer, pickerContainerStyle]}>
|
|
320
353
|
<Picker
|
|
@@ -323,7 +356,11 @@ const CarRentalForm: React.FC<CarRentalFormProps> = ({
|
|
|
323
356
|
style={[styles.picker, pickerStyle]}
|
|
324
357
|
dropdownIconColor={theme.onSurface}
|
|
325
358
|
>
|
|
326
|
-
<Picker.Item
|
|
359
|
+
<Picker.Item
|
|
360
|
+
label="Select Age"
|
|
361
|
+
value={undefined}
|
|
362
|
+
enabled={false}
|
|
363
|
+
/>
|
|
327
364
|
{Array.from({ length: 80 - 21 + 1 }, (_, i) => i + 21).map(
|
|
328
365
|
(n) => (
|
|
329
366
|
<Picker.Item key={n} label={n.toString()} value={n} />
|
|
@@ -332,18 +369,20 @@ const CarRentalForm: React.FC<CarRentalFormProps> = ({
|
|
|
332
369
|
</Picker>
|
|
333
370
|
</View>
|
|
334
371
|
</View>
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
372
|
+
{onSearchPress && (
|
|
373
|
+
<TouchableOpacity
|
|
374
|
+
style={[styles.searchButton, searchButtonStyle]}
|
|
375
|
+
onPress={handleSearch}
|
|
376
|
+
activeOpacity={0.8}
|
|
377
|
+
>
|
|
378
|
+
<Ionicons
|
|
379
|
+
name={searchIconName}
|
|
380
|
+
size={24}
|
|
381
|
+
color={theme.onPrimary}
|
|
382
|
+
style={searchIconStyle}
|
|
383
|
+
/>
|
|
384
|
+
</TouchableOpacity>
|
|
385
|
+
)}
|
|
347
386
|
</View>
|
|
348
387
|
</View>
|
|
349
388
|
);
|
|
@@ -359,11 +398,11 @@ const themedStyles = (theme: ThemeType, isRTL: boolean) =>
|
|
|
359
398
|
borderBottomLeftRadius: 8,
|
|
360
399
|
},
|
|
361
400
|
inputGroupContainer: {
|
|
362
|
-
position: "relative",
|
|
401
|
+
position: "relative",
|
|
363
402
|
},
|
|
364
403
|
inputWrapper: {
|
|
365
404
|
marginBottom: 15,
|
|
366
|
-
position: "relative",
|
|
405
|
+
position: "relative",
|
|
367
406
|
},
|
|
368
407
|
label: {
|
|
369
408
|
color: theme.labelText,
|
|
@@ -403,7 +442,7 @@ const themedStyles = (theme: ThemeType, isRTL: boolean) =>
|
|
|
403
442
|
gap: 10,
|
|
404
443
|
},
|
|
405
444
|
agePickerWrapper: {
|
|
406
|
-
flex: 1,
|
|
445
|
+
flex: 1,
|
|
407
446
|
},
|
|
408
447
|
pickerContainer: {
|
|
409
448
|
borderWidth: 1,
|