@react-typed-forms/schemas-rn 1.0.0 → 2.0.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.
Files changed (38) hide show
  1. package/lib/components/CheckRenderer.d.ts +11 -0
  2. package/lib/components/ControlInput.d.ts +23 -0
  3. package/lib/components/DefaultAccordion.d.ts +21 -0
  4. package/lib/components/DefaultArrayRenderer.d.ts +24 -0
  5. package/lib/components/DefaultDialogRenderer.d.ts +16 -0
  6. package/lib/components/DefaultDisplay.d.ts +8 -0
  7. package/lib/components/DefaultDisplayOnly.d.ts +13 -0
  8. package/lib/components/DefaultGroupRenderer.d.ts +16 -0
  9. package/lib/components/DefaultLayout.d.ts +7 -0
  10. package/lib/components/DefaultVisibility.d.ts +7 -0
  11. package/lib/components/DefaultWizardRenderer.d.ts +2 -0
  12. package/lib/components/GridRenderer.d.ts +2 -0
  13. package/lib/components/Icon.d.ts +1 -1
  14. package/lib/components/NullToggle.d.ts +1 -0
  15. package/lib/components/RNCheckButtons.d.ts +2 -0
  16. package/lib/components/RNCheckboxRenderer.d.ts +14 -0
  17. package/lib/components/RNDateTimePickerRenderer.d.ts +1 -1
  18. package/lib/components/RNDialog.d.ts +41 -1
  19. package/lib/components/RNHtmlRenderer.d.ts +1 -1
  20. package/lib/components/RNScrollListRenderer.d.ts +7 -0
  21. package/lib/components/RNSelectRenderer.d.ts +4 -1
  22. package/lib/components/RNTextInputRenderer.d.ts +13 -0
  23. package/lib/components/SelectDataRenderer.d.ts +23 -0
  24. package/lib/createButtonActionRenderer.d.ts +3 -0
  25. package/lib/createDefaultRNRenderers.d.ts +8 -0
  26. package/lib/defaultTailwindTheme.d.ts +95 -0
  27. package/lib/index.cjs +2326 -400
  28. package/lib/index.cjs.map +1 -1
  29. package/lib/index.d.ts +8 -2
  30. package/lib/index.js +2218 -399
  31. package/lib/index.js.map +1 -1
  32. package/lib/rendererOptions.d.ts +209 -0
  33. package/lib/selectUtils.d.ts +16 -0
  34. package/lib/tailwind.d.ts +1 -3
  35. package/package.json +42 -43
  36. package/tsconfig.json +3 -1
  37. package/lib/components/RNCheckbox.d.ts +0 -12
  38. package/lib/components/RNTextInput.d.ts +0 -6
