@saas-ui/forms 2.0.0-next.9 → 2.0.0-rc.23

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,112 @@
1
1
  # @saas-ui/forms
2
2
 
3
+ ## 2.0.0-rc.23
4
+
5
+ ### Patch Changes
6
+
7
+ - Bump version
8
+ - Updated dependencies [7027d7c1]
9
+ - Updated dependencies
10
+ - @saas-ui/core@2.0.0-rc.20
11
+
12
+ ## 2.0.0-rc.22
13
+
14
+ ### Patch Changes
15
+
16
+ - Updated dependencies [7027d7c1]
17
+ - @saas-ui/core@2.0.0-rc.19
18
+
19
+ ## 2.0.0-next.21
20
+
21
+ ### Patch Changes
22
+
23
+ - @saas-ui/core@2.0.0-next.18
24
+
25
+ ## 2.0.0-next.20
26
+
27
+ ### Minor Changes
28
+
29
+ - a9ca90dd: Updated to Chakra UI 2.6.x
30
+
31
+ ### Patch Changes
32
+
33
+ - Updated dependencies [2b639656]
34
+ - @saas-ui/core@2.0.0-next.17
35
+
36
+ ## 2.0.0-next.19
37
+
38
+ ### Patch Changes
39
+
40
+ - @saas-ui/core@2.0.0-next.16
41
+
42
+ ## 2.0.0-next.18
43
+
44
+ ### Patch Changes
45
+
46
+ - 01ac442f: Fixed modal form handler type inference
47
+
48
+ ## 2.0.0-next.17
49
+
50
+ ### Patch Changes
51
+
52
+ - Updated dependencies [a5898c44]
53
+ - @saas-ui/core@2.0.0-next.15
54
+
55
+ ## 2.0.0-next.16
56
+
57
+ ### Patch Changes
58
+
59
+ - Updated dependencies [b8be6d41]
60
+ - @saas-ui/core@2.0.0-next.14
61
+
62
+ ## 2.0.0-next.15
63
+
64
+ ### Minor Changes
65
+
66
+ - 2d18cdc2: New createFormDialog function to create Zod or Yup specific FormDialogs
67
+
68
+ ### Patch Changes
69
+
70
+ - Updated dependencies [826c561a]
71
+ - @saas-ui/core@2.0.0-next.13
72
+
73
+ ## 2.0.0-next.14
74
+
75
+ ### Patch Changes
76
+
77
+ - Fix esm bundle import
78
+ - Updated dependencies
79
+ - @saas-ui/core@2.0.0-next.12
80
+
81
+ ## 2.0.0-next.13
82
+
83
+ ### Patch Changes
84
+
85
+ - Bump version
86
+ - 6c63217c: object and array field props can now be overridden using the fields prop
87
+ - Updated dependencies
88
+ - @saas-ui/core@2.0.0-next.11
89
+
90
+ ## 2.0.0-next.12
91
+
92
+ ### Patch Changes
93
+
94
+ - a7ef6dd9: Fixed issue where types for exports were not detected
95
+ - Updated dependencies [a7ef6dd9]
96
+ - @saas-ui/core@2.0.0-next.10
97
+
98
+ ## 2.0.0-next.11
99
+
100
+ ### Patch Changes
101
+
102
+ - @saas-ui/core@2.0.0-next.9
103
+
104
+ ## 2.0.0-next.10
105
+
106
+ ### Patch Changes
107
+
108
+ - @saas-ui/core@2.0.0-next.8
109
+
3
110
  ## 2.0.0-next.9
4
111
 
5
112
  ### Patch Changes
@@ -98,6 +205,38 @@
98
205
  - Updated dependencies [3a15e8c8]
99
206
  - @saas-ui/core@2.0.0-next.0
100
207
 
208
+ ## 1.5.5
209
+
210
+ ### Patch Changes
211
+
212
+ - Fix types path
213
+ - Updated dependencies
214
+ - @saas-ui/button@1.4.2
215
+ - @saas-ui/input-right-button@1.4.2
216
+ - @saas-ui/number-input@1.4.2
217
+ - @saas-ui/password-input@1.4.2
218
+ - @saas-ui/pin-input@1.4.2
219
+ - @saas-ui/radio@1.4.3
220
+ - @saas-ui/react-utils@1.2.2
221
+ - @saas-ui/select@1.4.2
222
+ - @saas-ui/stepper@1.4.2
223
+
224
+ ## 1.5.4
225
+
226
+ ### Patch Changes
227
+
228
+ - b2302a3: Add types to package.json exports
229
+ - Updated dependencies [b2302a3]
230
+ - @saas-ui/button@1.4.1
231
+ - @saas-ui/input-right-button@1.4.1
232
+ - @saas-ui/number-input@1.4.1
233
+ - @saas-ui/password-input@1.4.1
234
+ - @saas-ui/pin-input@1.4.1
235
+ - @saas-ui/radio@1.4.2
236
+ - @saas-ui/react-utils@1.2.1
237
+ - @saas-ui/select@1.4.1
238
+ - @saas-ui/stepper@1.4.1
239
+
101
240
  ## 1.5.3
