@rocapine/react-native-onboarding-ui 1.28.0 → 1.29.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.map +1 -1
- package/dist/UI/Pages/ComposableScreen/elements/DatePickerElement.js +23 -18
- package/dist/UI/Pages/ComposableScreen/elements/DatePickerElement.js.map +1 -1
- package/package.json +1 -1
- package/src/UI/Pages/ComposableScreen/elements/DatePickerElement.tsx +16 -8
|
@@ -1 +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,EAAO,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
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,EAAO,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAanD,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,YAyH1E,CAAC"}
|
|
@@ -12,11 +12,18 @@ const BaseBoxProps_1 = require("./BaseBoxProps");
|
|
|
12
12
|
const zod_1 = require("zod");
|
|
13
13
|
const shared_1 = require("./shared");
|
|
14
14
|
const GradientBox_1 = require("./GradientBox");
|
|
15
|
+
// The literal "now" resolves to the current date/time at render time.
|
|
16
|
+
// Use it for defaultValue/minimumDate/maximumDate when a static ISO string
|
|
17
|
+
// would go stale (e.g. a max date that should always be today).
|
|
18
|
+
const isDateStringOrNow = (s) => s === "now" || !isNaN(Date.parse(s));
|
|
19
|
+
// Resolve a DatePicker date prop (ISO string or the "now" sentinel) to a Date,
|
|
20
|
+
// or undefined if not set.
|
|
21
|
+
const resolveDate = (s) => s === undefined ? undefined : s === "now" ? new Date() : new Date(s);
|
|
15
22
|
exports.DatePickerElementPropsSchema = BaseBoxProps_1.BaseBoxPropsSchema.extend({
|
|
16
23
|
variableName: zod_1.z.string().min(1).optional(),
|
|
17
|
-
defaultValue: zod_1.z.string().refine(
|
|
18
|
-
minimumDate: zod_1.z.string().refine(
|
|
19
|
-
maximumDate: zod_1.z.string().refine(
|
|
24
|
+
defaultValue: zod_1.z.string().refine(isDateStringOrNow, { message: "Invalid date string" }).optional(),
|
|
25
|
+
minimumDate: zod_1.z.string().refine(isDateStringOrNow, { message: "Invalid date string" }).optional(),
|
|
26
|
+
maximumDate: zod_1.z.string().refine(isDateStringOrNow, { message: "Invalid date string" }).optional(),
|
|
20
27
|
mode: zod_1.z.enum(["date", "time", "datetime"]).optional().default("date"),
|
|
21
28
|
display: zod_1.z.enum(["default", "spinner", "calendar", "clock", "compact", "inline"]).optional(),
|
|
22
29
|
textColor: zod_1.z.string().optional(),
|
|
@@ -33,18 +40,16 @@ function formatDate(date, mode) {
|
|
|
33
40
|
return date.toLocaleDateString([], { dateStyle: "medium" });
|
|
34
41
|
}
|
|
35
42
|
const DatePickerElementComponent = ({ element, ctx }) => {
|
|
36
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
43
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
37
44
|
const { theme, variables, setVariable } = ctx;
|
|
38
45
|
const { props } = element;
|
|
39
46
|
const persistedValue = props.variableName ? (_a = variables[props.variableName]) === null || _a === void 0 ? void 0 : _a.value : undefined;
|
|
40
47
|
const initialDate = persistedValue
|
|
41
48
|
? new Date(persistedValue)
|
|
42
|
-
: props.defaultValue
|
|
43
|
-
? new Date(props.defaultValue)
|
|
44
|
-
: new Date();
|
|
49
|
+
: (_b = resolveDate(props.defaultValue)) !== null && _b !== void 0 ? _b : new Date();
|
|
45
50
|
const [date, setDate] = (0, react_1.useState)(initialDate);
|
|
46
51
|
const [isPickerVisible, setPickerVisible] = (0, react_1.useState)(false);
|
|
47
|
-
const mode = (
|
|
52
|
+
const mode = (_c = props.mode) !== null && _c !== void 0 ? _c : "date";
|
|
48
53
|
// Tracks which variableName has been seeded so re-renders don't clobber a
|
|
49
54
|
// persisted value that arrived after the first render.
|
|
50
55
|
const seededVariableRef = (0, react_1.useRef)(undefined);
|
|
@@ -91,11 +96,11 @@ const DatePickerElementComponent = ({ element, ctx }) => {
|
|
|
91
96
|
value: date,
|
|
92
97
|
mode,
|
|
93
98
|
onChange: handleChange,
|
|
94
|
-
minimumDate:
|
|
95
|
-
maximumDate:
|
|
99
|
+
minimumDate: resolveDate(props.minimumDate),
|
|
100
|
+
maximumDate: resolveDate(props.maximumDate),
|
|
96
101
|
// Fall back to theme tokens when CMS props are not provided.
|
|
97
|
-
textColor: (
|
|
98
|
-
accentColor: (
|
|
102
|
+
textColor: (_d = props.textColor) !== null && _d !== void 0 ? _d : theme.colors.text.primary,
|
|
103
|
+
accentColor: (_e = props.accentColor) !== null && _e !== void 0 ? _e : theme.colors.primary,
|
|
99
104
|
locale: props.locale,
|
|
100
105
|
};
|
|
101
106
|
if (react_native_1.Platform.OS === "android") {
|
|
@@ -105,19 +110,19 @@ const DatePickerElementComponent = ({ element, ctx }) => {
|
|
|
105
110
|
justifyContent: "space-between",
|
|
106
111
|
paddingVertical: 12,
|
|
107
112
|
paddingHorizontal: 16,
|
|
108
|
-
borderRadius: (
|
|
109
|
-
borderWidth: (
|
|
110
|
-
borderColor: (
|
|
113
|
+
borderRadius: (_f = props.borderRadius) !== null && _f !== void 0 ? _f : 8,
|
|
114
|
+
borderWidth: (_g = props.borderWidth) !== null && _g !== void 0 ? _g : 1,
|
|
115
|
+
borderColor: (_h = props.borderColor) !== null && _h !== void 0 ? _h : theme.colors.neutral.low,
|
|
111
116
|
backgroundColor: theme.colors.neutral.lowest,
|
|
112
117
|
}, children: [(0, jsx_runtime_1.jsx)(react_native_1.Text, { style: {
|
|
113
|
-
color: (
|
|
118
|
+
color: (_j = props.textColor) !== null && _j !== void 0 ? _j : theme.colors.text.primary,
|
|
114
119
|
fontSize: theme.typography.textStyles.body.fontSize,
|
|
115
|
-
}, 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: ((
|
|
120
|
+
}, 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: ((_k = props.display) !== null && _k !== void 0 ? _k : "default"), onChange: (event, selected) => {
|
|
116
121
|
setPickerVisible(false);
|
|
117
122
|
handleChange(event, selected);
|
|
118
123
|
} })))] }));
|
|
119
124
|
}
|
|
120
|
-
return ((0, jsx_runtime_1.jsx)(GradientBox_1.GradientBox, { gradient: props.backgroundGradient, style: containerStyle, children: (0, jsx_runtime_1.jsx)(datetimepicker_1.default, Object.assign({}, pickerProps, { display: ((
|
|
125
|
+
return ((0, jsx_runtime_1.jsx)(GradientBox_1.GradientBox, { gradient: props.backgroundGradient, style: containerStyle, children: (0, jsx_runtime_1.jsx)(datetimepicker_1.default, Object.assign({}, pickerProps, { display: ((_l = props.display) !== null && _l !== void 0 ? _l : "spinner") })) }));
|
|
121
126
|
};
|
|
122
127
|
exports.DatePickerElementComponent = DatePickerElementComponent;
|
|
123
128
|
//# sourceMappingURL=DatePickerElement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerElement.js","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/DatePickerElement.tsx"],"names":[],"mappings":";;;;;;;AAAA,iCAA2D;AAC3D,+CAA+D;AAC/D,4FAA6F;AAC7F,iDAAkE;AAClE,6BAAwB;AAExB,qCAAmD;AACnD,+CAA4C;
|
|
1
|
+
{"version":3,"file":"DatePickerElement.js","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/DatePickerElement.tsx"],"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.29.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",
|
|
@@ -7,6 +7,16 @@ import type { UIElement } from "../types";
|
|
|
7
7
|
import { dim, type RenderContext } from "./shared";
|
|
8
8
|
import { GradientBox } from "./GradientBox";
|
|
9
9
|
|
|
10
|
+
// The literal "now" resolves to the current date/time at render time.
|
|
11
|
+
// Use it for defaultValue/minimumDate/maximumDate when a static ISO string
|
|
12
|
+
// would go stale (e.g. a max date that should always be today).
|
|
13
|
+
const isDateStringOrNow = (s: string) => s === "now" || !isNaN(Date.parse(s));
|
|
14
|
+
|
|
15
|
+
// Resolve a DatePicker date prop (ISO string or the "now" sentinel) to a Date,
|
|
16
|
+
// or undefined if not set.
|
|
17
|
+
const resolveDate = (s?: string): Date | undefined =>
|
|
18
|
+
s === undefined ? undefined : s === "now" ? new Date() : new Date(s);
|
|
19
|
+
|
|
10
20
|
export type DatePickerElementProps = BaseBoxProps & {
|
|
11
21
|
variableName?: string;
|
|
12
22
|
defaultValue?: string;
|
|
@@ -21,9 +31,9 @@ export type DatePickerElementProps = BaseBoxProps & {
|
|
|
21
31
|
|
|
22
32
|
export const DatePickerElementPropsSchema = BaseBoxPropsSchema.extend({
|
|
23
33
|
variableName: z.string().min(1).optional(),
|
|
24
|
-
defaultValue: z.string().refine(
|
|
25
|
-
minimumDate: z.string().refine(
|
|
26
|
-
maximumDate: z.string().refine(
|
|
34
|
+
defaultValue: z.string().refine(isDateStringOrNow, { message: "Invalid date string" }).optional(),
|
|
35
|
+
minimumDate: z.string().refine(isDateStringOrNow, { message: "Invalid date string" }).optional(),
|
|
36
|
+
maximumDate: z.string().refine(isDateStringOrNow, { message: "Invalid date string" }).optional(),
|
|
27
37
|
mode: z.enum(["date", "time", "datetime"]).optional().default("date"),
|
|
28
38
|
display: z.enum(["default", "spinner", "calendar", "clock", "compact", "inline"]).optional(),
|
|
29
39
|
textColor: z.string().optional(),
|
|
@@ -55,9 +65,7 @@ export const DatePickerElementComponent = ({ element, ctx }: Props): React.React
|
|
|
55
65
|
const persistedValue = props.variableName ? variables[props.variableName]?.value : undefined;
|
|
56
66
|
const initialDate = persistedValue
|
|
57
67
|
? new Date(persistedValue)
|
|
58
|
-
: props.defaultValue
|
|
59
|
-
? new Date(props.defaultValue)
|
|
60
|
-
: new Date();
|
|
68
|
+
: resolveDate(props.defaultValue) ?? new Date();
|
|
61
69
|
|
|
62
70
|
const [date, setDate] = useState<Date>(initialDate);
|
|
63
71
|
const [isPickerVisible, setPickerVisible] = useState(false);
|
|
@@ -114,8 +122,8 @@ export const DatePickerElementComponent = ({ element, ctx }: Props): React.React
|
|
|
114
122
|
value: date,
|
|
115
123
|
mode,
|
|
116
124
|
onChange: handleChange,
|
|
117
|
-
minimumDate:
|
|
118
|
-
maximumDate:
|
|
125
|
+
minimumDate: resolveDate(props.minimumDate),
|
|
126
|
+
maximumDate: resolveDate(props.maximumDate),
|
|
119
127
|
// Fall back to theme tokens when CMS props are not provided.
|
|
120
128
|
textColor: props.textColor ?? theme.colors.text.primary,
|
|
121
129
|
accentColor: props.accentColor ?? theme.colors.primary,
|