@@ -0,0 +1,209 @@
1
+ import { ReactNode, ReactElement } from "react";
2
+ import { Control } from "@react-typed-forms/core";
3
+ import { CheckRendererOptions, FieldOption, DataRendererRegistration, ArrayActionOptions, RendererRegistration, FormRenderer, IconReference, AdornmentPlacement, IconPlacement, ActionRendererProps, ControlDataContext, OptionalAdornment } from "@react-typed-forms/schemas";
4
+ export interface CustomNavigationProps {
5
+ className?: string;
6
+ page: number;
7
+ totalPages: number;
8
+ next: ActionRendererProps;
9
+ prev: ActionRendererProps;
10
+ formRenderer: FormRenderer;
11
+ validatePage: () => Promise<boolean>;
12
+ }
13
+ export interface OptionalRenderProps {
14
+ allValues: Control<unknown[]>;
15
+ editing: Control<boolean | undefined>;
16
+ children: ReactNode;
17
+ adornment: OptionalAdornment;
18
+ nullToggler: Control<boolean>;
19
+ dataContext: ControlDataContext;
20
+ options: DefaultOptionalAdornmentOptions;
21
+ dataControl: Control<any>;
22
+ }
23
+ export interface SelectRendererOptions {
24
+ className?: string;
25
+ emptyText?: string;
26
+ requiredText?: string;
27
+ }
28
+ export interface AutocompleteRendererOptions {
29
+ className?: string;
30
+ listContainerClass?: string;
31
+ listEntryClass?: string;
32
+ chipContainerClass?: string;
33
+ chipCloseButtonClass?: string;
34
+ }
35
+ export interface ArrayElementRendererOptions {
36
+ className?: string;
37
+ actionsClass?: string;
38
+ }
39
+ export interface DefaultScrollListOptions {
40
+ loadingIcon?: IconReference;
41
+ iconClass?: string;
42
+ spinnerClass?: string;
43
+ className?: string;
44
+ }
45
+ export interface DefaultDisplayRendererOptions {
46
+ textClassName?: string;
47
+ textTextClass?: string;
48
+ htmlClassName?: string;
49
+ }
50
+ export interface DefaultGridRenderOptions {
51
+ className?: string;
52
+ defaultColumns?: number;
53
+ rowClass?: string;
54
+ cellClass?: string;
55
+ }
56
+ export interface DefaultDialogRenderOptions {
57
+ classes?: {
58
+ className?: string;
59
+ titleClass?: string;
60
+ containerClass?: string;
61
+ };
62
+ }
63
+ export interface DefaultTabsRenderOptions {
64
+ className?: string;
65
+ tabListClass?: string;
66
+ tabClass?: string;
67
+ labelClass?: string;
68
+ activeClass?: string;
69
+ inactiveClass?: string;
70
+ contentClass?: string;
71
+ }
72
+ export interface DefaultWizardRenderOptions {
73
+ classes?: {
74
+ className?: string;
75
+ navContainerClass?: string;
76
+ contentClass?: string;
77
+ };
78
+ actions?: {
79
+ nextText?: string;
80
+ nextIcon?: IconReference;
81
+ nextValidate?: boolean;
82
+ prevText?: string;
83
+ prevIcon?: IconReference;
84
+ prevValidate?: boolean;
85
+ };
86
+ renderNavigation?: (props: CustomNavigationProps) => ReactNode;
87
+ }
88
+ export interface DefaultArrayRendererOptions extends ArrayActionOptions {
89
+ className?: string;
90
+ removableClass?: string;
91
+ childClass?: string;
92
+ removableChildClass?: string;
93
+ removeActionClass?: string;
94
+ addActionClass?: string;
95
+ }
96
+ export interface DefaultLayoutRendererOptions {
97
+ className?: string;
98
+ errorClass?: string;
99
+ renderError?: (errorText: string | null | undefined, errorId?: string) => ReactNode;
100
+ }
101
+ export interface DefaultActionRendererOptions {
102
+ buttonClass?: string;
103
+ textClass?: string;
104
+ primaryClass?: string;
105
+ primaryTextClass?: string;
106
+ secondaryClass?: string;
107
+ secondaryTextClass?: string;
108
+ linkClass?: string;
109
+ linkTextClass?: string;
110
+ iconBeforeClass?: string;
111
+ iconAfterClass?: string;
112
+ groupClass?: string;
113
+ renderContent?: (actionText: string, actionId: string, actionData: any, busy?: boolean) => ReactNode;
114
+ icon?: IconReference;
115
+ iconPlacement?: IconPlacement;
116
+ busyIcon?: IconReference;
117
+ busyIconPlacement?: IconPlacement;
118
+ notWrapInText?: boolean;
119
+ androidRippleColor?: string;
120
+ }
121
+ export interface DefaultOptionalAdornmentOptions {
122
+ className?: string;
123
+ checkClass?: string;
124
+ childWrapperClass?: string;
125
+ multiValuesClass?: string;
126
+ multiValuesText?: string;
127
+ nullWrapperClass?: string;
128
+ setNullText?: string;
129
+ defaultPlacement?: AdornmentPlacement;
130
+ hideEdit?: boolean;
131
+ customRender?: (props: OptionalRenderProps) => ReactNode;
132
+ }
133
+ export interface DefaultAccordionRendererOptions {
134
+ className?: string;
135
+ titleTextClass?: string;
136
+ togglerClass?: string;
137
+ iconOpen?: IconReference;
138
+ iconClosed?: IconReference;
139
+ renderTitle?: (title: ReactNode, current: Control<boolean>) => ReactNode;
140
+ renderToggler?: (current: Control<boolean>, title: ReactNode) => ReactNode;
141
+ useCss?: boolean;
142
+ }
143
+ export interface DefaultHelpTextRendererOptions {
144
+ triggerContainerClass?: string;
145
+ triggerLabelClass?: string;
146
+ contentContainerClass?: string;
147
+ contentTextClass?: string;
148
+ iconName?: string;
149
+ iconClass?: string;
150
+ }
151
+ export interface DefaultAdornmentRendererOptions {
152
+ accordion?: DefaultAccordionRendererOptions;
153
+ helpText?: DefaultHelpTextRendererOptions;
154
+ optional?: DefaultOptionalAdornmentOptions;
155
+ }
156
+ export interface DefaultLabelRendererOptions {
157
+ className?: string;
158
+ textClass?: string;
159
+ groupLabelClass?: string;
160
+ groupLabelTextClass?: string;
161
+ controlLabelClass?: string;
162
+ controlLabelTextClass?: string;
163
+ requiredElement?: (h: FormRenderer["html"]) => ReactNode;
164
+ labelContainer?: (children: ReactElement) => ReactElement;
165
+ }
166
+ export interface DefaultGroupRendererOptions {
167
+ className?: string;
168
+ standardClassName?: string;
169
+ grid?: DefaultGridRenderOptions;
170
+ flexClassName?: string;
171
+ defaultFlexGap?: string;
172
+ inlineClass?: string;
173
+ tabs?: DefaultTabsRenderOptions;
174
+ dialog?: DefaultDialogRenderOptions;
175
+ wizard?: DefaultWizardRenderOptions;
176
+ accordion?: DefaultAccordionRendererOptions;
177
+ }
178
+ export interface DefaultDataRendererOptions {
179
+ inputClass?: string;
180
+ inputTextClass?: string;
181
+ displayOnlyClass?: string;
182
+ selectOptions?: SelectRendererOptions;
183
+ checkboxOptions?: CheckRendererOptions;
184
+ checkOptions?: CheckRendererOptions;
185
+ radioOptions?: CheckRendererOptions;
186
+ checkListOptions?: CheckRendererOptions;
187
+ autocompleteOptions?: AutocompleteRendererOptions;
188
+ arrayElementOptions?: ArrayElementRendererOptions;
189
+ booleanOptions?: FieldOption[];
190
+ optionRenderer?: DataRendererRegistration;
191
+ multilineClass?: string;
192
+ jsonataClass?: string;
193
+ arrayOptions?: ArrayActionOptions;
194
+ defaultEmptyText?: string;
195
+ scrollListOptions?: DefaultScrollListOptions;
196
+ }
197
+ export interface DefaultRendererOptions {
198
+ data?: DefaultDataRendererOptions;
199
+ display?: DefaultDisplayRendererOptions;
200
+ action?: DefaultActionRendererOptions;
201
+ array?: DefaultArrayRendererOptions;
202
+ group?: DefaultGroupRendererOptions;
203
+ label?: DefaultLabelRendererOptions;
204
+ adornment?: DefaultAdornmentRendererOptions;
205
+ layout?: DefaultLayoutRendererOptions;
206
+ extraRenderers?: (options: DefaultRendererOptions) => RendererRegistration[];
207
+ html?: FormRenderer["html"];
208
+ }
209
+ export declare const DefaultBoolOptions: FieldOption[];
@@ -0,0 +1,16 @@
1
+ import { Control } from "@react-typed-forms/core";
2
+ import { FieldOption } from "@react-typed-forms/schemas";
3
+ type SelectConversion = (a: any) => string | number;
4
+ export interface SelectDataRendererProps {
5
+ id?: string;
6
+ className?: string;
7
+ options: FieldOption[];
8
+ emptyText?: string;
9
+ requiredText?: string;
10
+ readonly: boolean;
11
+ required: boolean;
12
+ state: Control<any>;
13
+ convert: SelectConversion;
14
+ }
15
+ export declare function createSelectConversion(ft: string): SelectConversion;
16
+ export {};
package/lib/tailwind.d.ts CHANGED
@@ -1,4 +1,2 @@
1
- import { DefaultRendererOptions } from "@react-typed-forms/schemas-html";
2
- import { HtmlComponents } from "@react-typed-forms/schemas";
3
- export declare const reactNativeHtml: HtmlComponents;
1
+ import { DefaultRendererOptions } from "./rendererOptions";
4
2
  export declare const defaultRnTailwindTheme: DefaultRendererOptions;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-typed-forms/schemas-rn",
