solid-hook-form 1.9.0 → 1.9.2

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 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 { Path, LiteralUnion, FieldPath, FieldPathValue, Resolver } from 'react-hook-form';
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>;
@@ -85,6 +81,10 @@ type CreateFormArg<F extends FormValues> = {
85
81
  };
86
82
  type CreateFormReturn<F extends FormValues = FormValues> = {
87
83
  control: Control<F>;
84
+ formState: {
85
+ errors: Accessor<FieldErrors<F>>;
86
+ isValid: Accessor<boolean>;
87
+ };
88
88
  values: Accessor<F>;
89
89
  errors: Accessor<FieldErrors<F>>;
90
90
  isValid: Accessor<boolean>;
@@ -99,7 +99,7 @@ type CreateForm = <F extends FormValues>(arg?: CreateFormArg<F>) => CreateFormRe
99
99
 
100
100
  declare const createForm: CreateForm;
101
101
 
102
- declare const useController: UseController;
102
+ declare const useController: <F extends FormValues>(arg: UseControllerArg<F>) => UseControllerReturn<F>;
103
103
 
104
104
  declare const Controller: <F extends FormValues>(props: ControllerProps<F>) => solid_js.JSX.Element;
105
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;
@@ -361,6 +365,10 @@ var createForm = (arg = { defaultValues: {} }) => {
361
365
  };
362
366
  return {
363
367
  control,
368
+ formState: {
369
+ errors,
370
+ isValid
371
+ },
364
372
  values,
365
373
  errors,
366
374
  isValid,
@@ -372,13 +380,24 @@ var createForm = (arg = { defaultValues: {} }) => {
372
380
  reset
373
381
  };
374
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
375
392
  var useController = (arg) => {
376
- const fieldProps = arg.control.register(arg.name, arg.rules);
393
+ const form = useFormContext();
394
+ const control = form?.control || arg.control;
395
+ const fieldProps = control.register(arg.name, arg.rules);
377
396
  const value = createMemo(() => {
378
- return get(arg.control.values(), arg.name);
397
+ return get(control.values(), arg.name);
379
398
  });
380
399
  const error = createMemo(() => {
381
- return arg.control.errors()[arg.name];
400
+ return control.errors()[arg.name];
382
401
  });
383
402
  return {
384
403
  field: {
@@ -394,16 +413,6 @@ var Controller = (props) => {
394
413
  const controller = useController(props);
395
414
  return memo(() => props.render(controller));
396
415
  };
397
- var FormContext = createContext();
398
-
399
- // src/use_form_context.ts
400
- var useFormContext = () => {
401
- const form = useContext(FormContext);
402
- if (!form) {
403
- throw new Error("useFormContext: cannot find a FormProvider");
404
- }
405
- return form;
406
- };
407
416
  var FormProvider = (props) => {
408
417
  return createComponent(FormContext.Provider, {
409
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;
@@ -362,6 +366,10 @@ var createForm = (arg = { defaultValues: {} }) => {
362
366
  };
363
367
  return {
364
368
  control,
369
+ formState: {
370
+ errors,
371
+ isValid
372
+ },
365
373
  values,
366
374
  errors,
367
375
  isValid,
@@ -376,13 +384,30 @@ var createForm = (arg = { defaultValues: {} }) => {
376
384
 
377
385
  // src/use_controller.ts
378
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
379
402
  var useController = (arg) => {
380
- const fieldProps = arg.control.register(arg.name, arg.rules);
403
+ const form = useFormContext();
404
+ const control = form?.control || arg.control;
405
+ const fieldProps = control.register(arg.name, arg.rules);
381
406
  const value = createMemo2(() => {
382
- return get(arg.control.values(), arg.name);
407
+ return get(control.values(), arg.name);
383
408
  });
384
409
  const error = createMemo2(() => {
385
- return arg.control.errors()[arg.name];
410
+ return control.errors()[arg.name];
386
411
  });
387
412
  return {
388
413
  field: {
@@ -401,22 +426,6 @@ var Controller = (props) => {
401
426
  return <>{props.render(controller)}</>;
402
427
  };
403
428
 
404
- // src/use_form_context.ts
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
412
- var useFormContext = () => {
413
- const form = useContext(FormContext);
414
- if (!form) {
415
- throw new Error("useFormContext: cannot find a FormProvider");
416
- }
417
- return form;
418
- };
419
-
420
429
  // src/form_provider.tsx
421
430
  var FormProvider = (props) => {
422
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.0",
3
+ "version": "1.9.2",
4
4
  "type": "module",
5
5
  "main": "./dist/main.js",
6
6
  "module": "./dist/main.js",