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 CHANGED
@@ -24,19 +24,19 @@ npm install solid-hook-form
24
24
  ### Quick start
25
25
 
26
26
  ```jsx
27
- import { useForm } from "solid-hook-form";
27
+ import { createForm } from "solid-hook-form";
28
28
 
29
29
  const ExampleForm = () => {
30
- const { errors, register, onSubmit } = useForm({
30
+ const { errors, register, handleSubmit } = createForm({
31
31
  defaultValues: {
32
32
  name: "",
33
33
  },
34
34
  });
35
35
 
36
- const submitExample = (values) => console.log(values);
36
+ const onSubmit = (values) => console.log(values);
37
37
 
38
38
  return (
39
- <form onSubmit={onSubmit(submitExample)}>
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, ParentProps, JSX } from 'solid-js';
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 UseFormReturn<F extends FormValues = FormValues> = {
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
- type UseFormArg<F extends FormValues> = {
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
- type FormProviderProps<T extends FormValues> = ParentProps & {
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 useFormContext: <T extends FormValues>() => UseFormReturn<T>;
104
+ declare const Controller: <F extends FormValues>(props: ControllerProps<F>) => solid_js.JSX.Element;
80
105
 
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;
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 Controller: <F extends FormValues>(props: ControllerProps<F>) => JSX.Element;
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 { createComponent, memo } from 'solid-js/web';
2
+ import { memo, createComponent } from 'solid-js/web';
3
3
 
4
- // src/use_form.ts
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/use_form.ts
214
- var useForm = (arg = { defaultValues: {} }) => {
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 FormContext = createContext();
375
-
376
- // src/form_provider.tsx
377
- var FormProvider = (props) => {
378
- return createComponent(FormContext.Provider, {
379
- get value() {
380
- return props.form;
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
- get children() {
383
- return props.children;
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 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
407
+ var FormProvider = (props) => {
408
+ return createComponent(FormContext.Provider, {
409
+ get value() {
410
+ return props.form;
406
411
  },
407
- fieldState: {
408
- error
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/use_form.ts
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/use_form.ts
215
- var useForm = (arg = { defaultValues: {} }) => {
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/form_context.ts
377
- import { createContext } from "solid-js";
378
- var FormContext = createContext();
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/form_provider.tsx
381
- var FormProvider = (props) => {
382
- return <FormContext.Provider value={props.form}>{props.children}</FormContext.Provider>;
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/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
- </>;
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
- useForm,
430
+ useController,
431
+ createForm as useForm,
423
432
  useFormContext
424
433
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solid-hook-form",
3
- "version": "1.7.2",
3
+ "version": "1.9.0",
4
4
  "type": "module",
5
5
  "main": "./dist/main.js",
6
6
  "module": "./dist/main.js",