3
- "version": "1.0.0",
3
+ "version": "2.0.0",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "lib/index.cjs",
@@ -31,66 +31,65 @@
31
31
  "material-ui"
32
32
  ],
33
33
  "dependencies": {
34
- "clsx": "^1 || ^2",
35
- "@react-typed-forms/schemas-html": "^4.0.0",
36
- "tailwind-merge": "^1.14.0",
37
- "class-variance-authority": "^0.7.1",
38
- "@rn-primitives/checkbox": "^1.1.0",
39
- "@rn-primitives/slot": "^1.1.0",
40
- "@rn-primitives/types": "^1.1.0",
41
- "@rn-primitives/radio-group": "^1.1.0",
42
- "@rn-primitives/select": "^1.1.0",
43
- "@rn-primitives/dialog": "^1.1.0",
34
+ "@expo/vector-icons": "^14.0.2",
35
+ "@internationalized/date": "^3.8.2",
44
36
  "@react-native-community/datetimepicker": "8.2.0",
37
+ "@rn-primitives/checkbox": "^1.2.0",
38
+ "@rn-primitives/dialog": "^1.2.0",
39
+ "@rn-primitives/radio-group": "^1.2.0",
40
+ "@rn-primitives/select": "^1.2.0",
41
+ "@rn-primitives/slot": "^1.2.0",
42
+ "@rn-primitives/types": "^1.2.0",
43
+ "class-variance-authority": "^0.7.0",
44
+ "clsx": "^1 || ^2",
45
+ "react-native-gesture-handler": ">=2.20.2",
45
46
  "react-native-modal-datetime-picker": "^18.0.0",
46
- "@internationalized/date": "^3.6.0",
47
- "@expo/vector-icons": "^14.0.2",
48
- "react-native-gesture-handler": "~2.20.2"
47
+ "tailwind-merge": "1.14.0"
49
48
  },