102
241
 
103
242
  ### Patch Changes
@@ -1,369 +1,34 @@
1
- import * as React$1 from 'react';
2
- import React$1__default from 'react';
3
- import * as _chakra_ui_system_dist_system_types from '@chakra-ui/system/dist/system.types';
4
- import { HTMLChakraProps, ButtonProps, TextareaProps, SwitchProps, CheckboxProps, FormControlProps, ResponsiveValue, InputProps, RadioGroupProps, MenuProps, SelectProps as SelectProps$1, UsePinInputProps, SystemProps, NumberInputProps as NumberInputProps$1, StackDirection, MenuItemOptionProps, RadioProps } from '@chakra-ui/react';
5
- import { FocusableElement } from '@chakra-ui/utils';
6
- import * as react_hook_form from 'react-hook-form';
7
- import { FieldValues, UseFormProps, FieldPath, UseFormReturn, WatchObserver, SubmitHandler, SubmitErrorHandler, RegisterOptions, UseFieldArrayReturn } from 'react-hook-form';
8
- import { MaybeRenderProp } from '@chakra-ui/react-utils';
9
- import * as ajv_dist_jtd from 'ajv/dist/jtd';
1
+ import { FieldResolver, CreateFormProps, WithFields, FormProps } from '@saas-ui/forms';
2
+ import { ajvResolver } from '@hookform/resolvers/ajv';
3
+ export { ajvResolver } from '@hookform/resolvers/ajv';
10
4
  import { JTDDataType } from 'ajv/dist/jtd';
11
5
  export { JTDDataType, JTDSchemaType } from 'ajv/dist/jtd';
12
- import * as _saas_ui_forms from '@saas-ui/forms';
13
- import { FieldResolver as FieldResolver$1, CreateFormProps, WithFields as WithFields$1, FormProps as FormProps$1 } from '@saas-ui/forms';
14
6
  import { JSONSchemaType } from 'ajv';
