solid-hook-form 1.7.2 → 1.9.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/README.md +4 -4
- package/dist/main.d.ts +45 -33
- package/dist/main.js +35 -30
- package/dist/main.jsx +40 -31
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -24,19 +24,19 @@ npm install solid-hook-form
|
|
|
24
24
|
### Quick start
|
|
25
25
|
|
|
26
26
|
```jsx
|
|
27
|
-
import {
|
|
27
|
+
import { createForm } from "solid-hook-form";
|
|
28
28
|
|
|
29
29
|
const ExampleForm = () => {
|
|
30
|
-
const { errors, register,
|
|
30
|
+
const { errors, register, handleSubmit } = createForm({
|
|
31
31
|
defaultValues: {
|
|
32
32
|
name: "",
|
|
33
33
|
},
|
|
34
34
|
});
|
|
35
35
|
|
|
36
|
-
const
|
|
36
|
+
const onSubmit = (values) => console.log(values);
|
|
37
37
|
|
|
38
38
|
return (
|
|
39
|
-
<form onSubmit={onSubmit
|
|
39
|
+
<form onSubmit={handleSubmit(onSubmit)}>
|
|
40
40
|
<input {...register("name", { minLength: 2, pattern: /[A-Za-z]/ })} />;
|
|
41
41
|
<button type="submit">Submit</button>
|
|
42
42
|
</form>
|
package/dist/main.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Path, LiteralUnion, FieldPath, FieldPathValue, Resolver } from 'react-hook-form';
|
|
2
1
|
import * as solid_js from 'solid-js';
|
|
3
|
-
import { Accessor,
|
|
2
|
+
import { Accessor, JSXElement, ParentProps } from 'solid-js';
|
|
3
|
+
import { Path, LiteralUnion, FieldPath, FieldPathValue, Resolver } from 'react-hook-form';
|
|
4
|
+
export { Path } from 'react-hook-form';
|
|
4
5
|
|
|
5
6
|
type Message = string;
|
|
6
7
|
type FieldError = {
|
|
@@ -34,6 +35,31 @@ type Control<F extends FormValues> = {
|
|
|
34
35
|
errors: Accessor<FieldErrors<F>>;
|
|
35
36
|
register: Register<F>;
|
|
36
37
|
};
|
|
38
|
+
type UseControllerArg<F extends FormValues> = {
|
|
39
|
+
control: Control<F>;
|
|
40
|
+
name: Path<F>;
|
|
41
|
+
rules?: Rules<F>;
|
|
42
|
+
render(arg: UseControllerReturn): JSXElement;
|
|
43
|
+
};
|
|
44
|
+
type UseControllerReturn = {
|
|
45
|
+
field: {
|
|
46
|
+
name: string;
|
|
47
|
+
value: Accessor<any>;
|
|
48
|
+
onInput(event: Event): void;
|
|
49
|
+
onChange(event: Event): void;
|
|
50
|
+
ref(element: HTMLElement): void;
|
|
51
|
+
};
|
|
52
|
+
fieldState: {
|
|
53
|
+
error: Accessor<FieldError | undefined>;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
type UseController = <F extends FormValues>(arg: UseControllerArg<F>) => UseControllerReturn;
|
|
57
|
+
type ControllerProps<F extends FormValues> = {
|
|
58
|
+
control: Control<F>;
|
|
59
|
+
name: Path<F>;
|
|
60
|
+
rules?: Rules<F>;
|
|
61
|
+
render(arg: UseControllerReturn): JSXElement;
|
|
62
|
+
};
|
|
37
63
|
|
|
38
64
|
type FormValues = Record<string, any>;
|
|
39
65
|
type Ref = HTMLElement | null;
|
|
@@ -52,7 +78,12 @@ type SetValue<F extends FormValues> = (name: Path<F>, value: FieldPathValue<F, P
|
|
|
52
78
|
type SubmitCallback<F extends FormValues> = (values: F) => void;
|
|
53
79
|
type OnSubmit<F extends FormValues> = (submit: SubmitCallback<F>) => (event: SubmitEvent) => void;
|
|
54
80
|
type Reset<F extends FormValues> = (newDefaultValues?: Partial<F>) => void;
|
|
55
|
-
type
|
|
81
|
+
type CreateFormArg<F extends FormValues> = {
|
|
82
|
+
defaultValues: F;
|
|
83
|
+
mode?: "onChange" | "onSubmit";
|
|
84
|
+
resolver?: Resolver<F>;
|
|
85
|
+
};
|
|
86
|
+
type CreateFormReturn<F extends FormValues = FormValues> = {
|
|
56
87
|
control: Control<F>;
|
|
57
88
|
values: Accessor<F>;
|
|
58
89
|
errors: Accessor<FieldErrors<F>>;
|
|
@@ -61,45 +92,26 @@ type UseFormReturn<F extends FormValues = FormValues> = {
|
|
|
61
92
|
getValues: GetValues<F>;
|
|
62
93
|
setValue: SetValue<F>;
|
|
63
94
|
onSubmit: OnSubmit<F>;
|
|
95
|
+
handleSubmit: OnSubmit<F>;
|
|
64
96
|
reset: Reset<F>;
|
|
65
97
|
};
|
|
98
|
+
type CreateForm = <F extends FormValues>(arg?: CreateFormArg<F>) => CreateFormReturn<F>;
|
|
66
99
|
|
|
67
|
-
|
|
68
|
-
defaultValues: F;
|
|
69
|
-
mode?: "onChange" | "onSubmit";
|
|
70
|
-
resolver?: Resolver<F>;
|
|
71
|
-
};
|
|
72
|
-
declare const useForm: <F extends FormValues>(arg?: UseFormArg<F>) => UseFormReturn<F>;
|
|
100
|
+
declare const createForm: CreateForm;
|
|
73
101
|
|
|
74
|
-
|
|
75
|
-
form: UseFormReturn<T>;
|
|
76
|
-
};
|
|
77
|
-
declare const FormProvider: <T extends FormValues>(props: FormProviderProps<T>) => solid_js.JSX.Element;
|
|
102
|
+
declare const useController: UseController;
|
|
78
103
|
|
|
79
|
-
declare const
|
|
104
|
+
declare const Controller: <F extends FormValues>(props: ControllerProps<F>) => solid_js.JSX.Element;
|
|
80
105
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
onInput(event: Event): void;
|
|
86
|
-
onChange(event: Event): void;
|
|
87
|
-
ref(element: HTMLElement): void;
|
|
88
|
-
};
|
|
89
|
-
fieldState: {
|
|
90
|
-
error: Accessor<FieldError | undefined>;
|
|
91
|
-
};
|
|
92
|
-
};
|
|
93
|
-
type ControllerProps<F extends FormValues> = {
|
|
94
|
-
control: Control<F>;
|
|
95
|
-
name: Path<F>;
|
|
96
|
-
rules?: Rules<F>;
|
|
97
|
-
render(arg: ControllerRenderArg): JSX.Element;
|
|
106
|
+
declare const useFormContext: <T extends FormValues>() => CreateFormReturn<T>;
|
|
107
|
+
|
|
108
|
+
type FormProviderProps<T extends FormValues> = ParentProps & {
|
|
109
|
+
form: CreateFormReturn<T>;
|
|
98
110
|
};
|
|
99
|
-
declare const
|
|
111
|
+
declare const FormProvider: <T extends FormValues>(props: FormProviderProps<T>) => solid_js.JSX.Element;
|
|
100
112
|
|
|
101
113
|
declare const get: (object: any, path: string, defaultValue?: unknown) => any;
|
|
102
114
|
|
|
103
115
|
declare const set: (object: FormValues, path: string, value: unknown) => void;
|
|
104
116
|
|
|
105
|
-
export { Controller, type FieldError, type FieldErrors, FormProvider, get, set, useForm, useFormContext };
|
|
117
|
+
export { type Control, Controller, type CreateFormArg, type CreateFormReturn, type FieldError, type FieldErrors, FormProvider, type FormValues, type Rules, type UseControllerArg, type UseControllerReturn, createForm, get, set, useController, createForm as useForm, useFormContext };
|
package/dist/main.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createContext, createSignal, createMemo, useContext } from 'solid-js';
|
|
2
|
-
import {
|
|
2
|
+
import { memo, createComponent } from 'solid-js/web';
|
|
3
3
|
|
|
4
|
-
// src/
|
|
4
|
+
// src/create_form.ts
|
|
5
5
|
|
|
6
6
|
// src/logic/get_value.ts
|
|
7
7
|
var getFieldValue = (event) => {
|
|
@@ -210,8 +210,8 @@ var getResolverFields = (fields) => {
|
|
|
210
210
|
}, {});
|
|
211
211
|
};
|
|
212
212
|
|
|
213
|
-
// src/
|
|
214
|
-
var
|
|
213
|
+
// src/create_form.ts
|
|
214
|
+
var createForm = (arg = { defaultValues: {} }) => {
|
|
215
215
|
const { defaultValues, mode = "onChange", resolver } = arg;
|
|
216
216
|
const { fields, getField, setField } = createFields();
|
|
217
217
|
const { rules, addRule, getRule } = createRules();
|
|
@@ -368,22 +368,35 @@ var useForm = (arg = { defaultValues: {} }) => {
|
|
|
368
368
|
getValues,
|
|
369
369
|
setValue,
|
|
370
370
|
onSubmit,
|
|
371
|
+
handleSubmit: onSubmit,
|
|
371
372
|
reset
|
|
372
373
|
};
|
|
373
374
|
};
|
|
374
|
-
var
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
375
|
+
var useController = (arg) => {
|
|
376
|
+
const fieldProps = arg.control.register(arg.name, arg.rules);
|
|
377
|
+
const value = createMemo(() => {
|
|
378
|
+
return get(arg.control.values(), arg.name);
|
|
379
|
+
});
|
|
380
|
+
const error = createMemo(() => {
|
|
381
|
+
return arg.control.errors()[arg.name];
|
|
382
|
+
});
|
|
383
|
+
return {
|
|
384
|
+
field: {
|
|
385
|
+
value,
|
|
386
|
+
...fieldProps
|
|
381
387
|
},
|
|
382
|
-
|
|
383
|
-
|
|
388
|
+
fieldState: {
|
|
389
|
+
error
|
|
384
390
|
}
|
|
385
|
-
}
|
|
391
|
+
};
|
|
386
392
|
};
|
|
393
|
+
var Controller = (props) => {
|
|
394
|
+
const controller = useController(props);
|
|
395
|
+
return memo(() => props.render(controller));
|
|
396
|
+
};
|
|
397
|
+
var FormContext = createContext();
|
|
398
|
+
|
|
399
|
+
// src/use_form_context.ts
|
|
387
400
|
var useFormContext = () => {
|
|
388
401
|
const form = useContext(FormContext);
|
|
389
402
|
if (!form) {
|
|
@@ -391,23 +404,15 @@ var useFormContext = () => {
|
|
|
391
404
|
}
|
|
392
405
|
return form;
|
|
393
406
|
};
|
|
394
|
-
var
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
});
|
|
399
|
-
const error = createMemo(() => {
|
|
400
|
-
return props.control.errors()[props.name];
|
|
401
|
-
});
|
|
402
|
-
return memo(() => props.render({
|
|
403
|
-
field: {
|
|
404
|
-
value,
|
|
405
|
-
...fieldProps
|
|
407
|
+
var FormProvider = (props) => {
|
|
408
|
+
return createComponent(FormContext.Provider, {
|
|
409
|
+
get value() {
|
|
410
|
+
return props.form;
|
|
406
411
|
},
|
|
407
|
-
|
|
408
|
-
|
|
412
|
+
get children() {
|
|
413
|
+
return props.children;
|
|
409
414
|
}
|
|
410
|
-
})
|
|
415
|
+
});
|
|
411
416
|
};
|
|
412
417
|
|
|
413
|
-
export { Controller, FormProvider, get, set, useForm, useFormContext };
|
|
418
|
+
export { Controller, FormProvider, createForm, get, set, useController, createForm as useForm, useFormContext };
|
package/dist/main.jsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// src/
|
|
1
|
+
// src/create_form.ts
|
|
2
2
|
import { createMemo, createSignal as createSignal2 } from "solid-js";
|
|
3
3
|
|
|
4
4
|
// src/logic/get_value.ts
|
|
@@ -211,8 +211,8 @@ var getResolverFields = (fields) => {
|
|
|
211
211
|
}, {});
|
|
212
212
|
};
|
|
213
213
|
|
|
214
|
-
// src/
|
|
215
|
-
var
|
|
214
|
+
// src/create_form.ts
|
|
215
|
+
var createForm = (arg = { defaultValues: {} }) => {
|
|
216
216
|
const { defaultValues, mode = "onChange", resolver } = arg;
|
|
217
217
|
const { fields, getField, setField } = createFields();
|
|
218
218
|
const { rules, addRule, getRule } = createRules();
|
|
@@ -369,21 +369,46 @@ var useForm = (arg = { defaultValues: {} }) => {
|
|
|
369
369
|
getValues,
|
|
370
370
|
setValue,
|
|
371
371
|
onSubmit,
|
|
372
|
+
handleSubmit: onSubmit,
|
|
372
373
|
reset
|
|
373
374
|
};
|
|
374
375
|
};
|
|
375
376
|
|
|
376
|
-
// src/
|
|
377
|
-
import {
|
|
378
|
-
var
|
|
377
|
+
// src/use_controller.ts
|
|
378
|
+
import { createMemo as createMemo2 } from "solid-js";
|
|
379
|
+
var useController = (arg) => {
|
|
380
|
+
const fieldProps = arg.control.register(arg.name, arg.rules);
|
|
381
|
+
const value = createMemo2(() => {
|
|
382
|
+
return get(arg.control.values(), arg.name);
|
|
383
|
+
});
|
|
384
|
+
const error = createMemo2(() => {
|
|
385
|
+
return arg.control.errors()[arg.name];
|
|
386
|
+
});
|
|
387
|
+
return {
|
|
388
|
+
field: {
|
|
389
|
+
value,
|
|
390
|
+
...fieldProps
|
|
391
|
+
},
|
|
392
|
+
fieldState: {
|
|
393
|
+
error
|
|
394
|
+
}
|
|
395
|
+
};
|
|
396
|
+
};
|
|
379
397
|
|
|
380
|
-
// src/
|
|
381
|
-
var
|
|
382
|
-
|
|
398
|
+
// src/controller.tsx
|
|
399
|
+
var Controller = (props) => {
|
|
400
|
+
const controller = useController(props);
|
|
401
|
+
return <>{props.render(controller)}</>;
|
|
383
402
|
};
|
|
384
403
|
|
|
385
404
|
// src/use_form_context.ts
|
|
386
405
|
import { useContext } from "solid-js";
|
|
406
|
+
|
|
407
|
+
// src/form_context.ts
|
|
408
|
+
import { createContext } from "solid-js";
|
|
409
|
+
var FormContext = createContext();
|
|
410
|
+
|
|
411
|
+
// src/use_form_context.ts
|
|
387
412
|
var useFormContext = () => {
|
|
388
413
|
const form = useContext(FormContext);
|
|
389
414
|
if (!form) {
|
|
@@ -392,33 +417,17 @@ var useFormContext = () => {
|
|
|
392
417
|
return form;
|
|
393
418
|
};
|
|
394
419
|
|
|
395
|
-
// src/
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
const fieldProps = props.control.register(props.name, props.rules);
|
|
399
|
-
const value = createMemo2(() => {
|
|
400
|
-
return get(props.control.values(), props.name);
|
|
401
|
-
});
|
|
402
|
-
const error = createMemo2(() => {
|
|
403
|
-
return props.control.errors()[props.name];
|
|
404
|
-
});
|
|
405
|
-
return <>
|
|
406
|
-
{props.render({
|
|
407
|
-
field: {
|
|
408
|
-
value,
|
|
409
|
-
...fieldProps
|
|
410
|
-
},
|
|
411
|
-
fieldState: {
|
|
412
|
-
error
|
|
413
|
-
}
|
|
414
|
-
})}
|
|
415
|
-
</>;
|
|
420
|
+
// src/form_provider.tsx
|
|
421
|
+
var FormProvider = (props) => {
|
|
422
|
+
return <FormContext.Provider value={props.form}>{props.children}</FormContext.Provider>;
|
|
416
423
|
};
|
|
417
424
|
export {
|
|
418
425
|
Controller,
|
|
419
426
|
FormProvider,
|
|
427
|
+
createForm,
|
|
420
428
|
get,
|
|
421
429
|
set,
|
|
422
|
-
|
|
430
|
+
useController,
|
|
431
|
+
createForm as useForm,
|
|
423
432
|
useFormContext
|
|
424
433
|
};
|