autoforma 1.0.38 → 1.0.41
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 +237 -157
- package/dist/components/AutoForm/AutoForm.d.ts +3 -0
- package/dist/components/AutoForm/AutoForm.types.d.ts +23 -0
- package/dist/components/AutoForm/index.d.ts +0 -0
- package/dist/fields/FieldRenderer/DefaultFieldRender.d.ts +10 -0
- package/dist/fields/FieldRenderer/FieldLayoutWrapper.d.ts +9 -0
- package/dist/fields/FieldRenderer/FieldRenderer.d.ts +3 -0
- package/dist/fields/FieldRenderer/FieldRenderer.types.d.ts +10 -0
- package/dist/fields/renderer.types.d.ts +9 -0
- package/dist/fields/renderers/ArrayFieldRenderer.d.ts +6 -0
- package/dist/fields/renderers/CheckBoxFieldRenderer.d.ts +4 -0
- package/dist/fields/renderers/DateFieldRenderer.d.ts +4 -0
- package/dist/fields/renderers/DateTimeFieldRenderer.d.ts +4 -0
- package/dist/fields/renderers/NumberFieldRenderer.d.ts +4 -0
- package/dist/fields/renderers/ObjectFieldRenderer.d.ts +6 -0
- package/dist/fields/renderers/RichTextEditorFieldRenderer.d.ts +4 -0
- package/dist/fields/renderers/SelectFieldRenderer.d.ts +4 -0
- package/dist/fields/renderers/SwitchFieldRenderer.d.ts +4 -0
- package/dist/fields/renderers/TagsFieldRenderer.d.ts +4 -0
- package/dist/fields/renderers/TextFieldRenderer.d.ts +4 -0
- package/dist/fields/renderers/TimeFieldRenderer.d.ts +4 -0
- package/dist/fields/types.d.ts +61 -0
- package/dist/fields/utils/layout.utils.d.ts +5 -0
- package/dist/fields/utils/values.utils.d.ts +3 -0
- package/dist/index.cjs.js +145 -10
- package/dist/index.d.ts +4 -3
- package/dist/index.es.js +21052 -3755
- package/dist/theme.d.ts +6 -6
- package/package.json +34 -4
- package/dist/components/AutoForm.d.ts +0 -18
- package/dist/components/FieldRender.d.ts +0 -16
- package/dist/components/fields/ArrayField.d.ts +0 -13
- package/dist/components/fields/CheckField.d.ts +0 -7
- package/dist/components/fields/DateField.d.ts +0 -6
- package/dist/components/fields/DateTimeField.d.ts +0 -6
- package/dist/components/fields/NumberField.d.ts +0 -6
- package/dist/components/fields/ObjectField.d.ts +0 -9
- package/dist/components/fields/SelectField.d.ts +0 -10
- package/dist/components/fields/TextAreaField.d.ts +0 -6
- package/dist/components/fields/TextField.d.ts +0 -6
- package/dist/components/fields/TimeField.d.ts +0 -6
- package/dist/types/custom-render.d.ts +0 -11
- package/dist/types/field.d.ts +0 -31
- package/dist/types/form.d.ts +0 -7
package/README.md
CHANGED
|
@@ -1,157 +1,237 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
12
|
-
- **
|
|
13
|
-
- **
|
|
14
|
-
- **
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
---
|
|
144
|
-
|
|
145
|
-
##
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
1
|
+
# 🚀 AutoForma
|
|
2
|
+
|
|
3
|
+
**AutoForma** is a powerful and flexible **dynamic form builder** for React. It allows developers to build complex forms from simple schema definitions without writing repetitive boilerplate code. With AutoForma, you can focus on the logic and behavior of your forms — not the UI details.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## ✨ Features
|
|
8
|
+
|
|
9
|
+
- ⚡ **Fast form building:** Generate forms instantly from JSON schema.
|
|
10
|
+
- 🧩 **Rich field types:** Text, Select, Checkbox, Date, Time, Switch, Tags, Array, Object, and more.
|
|
11
|
+
- 🎨 **Full UI control:** Customize how each field looks and behaves.
|
|
12
|
+
- 🔄 **Dynamic behavior:** Show/hide fields, enable/disable them, or update their properties based on form values.
|
|
13
|
+
- 🪄 **Custom renderers:** Replace any field’s renderer with your own component.
|
|
14
|
+
- 🧠 **Validation support:** Built-in and custom validation supported out of the box.
|
|
15
|
+
- 📐 **Multiple layouts:** Vertical, horizontal, or grid layouts with column configuration.
|
|
16
|
+
- 🧪 **Extendable:** Easily integrate with any backend and add your own field types.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 📦 Installation
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install autoforma
|
|
24
|
+
# or
|
|
25
|
+
yarn add autoforma
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
> ✅ AutoForma includes everything you need — no need to manually install Mantine or other dependencies.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 🛠️ Usage
|
|
33
|
+
|
|
34
|
+
Here's a simple example of how to use **AutoForma** in your React project:
|
|
35
|
+
|
|
36
|
+
```tsx
|
|
37
|
+
import { MantineProvider } from "@mantine/core";
|
|
38
|
+
import ReactDOM from "react-dom/client";
|
|
39
|
+
import AutoForm from "autoforma";
|
|
40
|
+
import { FieldSchema } from "autoforma/fields/types";
|
|
41
|
+
import "@mantine/core/styles.css";
|
|
42
|
+
import "@mantine/dates/styles.css";
|
|
43
|
+
import "@mantine/tiptap/styles.css";
|
|
44
|
+
|
|
45
|
+
interface DemoFormValues {
|
|
46
|
+
fullName: string;
|
|
47
|
+
email: string;
|
|
48
|
+
age: number;
|
|
49
|
+
subscribe: boolean;
|
|
50
|
+
birthDate: string | null;
|
|
51
|
+
appointment: string | null;
|
|
52
|
+
contacts: { type: string; value: string }[];
|
|
53
|
+
gender: string;
|
|
54
|
+
bio: string;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const schema: FieldSchema[] = [
|
|
58
|
+
{
|
|
59
|
+
name: "fullName",
|
|
60
|
+
label: "Full Name",
|
|
61
|
+
type: "text",
|
|
62
|
+
placeholder: "Enter your full name",
|
|
63
|
+
required: true,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: "age",
|
|
67
|
+
label: "Age",
|
|
68
|
+
type: "number",
|
|
69
|
+
placeholder: "Enter your age",
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: "gender",
|
|
73
|
+
label: "Gender",
|
|
74
|
+
type: "select",
|
|
75
|
+
placeholder: "Select your gender",
|
|
76
|
+
data: [
|
|
77
|
+
{ label: "Male", value: "M" },
|
|
78
|
+
{ label: "Female", value: "F" },
|
|
79
|
+
{ label: "Prefer not to say", value: "N" },
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: "subscribe",
|
|
84
|
+
label: "Subscribe to newsletter",
|
|
85
|
+
type: "checkbox",
|
|
86
|
+
description: "Receive updates by email",
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: "birthDate",
|
|
90
|
+
label: "Birth Date",
|
|
91
|
+
type: "date",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: "appointment",
|
|
95
|
+
label: "Appointment",
|
|
96
|
+
type: "datetime",
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: "contacts",
|
|
100
|
+
label: "Contacts",
|
|
101
|
+
type: "array",
|
|
102
|
+
fields: [
|
|
103
|
+
{
|
|
104
|
+
name: "type",
|
|
105
|
+
label: "Contact Type",
|
|
106
|
+
type: "select",
|
|
107
|
+
data: [
|
|
108
|
+
{ label: "Email", value: "email" },
|
|
109
|
+
{ label: "Phone", value: "phone" },
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
name: "value",
|
|
114
|
+
label: "Contact Value",
|
|
115
|
+
type: "text",
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
name: "bio",
|
|
121
|
+
label: "Bio",
|
|
122
|
+
type: "text",
|
|
123
|
+
},
|
|
124
|
+
];
|
|
125
|
+
|
|
126
|
+
const App = () => {
|
|
127
|
+
return (
|
|
128
|
+
<AutoForm<DemoFormValues>
|
|
129
|
+
layout="grid"
|
|
130
|
+
schema={schema}
|
|
131
|
+
onSubmit={(values) => alert(JSON.stringify(values))}
|
|
132
|
+
/>
|
|
133
|
+
);
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
ReactDOM.createRoot(document.getElementById("root")!).render(
|
|
137
|
+
<MantineProvider>
|
|
138
|
+
<App />
|
|
139
|
+
</MantineProvider>
|
|
140
|
+
);
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## 🔧 Props / API Reference
|
|
146
|
+
|
|
147
|
+
| Prop | Type | Description |
|
|
148
|
+
|------|------|-------------|
|
|
149
|
+
| `schema` | `FieldSchema[]` | The form schema definition. |
|
|
150
|
+
| `values` | `TValues` | Initial form values. |
|
|
151
|
+
| `onSubmit` | `(values: TValues) => void` | Callback triggered when the form is submitted. |
|
|
152
|
+
| `validate` | `FormValidateInput<TValues>` | Validation configuration. |
|
|
153
|
+
| `mode` | `"create" \| "edit" \| "view"` | Controls form mode (read-only, editable, etc.). |
|
|
154
|
+
| `layout` | `"vertical" \| "horizontal" \| "grid"` | Form layout type. |
|
|
155
|
+
| `columns` | `number` | Number of columns (for grid layout). |
|
|
156
|
+
| `updateFieldSchema` | `UpdateFieldSchemaMap` | Dynamically update field definitions based on values. |
|
|
157
|
+
| `onFieldChange` | `OnFieldChangeMap` | Trigger callbacks when specific fields change. |
|
|
158
|
+
| `customRenderers` | `CustomRenderersMap` | Override default field renderers. |
|
|
159
|
+
| `submitButton` | `boolean \| ReactNode` | Show or customize the submit button. |
|
|
160
|
+
| `actions` | `ReactNode` | Custom actions area under the form. |
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## 🧩 Field Types
|
|
165
|
+
|
|
166
|
+
AutoForma supports a variety of field types:
|
|
167
|
+
|
|
168
|
+
- `text`
|
|
169
|
+
- `number`
|
|
170
|
+
- `select`
|
|
171
|
+
- `checkbox`
|
|
172
|
+
- `date`
|
|
173
|
+
- `datetime`
|
|
174
|
+
- `time`
|
|
175
|
+
- `object`
|
|
176
|
+
- `array`
|
|
177
|
+
- `switch`
|
|
178
|
+
- `texteditor`
|
|
179
|
+
- `tags`
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## ⚙️ Advanced Usage
|
|
184
|
+
|
|
185
|
+
You can control the behavior of fields dynamically based on form values:
|
|
186
|
+
|
|
187
|
+
```ts
|
|
188
|
+
updateFieldSchema={{
|
|
189
|
+
gender: (field, values) => {
|
|
190
|
+
if (values.age && values.age < 18) {
|
|
191
|
+
return { ...field, data: [{ label: "Prefer not to say", value: "N" }] };
|
|
192
|
+
}
|
|
193
|
+
return field;
|
|
194
|
+
},
|
|
195
|
+
appointment: (field, values) => ({
|
|
196
|
+
...field,
|
|
197
|
+
disabled: !values.birthDate,
|
|
198
|
+
}),
|
|
199
|
+
}}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 🧪 Development
|
|
205
|
+
|
|
206
|
+
If you want to contribute or run AutoForma locally:
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
git clone https://github.com/your-username/AutoForma.git
|
|
210
|
+
cd AutoForma
|
|
211
|
+
npm install
|
|
212
|
+
npm run dev
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## 🤝 Contributing
|
|
218
|
+
|
|
219
|
+
Contributions are welcome! 🎉
|
|
220
|
+
If you'd like to help improve AutoForma:
|
|
221
|
+
|
|
222
|
+
1. Fork the repository
|
|
223
|
+
2. Create a new feature branch
|
|
224
|
+
3. Commit your changes
|
|
225
|
+
4. Submit a pull request 🚀
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## 📜 License
|
|
230
|
+
|
|
231
|
+
This project is licensed under the **MIT License**.
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## ⭐ Support
|
|
236
|
+
|
|
237
|
+
If you find AutoForma helpful, please consider giving it a ⭐ on [GitHub](https://github.com/your-username/AutoForma) — it helps the project grow!
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { AutoFormProps } from './AutoForm.types';
|
|
2
|
+
export declare function AutoForm<TValues extends Record<string, any> = Record<string, any>>({ schema, values, layout, readOnly, validate, onSubmit, onFieldChange, customRenderers, updateFieldSchema, transformBeforeSubmit, transformAfterSubmit, submitButton, }: AutoFormProps<TValues>): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export default AutoForm;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { CustomRenderersMap } from '../../fields/renderer.types';
|
|
2
|
+
import { FieldSchema } from '../../fields/types';
|
|
3
|
+
import { FormValidateInput, UseFormReturnType } from '@mantine/form';
|
|
4
|
+
export interface AutoFormProps<TValues extends Record<string, any> = Record<string, any>> {
|
|
5
|
+
schema: FieldSchema<TValues>[];
|
|
6
|
+
values?: TValues;
|
|
7
|
+
onSubmit: (values: TValues) => void | Promise<void>;
|
|
8
|
+
transformBeforeSubmit?: (values: TValues) => TValues;
|
|
9
|
+
transformAfterSubmit?: (values: TValues) => void | Promise<void>;
|
|
10
|
+
validate?: FormValidateInput<TValues>;
|
|
11
|
+
readOnly?: boolean;
|
|
12
|
+
onFieldChange?: OnFieldChangeMap<TValues>;
|
|
13
|
+
layout?: "vertical" | "horizontal" | "grid";
|
|
14
|
+
customRenderers?: CustomRenderersMap<TValues>;
|
|
15
|
+
updateFieldSchema?: UpdateFieldSchemaMap<TValues>;
|
|
16
|
+
submitButton?: boolean | React.ReactNode;
|
|
17
|
+
}
|
|
18
|
+
export type UpdateFieldSchemaMap<TValues extends Record<string, any> = Record<string, any>> = {
|
|
19
|
+
[K in keyof TValues]?: (schema: FieldSchema<TValues>, values: TValues) => FieldSchema<TValues>;
|
|
20
|
+
};
|
|
21
|
+
export type OnFieldChangeMap<TValues extends Record<string, any> = Record<string, any>> = {
|
|
22
|
+
[K in keyof TValues]?: (value: TValues[K], form: UseFormReturnType<TValues>) => void | Promise<void>;
|
|
23
|
+
};
|
|
File without changes
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { UseFormReturnType } from '@mantine/form';
|
|
3
|
+
import { FieldSchema } from '../types';
|
|
4
|
+
type DefaultFieldRenderProps<TValues extends Record<string, any>> = {
|
|
5
|
+
field: FieldSchema<TValues>;
|
|
6
|
+
form: UseFormReturnType<TValues>;
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
};
|
|
9
|
+
export declare function DefaultFieldRender<TValues extends Record<string, any>>({ field, form, children, }: DefaultFieldRenderProps<TValues>): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export default DefaultFieldRender;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { FieldSchema } from '../types';
|
|
3
|
+
type FieldLayoutWrapperProps = {
|
|
4
|
+
field: FieldSchema;
|
|
5
|
+
layout: "vertical" | "horizontal" | "grid";
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
};
|
|
8
|
+
export declare function FieldLayoutWrapper({ field, layout, children, }: FieldLayoutWrapperProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export default FieldLayoutWrapper;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { UseFormReturnType } from '@mantine/form';
|
|
2
|
+
import { FieldSchema } from '../types';
|
|
3
|
+
import { FieldRendererProps as RendererProps } from '../renderer.types';
|
|
4
|
+
export interface FieldRendererProps<TValues extends Record<string, any> = Record<string, any>> {
|
|
5
|
+
field: FieldSchema<TValues>;
|
|
6
|
+
form: UseFormReturnType<TValues>;
|
|
7
|
+
layout: "vertical" | "horizontal" | "grid";
|
|
8
|
+
readOnly?: boolean;
|
|
9
|
+
customRenderers?: RendererProps<TValues>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { UseFormReturnType } from '@mantine/form';
|
|
2
|
+
import { FieldSchema } from './types';
|
|
3
|
+
export type FieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = {
|
|
4
|
+
field: FieldSchema<TValues>;
|
|
5
|
+
form: UseFormReturnType<TValues>;
|
|
6
|
+
};
|
|
7
|
+
export type CustomRenderersMap<TValues extends Record<string, any>> = {
|
|
8
|
+
[K in keyof TValues]?: (form: UseFormReturnType<TValues>, field: FieldSchema<TValues>) => React.ReactNode;
|
|
9
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { FieldRendererProps } from '../renderer.types';
|
|
2
|
+
type ArrayFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues> & {
|
|
3
|
+
layout: "vertical" | "horizontal" | "grid";
|
|
4
|
+
};
|
|
5
|
+
export declare function ArrayFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form, layout }: ArrayFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export default ArrayFieldRenderer;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { FieldRendererProps } from '../renderer.types';
|
|
2
|
+
type CheckBoxFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
|
|
3
|
+
export declare function CheckBoxFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: CheckBoxFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export default CheckBoxFieldRenderer;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { FieldRendererProps } from '../renderer.types';
|
|
2
|
+
type DateFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
|
|
3
|
+
export declare function DateFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: DateFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export default DateFieldRenderer;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { FieldRendererProps } from '../renderer.types';
|
|
2
|
+
type DateTimeFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
|
|
3
|
+
export declare function DateTimeFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: DateTimeFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export default DateTimeFieldRenderer;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { FieldRendererProps } from '../renderer.types';
|
|
2
|
+
type NumberFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
|
|
3
|
+
export declare function NumberFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: NumberFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export default NumberFieldRenderer;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { FieldRendererProps } from '../renderer.types';
|
|
2
|
+
type ObjectFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues> & {
|
|
3
|
+
layout: "vertical" | "horizontal" | "grid";
|
|
4
|
+
};
|
|
5
|
+
export declare function ObjectFieldRenderer<TValues extends Record<string, any>>({ field, form, layout, }: ObjectFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export default ObjectFieldRenderer;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { FieldRendererProps } from '../renderer.types';
|
|
2
|
+
type RichTextEditorFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
|
|
3
|
+
export declare function RichTextEditorFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: RichTextEditorFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export default RichTextEditorFieldRenderer;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { FieldRendererProps } from '../renderer.types';
|
|
2
|
+
type SelectFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
|
|
3
|
+
export declare function SelectFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: SelectFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export default SelectFieldRenderer;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { FieldRendererProps } from '../renderer.types';
|
|
2
|
+
type SwitchFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
|
|
3
|
+
export declare function SwitchFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: SwitchFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export default SwitchFieldRenderer;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { FieldRendererProps } from '../renderer.types';
|
|
2
|
+
type TagsInputFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
|
|
3
|
+
export declare function TagsInputFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: TagsInputFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export default TagsInputFieldRenderer;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { FieldRendererProps } from '../renderer.types';
|
|
2
|
+
type TextFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
|
|
3
|
+
export declare function TextFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: TextFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export default TextFieldRenderer;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { FieldRendererProps } from '../renderer.types';
|
|
2
|
+
type TimeFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
|
|
3
|
+
export declare function TimeFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: TimeFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export default TimeFieldRenderer;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export type FieldType = "text" | "number" | "select" | "checkbox" | "date" | "datetime" | "time" | "object" | "array" | "switch" | "texteditor" | "tags";
|
|
2
|
+
export interface BaseFieldSchema<TValues extends Record<string, any> = Record<string, any>> {
|
|
3
|
+
name: keyof TValues & string;
|
|
4
|
+
label: string;
|
|
5
|
+
type: FieldType;
|
|
6
|
+
description?: string;
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
required?: boolean;
|
|
9
|
+
readOnly?: boolean;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
visible?: boolean;
|
|
12
|
+
meta?: Record<string, any>;
|
|
13
|
+
initialValue?: any;
|
|
14
|
+
column?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface TextFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
|
|
17
|
+
type: "text";
|
|
18
|
+
}
|
|
19
|
+
export interface SelectFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
|
|
20
|
+
type: "select";
|
|
21
|
+
data: {
|
|
22
|
+
label: string;
|
|
23
|
+
value: string;
|
|
24
|
+
}[];
|
|
25
|
+
}
|
|
26
|
+
export interface CheckboxFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
|
|
27
|
+
type: "checkbox";
|
|
28
|
+
}
|
|
29
|
+
export interface DateFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
|
|
30
|
+
type: "date";
|
|
31
|
+
}
|
|
32
|
+
export interface ObjectFieldSchema<TValues extends Record<string, any> = Record<string, any>, TInner extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
|
|
33
|
+
type: "object";
|
|
34
|
+
fields: FieldSchema<TInner>[];
|
|
35
|
+
}
|
|
36
|
+
export interface ArrayFieldSchema<TValues extends Record<string, any> = Record<string, any>, TInner extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
|
|
37
|
+
type: "array";
|
|
38
|
+
fields: FieldSchema<TInner>[];
|
|
39
|
+
}
|
|
40
|
+
export interface SwitchFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
|
|
41
|
+
type: "switch";
|
|
42
|
+
}
|
|
43
|
+
export interface RichTextEditorFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
|
|
44
|
+
type: "texteditor";
|
|
45
|
+
}
|
|
46
|
+
export interface RichTextEditorFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
|
|
47
|
+
type: "texteditor";
|
|
48
|
+
}
|
|
49
|
+
export interface TimeFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
|
|
50
|
+
type: "time";
|
|
51
|
+
}
|
|
52
|
+
export interface NumberFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
|
|
53
|
+
type: "number";
|
|
54
|
+
}
|
|
55
|
+
export interface DateTimeFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
|
|
56
|
+
type: "datetime";
|
|
57
|
+
}
|
|
58
|
+
export interface TagsFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
|
|
59
|
+
type: "tags";
|
|
60
|
+
}
|
|
61
|
+
export type FieldSchema<TValues extends Record<string, any> = Record<string, any>> = TextFieldSchema<TValues> | SelectFieldSchema<TValues> | CheckboxFieldSchema<TValues> | DateFieldSchema<TValues> | ObjectFieldSchema<TValues> | ArrayFieldSchema<TValues> | SwitchFieldSchema<TValues> | RichTextEditorFieldSchema | TimeFieldSchema | NumberFieldSchema | DateTimeFieldSchema | TagsFieldSchema;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const layoutStrategies: {
|
|
2
|
+
vertical: (children: React.ReactNode) => import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
horizontal: (children: React.ReactNode) => import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
grid: (children: React.ReactNode) => import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
};
|