15
- import { ajvResolver } from '@hookform/resolvers/ajv';
16
- export { ajvResolver } from '@hookform/resolvers/ajv';
17
-
18
- interface SubmitButtonProps extends ButtonProps {
19
- /**
20
- * Disable the submit button if the form is untouched.
21
- *
22
- * Change the default behavior by updating
23
- * `SubmitButton.defaultProps.disableIfUntouched`
24
- */
25
- disableIfUntouched?: boolean;
26
- /**
27
- * Disable the submit button if the form is invalid.
28
- *
29
- * Change the default behavior by updating
30
- * `SubmitButton.defaultProps.disableIfInvalid`
31
- */
32
- disableIfInvalid?: boolean;
33
- }
34
-
35
- interface NumberInputOptions {
36
- /**
37
- * Hide the stepper.
38
- */
39
- hideStepper?: boolean;
40
- /**
41
- * Render a custom increment icon.
42
- */
43
- incrementIcon?: React$1.ReactNode;
44
- /**
45
- * Render a custom decrement icon.
46
- */
47
- decrementIcon?: React$1.ReactNode;
48
- }
49
- interface NumberInputProps extends NumberInputProps$1, NumberInputOptions {
50
- }
51
-
52
- interface PasswordOptions {
53
- viewIcon?: React$1__default.ReactNode;
54
- viewOffIcon?: React$1__default.ReactNode;
55
- leftAddon?: React$1__default.ReactNode;
56
- }
57
- interface PasswordInputProps extends InputProps, PasswordOptions {
58
- }
59
-
60
- interface RadioOption extends Omit<RadioProps, 'value' | 'label'>, FieldOption {
61
- }
62
- type RadioOptions = FieldOptions<RadioOption>;
63
- interface RadioInputOptions {
64
- options: RadioOptions;
65
- spacing?: SystemProps['margin'];
66
- direction?: StackDirection;
67
- }
68
- interface RadioInputProps extends Omit<RadioGroupProps, 'children'>, RadioInputOptions {
69
- }
70
-
71
- interface SelectOptions {
72
- /**
73
- * The name of the input field in a native form.
74
- */
75
- name: string;
76
- /**
77
- * The value of the select field.
78
- */
79
- value?: string | string[];
80
- /**
81
- * The initial value of the select field.
82
- */
83
- defaultValue?: string | string[];
84
- /**
85
- * The callback invoked when the value of the select field changes.
86
- * @param value The value of the select field.
87
- */
88
- onChange?: (value: string | string[]) => void;
89
- /**
90
- * The placeholder text when there's no value.
91
- */
92
- placeholder?: string;
93
- /**
94
- * If `true`, the select will be disabled.
95
- */
96
- isDisabled?: boolean;
97
- /**
98
- * An array of options
99
- * If you leave this empty the children prop will be rendered.
100
- */
101
- options?: FieldOptions<SelectOption>;
102
- /**
103
- * Enable multiple select.
104
- */
105
- multiple?: boolean;
106
- /**
107
- * The function used to render the value of the select field.
108
- * @param value The value of the select field.
109
- * @returns The rendered value.
110
- */
111
- renderValue?: (value: string | string[]) => React$1__default.ReactNode;
112
- }
113
-
114
- interface SelectProps extends Omit<MenuProps, 'children'>, SelectOptions {
115
- }
116
- interface SelectOption extends Omit<MenuItemOptionProps, 'value'>, FieldOption {
117
- }
118
- /**
119
- * An option in a select list
120
- *
121
- * @see https://saas-ui.dev/docs/components/forms/select
122
- */
123
- declare const SelectOption: _chakra_ui_system_dist_system_types.ComponentWithAs<"button", MenuItemOptionProps>;
124
-
125
- interface Option$1 {
126
- value: string;
127
- label?: string;
128
- }
129
- interface NativeSelectOptions {
130
- options?: Option$1[];
131
- }
132
- interface NativeSelectProps extends SelectProps$1, NativeSelectOptions {
133
- }
134
-
135
- interface InputFieldProps extends InputProps {
136
- type?: string;
137
- leftAddon?: React$1.ReactNode;
138
- rightAddon?: React$1.ReactNode;
139
- }
140
- interface NumberInputFieldProps extends NumberInputProps {
141
- type: 'number';
142
- }
143
- interface PinFieldProps extends Omit<UsePinInputProps, 'type'> {
144
- pinLength?: number;
145
- pinType?: 'alphanumeric' | 'number';
146
- spacing?: SystemProps['margin'];
147
- }
148
- declare const defaultFieldTypes: {
149
- text: React$1.FC<InputFieldProps & BaseFieldProps<react_hook_form.FieldValues, string>>;
150
- email: React$1.FC<InputFieldProps & BaseFieldProps<react_hook_form.FieldValues, string>>;
151
- url: React$1.FC<InputFieldProps & BaseFieldProps<react_hook_form.FieldValues, string>>;
152
- phone: React$1.FC<InputFieldProps & BaseFieldProps<react_hook_form.FieldValues, string>>;
153
- number: React$1.FC<NumberInputFieldProps & BaseFieldProps<react_hook_form.FieldValues, string>>;
154
- password: React$1.FC<PasswordInputProps & BaseFieldProps<react_hook_form.FieldValues, string>>;
155
- textarea: React$1.FC<TextareaProps & BaseFieldProps<react_hook_form.FieldValues, string>>;
156
- switch: React$1.FC<SwitchProps & BaseFieldProps<react_hook_form.FieldValues, string>>;
157
- select: React$1.FC<SelectProps & BaseFieldProps<react_hook_form.FieldValues, string>>;
158
- checkbox: React$1.FC<CheckboxProps & BaseFieldProps<react_hook_form.FieldValues, string>>;
159
- radio: React$1.FC<RadioInputProps & BaseFieldProps<react_hook_form.FieldValues, string>>;
160
- pin: React$1.FC<PinFieldProps & BaseFieldProps<react_hook_form.FieldValues, string>>;
161
- 'native-select': React$1.FC<NativeSelectProps & BaseFieldProps<react_hook_form.FieldValues, string>>;
162
- };
163
- type DefaultFields = typeof defaultFieldTypes;
164
7
 
