@mantine/form 3.7.0-alpha.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.
Files changed (76) hide show
  1. package/README.md +19 -0
  2. package/cjs/filter-errors/filter-errors.js +19 -0
  3. package/cjs/filter-errors/filter-errors.js.map +1 -0
  4. package/cjs/form-list/form-list.js +21 -0
  5. package/cjs/form-list/form-list.js.map +1 -0
  6. package/cjs/get-error-path/get-error-path.js +10 -0
  7. package/cjs/get-error-path/get-error-path.js.map +1 -0
  8. package/cjs/get-input-on-change/get-input-on-change.js +25 -0
  9. package/cjs/get-input-on-change/get-input-on-change.js.map +1 -0
  10. package/cjs/index.js +19 -0
  11. package/cjs/index.js.map +1 -0
  12. package/cjs/resolvers/joi-resolver/joi-resolver.js +21 -0
  13. package/cjs/resolvers/joi-resolver/joi-resolver.js.map +1 -0
  14. package/cjs/resolvers/yup-resolver/yup-resolver.js +23 -0
  15. package/cjs/resolvers/yup-resolver/yup-resolver.js.map +1 -0
  16. package/cjs/resolvers/zod-resolver/zod-resolver.js +21 -0
  17. package/cjs/resolvers/zod-resolver/zod-resolver.js.map +1 -0
  18. package/cjs/use-form.js +146 -0
  19. package/cjs/use-form.js.map +1 -0
  20. package/cjs/validate-values/validate-list-values.js +24 -0
  21. package/cjs/validate-values/validate-list-values.js.map +1 -0
  22. package/cjs/validate-values/validate-values.js +58 -0
  23. package/cjs/validate-values/validate-values.js.map +1 -0
  24. package/esm/filter-errors/filter-errors.js +15 -0
  25. package/esm/filter-errors/filter-errors.js.map +1 -0
  26. package/esm/form-list/form-list.js +16 -0
  27. package/esm/form-list/form-list.js.map +1 -0
  28. package/esm/get-error-path/get-error-path.js +6 -0
  29. package/esm/get-error-path/get-error-path.js.map +1 -0
  30. package/esm/get-input-on-change/get-input-on-change.js +21 -0
  31. package/esm/get-input-on-change/get-input-on-change.js.map +1 -0
  32. package/esm/index.js +6 -0
  33. package/esm/index.js.map +1 -0
  34. package/esm/resolvers/joi-resolver/joi-resolver.js +17 -0
  35. package/esm/resolvers/joi-resolver/joi-resolver.js.map +1 -0
  36. package/esm/resolvers/yup-resolver/yup-resolver.js +19 -0
  37. package/esm/resolvers/yup-resolver/yup-resolver.js.map +1 -0
  38. package/esm/resolvers/zod-resolver/zod-resolver.js +17 -0
  39. package/esm/resolvers/zod-resolver/zod-resolver.js.map +1 -0
  40. package/esm/use-form.js +142 -0
  41. package/esm/use-form.js.map +1 -0
  42. package/esm/validate-values/validate-list-values.js +20 -0
  43. package/esm/validate-values/validate-list-values.js.map +1 -0
  44. package/esm/validate-values/validate-values.js +53 -0
  45. package/esm/validate-values/validate-values.js.map +1 -0
  46. package/lib/____get-input-on-change.internal.d.ts +2 -0
  47. package/lib/____get-input-on-change.internal.d.ts.map +1 -0
  48. package/lib/____use-form.internal.d.ts +37 -0
  49. package/lib/____use-form.internal.d.ts.map +1 -0
  50. package/lib/filter-errors/filter-errors.d.ts +3 -0
  51. package/lib/filter-errors/filter-errors.d.ts.map +1 -0
  52. package/lib/form-list/form-list.d.ts +8 -0
  53. package/lib/form-list/form-list.d.ts.map +1 -0
  54. package/lib/get-error-path/get-error-path.d.ts +2 -0
  55. package/lib/get-error-path/get-error-path.d.ts.map +1 -0
  56. package/lib/get-input-on-change/get-input-on-change.d.ts +2 -0
  57. package/lib/get-input-on-change/get-input-on-change.d.ts.map +1 -0
  58. package/lib/index.d.ts +7 -0
  59. package/lib/index.d.ts.map +1 -0
  60. package/lib/resolvers/joi-resolver/joi-resolver.d.ts +3 -0
  61. package/lib/resolvers/joi-resolver/joi-resolver.d.ts.map +1 -0
  62. package/lib/resolvers/test-resolver.d.ts +9 -0
  63. package/lib/resolvers/test-resolver.d.ts.map +1 -0
  64. package/lib/resolvers/yup-resolver/yup-resolver.d.ts +3 -0
  65. package/lib/resolvers/yup-resolver/yup-resolver.d.ts.map +1 -0
  66. package/lib/resolvers/zod-resolver/zod-resolver.d.ts +3 -0
  67. package/lib/resolvers/zod-resolver/zod-resolver.d.ts.map +1 -0
  68. package/lib/types.d.ts +28 -0
  69. package/lib/types.d.ts.map +1 -0
  70. package/lib/use-form.d.ts +42 -0
  71. package/lib/use-form.d.ts.map +1 -0
  72. package/lib/validate-values/validate-list-values.d.ts +3 -0
  73. package/lib/validate-values/validate-list-values.d.ts.map +1 -0
  74. package/lib/validate-values/validate-values.d.ts +4 -0
  75. package/lib/validate-values/validate-values.d.ts.map +1 -0
  76. package/package.json +22 -0