50
49
  "peerDependencies": {
51
- "@react-typed-forms/core": "^4.4.0",
52
- "@react-typed-forms/schemas": "^16.0.0",
53
- "react": "^18.3.1",
54
- "react-dom": "^18.3.1",
55
- "react-native": "^0.76.9",
56
- "react-native-web": "~0.19.13",
50
+ "@astroapps/controls": "^1.3.3",
51
+ "@react-typed-forms/core": "^4.4.3",
52
+ "@react-typed-forms/schemas": "^17.2.2",
57
53
  "nativewind": "^4.1.23",
58
- "react-native-css-interop": "^0.1.22",
54
+ "react": "^18.3.1 || ^19",
55
+ "react-dom": "^18.3.1 || ^19",
56
+ "react-native": ">=0.76.9",
59
57
  "react-native-reanimated": ">=3.16.1",
60
- "react-native-safe-area-context": "4.12.0",
61
- "tailwindcss": "~3",
62
- "react-native-svg": "^15.11.2",
63
- "react-native-render-html": "^6.3.4"
58
+ "react-native-render-html": "^6.3.4",
59
+ "react-native-safe-area-context": ">=4.12.0",
60
+ "react-native-svg": ">=15.8.0",
61
+ "react-native-web": ">=0.19.13",
62
+ "tailwindcss": "~3"
64
63
  },