165
- type FieldOption = {
166
- label?: string;
167
- value: string;
168
- };
169
- type FieldOptions<TOption extends FieldOption = FieldOption> = Array<string> | Array<TOption>;
170
- type ValueOf<T> = T[keyof T];
171
- type ShallowMerge<A, B> = Omit<A, keyof B> & B;
172
- type Split<S extends string, D extends string> = string extends S ? string[] : S extends '' ? [] : S extends `${infer T}${D}${infer U}` ? [T, ...Split<U, D>] : [S];
173
- type MapPath<T extends string[]> = T extends [infer U, ...infer R] ? U extends string ? `${U extends `${number}` ? '$' : U}${R[0] extends string ? '.' : ''}${R extends string[] ? MapPath<R> : ''}` : '' : '';
174
- type TransformPath<T extends string> = MapPath<Split<T, '.'>>;
175
- type ArrayFieldPath<Name extends string> = Name extends string ? TransformPath<Name> : never;
176
- interface BaseFieldProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends Omit<FormControlProps, 'label' | 'type'> {
177
- /**
178
- * The field name
179
- */
180
- name: TName | ArrayFieldPath<TName>;
181
- /**
182
- * The field label
183
- */
184
- label?: string;
185
- /**
186
- * Hide the field label
187
- */
188
- hideLabel?: boolean;
189
- /**
190
- * Field help text
191
- */
192
- help?: string;
193
- /**
194
- * React hook form rules
195
- */
196
- rules?: Omit<RegisterOptions<TFieldValues, TName>, 'valueAsNumber' | 'valueAsDate' | 'setValueAs' | 'disabled'>;
197
- /**
198
- * Build-in types:
199
- * text, number, password, textarea, select, native-select, checkbox, radio, switch, pin
200
- *
201
- * Will default to a text field if there is no matching type.
202
- */
203
- type?: string;
204
- /**
205
- * The input placeholder
206
- */
207
- placeholder?: string;
208
- }
209
- type FieldPathWithArray<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = TName | ArrayFieldPath<TName>;
210
- type MergeFieldProps<FieldDefs, TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = ValueOf<{
211
- [K in keyof FieldDefs]: FieldDefs[K] extends React.FC<infer Props> ? {
212
- type?: K;
213
- } & ShallowMerge<Props, BaseFieldProps<TFieldValues, TName>> : never;
214
- }>;
215
- type FieldProps<TFieldValues extends FieldValues = FieldValues> = MergeFieldProps<DefaultFields, TFieldValues>;
216
- type FormChildren<FieldDefs, TFieldValues extends FieldValues = FieldValues, TContext extends object = object> = MaybeRenderProp<FormRenderContext<TFieldValues, TContext, MergeFieldProps<FieldDefs extends never ? DefaultFields : ShallowMerge<DefaultFields, FieldDefs>, TFieldValues>>>;
217
- type DefaultFieldOverrides = {
218
- submit?: SubmitButtonProps;
219
- [key: string]: any;
220
- };
221
- type FieldOverrides<FieldDefs, TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = {
222
- [K in FieldPathWithArray<TFieldValues, TName>]?: Omit<MergeFieldProps<FieldDefs extends never ? DefaultFields : ShallowMerge<DefaultFields, FieldDefs>, TFieldValues>, 'name'>;
223
- };
224
- type WithFields<TFormProps extends FormProps<any, any, any, any>, FieldDefs> = TFormProps extends FormProps<infer TFieldValues, infer TContext> ? Omit<TFormProps, 'children' | 'fields'> & {
225
- children?: FormChildren<FieldDefs, TFieldValues, TContext>;
226
- fields?: FieldOverrides<FieldDefs, TFieldValues> & {
227
- submit?: SubmitButtonProps;
228
- };
229
- } : never;
230
-
231
- type FieldResolver = {
232
- getFields(): BaseFieldProps[];
233
- getNestedFields(name: string): BaseFieldProps[];
234
- };
235
-
236
- interface DisplayIfProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> {
237
- children: React$1.ReactElement;
238
- name: TName;
239
- defaultValue?: unknown;
240
- isDisabled?: boolean;
241
- isExact?: boolean;
242
- condition?: (value: unknown, context: UseFormReturn<TFieldValues>) => boolean;
243
- }
244
-
245
- interface UseArrayFieldReturn extends UseFieldArrayReturn {
246
- /**
247
- * The array field name
248
- */
249
- name: string;
250
- /**
251
- * The default value for new items
252
- */
253
- defaultValue: Record<string, any>;
254
- /**
255
- * Min amount of items
256
- */
257
- min?: number;
258
- /**
259
- * Max amount of items
260
- */
261
- max?: number;
262
- }
263
- interface ArrayFieldOptions<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> {
264
- /**
265
- * The field name
266
- */
267
- name: TName;
268
- /**
269
- * Default value for new values in the array
270
- */
271
- defaultValue?: Record<string, any>;
272
- /**
273
- * Default key name for rows, change this if your data uses a different 'id' field
274
- * @default "id"
275
- */
276
- keyName?: string;
277
- min?: number;
278
- max?: number;
279
- }
280
- interface ArrayFieldProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends ArrayFieldOptions<TFieldValues, TName>, Omit<BaseFieldProps<TFieldValues, TName>, 'name' | 'defaultValue' | 'children'> {
281
- children: MaybeRenderProp<ArrayField[]>;
282
- }
283
- interface ArrayField {
284
- id: string;
285
- [key: string]: unknown;
286
- }
287
- /**
288
- * The wrapper component that composes the default ArrayField functionality.
289
- *
290
- * @see Docs https://saas-ui.dev/docs/components/forms/array-field
291
- */
292
- declare const ArrayField: ((props: ArrayFieldProps & {
293
- ref?: React$1.ForwardedRef<UseArrayFieldReturn>;
294
- }) => React$1.ReactElement) & {
295
- displayName: string;
296
- };
297
-
298
- interface ObjectFieldProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends BaseFieldProps {
299
- name: TName;
300
- children: React$1.ReactNode;
301
- columns?: ResponsiveValue<number>;
302
- spacing?: ResponsiveValue<string | number>;
303
- }
304
-
305
- interface FormRenderContext<TFieldValues extends FieldValues = FieldValues, TContext extends object = object, TFieldTypes = FieldProps<TFieldValues>> extends UseFormReturn<TFieldValues, TContext> {
306
- Field: React$1.FC<TFieldTypes & React$1.RefAttributes<FocusableElement>>;
307
- DisplayIf: React$1.FC<DisplayIfProps<TFieldValues>>;
308
- ArrayField: React$1.FC<ArrayFieldProps<TFieldValues> & React$1.RefAttributes<UseArrayFieldReturn>>;
309
- ObjectField: React$1.FC<ObjectFieldProps<TFieldValues>>;
310
- }
311
- interface FormOptions<TFieldValues extends FieldValues = FieldValues, TContext extends object = object, TSchema = any, TFieldTypes = FieldProps<TFieldValues>> {
312
- /**
313
- * The form schema.
314
- */
315
- schema?: TSchema;
316
- /**
317
- * Triggers when any of the field change.
318
- */
319
- onChange?: WatchObserver<TFieldValues>;
320
- /**
321
- * The submit handler.
322
- */
323
- onSubmit: SubmitHandler<TFieldValues>;
324
- /**
325
- * Triggers when there are validation errors.
326
- */
327
- onError?: SubmitErrorHandler<TFieldValues>;
328
- /**
329
- * The Hook Form state ref.
330
- */
331
- formRef?: React$1.RefObject<UseFormReturn<TFieldValues, TContext>>;
332
- /**
333
- * The form children, can be a render prop or a ReactNode.
334
- */
335
- children?: MaybeRenderProp<FormRenderContext<TFieldValues, TContext, TFieldTypes>>;
336
- /**
337
- * The field resolver, used to resolve the fields from schemas.
338
- */
339
- fieldResolver?: FieldResolver;
340
- /**
341
- * Field overrides
342
- */
343
- fields?: DefaultFieldOverrides;
344
- }
345
- interface FormProps<TFieldValues extends FieldValues = FieldValues, TContext extends object = object, TSchema = any, TFieldTypes = FieldProps<TFieldValues>> extends UseFormProps<TFieldValues, TContext>, Omit<HTMLChakraProps<'form'>, 'children' | 'onChange' | 'onSubmit' | 'onError'>, FormOptions<TFieldValues, TContext, TSchema, TFieldTypes> {
346
- }
347
-
348
- declare const ajvFieldResolver: (schema: JSONSchemaType<unknown>) => FieldResolver$1;
8
+ declare const ajvFieldResolver: (schema: JSONSchemaType<unknown>) => FieldResolver;
349
9
 