@@ -0,0 +1,19 @@
1
+ function yupResolver(schema) {
2
+ const _schema = schema;
3
+ return (values) => {
4
+ try {
5
+ _schema.validateSync(values, { abortEarly: false });
6
+ return {};
7
+ } catch (_yupError) {
8
+ const yupError = _yupError;
9
+ const results = {};
10
+ yupError.inner.forEach((error) => {
11
+ results[error.path.replace("[", ".").replace("]", "")] = error.message;
12
+ });
13
+ return results;
14
+ }
15
+ };
16
+ }
17
+
18
+ export { yupResolver };
19
+ //# sourceMappingURL=yup-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yup-resolver.js","sources":["../../../src/resolvers/yup-resolver/yup-resolver.ts"],"sourcesContent":["import type { FormErrors } from '../../types';\n\ninterface YupError {\n path: string;\n message: string;\n}\n\ninterface YupValidationResult {\n inner: YupError[];\n}\n\ninterface YupSchema {\n validateSync(values: Record<string, any>, options: { abortEarly: boolean }): void;\n}\n\nexport function yupResolver(schema: any) {\n const _schema: YupSchema = schema;\n\n return (values: Record<string, any>): FormErrors => {\n try {\n _schema.validateSync(values, { abortEarly: false });\n return {};\n } catch (_yupError) {\n const yupError: YupValidationResult = _yupError;\n const results = {};\n\n yupError.inner.forEach((error) => {\n results[error.path.replace('[', '.').replace(']', '')] = error.message;\n });\n\n return results;\n }\n };\n}\n"],"names":[],"mappings":"AAAO,SAAS,WAAW,CAAC,MAAM,EAAE;AACpC,EAAE,MAAM,OAAO,GAAG,MAAM,CAAC;AACzB,EAAE,OAAO,CAAC,MAAM,KAAK;AACrB,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1D,MAAM,OAAO,EAAE,CAAC;AAChB,KAAK,CAAC,OAAO,SAAS,EAAE;AACxB,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC;AACjC,MAAM,MAAM,OAAO,GAAG,EAAE,CAAC;AACzB,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACxC,QAAQ,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;AAC/E,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK;AACL,GAAG,CAAC;AACJ;;;;"}
@@ -0,0 +1,17 @@
1
+ function zodResolver(schema) {
2
+ const _schema = schema;
3
+ return (values) => {
4
+ const parsed = _schema.safeParse(values);
5
+ if (parsed.success) {
6
+ return {};
7
+ }
8
+ const results = {};
9
+ parsed.error.errors.forEach((error) => {
10
+ results[error.path.join(".")] = error.message;
11
+ });
12
+ return results;
13
+ };
14
+ }
15
+
16
+ export { zodResolver };
17
+ //# sourceMappingURL=zod-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-resolver.js","sources":["../../../src/resolvers/zod-resolver/zod-resolver.ts"],"sourcesContent":["import type { FormErrors } from '../../types';\n\ninterface ZodError {\n path: (string | number)[];\n message: string;\n}\n\ninterface ZodResults {\n success: boolean;\n error: {\n errors: ZodError[];\n };\n}\n\ninterface ZodSchema {\n safeParse(values: Record<string, any>): ZodResults;\n}\n\nexport function zodResolver<T extends Record<string, any>>(schema: any) {\n const _schema: ZodSchema = schema;\n\n return (values: T): FormErrors => {\n const parsed = _schema.safeParse(values);\n\n if (parsed.success) {\n return {};\n }\n\n const results = {};\n\n parsed.error.errors.forEach((error) => {\n results[error.path.join('.')] = error.message;\n });\n\n return results;\n };\n}\n"],"names":[],"mappings":"AAAO,SAAS,WAAW,CAAC,MAAM,EAAE;AACpC,EAAE,MAAM,OAAO,GAAG,MAAM,CAAC;AACzB,EAAE,OAAO,CAAC,MAAM,KAAK;AACrB,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC7C,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE;AACxB,MAAM,OAAO,EAAE,CAAC;AAChB,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC3C,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;AACpD,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG,CAAC;AACJ;;;;"}
@@ -0,0 +1,142 @@
1
+ import { useState } from 'react';
2
+ import { isFormList, formList } from './form-list/form-list.js';
3
+ import { validateValues, validateFieldValue } from './validate-values/validate-values.js';
4
+ import { filterErrors } from './filter-errors/filter-errors.js';
5
+ import { getInputOnChange } from './get-input-on-change/get-input-on-change.js';
6
+ import { getErrorPath } from './get-error-path/get-error-path.js';
7
+
8
+ var __defProp = Object.defineProperty;
9
+ var __defProps = Object.defineProperties;
10
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
11
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
12
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
13
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
14
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15
+ var __spreadValues = (a, b) => {
16
+ for (var prop in b || (b = {}))
17
+ if (__hasOwnProp.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ if (__getOwnPropSymbols)
20
+ for (var prop of __getOwnPropSymbols(b)) {
21
+ if (__propIsEnum.call(b, prop))
22
+ __defNormalProp(a, prop, b[prop]);
23
+ }
24
+ return a;
25
+ };
26
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
27
+ function useForm({
28
+ initialValues,
29
+ initialErrors,
30
+ validate: rules,
31
+ schema
32
+ }) {
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) => {
38
+ const clone = __spreadValues({}, current);
39
+ delete clone[field];
40
+ return clone;
41
+ });
42
+ const setFieldValue = (field, value) => {
43
+ setValues((currentValues) => __spreadProps(__spreadValues({}, currentValues), { [field]: value }));
44
+ clearFieldError(field);
45
+ };
46
+ const setListItem = (field, index, value) => {
47
+ const list = values[field];
48
+ if (isFormList(list) && list[index] !== void 0) {
49
+ const cloned = [...list];
50
+ cloned[index] = value;
51
+ setFieldValue(field, formList(cloned));
52
+ }
53
+ };
54
+ const removeListItem = (field, indices) => {
55
+ const list = values[field];
56
+ if (isFormList(list)) {
57
+ setFieldValue(field, formList(list.filter((_, index) => Array.isArray(indices) ? !indices.includes(index) : indices !== index)));
58
+ }
59
+ };
60
+ const addListItem = (field, payload) => {
61
+ const list = values[field];
62
+ if (isFormList(list)) {
63
+ setFieldValue(field, formList([...list, payload]));
64
+ }
65
+ };
66
+ const reorderListItem = (field, { from, to }) => {
67
+ const list = values[field];
68
+ if (isFormList(list) && list[from] !== void 0 && list[to] !== void 0) {
69
+ const cloned = [...list];
70
+ const item = list[from];
71
+ cloned.splice(from, 1);
72
+ cloned.splice(to, 0, item);
73
+ setFieldValue(field, formList(cloned));
74
+ }
75
+ };
76
+ const validate = () => {
77
+ const results = validateValues(schema || rules, values);
78
+ setErrors(results.errors);
79
+ return results;
80
+ };
81
+ const validateField = (field) => {
82
+ const results = validateFieldValue(field, schema || rules, values);
83
+ results.hasError ? setFieldError(field, results.error) : clearFieldError(field);
84
+ return results;
85
+ };
86
+ const onSubmit = (handleSubmit) => (event) => {
87
+ event.preventDefault();
88
+ const results = validate();
89
+ !results.hasErrors && handleSubmit(values, event);
90
+ };
91
+ const reset = () => {
92
+ setValues(initialValues);
93
+ clearErrors();
94
+ };
95
+ const getInputProps = (field, { type, withError = true } = {}) => {
96
+ const value = values[field];
97
+ const onChange = getInputOnChange((val) => setFieldValue(field, val));
98
+ const payload = type === "checkbox" ? { checked: value, onChange } : { value, onChange };
99
+ if (withError && errors[field]) {
100
+ payload.error = errors[field];
101
+ }
102
+ return payload;
103
+ };
104
+ const getListInputProps = (field, index, listField, { type, withError = true } = {}) => {
105
+ const list = values[field];
106
+ if (isFormList(list) && list[index] && listField in list[index]) {
107
+ const listValue = list[index];
108
+ const value = listValue[listField];
109
+ const onChange = getInputOnChange((val) => setListItem(field, index, __spreadProps(__spreadValues({}, listValue), { [listField]: val })));
110
+ const payload = type === "checkbox" ? { checked: value, onChange } : { value, onChange };
111
+ const error = errors[getErrorPath([field, index, listField])];
112
+ if (withError && error) {
113
+ payload.error = error;
114
+ }
115
+ return payload;
116
+ }
117
+ return {};
118
+ };
119
+ return {
120
+ values,
121
+ setValues,
122
+ setFieldValue,
123
+ errors,
124
+ setErrors,
125
+ clearErrors,
126
+ clearFieldError,
127
+ setFieldError,
128
+ setListItem,
129
+ removeListItem,
130
+ addListItem,
131
+ reorderListItem,
132
+ validate,
133
+ validateField,
134
+ onSubmit,
135
+ reset,
136
+ getInputProps,
137
+ getListInputProps
138
+ };
139
+ }
140
+
141
+ export { useForm };
142
+ //# sourceMappingURL=use-form.js.map
@@ -0,0 +1 @@
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, K extends keyof T> {\n initialValues: T;\n initialErrors?: FormErrors;\n validate?: FormRules<T, K>;\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 }, KK extends keyof T = string>({\n initialValues,\n initialErrors,\n validate: rules,\n schema,\n}: UseFormInput<T, KK>): 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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"}
@@ -0,0 +1,20 @@
1
+ function validateListValues(values, key, rules) {
2
+ const list = values[key];
3
+ const results = {};
4
+ list.forEach((item, itemIndex) => {
5
+ if (typeof item === "object" && item !== null) {
6
+ Object.keys(item).forEach((listItemKey) => {
7
+ if (typeof rules[key][listItemKey] === "function") {
8
+ const error = rules[key][listItemKey](item[listItemKey]);
9
+ if (error) {
10
+ results[`${key}.${itemIndex}.${listItemKey}`] = error;
11
+ }
12
+ }
13
+ });
14
+ }
15
+ });
16
+ return results;
17
+ }
18
+
19
+ export { validateListValues };
20
+ //# sourceMappingURL=validate-list-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-list-values.js","sources":["../../src/validate-values/validate-list-values.ts"],"sourcesContent":["import type { FormList } from '../form-list/form-list';\nimport type { FormRulesRecord, FormErrors } from '../types';\n\nexport function validateListValues<T, K extends keyof T>(\n values: T,\n key: string,\n rules: FormRulesRecord<T, K>\n) {\n const list: FormList<any> = values[key] as any;\n const results: FormErrors = {};\n\n list.forEach((item, itemIndex) => {\n if (typeof item === 'object' && item !== null) {\n Object.keys(item).forEach((listItemKey) => {\n if (typeof rules[key][listItemKey] === 'function') {\n const error = rules[key][listItemKey](item[listItemKey]);\n if (error) {\n results[`${key}.${itemIndex}.${listItemKey}`] = error;\n }\n }\n });\n }\n });\n\n return results;\n}\n"],"names":[],"mappings":"AAAO,SAAS,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;AACvD,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,KAAK;AACpC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AACnD,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK;AACjD,QAAQ,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,KAAK,UAAU,EAAE;AAC3D,UAAU,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACnE,UAAU,IAAI,KAAK,EAAE;AACrB,YAAY,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAClE,WAAW;AACX,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,OAAO,CAAC;AACjB;;;;"}
@@ -0,0 +1,53 @@
1
+ import { isFormList } from '../form-list/form-list.js';
2
+ import { filterErrors } from '../filter-errors/filter-errors.js';
3
+ import { validateListValues } from './validate-list-values.js';
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ function validateRecordRules(rules, values) {
22
+ return Object.keys(rules).reduce((acc, key) => {
23
+ const rule = rules[key];
24
+ if (isFormList(values[key])) {
25
+ return __spreadValues(__spreadValues({}, acc), validateListValues(values, key, rules));
26
+ }
27
+ if (typeof rule === "function") {
28
+ acc[key] = rule(values[key], values);
29
+ }
30
+ return acc;
31
+ }, {});
32
+ }
33
+ function getValidationResults(errors) {
34
+ const filteredErrors = filterErrors(errors);
35
+ return { hasErrors: Object.keys(filteredErrors).length > 0, errors: filteredErrors };
36
+ }
37
+ function validateValues(rules, values) {
38
+ if (rules === void 0 || rules === null) {
39
+ return { hasErrors: false, errors: {} };
40
+ }
41
+ if (typeof rules === "function") {
42
+ return getValidationResults(rules(values));
43
+ }
44
+ return getValidationResults(validateRecordRules(rules, values));
45
+ }
46
+ function validateFieldValue(field, rules, values) {
47
+ const results = validateValues(rules, values);
48
+ const hasError = field in results.errors;
49
+ return { hasError, error: hasError ? results.errors[field] : null };
50
+ }
51
+
52
+ export { validateFieldValue, validateValues };
53
+ //# sourceMappingURL=validate-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-values.js","sources":["../../src/validate-values/validate-values.ts"],"sourcesContent":["import type {\n FormErrors,\n FormRulesRecord,\n FormRules,\n FormValidationResult,\n FormFieldValidationResult,\n} from '../types';\nimport { isFormList } from '../form-list/form-list';\nimport { filterErrors } from '../filter-errors/filter-errors';\nimport { validateListValues } from './validate-list-values';\n\nfunction validateRecordRules(\n rules: FormRulesRecord<any, any>,\n values: Record<string, any>\n): FormErrors {\n return Object.keys(rules).reduce<FormErrors>((acc, key) => {\n const rule = rules[key];\n\n if (isFormList(values[key])) {\n return { ...acc, ...validateListValues(values, key, rules) };\n }\n\n if (typeof rule === 'function') {\n acc[key] = rule(values[key], values);\n }\n\n return acc;\n }, {});\n}\n\nfunction getValidationResults(errors: FormErrors) {\n const filteredErrors = filterErrors(errors);\n return { hasErrors: Object.keys(filteredErrors).length > 0, errors: filteredErrors };\n}\n\nexport function validateValues(\n rules: FormRules<any, any>,\n values: Record<string, any>\n): FormValidationResult {\n if (rules === undefined || rules === null) {\n return { hasErrors: false, errors: {} };\n }\n\n if (typeof rules === 'function') {\n return getValidationResults(rules(values));\n }\n\n return getValidationResults(validateRecordRules(rules, values));\n}\n\nexport function validateFieldValue(\n field: string,\n rules: FormRules<any, any>,\n values: Record<string, any>\n): FormFieldValidationResult {\n const results = validateValues(rules, values);\n const hasError = field in results.errors;\n return { hasError, error: hasError ? results.errors[field] : null };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function getInputOnChange<T>(setValue: (value: null | undefined | T | ((current: T) => T)) => void): (val: T | import("react").ChangeEvent<any> | ((current: T) => T)) => void;
2
+ //# sourceMappingURL=____get-input-on-change.internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"____get-input-on-change.internal.d.ts","sourceRoot":"","sources":["../src/____get-input-on-change.internal.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,2DAEG,CAAC,KAAK,CAAC,WAiBhF"}
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ export declare type ValidationRule<T> = {
3
+ readonly [P in keyof T]?: (value: T[P], values?: T) => boolean;
4
+ };
5
+ export declare type UseFormErrors<T> = {
6
+ readonly [P in keyof T]?: React.ReactNode | null;
7
+ };
8
+ interface UseFormInput<T> {
9
+ validationRules?: ValidationRule<T>;
10
+ errorMessages?: UseFormErrors<T>;
11
+ initialValues: T;
12
+ }
13
+ export interface UseForm<T> {
14
+ values: T;
15
+ errors: Record<keyof T, React.ReactNode>;
16
+ validate: () => boolean;
17
+ reset: () => void;
18
+ setErrors: React.Dispatch<React.SetStateAction<Record<keyof T, React.ReactNode>>>;
19
+ setValues: React.Dispatch<React.SetStateAction<T>>;
20
+ setFieldValue: <K extends keyof T, U extends T[K]>(field: K, value: U) => void;
21
+ setFieldError: (field: keyof T, error: React.ReactNode) => void;
22
+ validateField: (field: keyof T) => void;
23
+ resetErrors: () => void;
24
+ onSubmit: (handleSubmit: (values: T) => any) => (event?: React.FormEvent) => void;
25
+ getInputProps: <K extends keyof T>(field: K, options?: {
26
+ type?: 'checkbox' | 'default';
27
+ }) => {
28
+ [x: string]: any;
29
+ onChange: any;
30
+ error: Record<keyof T, React.ReactNode>[K];
31
+ };
32
+ }
33
+ export declare function useForm<T extends {
34
+ [key: string]: any;
35
+ }>({ initialValues, validationRules, errorMessages, }: UseFormInput<T>): UseForm<T>;
36
+ export {};
37
+ //# sourceMappingURL=____use-form.internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"____use-form.internal.d.ts","sourceRoot":"","sources":["../src/____use-form.internal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,oBAAY,cAAc,CAAC,CAAC,IAAI;IAC9B,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,OAAO;CAC/D,CAAC;AAEF,oBAAY,aAAa,CAAC,CAAC,IAAI;IAC7B,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI;CACjD,CAAC;AAEF,UAAU,YAAY,CAAC,CAAC;IACtB,eAAe,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACpC,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACjC,aAAa,EAAE,CAAC,CAAC;CAClB;AAED,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,MAAM,EAAE,CAAC,CAAC;IACV,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACzC,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAClF,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,aAAa,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/E,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IAChE,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,EAAE,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IAClF,aAAa,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAC/B,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;KAC/B,KACE;QACH,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;QACjB,QAAQ,EAAE,GAAG,CAAC;QACd,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5C,CAAC;CACH;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAAE,EACxD,aAAa,EACb,eAAoB,EACpB,aAAkB,GACnB,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAuF9B"}
@@ -0,0 +1,3 @@
1
+ import type { FormErrors } from '../types';
2
+ export declare function filterErrors(errors: FormErrors): FormErrors;
3
+ //# sourceMappingURL=filter-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-errors.d.ts","sourceRoot":"","sources":["../../src/filter-errors/filter-errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAc3D"}
@@ -0,0 +1,8 @@
1
+ declare const LIST_IDENTIFIER: unique symbol;
2
+ export interface FormList<T> extends Array<T> {
3
+ [LIST_IDENTIFIER]: true;
4
+ }
5
+ export declare function formList<T>(list: T[]): FormList<T>;
6
+ export declare function isFormList(list: unknown): boolean;
7
+ export {};
8
+ //# sourceMappingURL=form-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-list.d.ts","sourceRoot":"","sources":["../../src/form-list/form-list.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,eAAe,eAA+B,CAAC;AAErD,MAAM,WAAW,QAAQ,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;CACzB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CASlD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,WAEvC"}
@@ -0,0 +1,2 @@
1
+ export declare function getErrorPath(path: (string | number | symbol)[]): string;
2
+ //# sourceMappingURL=get-error-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-error-path.d.ts","sourceRoot":"","sources":["../../src/get-error-path/get-error-path.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,UAE9D"}
@@ -0,0 +1,2 @@
1
+ export declare function getInputOnChange<T>(setValue: (value: null | undefined | T | ((current: T) => T)) => void): (val: import("react").ChangeEvent<any> | T | ((current: T) => T)) => void;
2
+ //# sourceMappingURL=get-input-on-change.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-input-on-change.d.ts","sourceRoot":"","sources":["../../src/get-input-on-change/get-input-on-change.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,2DAEG,CAAC,KAAK,CAAC,WAiBhF"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export { formList, isFormList } from './form-list/form-list';
2
+ export { useForm } from './use-form';
3
+ export { zodResolver } from './resolvers/zod-resolver/zod-resolver';
4
+ export { yupResolver } from './resolvers/yup-resolver/yup-resolver';
5
+ export { joiResolver } from './resolvers/joi-resolver/joi-resolver';
6
+ export type { FormErrors, FormRules } from './types';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAEpE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FormErrors } from '../../types';
2
+ export declare function joiResolver(schema: any): (values: Record<string, any>) => FormErrors;
3
+ //# sourceMappingURL=joi-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joi-resolver.d.ts","sourceRoot":"","sources":["../../../src/resolvers/joi-resolver/joi-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkB9C,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,YAErB,OAAO,MAAM,EAAE,GAAG,CAAC,KAAG,UAAU,CAcjD"}
@@ -0,0 +1,9 @@
1
+ import { FormErrors } from '../index';
2
+ export declare const RESOLVER_ERROR_MESSAGES: {
3
+ name: string;
4
+ age: string;
5
+ fruitName: string;
6
+ fruitStock: string;
7
+ };
8
+ export declare function testResolver(schema: (values: Record<string, any>) => FormErrors): void;
9
+ //# sourceMappingURL=test-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-resolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/test-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,UAAU,EAAW,MAAM,UAAU,CAAC;AAEzD,eAAO,MAAM,uBAAuB;;;;;CAKnC,CAAC;AA6BF,wBAAgB,YAAY,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,UAAU,QAsD/E"}
@@ -0,0 +1,3 @@
1
+ import type { FormErrors } from '../../types';
2
+ export declare function yupResolver(schema: any): (values: Record<string, any>) => FormErrors;
3
+ //# sourceMappingURL=yup-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yup-resolver.d.ts","sourceRoot":"","sources":["../../../src/resolvers/yup-resolver/yup-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAe9C,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,YAGrB,OAAO,MAAM,EAAE,GAAG,CAAC,KAAG,UAAU,CAejD"}
@@ -0,0 +1,3 @@
1
+ import type { FormErrors } from '../../types';
2
+ export declare function zodResolver<T extends Record<string, any>>(schema: any): (values: T) => FormErrors;
3
+ //# sourceMappingURL=zod-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-resolver.d.ts","sourceRoot":"","sources":["../../../src/resolvers/zod-resolver/zod-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkB9C,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,YAGpD,CAAC,KAAG,UAAU,CAe/B"}
package/lib/types.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ import type React from 'react';
2
+ import type { FormList } from './form-list/form-list';
3
+ export declare type FormErrors = Record<string, React.ReactNode>;
4
+ export declare type FormRulesRecord<T, K extends keyof T = any> = Record<K, T[K] extends FormList<infer U> ? {
5
+ [P in keyof U]?: (value: U[P], values: T) => React.ReactNode;
6
+ } : (value: T[K], values: T) => React.ReactNode>;
7
+ export declare type FormRules<T, K extends keyof T = any> = ((values: T) => FormErrors) | FormRulesRecord<T, K>;
8
+ export interface FormValidationResult {
9
+ hasErrors: boolean;
10
+ errors: FormErrors;
11
+ }
12
+ export interface FormFieldValidationResult {
13
+ hasError: boolean;
14
+ error: React.ReactNode;
15
+ }
16
+ export interface GetInputPropsPayload {
17
+ value: any;
18
+ onChange(event: any): void;
19
+ error?: React.ReactNode;
20
+ }
21
+ export interface GetCheckboxPropsPayload {
22
+ checked: boolean;
23
+ onChange(event: any): void;
24
+ error?: React.ReactNode;
25
+ }
26
+ export declare type GetInputPropsFieldType = 'checkbox' | 'input';
27
+ export declare type GetInputProps<T extends GetInputPropsFieldType> = T extends 'checkbox' ? GetCheckboxPropsPayload : GetInputPropsPayload;
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,oBAAY,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AAEzD,oBAAY,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,GAAG,IAAI,MAAM,CAC9D,CAAC,EACD,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAC1B;KACG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS;CAC7D,GACD,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAChD,CAAC;AAEF,oBAAY,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,GAAG,IAC5C,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,UAAU,CAAC,GAC3B,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE1B,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB;AAED,oBAAY,sBAAsB,GAAG,UAAU,GAAG,OAAO,CAAC;AAE1D,oBAAY,aAAa,CAAC,CAAC,SAAS,sBAAsB,IAAI,CAAC,SAAS,UAAU,GAC9E,uBAAuB,GACvB,oBAAoB,CAAC"}
@@ -0,0 +1,42 @@
1
+ /// <reference types="react" />
2
+ import { FormList } from './form-list/form-list';
3
+ import type { FormErrors, FormRules, FormValidationResult, FormFieldValidationResult, GetInputProps, GetInputPropsFieldType } from './types';
4
+ export interface UseFormInput<T, K extends keyof T> {
5
+ initialValues: T;
6
+ initialErrors?: FormErrors;
7
+ validate?: FormRules<T, K>;
8
+ schema?: (values: Record<string, any>) => FormErrors;
9
+ }
10
+ export interface UseFormReturnType<T> {
11
+ values: T;
12
+ setValues: React.Dispatch<React.SetStateAction<T>>;
13
+ setFieldValue: <K extends keyof T, V extends T[K]>(field: K, value: V) => void;
14
+ errors: FormErrors;
15
+ setErrors: React.Dispatch<React.SetStateAction<FormErrors>>;
16
+ setFieldError: <K extends keyof T>(field: K, error: React.ReactNode) => void;
17
+ clearFieldError: <K extends keyof T>(field: K) => void;
18
+ clearErrors(): void;
19
+ setListItem: <K extends keyof T, V extends T[K]>(field: K, index: number, value: V extends FormList<infer U> ? U : never) => void;
20
+ addListItem: <K extends keyof T, V extends T[K]>(field: K, payload: V extends FormList<infer U> ? U : never) => void;
21
+ removeListItem: <K extends keyof T>(field: K, indices: number[] | number) => void;
22
+ reorderListItem: <K extends keyof T>(field: K, payload: {
23
+ from: number;
24
+ to: number;
25
+ }) => void;
26
+ validate(): FormValidationResult;
27
+ validateField: (field: string) => FormFieldValidationResult;
28
+ onSubmit(handleSubmit: (values: T, event: React.FormEvent) => void): (event?: React.FormEvent) => void;
29
+ reset(): void;
30
+ getInputProps: <K extends keyof T, L extends GetInputPropsFieldType = 'input'>(field: K, options?: {
31
+ type?: L;
32
+ withError?: boolean;
33
+ }) => GetInputProps<L>;
34
+ getListInputProps: <K extends keyof T, U extends T[K], L extends GetInputPropsFieldType = 'input'>(field: K, index: number, listField: U extends FormList<infer V> ? keyof V : never, options?: {
35
+ type?: L;
36
+ withError?: boolean;
37
+ }) => GetInputProps<L>;
38
+ }
39
+ export declare function useForm<T extends {
40
+ [key: string]: any;
41
+ }, KK extends keyof T = string>({ initialValues, initialErrors, validate: rules, schema, }: UseFormInput<T, KK>): UseFormReturnType<T>;
42
+ //# sourceMappingURL=use-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["../src/use-form.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { FormRulesRecord, FormErrors } from '../types';
2
+ export declare function validateListValues<T, K extends keyof T>(values: T, key: string, rules: FormRulesRecord<T, K>): FormErrors;
3
+ //# sourceMappingURL=validate-list-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-list-values.d.ts","sourceRoot":"","sources":["../../src/validate-values/validate-list-values.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE5D,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EACrD,MAAM,EAAE,CAAC,EACT,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,cAmB7B"}
@@ -0,0 +1,4 @@
1
+ import type { FormRules, FormValidationResult, FormFieldValidationResult } from '../types';
2
+ export declare function validateValues(rules: FormRules<any, any>, values: Record<string, any>): FormValidationResult;
3
+ export declare function validateFieldValue(field: string, rules: FormRules<any, any>, values: Record<string, any>): FormFieldValidationResult;
4
+ //# sourceMappingURL=validate-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-values.d.ts","sourceRoot":"","sources":["../../src/validate-values/validate-values.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,SAAS,EACT,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,UAAU,CAAC;AA6BlB,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,EAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,oBAAoB,CAUtB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,EAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,yBAAyB,CAI3B"}
package/package.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "@mantine/form",
3
+ "description": "Mantine form management library",
4
+ "version": "3.7.0-alpha.0",
5
+ "main": "cjs/index.js",
6
+ "module": "esm/index.js",
7
+ "types": "lib/index.d.ts",
8
+ "license": "MIT",
9
+ "author": "Vitaly Rtishchev <rtivital@gmail.com>",
10
+ "sideEffects": false,
11
+ "homepage": "https://mantine.dev",
12
+ "repository": {
13
+ "url": "https://github.com/mantinedev/mantine.git",
14
+ "type": "git",
15
+ "directory": "src/mantine-hooks"
16
+ },
17
+ "peerDependencies": {
18
+ "react": ">=16.8.0"
19
+ },
20
+ "dependencies": {},
21
+ "devDependencies": {}
22
+ }