@rocapine/react-native-onboarding-ui 1.9.0 → 1.10.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/dist/UI/Pages/ComposableScreen/elements/DatePickerElement.d.ts +68 -0
- package/dist/UI/Pages/ComposableScreen/elements/DatePickerElement.d.ts.map +1 -0
- package/dist/UI/Pages/ComposableScreen/elements/DatePickerElement.js +120 -0
- package/dist/UI/Pages/ComposableScreen/elements/DatePickerElement.js.map +1 -0
- package/dist/UI/Pages/ComposableScreen/elements/renderElement.d.ts.map +1 -1
- package/dist/UI/Pages/ComposableScreen/elements/renderElement.js +4 -0
- package/dist/UI/Pages/ComposableScreen/elements/renderElement.js.map +1 -1
- package/dist/UI/Pages/ComposableScreen/types.d.ts +7 -0
- package/dist/UI/Pages/ComposableScreen/types.d.ts.map +1 -1
- package/dist/UI/Pages/ComposableScreen/types.js +7 -0
- package/dist/UI/Pages/ComposableScreen/types.js.map +1 -1
- package/package.json +7 -2
- package/src/UI/Pages/ComposableScreen/elements/DatePickerElement.tsx +172 -0
- package/src/UI/Pages/ComposableScreen/elements/renderElement.tsx +5 -0
- package/src/UI/Pages/ComposableScreen/types.ts +14 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { BaseBoxProps } from "./BaseBoxProps";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import type { UIElement } from "../types";
|
|
5
|
+
import type { RenderContext } from "./shared";
|
|
6
|
+
export type DatePickerElementProps = BaseBoxProps & {
|
|
7
|
+
variableName?: string;
|
|
8
|
+
defaultValue?: string;
|
|
9
|
+
minimumDate?: string;
|
|
10
|
+
maximumDate?: string;
|
|
11
|
+
mode?: "date" | "time" | "datetime";
|
|
12
|
+
display?: "default" | "spinner" | "calendar" | "clock" | "compact" | "inline";
|
|
13
|
+
textColor?: string;
|
|
14
|
+
accentColor?: string;
|
|
15
|
+
locale?: string;
|
|
16
|
+
};
|
|
17
|
+
export declare const DatePickerElementPropsSchema: z.ZodObject<{
|
|
18
|
+
width: z.ZodOptional<z.ZodNumber>;
|
|
19
|
+
height: z.ZodOptional<z.ZodNumber>;
|
|
20
|
+
alignSelf: z.ZodOptional<z.ZodEnum<{
|
|
21
|
+
auto: "auto";
|
|
22
|
+
center: "center";
|
|
23
|
+
"flex-start": "flex-start";
|
|
24
|
+
"flex-end": "flex-end";
|
|
25
|
+
stretch: "stretch";
|
|
26
|
+
baseline: "baseline";
|
|
27
|
+
}>>;
|
|
28
|
+
opacity: z.ZodOptional<z.ZodNumber>;
|
|
29
|
+
margin: z.ZodOptional<z.ZodNumber>;
|
|
30
|
+
marginHorizontal: z.ZodOptional<z.ZodNumber>;
|
|
31
|
+
marginVertical: z.ZodOptional<z.ZodNumber>;
|
|
32
|
+
padding: z.ZodOptional<z.ZodNumber>;
|
|
33
|
+
paddingHorizontal: z.ZodOptional<z.ZodNumber>;
|
|
34
|
+
paddingVertical: z.ZodOptional<z.ZodNumber>;
|
|
35
|
+
borderWidth: z.ZodOptional<z.ZodNumber>;
|
|
36
|
+
borderRadius: z.ZodOptional<z.ZodNumber>;
|
|
37
|
+
borderColor: z.ZodOptional<z.ZodString>;
|
|
38
|
+
variableName: z.ZodOptional<z.ZodString>;
|
|
39
|
+
defaultValue: z.ZodOptional<z.ZodString>;
|
|
40
|
+
minimumDate: z.ZodOptional<z.ZodString>;
|
|
41
|
+
maximumDate: z.ZodOptional<z.ZodString>;
|
|
42
|
+
mode: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
43
|
+
date: "date";
|
|
44
|
+
time: "time";
|
|
45
|
+
datetime: "datetime";
|
|
46
|
+
}>>>;
|
|
47
|
+
display: z.ZodOptional<z.ZodEnum<{
|
|
48
|
+
default: "default";
|
|
49
|
+
spinner: "spinner";
|
|
50
|
+
calendar: "calendar";
|
|
51
|
+
clock: "clock";
|
|
52
|
+
compact: "compact";
|
|
53
|
+
inline: "inline";
|
|
54
|
+
}>>;
|
|
55
|
+
textColor: z.ZodOptional<z.ZodString>;
|
|
56
|
+
accentColor: z.ZodOptional<z.ZodString>;
|
|
57
|
+
locale: z.ZodOptional<z.ZodString>;
|
|
58
|
+
}, z.core.$strip>;
|
|
59
|
+
type DatePickerUIElement = Extract<UIElement, {
|
|
60
|
+
type: "DatePicker";
|
|
61
|
+
}>;
|
|
62
|
+
type Props = {
|
|
63
|
+
element: DatePickerUIElement;
|
|
64
|
+
ctx: RenderContext;
|
|
65
|
+
};
|
|
66
|
+
export declare const DatePickerElementComponent: ({ element, ctx }: Props) => React.ReactElement;
|
|
67
|
+
export {};
|
|
68
|
+
//# sourceMappingURL=DatePickerElement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePickerElement.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/DatePickerElement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACpC,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUvC,CAAC;AAEH,KAAK,mBAAmB,GAAG,OAAO,CAAC,SAAS,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC;AAEtE,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,mBAAmB,CAAC;IAC7B,GAAG,EAAE,aAAa,CAAC;CACpB,CAAC;AAYF,eAAO,MAAM,0BAA0B,GAAI,kBAAkB,KAAK,KAAG,KAAK,CAAC,YA0H1E,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DatePickerElementComponent = exports.DatePickerElementPropsSchema = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
const react_native_1 = require("react-native");
|
|
10
|
+
const datetimepicker_1 = __importDefault(require("@react-native-community/datetimepicker"));
|
|
11
|
+
const BaseBoxProps_1 = require("./BaseBoxProps");
|
|
12
|
+
const zod_1 = require("zod");
|
|
13
|
+
exports.DatePickerElementPropsSchema = BaseBoxProps_1.BaseBoxPropsSchema.extend({
|
|
14
|
+
variableName: zod_1.z.string().min(1).optional(),
|
|
15
|
+
defaultValue: zod_1.z.string().refine((s) => !isNaN(Date.parse(s)), { message: "Invalid date string" }).optional(),
|
|
16
|
+
minimumDate: zod_1.z.string().refine((s) => !isNaN(Date.parse(s)), { message: "Invalid date string" }).optional(),
|
|
17
|
+
maximumDate: zod_1.z.string().refine((s) => !isNaN(Date.parse(s)), { message: "Invalid date string" }).optional(),
|
|
18
|
+
mode: zod_1.z.enum(["date", "time", "datetime"]).optional().default("date"),
|
|
19
|
+
display: zod_1.z.enum(["default", "spinner", "calendar", "clock", "compact", "inline"]).optional(),
|
|
20
|
+
textColor: zod_1.z.string().optional(),
|
|
21
|
+
accentColor: zod_1.z.string().optional(),
|
|
22
|
+
locale: zod_1.z.string().optional(),
|
|
23
|
+
});
|
|
24
|
+
function formatDate(date, mode) {
|
|
25
|
+
if (mode === "time") {
|
|
26
|
+
return date.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" });
|
|
27
|
+
}
|
|
28
|
+
if (mode === "datetime") {
|
|
29
|
+
return date.toLocaleString([], { dateStyle: "medium", timeStyle: "short" });
|
|
30
|
+
}
|
|
31
|
+
return date.toLocaleDateString([], { dateStyle: "medium" });
|
|
32
|
+
}
|
|
33
|
+
const DatePickerElementComponent = ({ element, ctx }) => {
|
|
34
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
35
|
+
const { theme, variables, setVariable } = ctx;
|
|
36
|
+
const { props } = element;
|
|
37
|
+
const persistedValue = props.variableName ? (_a = variables[props.variableName]) === null || _a === void 0 ? void 0 : _a.value : undefined;
|
|
38
|
+
const initialDate = persistedValue
|
|
39
|
+
? new Date(persistedValue)
|
|
40
|
+
: props.defaultValue
|
|
41
|
+
? new Date(props.defaultValue)
|
|
42
|
+
: new Date();
|
|
43
|
+
const [date, setDate] = (0, react_1.useState)(initialDate);
|
|
44
|
+
const [isPickerVisible, setPickerVisible] = (0, react_1.useState)(false);
|
|
45
|
+
const mode = (_b = props.mode) !== null && _b !== void 0 ? _b : "date";
|
|
46
|
+
// Tracks which variableName has been seeded so re-renders don't clobber a
|
|
47
|
+
// persisted value that arrived after the first render.
|
|
48
|
+
const seededVariableRef = (0, react_1.useRef)(undefined);
|
|
49
|
+
(0, react_1.useEffect)(() => {
|
|
50
|
+
if (props.variableName &&
|
|
51
|
+
persistedValue === undefined &&
|
|
52
|
+
seededVariableRef.current !== props.variableName) {
|
|
53
|
+
seededVariableRef.current = props.variableName;
|
|
54
|
+
setVariable(props.variableName, {
|
|
55
|
+
value: initialDate.toISOString(),
|
|
56
|
+
label: formatDate(initialDate, mode),
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}, [props.variableName, persistedValue, initialDate, mode, setVariable]);
|
|
60
|
+
const handleChange = (_event, selected) => {
|
|
61
|
+
if (!selected)
|
|
62
|
+
return;
|
|
63
|
+
setDate(selected);
|
|
64
|
+
if (props.variableName) {
|
|
65
|
+
setVariable(props.variableName, {
|
|
66
|
+
value: selected.toISOString(),
|
|
67
|
+
label: formatDate(selected, mode),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const containerStyle = {
|
|
72
|
+
alignSelf: props.alignSelf,
|
|
73
|
+
width: props.width,
|
|
74
|
+
height: props.height,
|
|
75
|
+
margin: props.margin,
|
|
76
|
+
marginHorizontal: props.marginHorizontal,
|
|
77
|
+
marginVertical: props.marginVertical,
|
|
78
|
+
padding: props.padding,
|
|
79
|
+
paddingHorizontal: props.paddingHorizontal,
|
|
80
|
+
paddingVertical: props.paddingVertical,
|
|
81
|
+
opacity: props.opacity,
|
|
82
|
+
borderWidth: props.borderWidth,
|
|
83
|
+
borderRadius: props.borderRadius,
|
|
84
|
+
borderColor: props.borderColor,
|
|
85
|
+
overflow: "hidden",
|
|
86
|
+
};
|
|
87
|
+
const pickerProps = {
|
|
88
|
+
value: date,
|
|
89
|
+
mode,
|
|
90
|
+
onChange: handleChange,
|
|
91
|
+
minimumDate: props.minimumDate ? new Date(props.minimumDate) : undefined,
|
|
92
|
+
maximumDate: props.maximumDate ? new Date(props.maximumDate) : undefined,
|
|
93
|
+
// Fall back to theme tokens when CMS props are not provided.
|
|
94
|
+
textColor: (_c = props.textColor) !== null && _c !== void 0 ? _c : theme.colors.text.primary,
|
|
95
|
+
accentColor: (_d = props.accentColor) !== null && _d !== void 0 ? _d : theme.colors.primary,
|
|
96
|
+
locale: props.locale,
|
|
97
|
+
};
|
|
98
|
+
if (react_native_1.Platform.OS === "android") {
|
|
99
|
+
return ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: containerStyle, children: [(0, jsx_runtime_1.jsxs)(react_native_1.Pressable, { onPress: () => setPickerVisible(true), style: {
|
|
100
|
+
flexDirection: "row",
|
|
101
|
+
alignItems: "center",
|
|
102
|
+
justifyContent: "space-between",
|
|
103
|
+
paddingVertical: 12,
|
|
104
|
+
paddingHorizontal: 16,
|
|
105
|
+
borderRadius: (_e = props.borderRadius) !== null && _e !== void 0 ? _e : 8,
|
|
106
|
+
borderWidth: (_f = props.borderWidth) !== null && _f !== void 0 ? _f : 1,
|
|
107
|
+
borderColor: (_g = props.borderColor) !== null && _g !== void 0 ? _g : theme.colors.neutral.low,
|
|
108
|
+
backgroundColor: theme.colors.neutral.lowest,
|
|
109
|
+
}, children: [(0, jsx_runtime_1.jsx)(react_native_1.Text, { style: {
|
|
110
|
+
color: (_h = props.textColor) !== null && _h !== void 0 ? _h : theme.colors.text.primary,
|
|
111
|
+
fontSize: theme.typography.textStyles.body.fontSize,
|
|
112
|
+
}, children: formatDate(date, mode) }), (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: { color: theme.colors.text.tertiary, fontSize: 16 }, children: "\u203A" })] }), isPickerVisible && ((0, jsx_runtime_1.jsx)(datetimepicker_1.default, Object.assign({}, pickerProps, { display: ((_j = props.display) !== null && _j !== void 0 ? _j : "default"), onChange: (event, selected) => {
|
|
113
|
+
setPickerVisible(false);
|
|
114
|
+
handleChange(event, selected);
|
|
115
|
+
} })))] }));
|
|
116
|
+
}
|
|
117
|
+
return ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: containerStyle, children: (0, jsx_runtime_1.jsx)(datetimepicker_1.default, Object.assign({}, pickerProps, { display: ((_k = props.display) !== null && _k !== void 0 ? _k : "spinner") })) }));
|
|
118
|
+
};
|
|
119
|
+
exports.DatePickerElementComponent = DatePickerElementComponent;
|
|
120
|
+
//# sourceMappingURL=DatePickerElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePickerElement.js","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/DatePickerElement.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderElement.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/renderElement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"renderElement.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/renderElement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAczC,eAAO,MAAM,aAAa,GACxB,SAAS,SAAS,EAClB,KAAK,aAAa,EAClB,aAAa,QAAQ,GAAG,QAAQ,KAC/B,KAAK,CAAC,SAkDR,CAAC"}
|
|
@@ -13,6 +13,7 @@ const InputElement_1 = require("./InputElement");
|
|
|
13
13
|
const RadioGroupElement_1 = require("./RadioGroupElement");
|
|
14
14
|
const CheckboxGroupElement_1 = require("./CheckboxGroupElement");
|
|
15
15
|
const ButtonElement_1 = require("./ButtonElement");
|
|
16
|
+
const DatePickerElement_1 = require("./DatePickerElement");
|
|
16
17
|
const renderElement = (element, ctx, parentType) => {
|
|
17
18
|
if (element.type === "YStack" || element.type === "XStack") {
|
|
18
19
|
return (0, jsx_runtime_1.jsx)(StackElement_1.StackElementComponent, { element: element, ctx: ctx, parentType: parentType }, element.id);
|
|
@@ -47,6 +48,9 @@ const renderElement = (element, ctx, parentType) => {
|
|
|
47
48
|
if (element.type === "Button") {
|
|
48
49
|
return (0, jsx_runtime_1.jsx)(ButtonElement_1.ButtonElementComponent, { element: element, ctx: ctx }, element.id);
|
|
49
50
|
}
|
|
51
|
+
if (element.type === "DatePicker") {
|
|
52
|
+
return (0, jsx_runtime_1.jsx)(DatePickerElement_1.DatePickerElementComponent, { element: element, ctx: ctx }, element.id);
|
|
53
|
+
}
|
|
50
54
|
return null;
|
|
51
55
|
};
|
|
52
56
|
exports.renderElement = renderElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderElement.js","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/renderElement.tsx"],"names":[],"mappings":";;;;AAGA,iDAAuD;AACvD,+CAAqD;AACrD,iDAAuD;AACvD,mDAAyD;AACzD,+CAAoD;AACpD,+CAAqD;AACrD,iDAAsD;AACtD,iDAAuD;AACvD,2DAA0D;AAC1D,iEAAgE;AAChE,mDAAyD;
|
|
1
|
+
{"version":3,"file":"renderElement.js","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/renderElement.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import { type InputElementProps } from "./elements/InputElement";
|
|
|
10
10
|
import { type ButtonElementProps } from "./elements/ButtonElement";
|
|
11
11
|
import { type RadioGroupElementProps } from "./elements/RadioGroupElement";
|
|
12
12
|
import { type CheckboxGroupElementProps } from "./elements/CheckboxGroupElement";
|
|
13
|
+
import { type DatePickerElementProps } from "./elements/DatePickerElement";
|
|
13
14
|
export type { BaseBoxProps } from "./elements/BaseBoxProps";
|
|
14
15
|
export { BaseBoxPropsSchema } from "./elements/BaseBoxProps";
|
|
15
16
|
export type { StackElementProps } from "./elements/StackElement";
|
|
@@ -23,6 +24,7 @@ export type { InputElementProps } from "./elements/InputElement";
|
|
|
23
24
|
export type { ButtonElementProps } from "./elements/ButtonElement";
|
|
24
25
|
export type { RadioGroupElementProps } from "./elements/RadioGroupElement";
|
|
25
26
|
export type { CheckboxGroupElementProps } from "./elements/CheckboxGroupElement";
|
|
27
|
+
export type { DatePickerElementProps } from "./elements/DatePickerElement";
|
|
26
28
|
export type UIElement = {
|
|
27
29
|
id: string;
|
|
28
30
|
name?: string;
|
|
@@ -79,6 +81,11 @@ export type UIElement = {
|
|
|
79
81
|
name?: string;
|
|
80
82
|
type: "CheckboxGroup";
|
|
81
83
|
props: CheckboxGroupElementProps;
|
|
84
|
+
} | {
|
|
85
|
+
id: string;
|
|
86
|
+
name?: string;
|
|
87
|
+
type: "DatePicker";
|
|
88
|
+
props: DatePickerElementProps;
|
|
82
89
|
};
|
|
83
90
|
export declare const UIElementSchema: z.ZodType<UIElement>;
|
|
84
91
|
export declare const ComposableScreenStepPayloadSchema: z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/UI/Pages/ComposableScreen/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,iBAAiB,EAA2B,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,KAAK,gBAAgB,EAA0B,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,KAAK,iBAAiB,EAA2B,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,KAAK,kBAAkB,EAA4B,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAE,KAAK,gBAAgB,EAA0B,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,KAAK,gBAAgB,EAA0B,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,KAAK,iBAAiB,EAA2B,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,KAAK,iBAAiB,EAA2B,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,KAAK,kBAAkB,EAA4B,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAE,KAAK,sBAAsB,EAAgC,MAAM,8BAA8B,CAAC;AACzG,OAAO,EAAE,KAAK,yBAAyB,EAAmC,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/UI/Pages/ComposableScreen/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ const InputElement_1 = require("./elements/InputElement");
|
|
|
14
14
|
const ButtonElement_1 = require("./elements/ButtonElement");
|
|
15
15
|
const RadioGroupElement_1 = require("./elements/RadioGroupElement");
|
|
16
16
|
const CheckboxGroupElement_1 = require("./elements/CheckboxGroupElement");
|
|
17
|
+
const DatePickerElement_1 = require("./elements/DatePickerElement");
|
|
17
18
|
var BaseBoxProps_1 = require("./elements/BaseBoxProps");
|
|
18
19
|
Object.defineProperty(exports, "BaseBoxPropsSchema", { enumerable: true, get: function () { return BaseBoxProps_1.BaseBoxPropsSchema; } });
|
|
19
20
|
exports.UIElementSchema = zod_1.z.lazy(() => zod_1.z.union([
|
|
@@ -84,6 +85,12 @@ exports.UIElementSchema = zod_1.z.lazy(() => zod_1.z.union([
|
|
|
84
85
|
type: zod_1.z.literal("CheckboxGroup"),
|
|
85
86
|
props: CheckboxGroupElement_1.CheckboxGroupElementPropsSchema,
|
|
86
87
|
}),
|
|
88
|
+
zod_1.z.object({
|
|
89
|
+
id: zod_1.z.string(),
|
|
90
|
+
name: zod_1.z.string().optional(),
|
|
91
|
+
type: zod_1.z.literal("DatePicker"),
|
|
92
|
+
props: DatePickerElement_1.DatePickerElementPropsSchema,
|
|
93
|
+
}),
|
|
87
94
|
]));
|
|
88
95
|
exports.ComposableScreenStepPayloadSchema = zod_1.z.object({
|
|
89
96
|
elements: zod_1.z.array(exports.UIElementSchema),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/UI/Pages/ComposableScreen/types.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,oCAA+C;AAC/C,0DAA0F;AAC1F,wDAAuF;AACvF,0DAA0F;AAC1F,4DAA6F;AAC7F,wDAAuF;AACvF,wDAAuF;AACvF,0DAA0F;AAC1F,0DAA0F;AAC1F,4DAA6F;AAC7F,oEAAyG;AACzG,0EAAkH;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/UI/Pages/ComposableScreen/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rocapine/react-native-onboarding-ui",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.0",
|
|
4
4
|
"description": "UI components and renderers for Rocapine Onboarding Studio - Built on top of the headless SDK",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"zod": "^4.1.11"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
+
"@react-native-community/datetimepicker": "^8.2.0",
|
|
31
32
|
"@react-native-picker/picker": "^2.11.2",
|
|
32
33
|
"@shopify/react-native-skia": "2.4.18",
|
|
33
34
|
"@types/react": "^19.0.0",
|
|
@@ -42,8 +43,9 @@
|
|
|
42
43
|
"typescript": "^5.0.0"
|
|
43
44
|
},
|
|
44
45
|
"peerDependencies": {
|
|
46
|
+
"@react-native-community/datetimepicker": "*",
|
|
45
47
|
"@react-native-picker/picker": "*",
|
|
46
|
-
"@rocapine/react-native-onboarding": "^1.
|
|
48
|
+
"@rocapine/react-native-onboarding": "^1.10.0",
|
|
47
49
|
"@shopify/react-native-skia": ">=1.0.0",
|
|
48
50
|
"@tanstack/react-query": ">=5.0.0",
|
|
49
51
|
"@types/react": "*",
|
|
@@ -57,6 +59,9 @@
|
|
|
57
59
|
"expo-video": "*"
|
|
58
60
|
},
|
|
59
61
|
"peerDependenciesMeta": {
|
|
62
|
+
"@react-native-community/datetimepicker": {
|
|
63
|
+
"optional": true
|
|
64
|
+
},
|
|
60
65
|
"@react-native-picker/picker": {
|
|
61
66
|
"optional": true
|
|
62
67
|
},
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import React, { useEffect, useRef, useState } from "react";
|
|
2
|
+
import { Pressable, Text, View, Platform } from "react-native";
|
|
3
|
+
import DateTimePicker, { DateTimePickerEvent } from "@react-native-community/datetimepicker";
|
|
4
|
+
import { BaseBoxProps, BaseBoxPropsSchema } from "./BaseBoxProps";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import type { UIElement } from "../types";
|
|
7
|
+
import type { RenderContext } from "./shared";
|
|
8
|
+
|
|
9
|
+
export type DatePickerElementProps = BaseBoxProps & {
|
|
10
|
+
variableName?: string;
|
|
11
|
+
defaultValue?: string;
|
|
12
|
+
minimumDate?: string;
|
|
13
|
+
maximumDate?: string;
|
|
14
|
+
mode?: "date" | "time" | "datetime";
|
|
15
|
+
display?: "default" | "spinner" | "calendar" | "clock" | "compact" | "inline";
|
|
16
|
+
textColor?: string;
|
|
17
|
+
accentColor?: string;
|
|
18
|
+
locale?: string;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export const DatePickerElementPropsSchema = BaseBoxPropsSchema.extend({
|
|
22
|
+
variableName: z.string().min(1).optional(),
|
|
23
|
+
defaultValue: z.string().refine((s) => !isNaN(Date.parse(s)), { message: "Invalid date string" }).optional(),
|
|
24
|
+
minimumDate: z.string().refine((s) => !isNaN(Date.parse(s)), { message: "Invalid date string" }).optional(),
|
|
25
|
+
maximumDate: z.string().refine((s) => !isNaN(Date.parse(s)), { message: "Invalid date string" }).optional(),
|
|
26
|
+
mode: z.enum(["date", "time", "datetime"]).optional().default("date"),
|
|
27
|
+
display: z.enum(["default", "spinner", "calendar", "clock", "compact", "inline"]).optional(),
|
|
28
|
+
textColor: z.string().optional(),
|
|
29
|
+
accentColor: z.string().optional(),
|
|
30
|
+
locale: z.string().optional(),
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
type DatePickerUIElement = Extract<UIElement, { type: "DatePicker" }>;
|
|
34
|
+
|
|
35
|
+
type Props = {
|
|
36
|
+
element: DatePickerUIElement;
|
|
37
|
+
ctx: RenderContext;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
function formatDate(date: Date, mode: "date" | "time" | "datetime"): string {
|
|
41
|
+
if (mode === "time") {
|
|
42
|
+
return date.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" });
|
|
43
|
+
}
|
|
44
|
+
if (mode === "datetime") {
|
|
45
|
+
return date.toLocaleString([], { dateStyle: "medium", timeStyle: "short" });
|
|
46
|
+
}
|
|
47
|
+
return date.toLocaleDateString([], { dateStyle: "medium" });
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export const DatePickerElementComponent = ({ element, ctx }: Props): React.ReactElement => {
|
|
51
|
+
const { theme, variables, setVariable } = ctx;
|
|
52
|
+
const { props } = element;
|
|
53
|
+
|
|
54
|
+
const persistedValue = props.variableName ? variables[props.variableName]?.value : undefined;
|
|
55
|
+
const initialDate = persistedValue
|
|
56
|
+
? new Date(persistedValue)
|
|
57
|
+
: props.defaultValue
|
|
58
|
+
? new Date(props.defaultValue)
|
|
59
|
+
: new Date();
|
|
60
|
+
|
|
61
|
+
const [date, setDate] = useState<Date>(initialDate);
|
|
62
|
+
const [isPickerVisible, setPickerVisible] = useState(false);
|
|
63
|
+
const mode = props.mode ?? "date";
|
|
64
|
+
|
|
65
|
+
// Tracks which variableName has been seeded so re-renders don't clobber a
|
|
66
|
+
// persisted value that arrived after the first render.
|
|
67
|
+
const seededVariableRef = useRef<string | undefined>(undefined);
|
|
68
|
+
|
|
69
|
+
useEffect(() => {
|
|
70
|
+
if (
|
|
71
|
+
props.variableName &&
|
|
72
|
+
persistedValue === undefined &&
|
|
73
|
+
seededVariableRef.current !== props.variableName
|
|
74
|
+
) {
|
|
75
|
+
seededVariableRef.current = props.variableName;
|
|
76
|
+
setVariable(props.variableName, {
|
|
77
|
+
value: initialDate.toISOString(),
|
|
78
|
+
label: formatDate(initialDate, mode),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}, [props.variableName, persistedValue, initialDate, mode, setVariable]);
|
|
82
|
+
|
|
83
|
+
const handleChange = (_event: DateTimePickerEvent, selected?: Date) => {
|
|
84
|
+
if (!selected) return;
|
|
85
|
+
setDate(selected);
|
|
86
|
+
if (props.variableName) {
|
|
87
|
+
setVariable(props.variableName, {
|
|
88
|
+
value: selected.toISOString(),
|
|
89
|
+
label: formatDate(selected, mode),
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
const containerStyle = {
|
|
95
|
+
alignSelf: props.alignSelf,
|
|
96
|
+
width: props.width,
|
|
97
|
+
height: props.height,
|
|
98
|
+
margin: props.margin,
|
|
99
|
+
marginHorizontal: props.marginHorizontal,
|
|
100
|
+
marginVertical: props.marginVertical,
|
|
101
|
+
padding: props.padding,
|
|
102
|
+
paddingHorizontal: props.paddingHorizontal,
|
|
103
|
+
paddingVertical: props.paddingVertical,
|
|
104
|
+
opacity: props.opacity,
|
|
105
|
+
borderWidth: props.borderWidth,
|
|
106
|
+
borderRadius: props.borderRadius,
|
|
107
|
+
borderColor: props.borderColor,
|
|
108
|
+
overflow: "hidden" as const,
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
const pickerProps = {
|
|
112
|
+
value: date,
|
|
113
|
+
mode,
|
|
114
|
+
onChange: handleChange,
|
|
115
|
+
minimumDate: props.minimumDate ? new Date(props.minimumDate) : undefined,
|
|
116
|
+
maximumDate: props.maximumDate ? new Date(props.maximumDate) : undefined,
|
|
117
|
+
// Fall back to theme tokens when CMS props are not provided.
|
|
118
|
+
textColor: props.textColor ?? theme.colors.text.primary,
|
|
119
|
+
accentColor: props.accentColor ?? theme.colors.primary,
|
|
120
|
+
locale: props.locale,
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
if (Platform.OS === "android") {
|
|
124
|
+
return (
|
|
125
|
+
<View style={containerStyle}>
|
|
126
|
+
<Pressable
|
|
127
|
+
onPress={() => setPickerVisible(true)}
|
|
128
|
+
style={{
|
|
129
|
+
flexDirection: "row",
|
|
130
|
+
alignItems: "center",
|
|
131
|
+
justifyContent: "space-between",
|
|
132
|
+
paddingVertical: 12,
|
|
133
|
+
paddingHorizontal: 16,
|
|
134
|
+
borderRadius: props.borderRadius ?? 8,
|
|
135
|
+
borderWidth: props.borderWidth ?? 1,
|
|
136
|
+
borderColor: props.borderColor ?? theme.colors.neutral.low,
|
|
137
|
+
backgroundColor: theme.colors.neutral.lowest,
|
|
138
|
+
}}
|
|
139
|
+
>
|
|
140
|
+
<Text
|
|
141
|
+
style={{
|
|
142
|
+
color: props.textColor ?? theme.colors.text.primary,
|
|
143
|
+
fontSize: theme.typography.textStyles.body.fontSize,
|
|
144
|
+
}}
|
|
145
|
+
>
|
|
146
|
+
{formatDate(date, mode)}
|
|
147
|
+
</Text>
|
|
148
|
+
<Text style={{ color: theme.colors.text.tertiary, fontSize: 16 }}>›</Text>
|
|
149
|
+
</Pressable>
|
|
150
|
+
{isPickerVisible && (
|
|
151
|
+
<DateTimePicker
|
|
152
|
+
{...pickerProps}
|
|
153
|
+
display={(props.display ?? "default") as any}
|
|
154
|
+
onChange={(event, selected) => {
|
|
155
|
+
setPickerVisible(false);
|
|
156
|
+
handleChange(event, selected);
|
|
157
|
+
}}
|
|
158
|
+
/>
|
|
159
|
+
)}
|
|
160
|
+
</View>
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
return (
|
|
165
|
+
<View style={containerStyle}>
|
|
166
|
+
<DateTimePicker
|
|
167
|
+
{...pickerProps}
|
|
168
|
+
display={(props.display ?? "spinner") as any}
|
|
169
|
+
/>
|
|
170
|
+
</View>
|
|
171
|
+
);
|
|
172
|
+
};
|
|
@@ -12,6 +12,7 @@ import { InputElementComponent } from "./InputElement";
|
|
|
12
12
|
import { RadioGroupComponent } from "./RadioGroupElement";
|
|
13
13
|
import { CheckboxGroupComponent } from "./CheckboxGroupElement";
|
|
14
14
|
import { ButtonElementComponent } from "./ButtonElement";
|
|
15
|
+
import { DatePickerElementComponent } from "./DatePickerElement";
|
|
15
16
|
|
|
16
17
|
export const renderElement = (
|
|
17
18
|
element: UIElement,
|
|
@@ -62,5 +63,9 @@ export const renderElement = (
|
|
|
62
63
|
return <ButtonElementComponent key={element.id} element={element} ctx={ctx} />;
|
|
63
64
|
}
|
|
64
65
|
|
|
66
|
+
if (element.type === "DatePicker") {
|
|
67
|
+
return <DatePickerElementComponent key={element.id} element={element} ctx={ctx} />;
|
|
68
|
+
}
|
|
69
|
+
|
|
65
70
|
return null;
|
|
66
71
|
};
|
|
@@ -11,6 +11,7 @@ import { type InputElementProps, InputElementPropsSchema } from "./elements/Inpu
|
|
|
11
11
|
import { type ButtonElementProps, ButtonElementPropsSchema } from "./elements/ButtonElement";
|
|
12
12
|
import { type RadioGroupElementProps, RadioGroupElementPropsSchema } from "./elements/RadioGroupElement";
|
|
13
13
|
import { type CheckboxGroupElementProps, CheckboxGroupElementPropsSchema } from "./elements/CheckboxGroupElement";
|
|
14
|
+
import { type DatePickerElementProps, DatePickerElementPropsSchema } from "./elements/DatePickerElement";
|
|
14
15
|
|
|
15
16
|
export type { BaseBoxProps } from "./elements/BaseBoxProps";
|
|
16
17
|
export { BaseBoxPropsSchema } from "./elements/BaseBoxProps";
|
|
@@ -25,6 +26,7 @@ export type { InputElementProps } from "./elements/InputElement";
|
|
|
25
26
|
export type { ButtonElementProps } from "./elements/ButtonElement";
|
|
26
27
|
export type { RadioGroupElementProps } from "./elements/RadioGroupElement";
|
|
27
28
|
export type { CheckboxGroupElementProps } from "./elements/CheckboxGroupElement";
|
|
29
|
+
export type { DatePickerElementProps } from "./elements/DatePickerElement";
|
|
28
30
|
|
|
29
31
|
// UIElement union — must live here (not in elements/) to avoid circular deps
|
|
30
32
|
// because the Stack variant's children: UIElement[] references itself.
|
|
@@ -95,6 +97,12 @@ export type UIElement =
|
|
|
95
97
|
name?: string;
|
|
96
98
|
type: "CheckboxGroup";
|
|
97
99
|
props: CheckboxGroupElementProps;
|
|
100
|
+
}
|
|
101
|
+
| {
|
|
102
|
+
id: string;
|
|
103
|
+
name?: string;
|
|
104
|
+
type: "DatePicker";
|
|
105
|
+
props: DatePickerElementProps;
|
|
98
106
|
};
|
|
99
107
|
|
|
100
108
|
export const UIElementSchema: z.ZodType<UIElement> = z.lazy(() =>
|
|
@@ -166,6 +174,12 @@ export const UIElementSchema: z.ZodType<UIElement> = z.lazy(() =>
|
|
|
166
174
|
type: z.literal("CheckboxGroup"),
|
|
167
175
|
props: CheckboxGroupElementPropsSchema,
|
|
168
176
|
}),
|
|
177
|
+
z.object({
|
|
178
|
+
id: z.string(),
|
|
179
|
+
name: z.string().optional(),
|
|
180
|
+
type: z.literal("DatePicker"),
|
|
181
|
+
props: DatePickerElementPropsSchema,
|
|
182
|
+
}),
|
|
169
183
|
])
|
|
170
184
|
);
|
|
171
185
|
|