350
10
  type ResolverArgs = Parameters<typeof ajvResolver>;
351
11
  interface CreateAjvFormProps<FieldDefs> extends CreateFormProps<FieldDefs> {
352
12
  schemaOptions?: ResolverArgs[1];
353
13
  resolverOptions?: ResolverArgs[2];
354
14
  }
15
+ type ParseJsonSchema<T> = T extends {
16
+ type: 'object';
17
+ } ? JTDDataType<T> extends infer R ? R extends object ? R : never : never : never;
18
+ type AjvFormType<FieldDefs, ExtraProps = object, JsonSchema extends Record<string, any> = Record<string, any>> = (<TSchema extends JsonSchema = JsonSchema, TFieldValues extends ParseJsonSchema<TSchema> = ParseJsonSchema<TSchema>, TContext extends object = object>(props: WithFields<FormProps<TSchema, TFieldValues, TContext>, FieldDefs> & {
19
+ ref?: React.ForwardedRef<HTMLFormElement>;
20
+ } & ExtraProps) => React.ReactElement) & {
21
+ displayName?: string;
22
+ id?: string;
23
+ };
355
24
  /**
356
25
  * Create a Form component with AJV validation that accepts JSON Type Definition schema
357
26
  *
358
27
  * @see Docs https://saas-ui.dev/docs/components/forms/form
359
28
  * @see https://ajv.js.org/json-type-definition.html
360
29
  */
361
- declare function createAjvForm<FieldDefs>(options?: CreateAjvFormProps<FieldDefs>): <TSchema extends Record<string, any>, TContext extends object = object, TJSONSchema = JTDDataType<TSchema>>(props: WithFields$1<FormProps$1<TJSONSchema, TContext, TSchema, _saas_ui_forms.FieldProps<TJSONSchema>>, FieldDefs> & {
362
- ref?: React$1.ForwardedRef<HTMLFormElement> | undefined;
363
- }) => React.ReactElement;
30
+ declare function createAjvForm<FieldDefs>(options?: CreateAjvFormProps<FieldDefs>): AjvFormType<FieldDefs, object, Record<string, any>>;
364
31
 
