@mantine/form 5.0.0-alpha.8 → 5.0.0-alpha.9

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
@@ -4,12 +4,13 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var react = require('react');
6
6
  var filterErrors = require('./filter-errors/filter-errors.js');
7
+ var shouldValidateOnChange = require('./validate/should-validate-on-change.js');
7
8
  var setPath = require('./paths/set-path.js');
9
+ var validateFieldValue = require('./validate/validate-field-value.js');
8
10
  var reorderPath = require('./paths/reorder-path.js');
9
11
  var removePath = require('./paths/remove-path.js');
10
12
  var insertPath = require('./paths/insert-path.js');
11
13
  var validateValues = require('./validate/validate-values.js');
12
- var validateFieldValue = require('./validate/validate-field-value.js');
13
14
  var getPath = require('./paths/get-path.js');
14
15
  var getInputOnChange = require('./get-input-on-change/get-input-on-change.js');
15
16
 
@@ -36,6 +37,7 @@ function useForm({
36
37
  initialValues = {},
37
38
  initialErrors = {},
38
39
  clearInputErrorOnChange = true,
40
+ validateInputOnChange = false,
39
41
  validate: rules
40
42
  } = {}) {
41
43
  const [values, _setValues] = react.useState(initialValues);
@@ -47,9 +49,25 @@ function useForm({
47
49
  clearErrors();
48
50
  }, []);
49
51
  const setFieldError = react.useCallback((path, error) => setErrors((current) => __spreadProps(__spreadValues({}, current), { [path]: error })), []);
52
+ const clearFieldError = react.useCallback((path) => setErrors((current) => {
53
+ if (typeof path !== "string") {
54
+ return current;
55
+ }
56
+ const clone = __spreadValues({}, current);
57
+ delete clone[path];
58
+ return clone;
59
+ }), []);
50
60
  const setFieldValue = react.useCallback((path, value) => {
51
- _setValues((current) => setPath.setPath(path, value, current));
52
- clearInputErrorOnChange && setFieldError(path, null);
61
+ const shouldValidate = shouldValidateOnChange.shouldValidateOnChange(path, validateInputOnChange);
62
+ _setValues((current) => {
63
+ const result = setPath.setPath(path, value, current);
64
+ if (shouldValidate) {
65
+ const validationResults = validateFieldValue.validateFieldValue(path, rules, result);
66
+ validationResults.hasError ? setFieldError(path, validationResults.error) : clearFieldError(path);
67
+ }
68
+ return result;
69
+ });
70
+ !shouldValidate && clearInputErrorOnChange && setFieldError(path, null);
53
71
  }, []);
54
72
  const setValues = react.useCallback((payload) => {
55
73
  _setValues(payload);
@@ -58,14 +76,6 @@ function useForm({
58
76
  const reorderListItem = react.useCallback((path, payload) => _setValues((current) => reorderPath.reorderPath(path, payload, current)), []);
59
77
  const removeListItem = react.useCallback((path, index) => _setValues((current) => removePath.removePath(path, index, current)), []);
60
78
  const insertListItem = react.useCallback((path, item, index) => _setValues((current) => insertPath.insertPath(path, item, index, current)), []);
61
- const clearFieldError = react.useCallback((path) => setErrors((current) => {
62
- if (typeof path !== "string") {
63
- return current;
64
- }
65
- const clone = __spreadValues({}, current);
66
- delete clone[path];
67
- return clone;
68
- }), []);
69
79
  const validate = react.useCallback(() => {
70
80
  const results = validateValues.validateValues(rules, values);
71
81
  _setErrors(results.errors);
@@ -86,10 +96,14 @@ function useForm({
86
96
  };
87
97
  return type === "checkbox" ? withOptionalError({ checked: getPath.getPath(path, values), onChange }) : withOptionalError({ value: getPath.getPath(path, values), onChange });
88
98
  };
89
- const onSubmit = (handleSubmit) => (event) => {
99
+ const onSubmit = (handleSubmit, handleValidationFailure) => (event) => {
90
100
  event.preventDefault();
91
101
  const results = validate();
92
- !results.hasErrors && handleSubmit(values, event);
102
+ if (results.hasErrors) {
103
+ handleValidationFailure == null ? void 0 : handleValidationFailure(results.errors, values, event);
104
+ } else {
105
+ handleSubmit(values, event);
106
+ }
93
107
  };
94
108
  const onReset = react.useCallback((event) => {
95
109
  event.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"file":"use-form.js","sources":["../src/use-form.ts"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { getInputOnChange } from './get-input-on-change';\nimport { setPath, reorderPath, insertPath, getPath, removePath } from './paths';\nimport { filterErrors } from './filter-errors';\nimport { validateValues, validateFieldValue } from './validate';\nimport {\n ValuesPlaceholder,\n UseFormReturnType,\n UseFormInput,\n SetErrors,\n ClearErrors,\n Reset,\n SetFieldError,\n SetFieldValue,\n SetValues,\n ReorderListItem,\n RemoveListItem,\n InsertListItem,\n ClearFieldError,\n Validate,\n ValidateField,\n GetInputProps,\n OnSubmit,\n OnReset,\n} from './types';\n\nexport function useForm<Values extends ValuesPlaceholder>({\n initialValues = {} as Values,\n initialErrors = {},\n clearInputErrorOnChange = true,\n validate: rules,\n}: UseFormInput<Values> = {}): UseFormReturnType<Values> {\n const [values, _setValues] = useState(initialValues);\n const [errors, _setErrors] = useState(filterErrors(initialErrors));\n\n const setErrors: SetErrors = useCallback(\n (errs) =>\n _setErrors((current) => filterErrors(typeof errs === 'function' ? errs(current) : errs)),\n []\n );\n\n const clearErrors: ClearErrors = useCallback(() => _setErrors({}), []);\n const reset: Reset = useCallback(() => {\n _setValues(initialValues);\n clearErrors();\n }, []);\n\n const setFieldError: SetFieldError<Values> = useCallback(\n (path, error) => setErrors((current) => ({ ...current, [path]: error })),\n []\n );\n\n const setFieldValue: SetFieldValue<Values> = useCallback((path, value) => {\n _setValues((current) => setPath(path, value, current));\n clearInputErrorOnChange && setFieldError(path, null);\n }, []);\n\n const setValues: SetValues<Values> = useCallback((payload) => {\n _setValues(payload);\n clearInputErrorOnChange && clearErrors();\n }, []);\n\n const reorderListItem: ReorderListItem<Values> = useCallback(\n (path, payload) => _setValues((current) => reorderPath(path, payload, current)),\n []\n );\n\n const removeListItem: RemoveListItem<Values> = useCallback(\n (path, index) => _setValues((current) => removePath(path, index, current)),\n []\n );\n\n const insertListItem: InsertListItem<Values> = useCallback(\n (path, item, index) => _setValues((current) => insertPath(path, item, index, current)),\n []\n );\n\n const clearFieldError: ClearFieldError = useCallback(\n (path) =>\n setErrors((current) => {\n if (typeof path !== 'string') {\n return current;\n }\n\n const clone = { ...current };\n delete clone[path];\n return clone;\n }),\n []\n );\n\n const validate: Validate = useCallback(() => {\n const results = validateValues(rules, values);\n _setErrors(results.errors);\n return results;\n }, [values]);\n\n const validateField: ValidateField<Values> = useCallback(\n (path) => {\n const results = validateFieldValue(path, rules, values);\n results.hasError ? setFieldError(path, results.error) : clearFieldError(path);\n return results;\n },\n [values]\n );\n\n const getInputProps: GetInputProps<Values> = (\n path,\n { type = 'input', withError = type === 'input' } = {}\n ) => {\n const onChange = getInputOnChange((value) => setFieldValue(path, value as any));\n const withOptionalError = (payload: Record<string, unknown>) => {\n if (withError) {\n // eslint-disable-next-line no-param-reassign\n payload.error = errors[path];\n }\n return payload;\n };\n\n return type === 'checkbox'\n ? withOptionalError({ checked: getPath(path, values), onChange })\n : withOptionalError({ value: getPath(path, values), onChange });\n };\n\n const onSubmit: OnSubmit<Values> = (handleSubmit) => (event) => {\n event.preventDefault();\n const results = validate();\n !results.hasErrors && handleSubmit(values, event);\n };\n\n const onReset: OnReset = useCallback((event) => {\n event.preventDefault();\n reset();\n }, []);\n\n return {\n values,\n errors,\n setValues,\n setErrors,\n setFieldValue,\n setFieldError,\n clearFieldError,\n clearErrors,\n reset,\n validate,\n validateField,\n reorderListItem,\n removeListItem,\n insertListItem,\n getInputProps,\n onSubmit,\n onReset,\n };\n}\n"],"names":["useState","filterErrors","useCallback","setPath","reorderPath","removePath","insertPath","validateValues","validateFieldValue","getInputOnChange","getPath"],"mappings":"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"}
1
+ {"version":3,"file":"use-form.js","sources":["../src/use-form.ts"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { getInputOnChange } from './get-input-on-change';\nimport { setPath, reorderPath, insertPath, getPath, removePath } from './paths';\nimport { filterErrors } from './filter-errors';\nimport { validateValues, validateFieldValue, shouldValidateOnChange } from './validate';\nimport {\n ValuesPlaceholder,\n UseFormReturnType,\n UseFormInput,\n SetErrors,\n ClearErrors,\n Reset,\n SetFieldError,\n SetFieldValue,\n SetValues,\n ReorderListItem,\n RemoveListItem,\n InsertListItem,\n ClearFieldError,\n Validate,\n ValidateField,\n GetInputProps,\n OnSubmit,\n OnReset,\n} from './types';\n\nexport function useForm<Values extends ValuesPlaceholder>({\n initialValues = {} as Values,\n initialErrors = {},\n clearInputErrorOnChange = true,\n validateInputOnChange = false,\n validate: rules,\n}: UseFormInput<Values> = {}): UseFormReturnType<Values> {\n const [values, _setValues] = useState(initialValues);\n const [errors, _setErrors] = useState(filterErrors(initialErrors));\n\n const setErrors: SetErrors = useCallback(\n (errs) =>\n _setErrors((current) => filterErrors(typeof errs === 'function' ? errs(current) : errs)),\n []\n );\n\n const clearErrors: ClearErrors = useCallback(() => _setErrors({}), []);\n const reset: Reset = useCallback(() => {\n _setValues(initialValues);\n clearErrors();\n }, []);\n\n const setFieldError: SetFieldError<Values> = useCallback(\n (path, error) => setErrors((current) => ({ ...current, [path]: error })),\n []\n );\n\n const clearFieldError: ClearFieldError = useCallback(\n (path) =>\n setErrors((current) => {\n if (typeof path !== 'string') {\n return current;\n }\n\n const clone = { ...current };\n delete clone[path];\n return clone;\n }),\n []\n );\n\n const setFieldValue: SetFieldValue<Values> = useCallback((path, value) => {\n const shouldValidate = shouldValidateOnChange(path, validateInputOnChange);\n _setValues((current) => {\n const result = setPath(path, value, current);\n if (shouldValidate) {\n const validationResults = validateFieldValue(path, rules, result);\n validationResults.hasError\n ? setFieldError(path, validationResults.error)\n : clearFieldError(path);\n }\n return result;\n });\n\n !shouldValidate && clearInputErrorOnChange && setFieldError(path, null);\n }, []);\n\n const setValues: SetValues<Values> = useCallback((payload) => {\n _setValues(payload);\n clearInputErrorOnChange && clearErrors();\n }, []);\n\n const reorderListItem: ReorderListItem<Values> = useCallback(\n (path, payload) => _setValues((current) => reorderPath(path, payload, current)),\n []\n );\n\n const removeListItem: RemoveListItem<Values> = useCallback(\n (path, index) => _setValues((current) => removePath(path, index, current)),\n []\n );\n\n const insertListItem: InsertListItem<Values> = useCallback(\n (path, item, index) => _setValues((current) => insertPath(path, item, index, current)),\n []\n );\n\n const validate: Validate = useCallback(() => {\n const results = validateValues(rules, values);\n _setErrors(results.errors);\n return results;\n }, [values]);\n\n const validateField: ValidateField<Values> = useCallback(\n (path) => {\n const results = validateFieldValue(path, rules, values);\n results.hasError ? setFieldError(path, results.error) : clearFieldError(path);\n return results;\n },\n [values]\n );\n\n const getInputProps: GetInputProps<Values> = (\n path,\n { type = 'input', withError = type === 'input' } = {}\n ) => {\n const onChange = getInputOnChange((value) => setFieldValue(path, value as any));\n const withOptionalError = (payload: Record<string, unknown>) => {\n if (withError) {\n // eslint-disable-next-line no-param-reassign\n payload.error = errors[path];\n }\n return payload;\n };\n\n return type === 'checkbox'\n ? withOptionalError({ checked: getPath(path, values), onChange })\n : withOptionalError({ value: getPath(path, values), onChange });\n };\n\n const onSubmit: OnSubmit<Values> = (handleSubmit, handleValidationFailure) => (event) => {\n event.preventDefault();\n const results = validate();\n\n if (results.hasErrors) {\n handleValidationFailure?.(results.errors, values, event);\n } else {\n handleSubmit(values, event);\n }\n };\n\n const onReset: OnReset = useCallback((event) => {\n event.preventDefault();\n reset();\n }, []);\n\n return {\n values,\n errors,\n setValues,\n setErrors,\n setFieldValue,\n setFieldError,\n clearFieldError,\n clearErrors,\n reset,\n validate,\n validateField,\n reorderListItem,\n removeListItem,\n insertListItem,\n getInputProps,\n onSubmit,\n onReset,\n };\n}\n"],"names":["useState","filterErrors","useCallback","shouldValidateOnChange","setPath","validateFieldValue","reorderPath","removePath","insertPath","validateValues","getInputOnChange","getPath"],"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;AAM3D,SAAS,OAAO,CAAC;AACxB,EAAE,aAAa,GAAG,EAAE;AACpB,EAAE,aAAa,GAAG,EAAE;AACpB,EAAE,uBAAuB,GAAG,IAAI;AAChC,EAAE,qBAAqB,GAAG,KAAK;AAC/B,EAAE,QAAQ,EAAE,KAAK;AACjB,CAAC,GAAG,EAAE,EAAE;AACR,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAGA,cAAQ,CAAC,aAAa,CAAC,CAAC;AACvD,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAGA,cAAQ,CAACC,yBAAY,CAAC,aAAa,CAAC,CAAC,CAAC;AACrE,EAAE,MAAM,SAAS,GAAGC,iBAAW,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,OAAO,KAAKD,yBAAY,CAAC,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxI,EAAE,MAAM,WAAW,GAAGC,iBAAW,CAAC,MAAM,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5D,EAAE,MAAM,KAAK,GAAGA,iBAAW,CAAC,MAAM;AAClC,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC;AAC9B,IAAI,WAAW,EAAE,CAAC;AAClB,GAAG,EAAE,EAAE,CAAC,CAAC;AACT,EAAE,MAAM,aAAa,GAAGA,iBAAW,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChJ,EAAE,MAAM,eAAe,GAAGA,iBAAW,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,OAAO,KAAK;AACvE,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAClC,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC9C,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;AACvB,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACV,EAAE,MAAM,aAAa,GAAGA,iBAAW,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;AACrD,IAAI,MAAM,cAAc,GAAGC,6CAAsB,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;AAC/E,IAAI,UAAU,CAAC,CAAC,OAAO,KAAK;AAC5B,MAAM,MAAM,MAAM,GAAGC,eAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACnD,MAAM,IAAI,cAAc,EAAE;AAC1B,QAAQ,MAAM,iBAAiB,GAAGC,qCAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1E,QAAQ,iBAAiB,CAAC,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;AAC1G,OAAO;AACP,MAAM,OAAO,MAAM,CAAC;AACpB,KAAK,CAAC,CAAC;AACP,IAAI,CAAC,cAAc,IAAI,uBAAuB,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5E,GAAG,EAAE,EAAE,CAAC,CAAC;AACT,EAAE,MAAM,SAAS,GAAGH,iBAAW,CAAC,CAAC,OAAO,KAAK;AAC7C,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;AACxB,IAAI,uBAAuB,IAAI,WAAW,EAAE,CAAC;AAC7C,GAAG,EAAE,EAAE,CAAC,CAAC;AACT,EAAE,MAAM,eAAe,GAAGA,iBAAW,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,UAAU,CAAC,CAAC,OAAO,KAAKI,uBAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3H,EAAE,MAAM,cAAc,GAAGJ,iBAAW,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,UAAU,CAAC,CAAC,OAAO,KAAKK,qBAAU,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrH,EAAE,MAAM,cAAc,GAAGL,iBAAW,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,KAAK,UAAU,CAAC,CAAC,OAAO,KAAKM,qBAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACjI,EAAE,MAAM,QAAQ,GAAGN,iBAAW,CAAC,MAAM;AACrC,IAAI,MAAM,OAAO,GAAGO,6BAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAClD,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/B,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACf,EAAE,MAAM,aAAa,GAAGP,iBAAW,CAAC,CAAC,IAAI,KAAK;AAC9C,IAAI,MAAM,OAAO,GAAGG,qCAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5D,IAAI,OAAO,CAAC,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;AAClF,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACf,EAAE,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,GAAG,OAAO,EAAE,SAAS,GAAG,IAAI,KAAK,OAAO,EAAE,GAAG,EAAE,KAAK;AACzF,IAAI,MAAM,QAAQ,GAAGK,iCAAgB,CAAC,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7E,IAAI,MAAM,iBAAiB,GAAG,CAAC,OAAO,KAAK;AAC3C,MAAM,IAAI,SAAS,EAAE;AACrB,QAAQ,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,OAAO;AACP,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK,CAAC;AACN,IAAI,OAAO,IAAI,KAAK,UAAU,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAEC,eAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,iBAAiB,CAAC,EAAE,KAAK,EAAEA,eAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AACjK,GAAG,CAAC;AACJ,EAAE,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,uBAAuB,KAAK,CAAC,KAAK,KAAK;AACzE,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3B,IAAI,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;AAC/B,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE;AAC3B,MAAM,uBAAuB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,uBAAuB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACxG,KAAK,MAAM;AACX,MAAM,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAClC,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,MAAM,OAAO,GAAGT,iBAAW,CAAC,CAAC,KAAK,KAAK;AACzC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3B,IAAI,KAAK,EAAE,CAAC;AACZ,GAAG,EAAE,EAAE,CAAC,CAAC;AACT,EAAE,OAAO;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,aAAa;AACjB,IAAI,aAAa;AACjB,IAAI,eAAe;AACnB,IAAI,WAAW;AACf,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,aAAa;AACjB,IAAI,eAAe;AACnB,IAAI,cAAc;AAClB,IAAI,cAAc;AAClB,IAAI,aAAa;AACjB,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,GAAG,CAAC;AACJ;;;;"}
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ function shouldValidateOnChange(path, validateInputOnChange) {
6
+ if (!validateInputOnChange) {
7
+ return false;
8
+ }
9
+ if (typeof validateInputOnChange === "boolean") {
10
+ return validateInputOnChange;
11
+ }
12
+ if (Array.isArray(validateInputOnChange)) {
13
+ return validateInputOnChange.includes(path);
14
+ }
15
+ return false;
16
+ }
17
+
18
+ exports.shouldValidateOnChange = shouldValidateOnChange;
19
+ //# sourceMappingURL=should-validate-on-change.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"should-validate-on-change.js","sources":["../../src/validate/should-validate-on-change.ts"],"sourcesContent":["export function shouldValidateOnChange(path: unknown, validateInputOnChange: boolean | unknown[]) {\n if (!validateInputOnChange) {\n return false;\n }\n\n if (typeof validateInputOnChange === 'boolean') {\n return validateInputOnChange;\n }\n\n if (Array.isArray(validateInputOnChange)) {\n return validateInputOnChange.includes(path);\n }\n\n return false;\n}\n"],"names":[],"mappings":";;;;AAAO,SAAS,sBAAsB,CAAC,IAAI,EAAE,qBAAqB,EAAE;AACpE,EAAE,IAAI,CAAC,qBAAqB,EAAE;AAC9B,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,IAAI,OAAO,qBAAqB,KAAK,SAAS,EAAE;AAClD,IAAI,OAAO,qBAAqB,CAAC;AACjC,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE;AAC5C,IAAI,OAAO,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChD,GAAG;AACH,EAAE,OAAO,KAAK,CAAC;AACf;;;;"}
package/esm/use-form.js CHANGED
@@ -1,11 +1,12 @@
1
1
  import { useState, useCallback } from 'react';
2
2
  import { filterErrors } from './filter-errors/filter-errors.js';
3
+ import { shouldValidateOnChange } from './validate/should-validate-on-change.js';
3
4
  import { setPath } from './paths/set-path.js';
5
+ import { validateFieldValue } from './validate/validate-field-value.js';
4
6
  import { reorderPath } from './paths/reorder-path.js';
5
7
  import { removePath } from './paths/remove-path.js';
6
8
  import { insertPath } from './paths/insert-path.js';
7
9
  import { validateValues } from './validate/validate-values.js';
8
- import { validateFieldValue } from './validate/validate-field-value.js';
9
10
  import { getPath } from './paths/get-path.js';
10
11
  import { getInputOnChange } from './get-input-on-change/get-input-on-change.js';
11
12
 
@@ -32,6 +33,7 @@ function useForm({
32
33
  initialValues = {},
33
34
  initialErrors = {},
34
35
  clearInputErrorOnChange = true,
36
+ validateInputOnChange = false,
35
37
  validate: rules
36
38
  } = {}) {
37
39
  const [values, _setValues] = useState(initialValues);
@@ -43,9 +45,25 @@ function useForm({
43
45
  clearErrors();
44
46
  }, []);
45
47
  const setFieldError = useCallback((path, error) => setErrors((current) => __spreadProps(__spreadValues({}, current), { [path]: error })), []);
48
+ const clearFieldError = useCallback((path) => setErrors((current) => {
49
+ if (typeof path !== "string") {
50
+ return current;
51
+ }
52
+ const clone = __spreadValues({}, current);
53
+ delete clone[path];
54
+ return clone;
55
+ }), []);
46
56
  const setFieldValue = useCallback((path, value) => {
47
- _setValues((current) => setPath(path, value, current));
48
- clearInputErrorOnChange && setFieldError(path, null);
57
+ const shouldValidate = shouldValidateOnChange(path, validateInputOnChange);
58
+ _setValues((current) => {
59
+ const result = setPath(path, value, current);
60
+ if (shouldValidate) {
61
+ const validationResults = validateFieldValue(path, rules, result);
62
+ validationResults.hasError ? setFieldError(path, validationResults.error) : clearFieldError(path);
63
+ }
64
+ return result;
65
+ });
66
+ !shouldValidate && clearInputErrorOnChange && setFieldError(path, null);
49
67
  }, []);
50
68
  const setValues = useCallback((payload) => {
51
69
  _setValues(payload);
@@ -54,14 +72,6 @@ function useForm({
54
72
  const reorderListItem = useCallback((path, payload) => _setValues((current) => reorderPath(path, payload, current)), []);
55
73
  const removeListItem = useCallback((path, index) => _setValues((current) => removePath(path, index, current)), []);
56
74
  const insertListItem = useCallback((path, item, index) => _setValues((current) => insertPath(path, item, index, current)), []);
57
- const clearFieldError = useCallback((path) => setErrors((current) => {
58
- if (typeof path !== "string") {
59
- return current;
60
- }
61
- const clone = __spreadValues({}, current);
62
- delete clone[path];
63
- return clone;
64
- }), []);
65
75
  const validate = useCallback(() => {
66
76
  const results = validateValues(rules, values);
67
77
  _setErrors(results.errors);
@@ -82,10 +92,14 @@ function useForm({
82
92
  };
83
93
  return type === "checkbox" ? withOptionalError({ checked: getPath(path, values), onChange }) : withOptionalError({ value: getPath(path, values), onChange });
84
94
  };
85
- const onSubmit = (handleSubmit) => (event) => {
95
+ const onSubmit = (handleSubmit, handleValidationFailure) => (event) => {
86
96
  event.preventDefault();
87
97
  const results = validate();
88
- !results.hasErrors && handleSubmit(values, event);
98
+ if (results.hasErrors) {
99
+ handleValidationFailure == null ? void 0 : handleValidationFailure(results.errors, values, event);
100
+ } else {
101
+ handleSubmit(values, event);
102
+ }
89
103
  };
90
104
  const onReset = useCallback((event) => {
91
105
  event.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"file":"use-form.js","sources":["../src/use-form.ts"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { getInputOnChange } from './get-input-on-change';\nimport { setPath, reorderPath, insertPath, getPath, removePath } from './paths';\nimport { filterErrors } from './filter-errors';\nimport { validateValues, validateFieldValue } from './validate';\nimport {\n ValuesPlaceholder,\n UseFormReturnType,\n UseFormInput,\n SetErrors,\n ClearErrors,\n Reset,\n SetFieldError,\n SetFieldValue,\n SetValues,\n ReorderListItem,\n RemoveListItem,\n InsertListItem,\n ClearFieldError,\n Validate,\n ValidateField,\n GetInputProps,\n OnSubmit,\n OnReset,\n} from './types';\n\nexport function useForm<Values extends ValuesPlaceholder>({\n initialValues = {} as Values,\n initialErrors = {},\n clearInputErrorOnChange = true,\n validate: rules,\n}: UseFormInput<Values> = {}): UseFormReturnType<Values> {\n const [values, _setValues] = useState(initialValues);\n const [errors, _setErrors] = useState(filterErrors(initialErrors));\n\n const setErrors: SetErrors = useCallback(\n (errs) =>\n _setErrors((current) => filterErrors(typeof errs === 'function' ? errs(current) : errs)),\n []\n );\n\n const clearErrors: ClearErrors = useCallback(() => _setErrors({}), []);\n const reset: Reset = useCallback(() => {\n _setValues(initialValues);\n clearErrors();\n }, []);\n\n const setFieldError: SetFieldError<Values> = useCallback(\n (path, error) => setErrors((current) => ({ ...current, [path]: error })),\n []\n );\n\n const setFieldValue: SetFieldValue<Values> = useCallback((path, value) => {\n _setValues((current) => setPath(path, value, current));\n clearInputErrorOnChange && setFieldError(path, null);\n }, []);\n\n const setValues: SetValues<Values> = useCallback((payload) => {\n _setValues(payload);\n clearInputErrorOnChange && clearErrors();\n }, []);\n\n const reorderListItem: ReorderListItem<Values> = useCallback(\n (path, payload) => _setValues((current) => reorderPath(path, payload, current)),\n []\n );\n\n const removeListItem: RemoveListItem<Values> = useCallback(\n (path, index) => _setValues((current) => removePath(path, index, current)),\n []\n );\n\n const insertListItem: InsertListItem<Values> = useCallback(\n (path, item, index) => _setValues((current) => insertPath(path, item, index, current)),\n []\n );\n\n const clearFieldError: ClearFieldError = useCallback(\n (path) =>\n setErrors((current) => {\n if (typeof path !== 'string') {\n return current;\n }\n\n const clone = { ...current };\n delete clone[path];\n return clone;\n }),\n []\n );\n\n const validate: Validate = useCallback(() => {\n const results = validateValues(rules, values);\n _setErrors(results.errors);\n return results;\n }, [values]);\n\n const validateField: ValidateField<Values> = useCallback(\n (path) => {\n const results = validateFieldValue(path, rules, values);\n results.hasError ? setFieldError(path, results.error) : clearFieldError(path);\n return results;\n },\n [values]\n );\n\n const getInputProps: GetInputProps<Values> = (\n path,\n { type = 'input', withError = type === 'input' } = {}\n ) => {\n const onChange = getInputOnChange((value) => setFieldValue(path, value as any));\n const withOptionalError = (payload: Record<string, unknown>) => {\n if (withError) {\n // eslint-disable-next-line no-param-reassign\n payload.error = errors[path];\n }\n return payload;\n };\n\n return type === 'checkbox'\n ? withOptionalError({ checked: getPath(path, values), onChange })\n : withOptionalError({ value: getPath(path, values), onChange });\n };\n\n const onSubmit: OnSubmit<Values> = (handleSubmit) => (event) => {\n event.preventDefault();\n const results = validate();\n !results.hasErrors && handleSubmit(values, event);\n };\n\n const onReset: OnReset = useCallback((event) => {\n event.preventDefault();\n reset();\n }, []);\n\n return {\n values,\n errors,\n setValues,\n setErrors,\n setFieldValue,\n setFieldError,\n clearFieldError,\n clearErrors,\n reset,\n validate,\n validateField,\n reorderListItem,\n removeListItem,\n insertListItem,\n getInputProps,\n onSubmit,\n onReset,\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-form.js","sources":["../src/use-form.ts"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { getInputOnChange } from './get-input-on-change';\nimport { setPath, reorderPath, insertPath, getPath, removePath } from './paths';\nimport { filterErrors } from './filter-errors';\nimport { validateValues, validateFieldValue, shouldValidateOnChange } from './validate';\nimport {\n ValuesPlaceholder,\n UseFormReturnType,\n UseFormInput,\n SetErrors,\n ClearErrors,\n Reset,\n SetFieldError,\n SetFieldValue,\n SetValues,\n ReorderListItem,\n RemoveListItem,\n InsertListItem,\n ClearFieldError,\n Validate,\n ValidateField,\n GetInputProps,\n OnSubmit,\n OnReset,\n} from './types';\n\nexport function useForm<Values extends ValuesPlaceholder>({\n initialValues = {} as Values,\n initialErrors = {},\n clearInputErrorOnChange = true,\n validateInputOnChange = false,\n validate: rules,\n}: UseFormInput<Values> = {}): UseFormReturnType<Values> {\n const [values, _setValues] = useState(initialValues);\n const [errors, _setErrors] = useState(filterErrors(initialErrors));\n\n const setErrors: SetErrors = useCallback(\n (errs) =>\n _setErrors((current) => filterErrors(typeof errs === 'function' ? errs(current) : errs)),\n []\n );\n\n const clearErrors: ClearErrors = useCallback(() => _setErrors({}), []);\n const reset: Reset = useCallback(() => {\n _setValues(initialValues);\n clearErrors();\n }, []);\n\n const setFieldError: SetFieldError<Values> = useCallback(\n (path, error) => setErrors((current) => ({ ...current, [path]: error })),\n []\n );\n\n const clearFieldError: ClearFieldError = useCallback(\n (path) =>\n setErrors((current) => {\n if (typeof path !== 'string') {\n return current;\n }\n\n const clone = { ...current };\n delete clone[path];\n return clone;\n }),\n []\n );\n\n const setFieldValue: SetFieldValue<Values> = useCallback((path, value) => {\n const shouldValidate = shouldValidateOnChange(path, validateInputOnChange);\n _setValues((current) => {\n const result = setPath(path, value, current);\n if (shouldValidate) {\n const validationResults = validateFieldValue(path, rules, result);\n validationResults.hasError\n ? setFieldError(path, validationResults.error)\n : clearFieldError(path);\n }\n return result;\n });\n\n !shouldValidate && clearInputErrorOnChange && setFieldError(path, null);\n }, []);\n\n const setValues: SetValues<Values> = useCallback((payload) => {\n _setValues(payload);\n clearInputErrorOnChange && clearErrors();\n }, []);\n\n const reorderListItem: ReorderListItem<Values> = useCallback(\n (path, payload) => _setValues((current) => reorderPath(path, payload, current)),\n []\n );\n\n const removeListItem: RemoveListItem<Values> = useCallback(\n (path, index) => _setValues((current) => removePath(path, index, current)),\n []\n );\n\n const insertListItem: InsertListItem<Values> = useCallback(\n (path, item, index) => _setValues((current) => insertPath(path, item, index, current)),\n []\n );\n\n const validate: Validate = useCallback(() => {\n const results = validateValues(rules, values);\n _setErrors(results.errors);\n return results;\n }, [values]);\n\n const validateField: ValidateField<Values> = useCallback(\n (path) => {\n const results = validateFieldValue(path, rules, values);\n results.hasError ? setFieldError(path, results.error) : clearFieldError(path);\n return results;\n },\n [values]\n );\n\n const getInputProps: GetInputProps<Values> = (\n path,\n { type = 'input', withError = type === 'input' } = {}\n ) => {\n const onChange = getInputOnChange((value) => setFieldValue(path, value as any));\n const withOptionalError = (payload: Record<string, unknown>) => {\n if (withError) {\n // eslint-disable-next-line no-param-reassign\n payload.error = errors[path];\n }\n return payload;\n };\n\n return type === 'checkbox'\n ? withOptionalError({ checked: getPath(path, values), onChange })\n : withOptionalError({ value: getPath(path, values), onChange });\n };\n\n const onSubmit: OnSubmit<Values> = (handleSubmit, handleValidationFailure) => (event) => {\n event.preventDefault();\n const results = validate();\n\n if (results.hasErrors) {\n handleValidationFailure?.(results.errors, values, event);\n } else {\n handleSubmit(values, event);\n }\n };\n\n const onReset: OnReset = useCallback((event) => {\n event.preventDefault();\n reset();\n }, []);\n\n return {\n values,\n errors,\n setValues,\n setErrors,\n setFieldValue,\n setFieldError,\n clearFieldError,\n clearErrors,\n reset,\n validate,\n validateField,\n reorderListItem,\n removeListItem,\n insertListItem,\n getInputProps,\n onSubmit,\n onReset,\n };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ function shouldValidateOnChange(path, validateInputOnChange) {
2
+ if (!validateInputOnChange) {
3
+ return false;
4
+ }
5
+ if (typeof validateInputOnChange === "boolean") {
6
+ return validateInputOnChange;
7
+ }
8
+ if (Array.isArray(validateInputOnChange)) {
9
+ return validateInputOnChange.includes(path);
10
+ }
11
+ return false;
12
+ }
13
+
14
+ export { shouldValidateOnChange };
15
+ //# sourceMappingURL=should-validate-on-change.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"should-validate-on-change.js","sources":["../../src/validate/should-validate-on-change.ts"],"sourcesContent":["export function shouldValidateOnChange(path: unknown, validateInputOnChange: boolean | unknown[]) {\n if (!validateInputOnChange) {\n return false;\n }\n\n if (typeof validateInputOnChange === 'boolean') {\n return validateInputOnChange;\n }\n\n if (Array.isArray(validateInputOnChange)) {\n return validateInputOnChange.includes(path);\n }\n\n return false;\n}\n"],"names":[],"mappings":"AAAO,SAAS,sBAAsB,CAAC,IAAI,EAAE,qBAAqB,EAAE;AACpE,EAAE,IAAI,CAAC,qBAAqB,EAAE;AAC9B,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,IAAI,OAAO,qBAAqB,KAAK,SAAS,EAAE;AAClD,IAAI,OAAO,qBAAqB,CAAC;AACjC,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE;AAC5C,IAAI,OAAO,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChD,GAAG;AACH,EAAE,OAAO,KAAK,CAAC;AACf;;;;"}
package/lib/types.d.ts CHANGED
@@ -25,7 +25,7 @@ export declare type LooseKeys<Values> = keyof Values | (string & {});
25
25
  export declare type ValuesPlaceholder = Record<string, unknown>;
26
26
  export declare type SetValues<Values> = React.Dispatch<React.SetStateAction<Values>>;
27
27
  export declare type SetErrors = React.Dispatch<React.SetStateAction<FormErrors>>;
28
- export declare type OnSubmit<Values> = (handleSubmit: (values: Values, event: React.FormEvent<HTMLFormElement>) => void) => (event: React.FormEvent<HTMLFormElement>) => void;
28
+ export declare type OnSubmit<Values> = (handleSubmit: (values: Values, event: React.FormEvent<HTMLFormElement>) => void, handleValidationFailure?: (errors: FormErrors, values: Values, event: React.FormEvent<HTMLFormElement>) => void) => (event: React.FormEvent<HTMLFormElement>) => void;
29
29
  export declare type OnReset = (event: React.FormEvent<HTMLFormElement>) => void;
30
30
  export declare type GetInputProps<Values> = <Field extends LooseKeys<Values>>(path: Field, options?: {
31
31
  type?: GetInputPropsType;
@@ -46,6 +46,7 @@ export interface UseFormInput<Values extends ValuesPlaceholder> {
46
46
  initialErrors?: FormErrors;
47
47
  validate?: FormValidateInput<Values>;
48
48
  clearInputErrorOnChange?: boolean;
49
+ validateInputOnChange?: boolean | LooseKeys<Values>[];
49
50
  }
50
51
  export interface UseFormReturnType<Values extends ValuesPlaceholder> {
51
52
  values: Values;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/lib/use-form.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import { ValuesPlaceholder, UseFormReturnType, UseFormInput } from './types';
2
- export declare function useForm<Values extends ValuesPlaceholder>({ initialValues, initialErrors, clearInputErrorOnChange, validate: rules, }?: UseFormInput<Values>): UseFormReturnType<Values>;
2
+ export declare function useForm<Values extends ValuesPlaceholder>({ initialValues, initialErrors, clearInputErrorOnChange, validateInputOnChange, validate: rules, }?: UseFormInput<Values>): UseFormReturnType<Values>;
3
3
  //# sourceMappingURL=use-form.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["../src/use-form.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EAgBb,MAAM,SAAS,CAAC;AAEjB,wBAAgB,OAAO,CAAC,MAAM,SAAS,iBAAiB,EAAE,EACxD,aAA4B,EAC5B,aAAkB,EAClB,uBAA8B,EAC9B,QAAQ,EAAE,KAAK,GAChB,GAAE,YAAY,CAAC,MAAM,CAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CA2HvD"}
1
+ {"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["../src/use-form.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EAgBb,MAAM,SAAS,CAAC;AAEjB,wBAAgB,OAAO,CAAC,MAAM,SAAS,iBAAiB,EAAE,EACxD,aAA4B,EAC5B,aAAkB,EAClB,uBAA8B,EAC9B,qBAA6B,EAC7B,QAAQ,EAAE,KAAK,GAChB,GAAE,YAAY,CAAC,MAAM,CAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CA2IvD"}
@@ -1,3 +1,4 @@
1
1
  export { validateValues } from './validate-values';
2
2
  export { validateFieldValue } from './validate-field-value';
3
+ export { shouldValidateOnChange } from './should-validate-on-change';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function shouldValidateOnChange(path: unknown, validateInputOnChange: boolean | unknown[]): boolean;
2
+ //# sourceMappingURL=should-validate-on-change.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"should-validate-on-change.d.ts","sourceRoot":"","sources":["../../src/validate/should-validate-on-change.ts"],"names":[],"mappings":"AAAA,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,GAAG,OAAO,EAAE,WAc/F"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mantine/form",
3
3
  "description": "Mantine form management library",
4
- "version": "5.0.0-alpha.8",
4
+ "version": "5.0.0-alpha.9",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",
7
7
  "types": "lib/index.d.ts",