solid-hook-form 1.6.4 → 1.7.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 +1 -1
- package/dist/main.d.ts +29 -2
- package/dist/main.js +26 -3
- package/dist/main.jsx +30 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
6
|
<a href="https://solid-hook-form.vercel.app/get-started">Get started</a> |
|
|
7
|
-
<a href="https://solid-hook-form
|
|
7
|
+
<a href="https://solid-hook-form.vercel.app/#playground">Playground</a> |
|
|
8
8
|
<a href="https://solid-hook-form.vercel.app/examples">Examples</a>
|
|
9
9
|
</p>
|
|
10
10
|
|
package/dist/main.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Path, LiteralUnion, FieldPath, FieldPathValue, Resolver } from 'react-hook-form';
|
|
2
2
|
import * as solid_js from 'solid-js';
|
|
3
|
-
import { Accessor, ParentProps } from 'solid-js';
|
|
3
|
+
import { Accessor, ParentProps, JSX } from 'solid-js';
|
|
4
4
|
|
|
5
5
|
type Message = string;
|
|
6
6
|
type FieldError = {
|
|
@@ -29,6 +29,12 @@ type Rules<F extends FormValues = FormValues, N extends FieldPath<F> = FieldPath
|
|
|
29
29
|
validate?: Validate<FieldPathValue<F, N>, F>;
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
+
type Control<F extends FormValues> = {
|
|
33
|
+
values: Accessor<F>;
|
|
34
|
+
errors: Accessor<FieldErrors<F>>;
|
|
35
|
+
register: Register<F>;
|
|
36
|
+
};
|
|
37
|
+
|
|
32
38
|
type FormValues = Record<string, any>;
|
|
33
39
|
type Ref = HTMLElement | null;
|
|
34
40
|
type RegisterReturn<F extends FormValues> = {
|
|
@@ -47,6 +53,7 @@ type SubmitCallback<F extends FormValues> = (values: F) => void;
|
|
|
47
53
|
type OnSubmit<F extends FormValues> = (submit: SubmitCallback<F>) => (event: SubmitEvent) => void;
|
|
48
54
|
type Reset<F extends FormValues> = (newDefaultValues?: Partial<F>) => void;
|
|
49
55
|
type UseFormReturn<F extends FormValues = FormValues> = {
|
|
56
|
+
control: Control<F>;
|
|
50
57
|
values: Accessor<F>;
|
|
51
58
|
errors: Accessor<FieldErrors<F>>;
|
|
52
59
|
isValid: Accessor<boolean>;
|
|
@@ -71,8 +78,28 @@ declare const FormProvider: <T extends FormValues>(props: FormProviderProps<T>)
|
|
|
71
78
|
|
|
72
79
|
declare const useFormContext: <T extends FormValues>() => UseFormReturn<T>;
|
|
73
80
|
|
|
81
|
+
type ControllerRenderArg = {
|
|
82
|
+
field: {
|
|
83
|
+
name: string;
|
|
84
|
+
value: Accessor<any>;
|
|
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;
|
|
98
|
+
};
|
|
99
|
+
declare const Controller: <F extends FormValues>(props: ControllerProps<F>) => JSX.Element;
|
|
100
|
+
|
|
74
101
|
declare const get: (object: any, path: string, defaultValue?: unknown) => any;
|
|
75
102
|
|
|
76
103
|
declare const set: (object: FormValues, path: string, value: unknown) => void;
|
|
77
104
|
|
|
78
|
-
export { type FieldError, type FieldErrors, FormProvider, get, set, useForm, useFormContext };
|
|
105
|
+
export { Controller, type FieldError, type FieldErrors, FormProvider, get, set, useForm, useFormContext };
|
package/dist/main.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createContext, createSignal, createMemo, useContext } from 'solid-js';
|
|
2
|
-
import { createComponent } from 'solid-js/web';
|
|
2
|
+
import { createComponent, memo } from 'solid-js/web';
|
|
3
3
|
|
|
4
4
|
// src/use_form.ts
|
|
5
5
|
|
|
@@ -292,7 +292,6 @@ var useForm = (arg = { defaultValues: {} }) => {
|
|
|
292
292
|
addRule(name, options);
|
|
293
293
|
return {
|
|
294
294
|
name,
|
|
295
|
-
// value: get(values(), name),
|
|
296
295
|
onInput(event) {
|
|
297
296
|
if (mode === "onChange") {
|
|
298
297
|
onFieldChange(event, name);
|
|
@@ -315,6 +314,11 @@ var useForm = (arg = { defaultValues: {} }) => {
|
|
|
315
314
|
}
|
|
316
315
|
};
|
|
317
316
|
};
|
|
317
|
+
const control = {
|
|
318
|
+
values,
|
|
319
|
+
errors,
|
|
320
|
+
register
|
|
321
|
+
};
|
|
318
322
|
const getValues = (name) => {
|
|
319
323
|
if (name) {
|
|
320
324
|
return get(values(), name);
|
|
@@ -356,6 +360,7 @@ var useForm = (arg = { defaultValues: {} }) => {
|
|
|
356
360
|
});
|
|
357
361
|
};
|
|
358
362
|
return {
|
|
363
|
+
control,
|
|
359
364
|
values,
|
|
360
365
|
errors,
|
|
361
366
|
isValid,
|
|
@@ -386,5 +391,23 @@ var useFormContext = () => {
|
|
|
386
391
|
}
|
|
387
392
|
return form;
|
|
388
393
|
};
|
|
394
|
+
var Controller = (props) => {
|
|
395
|
+
const fieldProps = props.control.register(props.name, props.rules);
|
|
396
|
+
const value = createMemo(() => {
|
|
397
|
+
return get(props.control.values(), props.name);
|
|
398
|
+
});
|
|
399
|
+
const error = createMemo(() => {
|
|
400
|
+
return props.control.errors()[props.name];
|
|
401
|
+
});
|
|
402
|
+
return memo(() => props.render({
|
|
403
|
+
field: {
|
|
404
|
+
value,
|
|
405
|
+
...fieldProps
|
|
406
|
+
},
|
|
407
|
+
fieldState: {
|
|
408
|
+
error
|
|
409
|
+
}
|
|
410
|
+
}));
|
|
411
|
+
};
|
|
389
412
|
|
|
390
|
-
export { FormProvider, get, set, useForm, useFormContext };
|
|
413
|
+
export { Controller, FormProvider, get, set, useForm, useFormContext };
|
package/dist/main.jsx
CHANGED
|
@@ -293,7 +293,6 @@ var useForm = (arg = { defaultValues: {} }) => {
|
|
|
293
293
|
addRule(name, options);
|
|
294
294
|
return {
|
|
295
295
|
name,
|
|
296
|
-
// value: get(values(), name),
|
|
297
296
|
onInput(event) {
|
|
298
297
|
if (mode === "onChange") {
|
|
299
298
|
onFieldChange(event, name);
|
|
@@ -316,6 +315,11 @@ var useForm = (arg = { defaultValues: {} }) => {
|
|
|
316
315
|
}
|
|
317
316
|
};
|
|
318
317
|
};
|
|
318
|
+
const control = {
|
|
319
|
+
values,
|
|
320
|
+
errors,
|
|
321
|
+
register
|
|
322
|
+
};
|
|
319
323
|
const getValues = (name) => {
|
|
320
324
|
if (name) {
|
|
321
325
|
return get(values(), name);
|
|
@@ -357,6 +361,7 @@ var useForm = (arg = { defaultValues: {} }) => {
|
|
|
357
361
|
});
|
|
358
362
|
};
|
|
359
363
|
return {
|
|
364
|
+
control,
|
|
360
365
|
values,
|
|
361
366
|
errors,
|
|
362
367
|
isValid,
|
|
@@ -386,7 +391,31 @@ var useFormContext = () => {
|
|
|
386
391
|
}
|
|
387
392
|
return form;
|
|
388
393
|
};
|
|
394
|
+
|
|
395
|
+
// src/controller.tsx
|
|
396
|
+
import { createMemo as createMemo2 } from "solid-js";
|
|
397
|
+
var Controller = (props) => {
|
|
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
|
+
</>;
|
|
416
|
+
};
|
|
389
417
|
export {
|
|
418
|
+
Controller,
|
|
390
419
|
FormProvider,
|
|
391
420
|
get,
|
|
392
421
|
set,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "solid-hook-form",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/main.js",
|
|
6
6
|
"module": "./dist/main.js",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"description": "Performant, flexible and extensible forms with easy to use validation",
|
|
41
41
|
"repository": {
|
|
42
42
|
"type": "git",
|
|
43
|
-
"url": "https://github.com/tatsmaki/solid-hook-form.git"
|
|
43
|
+
"url": "git+https://github.com/tatsmaki/solid-hook-form.git"
|
|
44
44
|
},
|
|
45
45
|
"homepage": "https://solid-hook-form.vercel.app",
|
|
46
46
|
"keywords": [
|