365
- declare const Form: <TSchema extends Record<string, any>, TContext extends object = object, TJSONSchema = ajv_dist_jtd.JTDDataType<TSchema>>(props: WithFields<FormProps<TJSONSchema, TContext, TSchema, FieldProps<TJSONSchema>>, unknown> & {
366
- ref?: React$1.ForwardedRef<HTMLFormElement> | undefined;
367
- }) => React$1.ReactElement<any, string | React$1.JSXElementConstructor<any>>;
32
+ declare const Form: AjvFormType<unknown, object, Record<string, any>>;
368
33
 
369
34
  export { CreateAjvFormProps, Form, ajvFieldResolver, createAjvForm };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../ajv/src/ajv-resolver.ts","../../ajv/src/create-ajv-form.ts","../../ajv/src/index.ts"],"names":[],"mappings":";AAAA,SAAS,mBAAmB;AAC5B,SAAS,2BAA0C;AAM5C,IAAM,mBAAmB,CAAC,WAAoC;AACnE,SAAO,oBAAoB,OAAO,UAAU;AAC9C;;;ACTA;AAAA,EACE;AAAA,OAIK;AAiBA,SAAS,cACd,SACA;AACA,SAAO,WAAgB;AAAA,IACrB,UAAU,CAAC,WACT,YAAY,QAAQ,mCAAS,eAAe,mCAAS,eAAe;AAAA,IACtE,eAAe;AAAA,IACf,GAAG;AAAA,EACL,CAAC;AAUH;;;ACjCO,IAAM,OAAO,cAAc","sourcesContent":["import { ajvResolver } from '@hookform/resolvers/ajv'\nimport { objectFieldResolver, FieldResolver } from '@saas-ui/forms'\n\nimport { JSONSchemaType } from 'ajv'\n\nexport { ajvResolver }\n\nexport const ajvFieldResolver = (schema: JSONSchemaType<unknown>) => {\n return objectFieldResolver(schema.properties)\n}\n","import {\n createForm,\n CreateFormProps,\n FormProps,\n WithFields,\n} from '@saas-ui/forms'\nimport { ajvFieldResolver, ajvResolver } from './ajv-resolver'\nimport { JTDDataType } from 'ajv/dist/jtd'\ntype ResolverArgs = Parameters<typeof ajvResolver>\n\nexport interface CreateAjvFormProps<FieldDefs>\n extends CreateFormProps<FieldDefs> {\n schemaOptions?: ResolverArgs[1]\n resolverOptions?: ResolverArgs[2]\n}\n\n/**\n * Create a Form component with AJV validation that accepts JSON Type Definition schema\n *\n * @see Docs https://saas-ui.dev/docs/components/forms/form\n * @see https://ajv.js.org/json-type-definition.html\n */\nexport function createAjvForm<FieldDefs>(\n options?: CreateAjvFormProps<FieldDefs>\n) {\n return createForm<any>({\n resolver: (schema) =>\n ajvResolver(schema, options?.schemaOptions, options?.resolverOptions),\n fieldResolver: ajvFieldResolver,\n ...options,\n }) as <\n TSchema extends Record<string, any>,\n TContext extends object = object,\n TJSONSchema = JTDDataType<TSchema>\n >(\n /** @ts-expect-error @todo properly fix these types */\n props: WithFields<FormProps<TJSONSchema, TContext, TSchema>, FieldDefs> & {\n ref?: React.ForwardedRef<HTMLFormElement>\n }\n ) => React.ReactElement\n}\n","export * from './ajv-resolver'\nexport { createAjvForm } from './create-ajv-form'\nexport type { CreateAjvFormProps } from './create-ajv-form'\nexport type { JTDDataType, JTDSchemaType } from 'ajv/dist/jtd'\n\nimport { createAjvForm } from './create-ajv-form'\n\nexport const Form = createAjvForm()\n"]}