65
64
  "devDependencies": {
66
- "@babel/core": "^7.25.2",
67
- "tailwindcss": "^3.4.17",
68
- "nativewind": "^4.1.23",
69
- "react-native-safe-area-context": "4.12.0",
70
- "react-native-reanimated": ">=3.16.1",
71
- "react-native-css-interop": "^0.1.22",
72
- "react-native-svg": "15.8.0",
73
- "react-native": "^0.76.9",
74
- "react-native-web": "~0.19.13",
75
- "@react-typed-forms/core": "^4.4.0",
76
- "@react-typed-forms/schemas": "^16.0.0",
77
- "react": "^18.3.1 || ^19",
78
- "react-dom": "^18.3.1 || ^19",
65
+ "@astroapps/controls": "^1.3.3",
66
+ "@babel/core": ">=7.25.2",
67
+ "@react-typed-forms/core": "^4.4.3",
68
+ "@react-typed-forms/schemas": "^17.0.0",
79
69
  "@react-typed-forms/transform": "^0.4.0",
70
+ "@types/react": "^18.3.1 || ~19",
80
71
  "@types/uuid": "^10.0.0",
81
- "@types/react": "^18.2.28",
82
72
  "markdown-magic": "^2.6.1",
83
73
  "microbundle": "^0.15.1",
84
- "nswag": "^13.18.2",
74
+ "nativewind": "^4.1.23",
75
+ "nswag": "^14.0.7",
85
76
  "prettier": "^3.2.5",
77
+ "react": "^18.3.1 || ^19",
78
+ "react-dom": "^18.3.1 || ^19",
79
+ "react-native": ">=0.76.9",
80
+ "react-native-reanimated": ">=3.16.1",
81
+ "react-native-render-html": "^6.3.4",
82
+ "react-native-safe-area-context": ">=4.12.0",
83
+ "react-native-svg": ">=15.8.0",
84
+ "react-native-web": ">=0.19.13",
86
85
  "rimraf": "^3.0.2",
87
- "typescript": "^5.6.3",
88
- "react-native-render-html": "^6.3.4"
86
+ "tailwindcss": "^3.4.17",
87
+ "typescript": "~5.8.3"
89
88
  },
90
89
  "gitHead": "698e16cd3ab31b7dd0528fc76536f4d3205ce8c6",
91
90
  "scripts": {
92
91
  "build": "rimraf ./lib/ node_modules/.cache && microbundle -f modern,cjs --no-compress --jsxImportSource nativewind",
93
- "watch": "microbundle -w -f modern,cjs --no-compress --jsxImportSource nativewind",
92
+ "watch": "microbundle -f modern,cjs --no-compress --jsxImportSource nativewind",
94
93
  "update-readme": "md-magic --path README.md"
95
94
  }
96
95
  }
package/tsconfig.json CHANGED
@@ -13,7 +13,9 @@
13
13
  "moduleResolution": "node",
14
14
  "resolveJsonModule": true,
15
15
  "isolatedModules": true,
16
- "jsx": "preserve",
16
+ "jsx": "react-native",
17
+ "jsxImportSource": "react",
18
+ "types": ["react", "react-native"],
17
19
  "outDir": "lib"
18
20
  },
19
21
  "include": ["src/**/*.ts", "src/**/*.tsx"],
@@ -1,12 +0,0 @@
1
- import * as React from "react";
2
- declare const RNCheckbox: React.ForwardRefExoticComponent<Omit<import("react-native").PressableProps & React.RefAttributes<import("react-native").View>, "ref"> & {
3
- asChild?: boolean;
4
- } & {
5
- onKeyDown?: (ev: React.KeyboardEvent) => void;
6
- onKeyUp?: (ev: React.KeyboardEvent) => void;
7
- } & {
8
- checked: boolean;
9
- onCheckedChange: (checked: boolean) => void;
10
- disabled?: boolean;
11
- } & React.RefAttributes<import("react-native").View>>;
12
- export { RNCheckbox };
@@ -1,6 +0,0 @@
1
- import * as React from "react";
2
- import { TextInput, type TextInputProps } from "react-native";
3
- declare const RNTextInput: React.ForwardRefExoticComponent<TextInputProps & {
4
- disabled?: boolean;
5
- } & React.RefAttributes<TextInput>>;
6
- export { RNTextInput };