solid-hook-form 1.9.1 → 1.9.4
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/dist/main.d.ts +23 -27
- package/dist/main.js +18 -13
- package/dist/main.jsx +24 -19
- package/package.json +5 -9
package/dist/main.d.ts
CHANGED
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
import * as solid_js from 'solid-js';
|
|
2
2
|
import { Accessor, JSXElement, ParentProps } from 'solid-js';
|
|
3
|
-
import {
|
|
3
|
+
import { FieldPath, FieldPathValue, Path, LiteralUnion, Resolver } from 'react-hook-form';
|
|
4
4
|
export { Path } from 'react-hook-form';
|
|
5
5
|
|
|
6
|
-
type Message = string;
|
|
7
|
-
type FieldError = {
|
|
8
|
-
type: LiteralUnion<keyof Rules, string>;
|
|
9
|
-
ref?: HTMLElement;
|
|
10
|
-
message?: Message;
|
|
11
|
-
};
|
|
12
|
-
type FieldErrors<F extends FormValues = FormValues> = Partial<Record<Path<F>, FieldError>>;
|
|
13
|
-
|
|
14
6
|
type ValidateResult = Message | boolean | undefined;
|
|
15
7
|
type Validate<V, F> = (value: V, formValues: F) => ValidateResult | Promise<ValidateResult>;
|
|
16
8
|
type ValidationValue = boolean | number | string | RegExp;
|
|
@@ -30,6 +22,23 @@ type Rules<F extends FormValues = FormValues, N extends FieldPath<F> = FieldPath
|
|
|
30
22
|
validate?: Validate<FieldPathValue<F, N>, F>;
|
|
31
23
|
};
|
|
32
24
|
|
|
25
|
+
type Message = string;
|
|
26
|
+
type FieldError = {
|
|
27
|
+
type: LiteralUnion<keyof Rules, string>;
|
|
28
|
+
ref?: HTMLElement;
|
|
29
|
+
message?: Message;
|
|
30
|
+
};
|
|
31
|
+
type FieldErrors<F extends FormValues = FormValues> = Partial<Record<Path<F>, FieldError>>;
|
|
32
|
+
|
|
33
|
+
type Ref = HTMLElement | null;
|
|
34
|
+
type RegisterReturn<F extends FormValues> = {
|
|
35
|
+
name: Path<F>;
|
|
36
|
+
ref(ref: Ref): void;
|
|
37
|
+
onInput(event: Event | unknown): void;
|
|
38
|
+
onChange(event: Event | unknown): void;
|
|
39
|
+
};
|
|
40
|
+
type Register<F extends FormValues> = (name: Path<F>, options?: Rules<F, Path<F>>) => RegisterReturn<F>;
|
|
41
|
+
|
|
33
42
|
type Control<F extends FormValues> = {
|
|
34
43
|
values: Accessor<F>;
|
|
35
44
|
errors: Accessor<FieldErrors<F>>;
|
|
@@ -39,37 +48,24 @@ type UseControllerArg<F extends FormValues> = {
|
|
|
39
48
|
control: Control<F>;
|
|
40
49
|
name: Path<F>;
|
|
41
50
|
rules?: Rules<F>;
|
|
42
|
-
render(arg: UseControllerReturn): JSXElement;
|
|
51
|
+
render(arg: UseControllerReturn<F>): JSXElement;
|
|
43
52
|
};
|
|
44
|
-
type UseControllerReturn = {
|
|
45
|
-
field: {
|
|
46
|
-
name: string;
|
|
53
|
+
type UseControllerReturn<F extends FormValues> = {
|
|
54
|
+
field: RegisterReturn<F> & {
|
|
47
55
|
value: Accessor<any>;
|
|
48
|
-
onInput(event: Event): void;
|
|
49
|
-
onChange(event: Event): void;
|
|
50
|
-
ref(element: HTMLElement): void;
|
|
51
56
|
};
|
|
52
57
|
fieldState: {
|
|
53
58
|
error: Accessor<FieldError | undefined>;
|
|
54
59
|
};
|
|
55
60
|
};
|
|
56
|
-
type UseController = <F extends FormValues>(arg: UseControllerArg<F>) => UseControllerReturn;
|
|
57
61
|
type ControllerProps<F extends FormValues> = {
|
|
58
62
|
control: Control<F>;
|
|
59
63
|
name: Path<F>;
|
|
60
64
|
rules?: Rules<F>;
|
|
61
|
-
render(arg: UseControllerReturn): JSXElement;
|
|
65
|
+
render(arg: UseControllerReturn<F>): JSXElement;
|
|
62
66
|
};
|
|
63
67
|
|
|
64
68
|
type FormValues = Record<string, any>;
|
|
65
|
-
type Ref = HTMLElement | null;
|
|
66
|
-
type RegisterReturn<F extends FormValues> = {
|
|
67
|
-
name: Path<F>;
|
|
68
|
-
ref(ref: Ref): void;
|
|
69
|
-
onInput(event: Event): void;
|
|
70
|
-
onChange(event: Event): void;
|
|
71
|
-
};
|
|
72
|
-
type Register<T extends FormValues> = (name: Path<T>, options?: Rules<T, Path<T>>) => RegisterReturn<T>;
|
|
73
69
|
type GetValues<F extends FormValues> = {
|
|
74
70
|
(): F;
|
|
75
71
|
<N extends FieldPath<F>>(name: N): FieldPathValue<F, N>;
|
|
@@ -103,7 +99,7 @@ type CreateForm = <F extends FormValues>(arg?: CreateFormArg<F>) => CreateFormRe
|
|
|
103
99
|
|
|
104
100
|
declare const createForm: CreateForm;
|
|
105
101
|
|
|
106
|
-
declare const useController:
|
|
102
|
+
declare const useController: <F extends FormValues>(arg: UseControllerArg<F>) => UseControllerReturn<F>;
|
|
107
103
|
|
|
108
104
|
declare const Controller: <F extends FormValues>(props: ControllerProps<F>) => solid_js.JSX.Element;
|
|
109
105
|
|
package/dist/main.js
CHANGED
|
@@ -5,6 +5,10 @@ import { memo, createComponent } from 'solid-js/web';
|
|
|
5
5
|
|
|
6
6
|
// src/logic/get_value.ts
|
|
7
7
|
var getFieldValue = (event) => {
|
|
8
|
+
const isEvent = event instanceof Event;
|
|
9
|
+
if (!isEvent) {
|
|
10
|
+
return event;
|
|
11
|
+
}
|
|
8
12
|
const field = event.target;
|
|
9
13
|
if (field instanceof HTMLSelectElement) {
|
|
10
14
|
return field.value;
|
|
@@ -376,13 +380,24 @@ var createForm = (arg = { defaultValues: {} }) => {
|
|
|
376
380
|
reset
|
|
377
381
|
};
|
|
378
382
|
};
|
|
383
|
+
var FormContext = createContext();
|
|
384
|
+
|
|
385
|
+
// src/use_form_context.ts
|
|
386
|
+
var useFormContext = () => {
|
|
387
|
+
const form = useContext(FormContext);
|
|
388
|
+
return form;
|
|
389
|
+
};
|
|
390
|
+
|
|
391
|
+
// src/use_controller.ts
|
|
379
392
|
var useController = (arg) => {
|
|
380
|
-
const
|
|
393
|
+
const form = useFormContext();
|
|
394
|
+
const control = form?.control || arg.control;
|
|
395
|
+
const fieldProps = control.register(arg.name, arg.rules);
|
|
381
396
|
const value = createMemo(() => {
|
|
382
|
-
return get(
|
|
397
|
+
return get(control.values(), arg.name);
|
|
383
398
|
});
|
|
384
399
|
const error = createMemo(() => {
|
|
385
|
-
return
|
|
400
|
+
return control.errors()[arg.name];
|
|
386
401
|
});
|
|
387
402
|
return {
|
|
388
403
|
field: {
|
|
@@ -398,16 +413,6 @@ var Controller = (props) => {
|
|
|
398
413
|
const controller = useController(props);
|
|
399
414
|
return memo(() => props.render(controller));
|
|
400
415
|
};
|
|
401
|
-
var FormContext = createContext();
|
|
402
|
-
|
|
403
|
-
// src/use_form_context.ts
|
|
404
|
-
var useFormContext = () => {
|
|
405
|
-
const form = useContext(FormContext);
|
|
406
|
-
if (!form) {
|
|
407
|
-
throw new Error("useFormContext: cannot find a FormProvider");
|
|
408
|
-
}
|
|
409
|
-
return form;
|
|
410
|
-
};
|
|
411
416
|
var FormProvider = (props) => {
|
|
412
417
|
return createComponent(FormContext.Provider, {
|
|
413
418
|
get value() {
|
package/dist/main.jsx
CHANGED
|
@@ -3,6 +3,10 @@ import { createMemo, createSignal as createSignal2 } from "solid-js";
|
|
|
3
3
|
|
|
4
4
|
// src/logic/get_value.ts
|
|
5
5
|
var getFieldValue = (event) => {
|
|
6
|
+
const isEvent = event instanceof Event;
|
|
7
|
+
if (!isEvent) {
|
|
8
|
+
return event;
|
|
9
|
+
}
|
|
6
10
|
const field = event.target;
|
|
7
11
|
if (field instanceof HTMLSelectElement) {
|
|
8
12
|
return field.value;
|
|
@@ -380,13 +384,30 @@ var createForm = (arg = { defaultValues: {} }) => {
|
|
|
380
384
|
|
|
381
385
|
// src/use_controller.ts
|
|
382
386
|
import { createMemo as createMemo2 } from "solid-js";
|
|
387
|
+
|
|
388
|
+
// src/use_form_context.ts
|
|
389
|
+
import { useContext } from "solid-js";
|
|
390
|
+
|
|
391
|
+
// src/form_context.ts
|
|
392
|
+
import { createContext } from "solid-js";
|
|
393
|
+
var FormContext = createContext();
|
|
394
|
+
|
|
395
|
+
// src/use_form_context.ts
|
|
396
|
+
var useFormContext = () => {
|
|
397
|
+
const form = useContext(FormContext);
|
|
398
|
+
return form;
|
|
399
|
+
};
|
|
400
|
+
|
|
401
|
+
// src/use_controller.ts
|
|
383
402
|
var useController = (arg) => {
|
|
384
|
-
const
|
|
403
|
+
const form = useFormContext();
|
|
404
|
+
const control = form?.control || arg.control;
|
|
405
|
+
const fieldProps = control.register(arg.name, arg.rules);
|
|
385
406
|
const value = createMemo2(() => {
|
|
386
|
-
return get(
|
|
407
|
+
return get(control.values(), arg.name);
|
|
387
408
|
});
|
|
388
409
|
const error = createMemo2(() => {
|
|
389
|
-
return
|
|
410
|
+
return control.errors()[arg.name];
|
|
390
411
|
});
|
|
391
412
|
return {
|
|
392
413
|
field: {
|
|
@@ -405,22 +426,6 @@ var Controller = (props) => {
|
|
|
405
426
|
return <>{props.render(controller)}</>;
|
|
406
427
|
};
|
|
407
428
|
|
|
408
|
-
// src/use_form_context.ts
|
|
409
|
-
import { useContext } from "solid-js";
|
|
410
|
-
|
|
411
|
-
// src/form_context.ts
|
|
412
|
-
import { createContext } from "solid-js";
|
|
413
|
-
var FormContext = createContext();
|
|
414
|
-
|
|
415
|
-
// src/use_form_context.ts
|
|
416
|
-
var useFormContext = () => {
|
|
417
|
-
const form = useContext(FormContext);
|
|
418
|
-
if (!form) {
|
|
419
|
-
throw new Error("useFormContext: cannot find a FormProvider");
|
|
420
|
-
}
|
|
421
|
-
return form;
|
|
422
|
-
};
|
|
423
|
-
|
|
424
429
|
// src/form_provider.tsx
|
|
425
430
|
var FormProvider = (props) => {
|
|
426
431
|
return <FormContext.Provider value={props.form}>{props.children}</FormContext.Provider>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "solid-hook-form",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/main.js",
|
|
6
6
|
"module": "./dist/main.js",
|
|
@@ -20,20 +20,16 @@
|
|
|
20
20
|
"solid-js": "^1.9.5"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@solidjs/testing-library": "^0.8.10",
|
|
24
|
-
"@testing-library/user-event": "^14.6.1",
|
|
25
23
|
"esbuild-plugin-solid": "^0.6.0",
|
|
26
|
-
"happy-dom": "^17.4.4",
|
|
27
24
|
"react-hook-form": "^7.55.0",
|
|
28
25
|
"tsup": "^8.5.0",
|
|
29
|
-
"typescript": "~5.7.2"
|
|
30
|
-
"vite": "^6.0.11",
|
|
31
|
-
"vite-plugin-solid": "^2.11.6",
|
|
32
|
-
"vitest": "^3.1.1"
|
|
26
|
+
"typescript": "~5.7.2"
|
|
33
27
|
},
|
|
34
28
|
"scripts": {
|
|
29
|
+
"preinstall": "cd ./tests && npm ci",
|
|
35
30
|
"build": "tsc && tsup",
|
|
36
|
-
"test": "
|
|
31
|
+
"test": "cd ./tests && npm run test",
|
|
32
|
+
"test:ui": "cd ./tests && npm run test:ui"
|
|
37
33
|
},
|
|
38
34
|
"author": "thorn_pear",
|
|
39
35
|
"license": "ISC",
|