1
+ {"version":3,"sources":["../../ajv/src/ajv-resolver.ts","../../ajv/src/create-ajv-form.ts","../../ajv/src/index.ts"],"names":[],"mappings":";AAAA,SAAS,mBAAmB;AAC5B,SAAS,2BAA0C;AAM5C,IAAM,mBAAmB,CAAC,WAAoC;AACnE,SAAO,oBAAoB,OAAO,UAAU;AAC9C;;;ACTA;AAAA,EACE;AAAA,OAKK;AA0CA,SAAS,cACd,SACA;AACA,SAAO,WAAW;AAAA,IAChB,UAAU,CAAC,WACT,YAAY,QAAQ,mCAAS,eAAe,mCAAS,eAAe;AAAA,IACtE,eAAe;AAAA,IACf,GAAG;AAAA,EACL,CAAC;AACH;;;AClDO,IAAM,OAAO,cAAc","sourcesContent":["import { ajvResolver } from '@hookform/resolvers/ajv'\nimport { objectFieldResolver, FieldResolver } from '@saas-ui/forms'\n\nimport { JSONSchemaType } from 'ajv'\n\nexport { ajvResolver }\n\nexport const ajvFieldResolver = (schema: JSONSchemaType<unknown>) => {\n return objectFieldResolver(schema.properties)\n}\n","import {\n createForm,\n CreateFormProps,\n FieldValues,\n FormProps,\n WithFields,\n} from '@saas-ui/forms'\nimport { ajvFieldResolver, ajvResolver } from './ajv-resolver'\nimport { JTDDataType } from 'ajv/dist/jtd'\ntype ResolverArgs = Parameters<typeof ajvResolver>\n\nexport interface CreateAjvFormProps<FieldDefs>\n extends CreateFormProps<FieldDefs> {\n schemaOptions?: ResolverArgs[1]\n resolverOptions?: ResolverArgs[2]\n}\n\ntype ParseJsonSchema<T> = T extends { type: 'object' }\n ? JTDDataType<T> extends infer R\n ? R extends object\n ? R\n : never\n : never\n : never\n\nexport type AjvFormType<\n FieldDefs,\n ExtraProps = object,\n JsonSchema extends Record<string, any> = Record<string, any>\n> = (<\n TSchema extends JsonSchema = JsonSchema,\n TFieldValues extends ParseJsonSchema<TSchema> = ParseJsonSchema<TSchema>,\n TContext extends object = object\n>(\n props: WithFields<FormProps<TSchema, TFieldValues, TContext>, FieldDefs> & {\n ref?: React.ForwardedRef<HTMLFormElement>\n } & ExtraProps\n) => React.ReactElement) & {\n displayName?: string\n id?: string\n}\n\n/**\n * Create a Form component with AJV validation that accepts JSON Type Definition schema\n *\n * @see Docs https://saas-ui.dev/docs/components/forms/form\n * @see https://ajv.js.org/json-type-definition.html\n */\nexport function createAjvForm<FieldDefs>(\n options?: CreateAjvFormProps<FieldDefs>\n) {\n return createForm({\n resolver: (schema: any) =>\n ajvResolver(schema, options?.schemaOptions, options?.resolverOptions),\n fieldResolver: ajvFieldResolver,\n ...options,\n }) as AjvFormType<FieldDefs>\n}\n","export * from './ajv-resolver'\nexport { createAjvForm } from './create-ajv-form'\nexport type { CreateAjvFormProps } from './create-ajv-form'\nexport type { JTDDataType, JTDSchemaType } from 'ajv/dist/jtd'\n\nimport { createAjvForm } from './create-ajv-form'\n\nexport const Form = createAjvForm()\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../ajv/src/ajv-resolver.ts","../../ajv/src/create-ajv-form.ts","../../ajv/src/index.ts"],"names":[],"mappings":";AAAA,SAAS,mBAAmB;AAC5B,SAAS,2BAA0C;AAM5C,IAAM,mBAAmB,CAAC,WAAoC;AACnE,SAAO,oBAAoB,OAAO,UAAU;AAC9C;;;ACTA;AAAA,EACE;AAAA,OAIK;AAiBA,SAAS,cACd,SACA;AACA,SAAO,WAAgB;AAAA,IACrB,UAAU,CAAC,WACT,YAAY,QAAQ,mCAAS,eAAe,mCAAS,eAAe;AAAA,IACtE,eAAe;AAAA,IACf,GAAG;AAAA,EACL,CAAC;AAUH;;;ACjCO,IAAM,OAAO,cAAc","sourcesContent":["import { ajvResolver } from '@hookform/resolvers/ajv'\nimport { objectFieldResolver, FieldResolver } from '@saas-ui/forms'\n\nimport { JSONSchemaType } from 'ajv'\n\nexport { ajvResolver }\n\nexport const ajvFieldResolver = (schema: JSONSchemaType<unknown>) => {\n return objectFieldResolver(schema.properties)\n}\n","import {\n createForm,\n CreateFormProps,\n FormProps,\n WithFields,\n} from '@saas-ui/forms'\nimport { ajvFieldResolver, ajvResolver } from './ajv-resolver'\nimport { JTDDataType } from 'ajv/dist/jtd'\ntype ResolverArgs = Parameters<typeof ajvResolver>\n\nexport interface CreateAjvFormProps<FieldDefs>\n extends CreateFormProps<FieldDefs> {\n schemaOptions?: ResolverArgs[1]\n resolverOptions?: ResolverArgs[2]\n}\n\n/**\n * Create a Form component with AJV validation that accepts JSON Type Definition schema\n *\n * @see Docs https://saas-ui.dev/docs/components/forms/form\n * @see https://ajv.js.org/json-type-definition.html\n */\nexport function createAjvForm<FieldDefs>(\n options?: CreateAjvFormProps<FieldDefs>\n) {\n return createForm<any>({\n resolver: (schema) =>\n ajvResolver(schema, options?.schemaOptions, options?.resolverOptions),\n fieldResolver: ajvFieldResolver,\n ...options,\n }) as <\n TSchema extends Record<string, any>,\n TContext extends object = object,\n TJSONSchema = JTDDataType<TSchema>\n >(\n /** @ts-expect-error @todo properly fix these types */\n props: WithFields<FormProps<TJSONSchema, TContext, TSchema>, FieldDefs> & {\n ref?: React.ForwardedRef<HTMLFormElement>\n }\n ) => React.ReactElement\n}\n","export * from './ajv-resolver'\nexport { createAjvForm } from './create-ajv-form'\nexport type { CreateAjvFormProps } from './create-ajv-form'\nexport type { JTDDataType, JTDSchemaType } from 'ajv/dist/jtd'\n\nimport { createAjvForm } from './create-ajv-form'\n\nexport const Form = createAjvForm()\n"]}
1
+ {"version":3,"sources":["../../ajv/src/ajv-resolver.ts","../../ajv/src/create-ajv-form.ts","../../ajv/src/index.ts"],"names":[],"mappings":";AAAA,SAAS,mBAAmB;AAC5B,SAAS,2BAA0C;AAM5C,IAAM,mBAAmB,CAAC,WAAoC;AACnE,SAAO,oBAAoB,OAAO,UAAU;AAC9C;;;ACTA;AAAA,EACE;AAAA,OAKK;AA0CA,SAAS,cACd,SACA;AACA,SAAO,WAAW;AAAA,IAChB,UAAU,CAAC,WACT,YAAY,QAAQ,mCAAS,eAAe,mCAAS,eAAe;AAAA,IACtE,eAAe;AAAA,IACf,GAAG;AAAA,EACL,CAAC;AACH;;;AClDO,IAAM,OAAO,cAAc","sourcesContent":["import { ajvResolver } from '@hookform/resolvers/ajv'\nimport { objectFieldResolver, FieldResolver } from '@saas-ui/forms'\n\nimport { JSONSchemaType } from 'ajv'\n\nexport { ajvResolver }\n\nexport const ajvFieldResolver = (schema: JSONSchemaType<unknown>) => {\n return objectFieldResolver(schema.properties)\n}\n","import {\n createForm,\n CreateFormProps,\n FieldValues,\n FormProps,\n WithFields,\n} from '@saas-ui/forms'\nimport { ajvFieldResolver, ajvResolver } from './ajv-resolver'\nimport { JTDDataType } from 'ajv/dist/jtd'\ntype ResolverArgs = Parameters<typeof ajvResolver>\n\nexport interface CreateAjvFormProps<FieldDefs>\n extends CreateFormProps<FieldDefs> {\n schemaOptions?: ResolverArgs[1]\n resolverOptions?: ResolverArgs[2]\n}\n\ntype ParseJsonSchema<T> = T extends { type: 'object' }\n ? JTDDataType<T> extends infer R\n ? R extends object\n ? R\n : never\n : never\n : never\n\nexport type AjvFormType<\n FieldDefs,\n ExtraProps = object,\n JsonSchema extends Record<string, any> = Record<string, any>\n> = (<\n TSchema extends JsonSchema = JsonSchema,\n TFieldValues extends ParseJsonSchema<TSchema> = ParseJsonSchema<TSchema>,\n TContext extends object = object\n>(\n props: WithFields<FormProps<TSchema, TFieldValues, TContext>, FieldDefs> & {\n ref?: React.ForwardedRef<HTMLFormElement>\n } & ExtraProps\n) => React.ReactElement) & {\n displayName?: string\n id?: string\n}\n\n/**\n * Create a Form component with AJV validation that accepts JSON Type Definition schema\n *\n * @see Docs https://saas-ui.dev/docs/components/forms/form\n * @see https://ajv.js.org/json-type-definition.html\n */\nexport function createAjvForm<FieldDefs>(\n options?: CreateAjvFormProps<FieldDefs>\n) {\n return createForm({\n resolver: (schema: any) =>\n ajvResolver(schema, options?.schemaOptions, options?.resolverOptions),\n fieldResolver: ajvFieldResolver,\n ...options,\n }) as AjvFormType<FieldDefs>\n}\n","export * from './ajv-resolver'\nexport { createAjvForm } from './create-ajv-form'\nexport type { CreateAjvFormProps } from './create-ajv-form'\nexport type { JTDDataType, JTDSchemaType } from 'ajv/dist/jtd'\n\nimport { createAjvForm } from './create-ajv-form'\n\nexport const Form = createAjvForm()\n"]}