@mantine/form 4.2.3 → 4.2.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/cjs/use-form.js CHANGED
@@ -8,8 +8,6 @@ var validateValues = require('./validate-values/validate-values.js');
8
8
  var filterErrors = require('./filter-errors/filter-errors.js');
9
9
  var getInputOnChange = require('./get-input-on-change/get-input-on-change.js');
10
10
  var getErrorPath = require('./get-error-path/get-error-path.js');
11
- var useStateRef = require('./use-state-ref/use-state-ref.js');
12
- var usePropRef = require('./use-prop-ref/use-prop-ref.js');
13
11
 
14
12
  var __defProp = Object.defineProperty;
15
13
  var __defProps = Object.defineProperties;
@@ -36,44 +34,41 @@ function useForm({
36
34
  validate: rules,
37
35
  schema
38
36
  }) {
39
- const [errors, setErrors, errorsRef] = useStateRef.useStateRef(filterErrors.filterErrors(initialErrors));
40
- const [values, setValues, valuesRef] = useStateRef.useStateRef(initialValues);
41
- const initialValuesRef = usePropRef.usePropRef(initialValues);
42
- const rulesRef = usePropRef.usePropRef(rules);
43
- const schemaRef = usePropRef.usePropRef(schema);
44
- const clearErrors = react.useCallback(() => setErrors({}), []);
45
- const setFieldError = react.useCallback((field, error) => setErrors((current) => __spreadProps(__spreadValues({}, current), { [field]: error })), []);
46
- const clearFieldError = react.useCallback((field) => setErrors((current) => {
37
+ const [errors, setErrors] = react.useState(filterErrors.filterErrors(initialErrors));
38
+ const [values, setValues] = react.useState(initialValues);
39
+ const clearErrors = () => setErrors({});
40
+ const setFieldError = (field, error) => setErrors((current) => __spreadProps(__spreadValues({}, current), { [field]: error }));
41
+ const clearFieldError = (field) => setErrors((current) => {
47
42
  const clone = __spreadValues({}, current);
48
43
  delete clone[field];
49
44
  return clone;
50
- }), []);
51
- const setFieldValue = react.useCallback((field, value) => {
45
+ });
46
+ const setFieldValue = (field, value) => {
52
47
  setValues((currentValues) => __spreadProps(__spreadValues({}, currentValues), { [field]: value }));
53
48
  clearFieldError(field);
54
- }, []);
55
- const setListItem = react.useCallback((field, index, value) => {
56
- const list = valuesRef.current[field];
49
+ };
50
+ const setListItem = (field, index, value) => {
51
+ const list = values[field];
57
52
  if (formList.isFormList(list) && list[index] !== void 0) {
58
53
  const cloned = [...list];
59
54
  cloned[index] = value;
60
55
  setFieldValue(field, formList.formList(cloned));
61
56
  }
62
- }, []);
63
- const removeListItem = react.useCallback((field, indices) => {
64
- const list = valuesRef.current[field];
57
+ };
58
+ const removeListItem = (field, indices) => {
59
+ const list = values[field];
65
60
  if (formList.isFormList(list)) {
66
61
  setFieldValue(field, formList.formList(list.filter((_, index) => Array.isArray(indices) ? !indices.includes(index) : indices !== index)));
67
62
  }
68
- }, []);
69
- const addListItem = react.useCallback((field, payload) => {
70
- const list = valuesRef.current[field];
63
+ };
64
+ const addListItem = (field, payload) => {
65
+ const list = values[field];
71
66
  if (formList.isFormList(list)) {
72
67
  setFieldValue(field, formList.formList([...list, payload]));
73
68
  }
74
- }, []);
75
- const reorderListItem = react.useCallback((field, { from, to }) => {
76
- const list = valuesRef.current[field];
69
+ };
70
+ const reorderListItem = (field, { from, to }) => {
71
+ const list = values[field];
77
72
  if (formList.isFormList(list) && list[from] !== void 0 && list[to] !== void 0) {
78
73
  const cloned = [...list];
79
74
  const item = list[from];
@@ -81,50 +76,50 @@ function useForm({
81
76
  cloned.splice(to, 0, item);
82
77
  setFieldValue(field, formList.formList(cloned));
83
78
  }
84
- }, []);
85
- const validate = react.useCallback(() => {
86
- const results = validateValues.validateValues(schemaRef.current || rulesRef.current, valuesRef.current);
79
+ };
80
+ const validate = () => {
81
+ const results = validateValues.validateValues(schema || rules, values);
87
82
  setErrors(results.errors);
88
83
  return results;
89
- }, []);
90
- const validateField = react.useCallback((field) => {
91
- const results = validateValues.validateFieldValue(field, schemaRef.current || rulesRef.current, valuesRef.current);
84
+ };
85
+ const validateField = (field) => {
86
+ const results = validateValues.validateFieldValue(field, schema || rules, values);
92
87
  results.hasError ? setFieldError(field, results.error) : clearFieldError(field);
93
88
  return results;
94
- }, []);
95
- const onSubmit = react.useCallback((handleSubmit) => (event) => {
89
+ };
90
+ const onSubmit = (handleSubmit) => (event) => {
96
91
  event.preventDefault();
97
92
  const results = validate();
98
- !results.hasErrors && handleSubmit(valuesRef.current, event);
99
- }, []);
100
- const reset = react.useCallback(() => {
101
- setValues(initialValuesRef.current);
93
+ !results.hasErrors && handleSubmit(values, event);
94
+ };
95
+ const reset = () => {
96
+ setValues(initialValues);
102
97
  clearErrors();
103
- }, []);
104
- const getInputProps = react.useCallback((field, { type, withError = true } = {}) => {
105
- const value = valuesRef.current[field];
98
+ };
99
+ const getInputProps = (field, { type, withError = true } = {}) => {
100
+ const value = values[field];
106
101
  const onChange = getInputOnChange.getInputOnChange((val) => setFieldValue(field, val));
107
102
  const payload = type === "checkbox" ? { checked: value, onChange } : { value, onChange };
108
- if (withError && errorsRef.current[field]) {
109
- payload.error = errorsRef.current[field];
103
+ if (withError && errors[field]) {
104
+ payload.error = errors[field];
110
105
  }
111
106
  return payload;
112
- }, []);
113
- const getListInputProps = react.useCallback((field, index, listField, { type, withError = true } = {}) => {
114
- const list = valuesRef.current[field];
107
+ };
108
+ const getListInputProps = (field, index, listField, { type, withError = true } = {}) => {
109
+ const list = values[field];
115
110
  if (formList.isFormList(list) && list[index] && listField in list[index]) {
116
111
  const listValue = list[index];
117
112
  const value = listValue[listField];
118
113
  const onChange = getInputOnChange.getInputOnChange((val) => setListItem(field, index, __spreadProps(__spreadValues({}, listValue), { [listField]: val })));
119
114
  const payload = type === "checkbox" ? { checked: value, onChange } : { value, onChange };
120
- const error = errorsRef.current[getErrorPath.getErrorPath([field, index, listField])];
115
+ const error = errors[getErrorPath.getErrorPath([field, index, listField])];
121
116
  if (withError && error) {
122
117
  payload.error = error;
123
118
  }
124
119
  return payload;
125
120
  }
126
121
  return {};
127
- }, []);
122
+ };
128
123
  return {
129
124
  values,
130
125
  setValues,
@@ -1 +1 @@
1
- {"version":3,"file":"use-form.js","sources":["../src/use-form.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport { formList, isFormList, FormList } from './form-list/form-list';\nimport { validateValues, validateFieldValue } from './validate-values/validate-values';\nimport { filterErrors } from './filter-errors/filter-errors';\nimport { getInputOnChange } from './get-input-on-change/get-input-on-change';\nimport { getErrorPath } from './get-error-path/get-error-path';\nimport { useStateRef } from './use-state-ref/use-state-ref';\nimport { usePropRef } from './use-prop-ref/use-prop-ref';\nimport type {\n FormErrors,\n FormRules,\n FormValidationResult,\n FormFieldValidationResult,\n GetInputProps,\n GetInputPropsFieldType,\n} from './types';\n\nexport interface UseFormInput<T> {\n initialValues: T;\n initialErrors?: FormErrors;\n validate?: FormRules<T>;\n schema?: (values: Record<string, any>) => FormErrors;\n}\n\nexport interface UseFormReturnType<T> {\n values: T;\n setValues: React.Dispatch<React.SetStateAction<T>>;\n setFieldValue: <K extends keyof T, V extends T[K]>(field: K, value: V) => void;\n errors: FormErrors;\n setErrors: React.Dispatch<React.SetStateAction<FormErrors>>;\n setFieldError: <K extends keyof T>(field: K, error: React.ReactNode) => void;\n clearFieldError: <K extends keyof T>(field: K) => void;\n clearErrors(): void;\n setListItem: <K extends keyof T, V extends T[K]>(\n field: K,\n index: number,\n value: V extends FormList<infer U> ? U : never\n ) => void;\n addListItem: <K extends keyof T, V extends T[K]>(\n field: K,\n payload: V extends FormList<infer U> ? U : never\n ) => void;\n removeListItem: <K extends keyof T>(field: K, indices: number[] | number) => void;\n reorderListItem: <K extends keyof T>(field: K, payload: { from: number; to: number }) => void;\n validate(): FormValidationResult;\n validateField: (field: string) => FormFieldValidationResult;\n onSubmit(\n handleSubmit: (values: T, event: React.FormEvent) => void\n ): (event?: React.FormEvent) => void;\n reset(): void;\n getInputProps: <K extends keyof T, L extends GetInputPropsFieldType = 'input'>(\n field: K,\n options?: { type?: L; withError?: boolean }\n ) => GetInputProps<L>;\n\n getListInputProps: <\n K extends keyof T,\n U extends T[K],\n L extends GetInputPropsFieldType = 'input'\n >(\n field: K,\n index: number,\n listField: U extends FormList<infer V> ? keyof V : never,\n options?: { type?: L; withError?: boolean }\n ) => GetInputProps<L>;\n}\n\nexport function useForm<T extends { [key: string]: any }>({\n initialValues,\n initialErrors,\n validate: rules,\n schema,\n}: UseFormInput<T>): UseFormReturnType<T> {\n const [errors, setErrors, errorsRef] = useStateRef(filterErrors(initialErrors));\n const [values, setValues, valuesRef] = useStateRef(initialValues);\n const initialValuesRef = usePropRef(initialValues);\n const rulesRef = usePropRef(rules);\n const schemaRef = usePropRef(schema);\n\n const clearErrors = useCallback(() => setErrors({}), []);\n const setFieldError = useCallback(\n (field: keyof T, error: React.ReactNode) =>\n setErrors((current) => ({ ...current, [field]: error })),\n []\n );\n\n const clearFieldError = useCallback(\n (field: keyof T) =>\n setErrors((current) => {\n const clone: any = { ...current };\n delete clone[field];\n return clone;\n }),\n []\n );\n\n const setFieldValue = useCallback(<K extends keyof T, V extends T[K]>(field: K, value: V) => {\n setValues((currentValues) => ({ ...currentValues, [field]: value }));\n clearFieldError(field);\n }, []);\n\n const setListItem = useCallback(\n <K extends keyof T, V extends T[K]>(field: K, index: number, value: V[K][number]) => {\n const list = valuesRef.current[field];\n if (isFormList(list) && list[index] !== undefined) {\n const cloned = [...list];\n cloned[index] = value;\n setFieldValue(field, formList(cloned) as any);\n }\n },\n []\n );\n\n const removeListItem = useCallback(<K extends keyof T>(field: K, indices: number[] | number) => {\n const list = valuesRef.current[field];\n\n if (isFormList(list)) {\n setFieldValue(\n field,\n formList(\n list.filter((_: any, index: number) =>\n Array.isArray(indices) ? !indices.includes(index) : indices !== index\n )\n ) as any\n );\n }\n }, []);\n\n const addListItem = useCallback(\n <K extends keyof T, V extends T[K]>(field: K, payload: V[number]) => {\n const list = valuesRef.current[field];\n\n if (isFormList(list)) {\n setFieldValue(field, formList([...list, payload]) as any);\n }\n },\n []\n );\n\n const reorderListItem = useCallback(\n <K extends keyof T>(field: K, { from, to }: { from: number; to: number }) => {\n const list = valuesRef.current[field];\n\n if (isFormList(list) && list[from] !== undefined && list[to] !== undefined) {\n const cloned = [...list];\n const item = list[from];\n\n cloned.splice(from, 1);\n cloned.splice(to, 0, item);\n setFieldValue(field, formList(cloned) as any);\n }\n },\n []\n );\n\n const validate = useCallback(() => {\n const results = validateValues(schemaRef.current || rulesRef.current, valuesRef.current);\n setErrors(results.errors);\n return results;\n }, []);\n\n const validateField = useCallback((field: string) => {\n const results = validateFieldValue(\n field,\n schemaRef.current || rulesRef.current,\n valuesRef.current\n );\n results.hasError ? setFieldError(field, results.error) : clearFieldError(field);\n return results;\n }, []);\n\n const onSubmit = useCallback(\n (handleSubmit: (values: T, event: React.FormEvent) => void) => (event: React.FormEvent) => {\n event.preventDefault();\n const results = validate();\n !results.hasErrors && handleSubmit(valuesRef.current, event);\n },\n []\n );\n\n const reset = useCallback(() => {\n setValues(initialValuesRef.current);\n clearErrors();\n }, []);\n\n const getInputProps = useCallback(\n <K extends keyof T, U extends T[K], L extends GetInputPropsFieldType = 'input'>(\n field: K,\n { type, withError = true }: { type?: L; withError?: boolean } = {}\n ): GetInputProps<L> => {\n const value = valuesRef.current[field];\n const onChange = getInputOnChange<U>((val: U) => setFieldValue(field, val)) as any;\n\n const payload: any = type === 'checkbox' ? { checked: value, onChange } : { value, onChange };\n\n if (withError && errorsRef.current[field as any]) {\n payload.error = errorsRef.current[field as any];\n }\n\n return payload as any;\n },\n []\n );\n\n const getListInputProps = useCallback(\n <\n K extends keyof T,\n U extends T[K][number],\n LK extends keyof U,\n L extends GetInputPropsFieldType = 'input'\n >(\n field: K,\n index: number,\n listField: LK,\n { type, withError = true }: { type?: L; withError?: boolean } = {}\n ): GetInputProps<L> => {\n const list = valuesRef.current[field];\n\n if (isFormList(list) && list[index] && listField in list[index]) {\n const listValue = list[index];\n const value = listValue[listField];\n const onChange = getInputOnChange<U[LK]>((val: U[LK]) =>\n setListItem(field, index, { ...listValue, [listField]: val })\n ) as any;\n const payload: any =\n type === 'checkbox' ? { checked: value, onChange } : { value, onChange };\n const error = errorsRef.current[getErrorPath([field, index, listField])];\n\n if (withError && error) {\n payload.error = error;\n }\n\n return payload;\n }\n\n return {} as any;\n },\n []\n );\n\n return {\n values,\n setValues,\n setFieldValue,\n errors,\n setErrors,\n clearErrors,\n clearFieldError,\n setFieldError,\n setListItem,\n removeListItem,\n addListItem,\n reorderListItem,\n validate,\n validateField,\n onSubmit,\n reset,\n getInputProps,\n getListInputProps,\n };\n}\n"],"names":["useStateRef","filterErrors","usePropRef","useCallback","isFormList","formList","validateValues","validateFieldValue","getInputOnChange","getErrorPath"],"mappings":"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"}
1
+ {"version":3,"file":"use-form.js","sources":["../src/use-form.ts"],"sourcesContent":["import { useState } from 'react';\nimport { formList, isFormList, FormList } from './form-list/form-list';\nimport { validateValues, validateFieldValue } from './validate-values/validate-values';\nimport { filterErrors } from './filter-errors/filter-errors';\nimport { getInputOnChange } from './get-input-on-change/get-input-on-change';\nimport { getErrorPath } from './get-error-path/get-error-path';\nimport type {\n FormErrors,\n FormRules,\n FormValidationResult,\n FormFieldValidationResult,\n GetInputProps,\n GetInputPropsFieldType,\n} from './types';\n\nexport interface UseFormInput<T> {\n initialValues: T;\n initialErrors?: FormErrors;\n validate?: FormRules<T>;\n schema?: (values: Record<string, any>) => FormErrors;\n}\n\nexport interface UseFormReturnType<T> {\n values: T;\n setValues: React.Dispatch<React.SetStateAction<T>>;\n setFieldValue: <K extends keyof T, V extends T[K]>(field: K, value: V) => void;\n errors: FormErrors;\n setErrors: React.Dispatch<React.SetStateAction<FormErrors>>;\n setFieldError: <K extends keyof T>(field: K, error: React.ReactNode) => void;\n clearFieldError: <K extends keyof T>(field: K) => void;\n clearErrors(): void;\n setListItem: <K extends keyof T, V extends T[K]>(\n field: K,\n index: number,\n value: V extends FormList<infer U> ? U : never\n ) => void;\n addListItem: <K extends keyof T, V extends T[K]>(\n field: K,\n payload: V extends FormList<infer U> ? U : never\n ) => void;\n removeListItem: <K extends keyof T>(field: K, indices: number[] | number) => void;\n reorderListItem: <K extends keyof T>(field: K, payload: { from: number; to: number }) => void;\n validate(): FormValidationResult;\n validateField: (field: string) => FormFieldValidationResult;\n onSubmit(\n handleSubmit: (values: T, event: React.FormEvent) => void\n ): (event?: React.FormEvent) => void;\n reset(): void;\n getInputProps: <K extends keyof T, L extends GetInputPropsFieldType = 'input'>(\n field: K,\n options?: { type?: L; withError?: boolean }\n ) => GetInputProps<L>;\n\n getListInputProps: <\n K extends keyof T,\n U extends T[K],\n L extends GetInputPropsFieldType = 'input'\n >(\n field: K,\n index: number,\n listField: U extends FormList<infer V> ? keyof V : never,\n options?: { type?: L; withError?: boolean }\n ) => GetInputProps<L>;\n}\n\nexport function useForm<T extends { [key: string]: any }>({\n initialValues,\n initialErrors,\n validate: rules,\n schema,\n}: UseFormInput<T>): UseFormReturnType<T> {\n const [errors, setErrors] = useState(filterErrors(initialErrors));\n const [values, setValues] = useState(initialValues);\n\n const clearErrors = () => setErrors({});\n const setFieldError = (field: keyof T, error: React.ReactNode) =>\n setErrors((current) => ({ ...current, [field]: error }));\n\n const clearFieldError = (field: keyof T) =>\n setErrors((current) => {\n const clone: any = { ...current };\n delete clone[field];\n return clone;\n });\n\n const setFieldValue = <K extends keyof T, V extends T[K]>(field: K, value: V) => {\n setValues((currentValues) => ({ ...currentValues, [field]: value }));\n clearFieldError(field);\n };\n\n const setListItem = <K extends keyof T, V extends T[K]>(\n field: K,\n index: number,\n value: V[K][number]\n ) => {\n const list = values[field];\n if (isFormList(list) && list[index] !== undefined) {\n const cloned = [...list];\n cloned[index] = value;\n setFieldValue(field, formList(cloned) as any);\n }\n };\n\n const removeListItem = <K extends keyof T>(field: K, indices: number[] | number) => {\n const list = values[field];\n\n if (isFormList(list)) {\n setFieldValue(\n field,\n formList(\n list.filter((_: any, index: number) =>\n Array.isArray(indices) ? !indices.includes(index) : indices !== index\n )\n ) as any\n );\n }\n };\n\n const addListItem = <K extends keyof T, V extends T[K]>(field: K, payload: V[number]) => {\n const list = values[field];\n\n if (isFormList(list)) {\n setFieldValue(field, formList([...list, payload]) as any);\n }\n };\n\n const reorderListItem = <K extends keyof T>(\n field: K,\n { from, to }: { from: number; to: number }\n ) => {\n const list = values[field];\n\n if (isFormList(list) && list[from] !== undefined && list[to] !== undefined) {\n const cloned = [...list];\n const item = list[from];\n\n cloned.splice(from, 1);\n cloned.splice(to, 0, item);\n setFieldValue(field, formList(cloned) as any);\n }\n };\n\n const validate = () => {\n const results = validateValues(schema || rules, values);\n setErrors(results.errors);\n return results;\n };\n\n const validateField = (field: string) => {\n const results = validateFieldValue(field, schema || rules, values);\n results.hasError ? setFieldError(field, results.error) : clearFieldError(field);\n return results;\n };\n\n const onSubmit =\n (handleSubmit: (values: T, event: React.FormEvent) => void) => (event: React.FormEvent) => {\n event.preventDefault();\n const results = validate();\n !results.hasErrors && handleSubmit(values, event);\n };\n\n const reset = () => {\n setValues(initialValues);\n clearErrors();\n };\n\n const getInputProps = <\n K extends keyof T,\n U extends T[K],\n L extends GetInputPropsFieldType = 'input'\n >(\n field: K,\n { type, withError = true }: { type?: L; withError?: boolean } = {}\n ): GetInputProps<L> => {\n const value = values[field];\n const onChange = getInputOnChange<U>((val: U) => setFieldValue(field, val)) as any;\n\n const payload: any = type === 'checkbox' ? { checked: value, onChange } : { value, onChange };\n\n if (withError && errors[field as any]) {\n payload.error = errors[field as any];\n }\n\n return payload as any;\n };\n\n const getListInputProps = <\n K extends keyof T,\n U extends T[K][number],\n LK extends keyof U,\n L extends GetInputPropsFieldType = 'input'\n >(\n field: K,\n index: number,\n listField: LK,\n { type, withError = true }: { type?: L; withError?: boolean } = {}\n ): GetInputProps<L> => {\n const list = values[field];\n\n if (isFormList(list) && list[index] && listField in list[index]) {\n const listValue = list[index];\n const value = listValue[listField];\n const onChange = getInputOnChange<U[LK]>((val: U[LK]) =>\n setListItem(field, index, { ...listValue, [listField]: val })\n ) as any;\n const payload: any = type === 'checkbox' ? { checked: value, onChange } : { value, onChange };\n const error = errors[getErrorPath([field, index, listField])];\n\n if (withError && error) {\n payload.error = error;\n }\n\n return payload;\n }\n\n return {} as any;\n };\n\n return {\n values,\n setValues,\n setFieldValue,\n errors,\n setErrors,\n clearErrors,\n clearFieldError,\n setFieldError,\n setListItem,\n removeListItem,\n addListItem,\n reorderListItem,\n validate,\n validateField,\n onSubmit,\n reset,\n getInputProps,\n getListInputProps,\n };\n}\n"],"names":["useState","filterErrors","isFormList","formList","validateValues","validateFieldValue","getInputOnChange","getErrorPath"],"mappings":";;;;;;;;;;;AAAA,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,IAAI,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACzC,IAAI,iBAAiB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACzD,IAAI,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACnD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;AACzD,IAAI,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAChK,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAM,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,EAAE,IAAI,mBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQ,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,EAAE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AACF,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAO3D,SAAS,OAAO,CAAC;AACxB,EAAE,aAAa;AACf,EAAE,aAAa;AACf,EAAE,QAAQ,EAAE,KAAK;AACjB,EAAE,MAAM;AACR,CAAC,EAAE;AACH,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAGA,cAAQ,CAACC,yBAAY,CAAC,aAAa,CAAC,CAAC,CAAC;AACpE,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAGD,cAAQ,CAAC,aAAa,CAAC,CAAC;AACtD,EAAE,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;AAC1C,EAAE,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;AACjI,EAAE,MAAM,eAAe,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,OAAO,KAAK;AAC5D,IAAI,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC9C,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;AACxB,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK;AAC1C,IAAI,SAAS,CAAC,CAAC,aAAa,KAAK,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;AACvG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC3B,GAAG,CAAC;AACJ,EAAE,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK;AAC/C,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,IAAI,IAAIE,mBAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE;AACpD,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/B,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC5B,MAAM,aAAa,CAAC,KAAK,EAAEC,iBAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7C,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK;AAC7C,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,IAAI,IAAID,mBAAU,CAAC,IAAI,CAAC,EAAE;AAC1B,MAAM,aAAa,CAAC,KAAK,EAAEC,iBAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;AACvI,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK;AAC1C,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,IAAI,IAAID,mBAAU,CAAC,IAAI,CAAC,EAAE;AAC1B,MAAM,aAAa,CAAC,KAAK,EAAEC,iBAAQ,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACzD,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK;AACnD,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,IAAI,IAAID,mBAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,EAAE;AAC1E,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/B,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC7B,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACjC,MAAM,aAAa,CAAC,KAAK,EAAEC,iBAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7C,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,MAAM,QAAQ,GAAG,MAAM;AACzB,IAAI,MAAM,OAAO,GAAGC,6BAAc,CAAC,MAAM,IAAI,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5D,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC9B,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG,CAAC;AACJ,EAAE,MAAM,aAAa,GAAG,CAAC,KAAK,KAAK;AACnC,IAAI,MAAM,OAAO,GAAGC,iCAAkB,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,CAAC,CAAC;AACvE,IAAI,OAAO,CAAC,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;AACpF,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG,CAAC;AACJ,EAAE,MAAM,QAAQ,GAAG,CAAC,YAAY,KAAK,CAAC,KAAK,KAAK;AAChD,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3B,IAAI,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;AAC/B,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACtD,GAAG,CAAC;AACJ,EAAE,MAAM,KAAK,GAAG,MAAM;AACtB,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC;AAC7B,IAAI,WAAW,EAAE,CAAC;AAClB,GAAG,CAAC;AACJ,EAAE,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK;AACpE,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAChC,IAAI,MAAM,QAAQ,GAAGC,iCAAgB,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1E,IAAI,MAAM,OAAO,GAAG,IAAI,KAAK,UAAU,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7F,IAAI,IAAI,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;AACpC,MAAM,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG,CAAC;AACJ,EAAE,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK;AAC1F,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,IAAI,IAAIJ,mBAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACrE,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;AACzC,MAAM,MAAM,QAAQ,GAAGI,iCAAgB,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAChJ,MAAM,MAAM,OAAO,GAAG,IAAI,KAAK,UAAU,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC/F,MAAM,MAAM,KAAK,GAAG,MAAM,CAACC,yBAAY,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AACpE,MAAM,IAAI,SAAS,IAAI,KAAK,EAAE;AAC9B,QAAQ,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;AAC9B,OAAO;AACP,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,EAAE,CAAC;AACd,GAAG,CAAC;AACJ,EAAE,OAAO;AACT,IAAI,MAAM;AACV,IAAI,SAAS;AACb,IAAI,aAAa;AACjB,IAAI,MAAM;AACV,IAAI,SAAS;AACb,IAAI,WAAW;AACf,IAAI,eAAe;AACnB,IAAI,aAAa;AACjB,IAAI,WAAW;AACf,IAAI,cAAc;AAClB,IAAI,WAAW;AACf,IAAI,eAAe;AACnB,IAAI,QAAQ;AACZ,IAAI,aAAa;AACjB,IAAI,QAAQ;AACZ,IAAI,KAAK;AACT,IAAI,aAAa;AACjB,IAAI,iBAAiB;AACrB,GAAG,CAAC;AACJ;;;;"}
package/esm/use-form.js CHANGED
@@ -1,11 +1,9 @@
1
- import { useCallback } from 'react';
1
+ import { useState } from 'react';
2
2
  import { isFormList, formList } from './form-list/form-list.js';
3
3
  import { validateValues, validateFieldValue } from './validate-values/validate-values.js';
4
4
  import { filterErrors } from './filter-errors/filter-errors.js';
5
5
  import { getInputOnChange } from './get-input-on-change/get-input-on-change.js';
6
6
  import { getErrorPath } from './get-error-path/get-error-path.js';
7
- import { useStateRef } from './use-state-ref/use-state-ref.js';
8
- import { usePropRef } from './use-prop-ref/use-prop-ref.js';
9
7
 
10
8
  var __defProp = Object.defineProperty;
11
9
  var __defProps = Object.defineProperties;
@@ -32,44 +30,41 @@ function useForm({
32
30
  validate: rules,
33
31
  schema
34
32
  }) {
35
- const [errors, setErrors, errorsRef] = useStateRef(filterErrors(initialErrors));
36
- const [values, setValues, valuesRef] = useStateRef(initialValues);
37
- const initialValuesRef = usePropRef(initialValues);
38
- const rulesRef = usePropRef(rules);
39
- const schemaRef = usePropRef(schema);
40
- const clearErrors = useCallback(() => setErrors({}), []);
41
- const setFieldError = useCallback((field, error) => setErrors((current) => __spreadProps(__spreadValues({}, current), { [field]: error })), []);
42
- const clearFieldError = useCallback((field) => setErrors((current) => {
33
+ const [errors, setErrors] = useState(filterErrors(initialErrors));
34
+ const [values, setValues] = useState(initialValues);
35
+ const clearErrors = () => setErrors({});
36
+ const setFieldError = (field, error) => setErrors((current) => __spreadProps(__spreadValues({}, current), { [field]: error }));
37
+ const clearFieldError = (field) => setErrors((current) => {
43
38
  const clone = __spreadValues({}, current);
44
39
  delete clone[field];
45
40
  return clone;
46
- }), []);
47
- const setFieldValue = useCallback((field, value) => {
41
+ });
42
+ const setFieldValue = (field, value) => {
48
43
  setValues((currentValues) => __spreadProps(__spreadValues({}, currentValues), { [field]: value }));
49
44
  clearFieldError(field);
50
- }, []);
51
- const setListItem = useCallback((field, index, value) => {
52
- const list = valuesRef.current[field];
45
+ };
46
+ const setListItem = (field, index, value) => {
47
+ const list = values[field];
53
48
  if (isFormList(list) && list[index] !== void 0) {
54
49
  const cloned = [...list];
55
50
  cloned[index] = value;
56
51
  setFieldValue(field, formList(cloned));
57
52
  }
58
- }, []);
59
- const removeListItem = useCallback((field, indices) => {
60
- const list = valuesRef.current[field];
53
+ };
54
+ const removeListItem = (field, indices) => {
55
+ const list = values[field];
61
56
  if (isFormList(list)) {
62
57
  setFieldValue(field, formList(list.filter((_, index) => Array.isArray(indices) ? !indices.includes(index) : indices !== index)));
63
58
  }
64
- }, []);
65
- const addListItem = useCallback((field, payload) => {
66
- const list = valuesRef.current[field];
59
+ };
60
+ const addListItem = (field, payload) => {
61
+ const list = values[field];
67
62
  if (isFormList(list)) {
68
63
  setFieldValue(field, formList([...list, payload]));
69
64
  }
70
- }, []);
71
- const reorderListItem = useCallback((field, { from, to }) => {
72
- const list = valuesRef.current[field];
65
+ };
66
+ const reorderListItem = (field, { from, to }) => {
67
+ const list = values[field];
73
68
  if (isFormList(list) && list[from] !== void 0 && list[to] !== void 0) {
74
69
  const cloned = [...list];
75
70
  const item = list[from];
@@ -77,50 +72,50 @@ function useForm({
77
72
  cloned.splice(to, 0, item);
78
73
  setFieldValue(field, formList(cloned));
79
74
  }
80
- }, []);
81
- const validate = useCallback(() => {
82
- const results = validateValues(schemaRef.current || rulesRef.current, valuesRef.current);
75
+ };
76
+ const validate = () => {
77
+ const results = validateValues(schema || rules, values);
83
78
  setErrors(results.errors);
84
79
  return results;
85
- }, []);
86
- const validateField = useCallback((field) => {
87
- const results = validateFieldValue(field, schemaRef.current || rulesRef.current, valuesRef.current);
80
+ };
81
+ const validateField = (field) => {
82
+ const results = validateFieldValue(field, schema || rules, values);
88
83
  results.hasError ? setFieldError(field, results.error) : clearFieldError(field);
89
84
  return results;
90
- }, []);
91
- const onSubmit = useCallback((handleSubmit) => (event) => {
85
+ };
86
+ const onSubmit = (handleSubmit) => (event) => {
92
87
  event.preventDefault();
93
88
  const results = validate();
94
- !results.hasErrors && handleSubmit(valuesRef.current, event);
95
- }, []);
96
- const reset = useCallback(() => {
97
- setValues(initialValuesRef.current);
89
+ !results.hasErrors && handleSubmit(values, event);
90
+ };
91
+ const reset = () => {
92
+ setValues(initialValues);
98
93
  clearErrors();
99
- }, []);
100
- const getInputProps = useCallback((field, { type, withError = true } = {}) => {
101
- const value = valuesRef.current[field];
94
+ };
95
+ const getInputProps = (field, { type, withError = true } = {}) => {
96
+ const value = values[field];
102
97
  const onChange = getInputOnChange((val) => setFieldValue(field, val));
103
98
  const payload = type === "checkbox" ? { checked: value, onChange } : { value, onChange };
104
- if (withError && errorsRef.current[field]) {
105
- payload.error = errorsRef.current[field];
99
+ if (withError && errors[field]) {
100
+ payload.error = errors[field];
106
101
  }
107
102
  return payload;
108
- }, []);
109
- const getListInputProps = useCallback((field, index, listField, { type, withError = true } = {}) => {
110
- const list = valuesRef.current[field];
103
+ };
104
+ const getListInputProps = (field, index, listField, { type, withError = true } = {}) => {
105
+ const list = values[field];
111
106
  if (isFormList(list) && list[index] && listField in list[index]) {
112
107
  const listValue = list[index];
113
108
  const value = listValue[listField];
114
109
  const onChange = getInputOnChange((val) => setListItem(field, index, __spreadProps(__spreadValues({}, listValue), { [listField]: val })));
115
110
  const payload = type === "checkbox" ? { checked: value, onChange } : { value, onChange };
116
- const error = errorsRef.current[getErrorPath([field, index, listField])];
111
+ const error = errors[getErrorPath([field, index, listField])];
117
112
  if (withError && error) {
118
113
  payload.error = error;
119
114
  }
120
115
  return payload;
121
116
  }
122
117
  return {};
123
- }, []);
118
+ };
124
119
  return {
125
120
  values,
126
121
  setValues,
@@ -1 +1 @@
1
- {"version":3,"file":"use-form.js","sources":["../src/use-form.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport { formList, isFormList, FormList } from './form-list/form-list';\nimport { validateValues, validateFieldValue } from './validate-values/validate-values';\nimport { filterErrors } from './filter-errors/filter-errors';\nimport { getInputOnChange } from './get-input-on-change/get-input-on-change';\nimport { getErrorPath } from './get-error-path/get-error-path';\nimport { useStateRef } from './use-state-ref/use-state-ref';\nimport { usePropRef } from './use-prop-ref/use-prop-ref';\nimport type {\n FormErrors,\n FormRules,\n FormValidationResult,\n FormFieldValidationResult,\n GetInputProps,\n GetInputPropsFieldType,\n} from './types';\n\nexport interface UseFormInput<T> {\n initialValues: T;\n initialErrors?: FormErrors;\n validate?: FormRules<T>;\n schema?: (values: Record<string, any>) => FormErrors;\n}\n\nexport interface UseFormReturnType<T> {\n values: T;\n setValues: React.Dispatch<React.SetStateAction<T>>;\n setFieldValue: <K extends keyof T, V extends T[K]>(field: K, value: V) => void;\n errors: FormErrors;\n setErrors: React.Dispatch<React.SetStateAction<FormErrors>>;\n setFieldError: <K extends keyof T>(field: K, error: React.ReactNode) => void;\n clearFieldError: <K extends keyof T>(field: K) => void;\n clearErrors(): void;\n setListItem: <K extends keyof T, V extends T[K]>(\n field: K,\n index: number,\n value: V extends FormList<infer U> ? U : never\n ) => void;\n addListItem: <K extends keyof T, V extends T[K]>(\n field: K,\n payload: V extends FormList<infer U> ? U : never\n ) => void;\n removeListItem: <K extends keyof T>(field: K, indices: number[] | number) => void;\n reorderListItem: <K extends keyof T>(field: K, payload: { from: number; to: number }) => void;\n validate(): FormValidationResult;\n validateField: (field: string) => FormFieldValidationResult;\n onSubmit(\n handleSubmit: (values: T, event: React.FormEvent) => void\n ): (event?: React.FormEvent) => void;\n reset(): void;\n getInputProps: <K extends keyof T, L extends GetInputPropsFieldType = 'input'>(\n field: K,\n options?: { type?: L; withError?: boolean }\n ) => GetInputProps<L>;\n\n getListInputProps: <\n K extends keyof T,\n U extends T[K],\n L extends GetInputPropsFieldType = 'input'\n >(\n field: K,\n index: number,\n listField: U extends FormList<infer V> ? keyof V : never,\n options?: { type?: L; withError?: boolean }\n ) => GetInputProps<L>;\n}\n\nexport function useForm<T extends { [key: string]: any }>({\n initialValues,\n initialErrors,\n validate: rules,\n schema,\n}: UseFormInput<T>): UseFormReturnType<T> {\n const [errors, setErrors, errorsRef] = useStateRef(filterErrors(initialErrors));\n const [values, setValues, valuesRef] = useStateRef(initialValues);\n const initialValuesRef = usePropRef(initialValues);\n const rulesRef = usePropRef(rules);\n const schemaRef = usePropRef(schema);\n\n const clearErrors = useCallback(() => setErrors({}), []);\n const setFieldError = useCallback(\n (field: keyof T, error: React.ReactNode) =>\n setErrors((current) => ({ ...current, [field]: error })),\n []\n );\n\n const clearFieldError = useCallback(\n (field: keyof T) =>\n setErrors((current) => {\n const clone: any = { ...current };\n delete clone[field];\n return clone;\n }),\n []\n );\n\n const setFieldValue = useCallback(<K extends keyof T, V extends T[K]>(field: K, value: V) => {\n setValues((currentValues) => ({ ...currentValues, [field]: value }));\n clearFieldError(field);\n }, []);\n\n const setListItem = useCallback(\n <K extends keyof T, V extends T[K]>(field: K, index: number, value: V[K][number]) => {\n const list = valuesRef.current[field];\n if (isFormList(list) && list[index] !== undefined) {\n const cloned = [...list];\n cloned[index] = value;\n setFieldValue(field, formList(cloned) as any);\n }\n },\n []\n );\n\n const removeListItem = useCallback(<K extends keyof T>(field: K, indices: number[] | number) => {\n const list = valuesRef.current[field];\n\n if (isFormList(list)) {\n setFieldValue(\n field,\n formList(\n list.filter((_: any, index: number) =>\n Array.isArray(indices) ? !indices.includes(index) : indices !== index\n )\n ) as any\n );\n }\n }, []);\n\n const addListItem = useCallback(\n <K extends keyof T, V extends T[K]>(field: K, payload: V[number]) => {\n const list = valuesRef.current[field];\n\n if (isFormList(list)) {\n setFieldValue(field, formList([...list, payload]) as any);\n }\n },\n []\n );\n\n const reorderListItem = useCallback(\n <K extends keyof T>(field: K, { from, to }: { from: number; to: number }) => {\n const list = valuesRef.current[field];\n\n if (isFormList(list) && list[from] !== undefined && list[to] !== undefined) {\n const cloned = [...list];\n const item = list[from];\n\n cloned.splice(from, 1);\n cloned.splice(to, 0, item);\n setFieldValue(field, formList(cloned) as any);\n }\n },\n []\n );\n\n const validate = useCallback(() => {\n const results = validateValues(schemaRef.current || rulesRef.current, valuesRef.current);\n setErrors(results.errors);\n return results;\n }, []);\n\n const validateField = useCallback((field: string) => {\n const results = validateFieldValue(\n field,\n schemaRef.current || rulesRef.current,\n valuesRef.current\n );\n results.hasError ? setFieldError(field, results.error) : clearFieldError(field);\n return results;\n }, []);\n\n const onSubmit = useCallback(\n (handleSubmit: (values: T, event: React.FormEvent) => void) => (event: React.FormEvent) => {\n event.preventDefault();\n const results = validate();\n !results.hasErrors && handleSubmit(valuesRef.current, event);\n },\n []\n );\n\n const reset = useCallback(() => {\n setValues(initialValuesRef.current);\n clearErrors();\n }, []);\n\n const getInputProps = useCallback(\n <K extends keyof T, U extends T[K], L extends GetInputPropsFieldType = 'input'>(\n field: K,\n { type, withError = true }: { type?: L; withError?: boolean } = {}\n ): GetInputProps<L> => {\n const value = valuesRef.current[field];\n const onChange = getInputOnChange<U>((val: U) => setFieldValue(field, val)) as any;\n\n const payload: any = type === 'checkbox' ? { checked: value, onChange } : { value, onChange };\n\n if (withError && errorsRef.current[field as any]) {\n payload.error = errorsRef.current[field as any];\n }\n\n return payload as any;\n },\n []\n );\n\n const getListInputProps = useCallback(\n <\n K extends keyof T,\n U extends T[K][number],\n LK extends keyof U,\n L extends GetInputPropsFieldType = 'input'\n >(\n field: K,\n index: number,\n listField: LK,\n { type, withError = true }: { type?: L; withError?: boolean } = {}\n ): GetInputProps<L> => {\n const list = valuesRef.current[field];\n\n if (isFormList(list) && list[index] && listField in list[index]) {\n const listValue = list[index];\n const value = listValue[listField];\n const onChange = getInputOnChange<U[LK]>((val: U[LK]) =>\n setListItem(field, index, { ...listValue, [listField]: val })\n ) as any;\n const payload: any =\n type === 'checkbox' ? { checked: value, onChange } : { value, onChange };\n const error = errorsRef.current[getErrorPath([field, index, listField])];\n\n if (withError && error) {\n payload.error = error;\n }\n\n return payload;\n }\n\n return {} as any;\n },\n []\n );\n\n return {\n values,\n setValues,\n setFieldValue,\n errors,\n setErrors,\n clearErrors,\n clearFieldError,\n setFieldError,\n setListItem,\n removeListItem,\n addListItem,\n reorderListItem,\n validate,\n validateField,\n onSubmit,\n reset,\n getInputProps,\n getListInputProps,\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-form.js","sources":["../src/use-form.ts"],"sourcesContent":["import { useState } from 'react';\nimport { formList, isFormList, FormList } from './form-list/form-list';\nimport { validateValues, validateFieldValue } from './validate-values/validate-values';\nimport { filterErrors } from './filter-errors/filter-errors';\nimport { getInputOnChange } from './get-input-on-change/get-input-on-change';\nimport { getErrorPath } from './get-error-path/get-error-path';\nimport type {\n FormErrors,\n FormRules,\n FormValidationResult,\n FormFieldValidationResult,\n GetInputProps,\n GetInputPropsFieldType,\n} from './types';\n\nexport interface UseFormInput<T> {\n initialValues: T;\n initialErrors?: FormErrors;\n validate?: FormRules<T>;\n schema?: (values: Record<string, any>) => FormErrors;\n}\n\nexport interface UseFormReturnType<T> {\n values: T;\n setValues: React.Dispatch<React.SetStateAction<T>>;\n setFieldValue: <K extends keyof T, V extends T[K]>(field: K, value: V) => void;\n errors: FormErrors;\n setErrors: React.Dispatch<React.SetStateAction<FormErrors>>;\n setFieldError: <K extends keyof T>(field: K, error: React.ReactNode) => void;\n clearFieldError: <K extends keyof T>(field: K) => void;\n clearErrors(): void;\n setListItem: <K extends keyof T, V extends T[K]>(\n field: K,\n index: number,\n value: V extends FormList<infer U> ? U : never\n ) => void;\n addListItem: <K extends keyof T, V extends T[K]>(\n field: K,\n payload: V extends FormList<infer U> ? U : never\n ) => void;\n removeListItem: <K extends keyof T>(field: K, indices: number[] | number) => void;\n reorderListItem: <K extends keyof T>(field: K, payload: { from: number; to: number }) => void;\n validate(): FormValidationResult;\n validateField: (field: string) => FormFieldValidationResult;\n onSubmit(\n handleSubmit: (values: T, event: React.FormEvent) => void\n ): (event?: React.FormEvent) => void;\n reset(): void;\n getInputProps: <K extends keyof T, L extends GetInputPropsFieldType = 'input'>(\n field: K,\n options?: { type?: L; withError?: boolean }\n ) => GetInputProps<L>;\n\n getListInputProps: <\n K extends keyof T,\n U extends T[K],\n L extends GetInputPropsFieldType = 'input'\n >(\n field: K,\n index: number,\n listField: U extends FormList<infer V> ? keyof V : never,\n options?: { type?: L; withError?: boolean }\n ) => GetInputProps<L>;\n}\n\nexport function useForm<T extends { [key: string]: any }>({\n initialValues,\n initialErrors,\n validate: rules,\n schema,\n}: UseFormInput<T>): UseFormReturnType<T> {\n const [errors, setErrors] = useState(filterErrors(initialErrors));\n const [values, setValues] = useState(initialValues);\n\n const clearErrors = () => setErrors({});\n const setFieldError = (field: keyof T, error: React.ReactNode) =>\n setErrors((current) => ({ ...current, [field]: error }));\n\n const clearFieldError = (field: keyof T) =>\n setErrors((current) => {\n const clone: any = { ...current };\n delete clone[field];\n return clone;\n });\n\n const setFieldValue = <K extends keyof T, V extends T[K]>(field: K, value: V) => {\n setValues((currentValues) => ({ ...currentValues, [field]: value }));\n clearFieldError(field);\n };\n\n const setListItem = <K extends keyof T, V extends T[K]>(\n field: K,\n index: number,\n value: V[K][number]\n ) => {\n const list = values[field];\n if (isFormList(list) && list[index] !== undefined) {\n const cloned = [...list];\n cloned[index] = value;\n setFieldValue(field, formList(cloned) as any);\n }\n };\n\n const removeListItem = <K extends keyof T>(field: K, indices: number[] | number) => {\n const list = values[field];\n\n if (isFormList(list)) {\n setFieldValue(\n field,\n formList(\n list.filter((_: any, index: number) =>\n Array.isArray(indices) ? !indices.includes(index) : indices !== index\n )\n ) as any\n );\n }\n };\n\n const addListItem = <K extends keyof T, V extends T[K]>(field: K, payload: V[number]) => {\n const list = values[field];\n\n if (isFormList(list)) {\n setFieldValue(field, formList([...list, payload]) as any);\n }\n };\n\n const reorderListItem = <K extends keyof T>(\n field: K,\n { from, to }: { from: number; to: number }\n ) => {\n const list = values[field];\n\n if (isFormList(list) && list[from] !== undefined && list[to] !== undefined) {\n const cloned = [...list];\n const item = list[from];\n\n cloned.splice(from, 1);\n cloned.splice(to, 0, item);\n setFieldValue(field, formList(cloned) as any);\n }\n };\n\n const validate = () => {\n const results = validateValues(schema || rules, values);\n setErrors(results.errors);\n return results;\n };\n\n const validateField = (field: string) => {\n const results = validateFieldValue(field, schema || rules, values);\n results.hasError ? setFieldError(field, results.error) : clearFieldError(field);\n return results;\n };\n\n const onSubmit =\n (handleSubmit: (values: T, event: React.FormEvent) => void) => (event: React.FormEvent) => {\n event.preventDefault();\n const results = validate();\n !results.hasErrors && handleSubmit(values, event);\n };\n\n const reset = () => {\n setValues(initialValues);\n clearErrors();\n };\n\n const getInputProps = <\n K extends keyof T,\n U extends T[K],\n L extends GetInputPropsFieldType = 'input'\n >(\n field: K,\n { type, withError = true }: { type?: L; withError?: boolean } = {}\n ): GetInputProps<L> => {\n const value = values[field];\n const onChange = getInputOnChange<U>((val: U) => setFieldValue(field, val)) as any;\n\n const payload: any = type === 'checkbox' ? { checked: value, onChange } : { value, onChange };\n\n if (withError && errors[field as any]) {\n payload.error = errors[field as any];\n }\n\n return payload as any;\n };\n\n const getListInputProps = <\n K extends keyof T,\n U extends T[K][number],\n LK extends keyof U,\n L extends GetInputPropsFieldType = 'input'\n >(\n field: K,\n index: number,\n listField: LK,\n { type, withError = true }: { type?: L; withError?: boolean } = {}\n ): GetInputProps<L> => {\n const list = values[field];\n\n if (isFormList(list) && list[index] && listField in list[index]) {\n const listValue = list[index];\n const value = listValue[listField];\n const onChange = getInputOnChange<U[LK]>((val: U[LK]) =>\n setListItem(field, index, { ...listValue, [listField]: val })\n ) as any;\n const payload: any = type === 'checkbox' ? { checked: value, onChange } : { value, onChange };\n const error = errors[getErrorPath([field, index, listField])];\n\n if (withError && error) {\n payload.error = error;\n }\n\n return payload;\n }\n\n return {} as any;\n };\n\n return {\n values,\n setValues,\n setFieldValue,\n errors,\n setErrors,\n clearErrors,\n clearFieldError,\n setFieldError,\n setListItem,\n removeListItem,\n addListItem,\n reorderListItem,\n validate,\n validateField,\n onSubmit,\n reset,\n getInputProps,\n getListInputProps,\n };\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["../src/use-form.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["../src/use-form.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mantine/form",
3
3
  "description": "Mantine form management library",
4
- "version": "4.2.3",
4
+ "version": "4.2.4",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",
7
7
  "types": "lib/index.d.ts",
@@ -1,16 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var react = require('react');
6
-
7
- function usePropRef(value) {
8
- const ref = react.useRef(value);
9
- react.useEffect(() => {
10
- ref.current = value;
11
- }, [value]);
12
- return ref;
13
- }
14
-
15
- exports.usePropRef = usePropRef;
16
- //# sourceMappingURL=use-prop-ref.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-prop-ref.js","sources":["../../src/use-prop-ref/use-prop-ref.ts"],"sourcesContent":["import React, { useRef, useEffect } from 'react';\n\nexport function usePropRef<T>(value: T): React.MutableRefObject<T> {\n const ref = useRef(value);\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref;\n}\n"],"names":["useRef","useEffect"],"mappings":";;;;;;AACO,SAAS,UAAU,CAAC,KAAK,EAAE;AAClC,EAAE,MAAM,GAAG,GAAGA,YAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,EAAEC,eAAS,CAAC,MAAM;AAClB,IAAI,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACd,EAAE,OAAO,GAAG,CAAC;AACb;;;;"}
@@ -1,17 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var react = require('react');
6
-
7
- function useStateRef(value) {
8
- const [state, setState] = react.useState(value);
9
- const ref = react.useRef(state);
10
- react.useEffect(() => {
11
- ref.current = state;
12
- }, [state]);
13
- return [state, setState, ref];
14
- }
15
-
16
- exports.useStateRef = useStateRef;
17
- //# sourceMappingURL=use-state-ref.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-state-ref.js","sources":["../../src/use-state-ref/use-state-ref.ts"],"sourcesContent":["import React, { useRef, useState, useEffect } from 'react';\n\nexport function useStateRef<T>(\n value: T\n): [T, React.Dispatch<React.SetStateAction<T>>, React.MutableRefObject<T>] {\n const [state, setState] = useState(value);\n const ref = useRef(state);\n\n useEffect(() => {\n ref.current = state;\n }, [state]);\n\n return [state, setState, ref];\n}\n"],"names":["useState","useRef","useEffect"],"mappings":";;;;;;AACO,SAAS,WAAW,CAAC,KAAK,EAAE;AACnC,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC,CAAC;AAC5C,EAAE,MAAM,GAAG,GAAGC,YAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,EAAEC,eAAS,CAAC,MAAM;AAClB,IAAI,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACd,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AAChC;;;;"}
@@ -1,12 +0,0 @@
1
- import { useRef, useEffect } from 'react';
2
-
3
- function usePropRef(value) {
4
- const ref = useRef(value);
5
- useEffect(() => {
6
- ref.current = value;
7
- }, [value]);
8
- return ref;
9
- }
10
-
11
- export { usePropRef };
12
- //# sourceMappingURL=use-prop-ref.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-prop-ref.js","sources":["../../src/use-prop-ref/use-prop-ref.ts"],"sourcesContent":["import React, { useRef, useEffect } from 'react';\n\nexport function usePropRef<T>(value: T): React.MutableRefObject<T> {\n const ref = useRef(value);\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref;\n}\n"],"names":[],"mappings":";;AACO,SAAS,UAAU,CAAC,KAAK,EAAE;AAClC,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,EAAE,SAAS,CAAC,MAAM;AAClB,IAAI,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACd,EAAE,OAAO,GAAG,CAAC;AACb;;;;"}
@@ -1,13 +0,0 @@
1
- import { useState, useRef, useEffect } from 'react';
2
-
3
- function useStateRef(value) {
4
- const [state, setState] = useState(value);
5
- const ref = useRef(state);
6
- useEffect(() => {
7
- ref.current = state;
8
- }, [state]);
9
- return [state, setState, ref];
10
- }
11
-
12
- export { useStateRef };
13
- //# sourceMappingURL=use-state-ref.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-state-ref.js","sources":["../../src/use-state-ref/use-state-ref.ts"],"sourcesContent":["import React, { useRef, useState, useEffect } from 'react';\n\nexport function useStateRef<T>(\n value: T\n): [T, React.Dispatch<React.SetStateAction<T>>, React.MutableRefObject<T>] {\n const [state, setState] = useState(value);\n const ref = useRef(state);\n\n useEffect(() => {\n ref.current = state;\n }, [state]);\n\n return [state, setState, ref];\n}\n"],"names":[],"mappings":";;AACO,SAAS,WAAW,CAAC,KAAK,EAAE;AACnC,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5C,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,EAAE,SAAS,CAAC,MAAM;AAClB,IAAI,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACd,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AAChC;;;;"}
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- export declare function usePropRef<T>(value: T): React.MutableRefObject<T>;
3
- //# sourceMappingURL=use-prop-ref.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-prop-ref.d.ts","sourceRoot":"","sources":["../../src/use-prop-ref/use-prop-ref.ts"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAQjE"}
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- export declare function useStateRef<T>(value: T): [T, React.Dispatch<React.SetStateAction<T>>, React.MutableRefObject<T>];
3
- //# sourceMappingURL=use-state-ref.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-state-ref.d.ts","sourceRoot":"","sources":["../../src/use-state-ref/use-state-ref.ts"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,wBAAgB,WAAW,CAAC,CAAC,EAC3B,KAAK,EAAE,CAAC,GACP,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CASzE"}