@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.
- package/README.md +19 -0
- package/cjs/filter-errors/filter-errors.js +19 -0
- package/cjs/filter-errors/filter-errors.js.map +1 -0
- package/cjs/form-list/form-list.js +21 -0
- package/cjs/form-list/form-list.js.map +1 -0
- package/cjs/get-error-path/get-error-path.js +10 -0
- package/cjs/get-error-path/get-error-path.js.map +1 -0
- package/cjs/get-input-on-change/get-input-on-change.js +25 -0
- package/cjs/get-input-on-change/get-input-on-change.js.map +1 -0
- package/cjs/index.js +19 -0
- package/cjs/index.js.map +1 -0
- package/cjs/resolvers/joi-resolver/joi-resolver.js +21 -0
- package/cjs/resolvers/joi-resolver/joi-resolver.js.map +1 -0
- package/cjs/resolvers/yup-resolver/yup-resolver.js +23 -0
- package/cjs/resolvers/yup-resolver/yup-resolver.js.map +1 -0
- package/cjs/resolvers/zod-resolver/zod-resolver.js +21 -0
- package/cjs/resolvers/zod-resolver/zod-resolver.js.map +1 -0
- package/cjs/use-form.js +146 -0
- package/cjs/use-form.js.map +1 -0
- package/cjs/validate-values/validate-list-values.js +24 -0
- package/cjs/validate-values/validate-list-values.js.map +1 -0
- package/cjs/validate-values/validate-values.js +58 -0
- package/cjs/validate-values/validate-values.js.map +1 -0
- package/esm/filter-errors/filter-errors.js +15 -0
- package/esm/filter-errors/filter-errors.js.map +1 -0
- package/esm/form-list/form-list.js +16 -0
- package/esm/form-list/form-list.js.map +1 -0
- package/esm/get-error-path/get-error-path.js +6 -0
- package/esm/get-error-path/get-error-path.js.map +1 -0
- package/esm/get-input-on-change/get-input-on-change.js +21 -0
- package/esm/get-input-on-change/get-input-on-change.js.map +1 -0
- package/esm/index.js +6 -0
- package/esm/index.js.map +1 -0
- package/esm/resolvers/joi-resolver/joi-resolver.js +17 -0
- package/esm/resolvers/joi-resolver/joi-resolver.js.map +1 -0
- package/esm/resolvers/yup-resolver/yup-resolver.js +19 -0
- package/esm/resolvers/yup-resolver/yup-resolver.js.map +1 -0
- package/esm/resolvers/zod-resolver/zod-resolver.js +17 -0
- package/esm/resolvers/zod-resolver/zod-resolver.js.map +1 -0
- package/esm/use-form.js +142 -0
- package/esm/use-form.js.map +1 -0
- package/esm/validate-values/validate-list-values.js +20 -0
- package/esm/validate-values/validate-list-values.js.map +1 -0
- package/esm/validate-values/validate-values.js +53 -0
- package/esm/validate-values/validate-values.js.map +1 -0
- package/lib/____get-input-on-change.internal.d.ts +2 -0
- package/lib/____get-input-on-change.internal.d.ts.map +1 -0
- package/lib/____use-form.internal.d.ts +37 -0
- package/lib/____use-form.internal.d.ts.map +1 -0
- package/lib/filter-errors/filter-errors.d.ts +3 -0
- package/lib/filter-errors/filter-errors.d.ts.map +1 -0
- package/lib/form-list/form-list.d.ts +8 -0
- package/lib/form-list/form-list.d.ts.map +1 -0
- package/lib/get-error-path/get-error-path.d.ts +2 -0
- package/lib/get-error-path/get-error-path.d.ts.map +1 -0
- package/lib/get-input-on-change/get-input-on-change.d.ts +2 -0
- package/lib/get-input-on-change/get-input-on-change.d.ts.map +1 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/resolvers/joi-resolver/joi-resolver.d.ts +3 -0
- package/lib/resolvers/joi-resolver/joi-resolver.d.ts.map +1 -0
- package/lib/resolvers/test-resolver.d.ts +9 -0
- package/lib/resolvers/test-resolver.d.ts.map +1 -0
- package/lib/resolvers/yup-resolver/yup-resolver.d.ts +3 -0
- package/lib/resolvers/yup-resolver/yup-resolver.d.ts.map +1 -0
- package/lib/resolvers/zod-resolver/zod-resolver.d.ts +3 -0
- package/lib/resolvers/zod-resolver/zod-resolver.d.ts.map +1 -0
- package/lib/types.d.ts +28 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/use-form.d.ts +42 -0
- package/lib/use-form.d.ts.map +1 -0
- package/lib/validate-values/validate-list-values.d.ts +3 -0
- package/lib/validate-values/validate-list-values.d.ts.map +1 -0
- package/lib/validate-values/validate-values.d.ts +4 -0
- package/lib/validate-values/validate-values.d.ts.map +1 -0
- package/package.json +22 -0
package/README.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
function filterErrors(errors) {
|
|
6
|
+
if (errors === null || typeof errors !== "object") {
|
|
7
|
+
return {};
|
|
8
|
+
}
|
|
9
|
+
return Object.keys(errors).reduce((acc, key) => {
|
|
10
|
+
const errorValue = errors[key];
|
|
11
|
+
if (errorValue !== void 0 && errorValue !== null) {
|
|
12
|
+
acc[key] = errorValue;
|
|
13
|
+
}
|
|
14
|
+
return acc;
|
|
15
|
+
}, {});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
exports.filterErrors = filterErrors;
|
|
19
|
+
//# sourceMappingURL=filter-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-errors.js","sources":["../../src/filter-errors/filter-errors.ts"],"sourcesContent":["import type { FormErrors } from '../types';\n\nexport function filterErrors(errors: FormErrors): FormErrors {\n if (errors === null || typeof errors !== 'object') {\n return {};\n }\n\n return Object.keys(errors).reduce<FormErrors>((acc, key) => {\n const errorValue = errors[key];\n\n if (errorValue !== undefined && errorValue !== null) {\n acc[key] = errorValue;\n }\n\n return acc;\n }, {});\n}\n"],"names":[],"mappings":";;;;AAAO,SAAS,YAAY,CAAC,MAAM,EAAE;AACrC,EAAE,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACrD,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK;AAClD,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACnC,IAAI,IAAI,UAAU,KAAK,KAAK,CAAC,IAAI,UAAU,KAAK,IAAI,EAAE;AACtD,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,GAAG,EAAE,EAAE,CAAC,CAAC;AACT;;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const LIST_IDENTIFIER = Symbol("@mantine/form/list");
|
|
6
|
+
function formList(list) {
|
|
7
|
+
Object.defineProperty(list, LIST_IDENTIFIER, {
|
|
8
|
+
value: true,
|
|
9
|
+
writable: false,
|
|
10
|
+
enumerable: false,
|
|
11
|
+
configurable: false
|
|
12
|
+
});
|
|
13
|
+
return list;
|
|
14
|
+
}
|
|
15
|
+
function isFormList(list) {
|
|
16
|
+
return Array.isArray(list) && !!list[LIST_IDENTIFIER];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
exports.formList = formList;
|
|
20
|
+
exports.isFormList = isFormList;
|
|
21
|
+
//# sourceMappingURL=form-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-list.js","sources":["../../src/form-list/form-list.ts"],"sourcesContent":["const LIST_IDENTIFIER = Symbol('@mantine/form/list');\n\nexport interface FormList<T> extends Array<T> {\n [LIST_IDENTIFIER]: true;\n}\n\nexport function formList<T>(list: T[]): FormList<T> {\n Object.defineProperty(list, LIST_IDENTIFIER, {\n value: true,\n writable: false,\n enumerable: false,\n configurable: false,\n });\n\n return list as FormList<T>;\n}\n\nexport function isFormList(list: unknown) {\n return Array.isArray(list) && !!list[LIST_IDENTIFIER];\n}\n"],"names":[],"mappings":";;;;AAAA,MAAM,eAAe,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAC9C,SAAS,QAAQ,CAAC,IAAI,EAAE;AAC/B,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE;AAC/C,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,QAAQ,EAAE,KAAK;AACnB,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,YAAY,EAAE,KAAK;AACvB,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACM,SAAS,UAAU,CAAC,IAAI,EAAE;AACjC,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACxD;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-error-path.js","sources":["../../src/get-error-path/get-error-path.ts"],"sourcesContent":["export function getErrorPath(path: (string | number | symbol)[]) {\n return path.join('.');\n}\n"],"names":[],"mappings":";;;;AAAO,SAAS,YAAY,CAAC,IAAI,EAAE;AACnC,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB;;;;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
function getInputOnChange(setValue) {
|
|
6
|
+
return (val) => {
|
|
7
|
+
if (!val) {
|
|
8
|
+
setValue(val);
|
|
9
|
+
} else if (typeof val === "function") {
|
|
10
|
+
setValue(val);
|
|
11
|
+
} else if (typeof val === "object" && "nativeEvent" in val) {
|
|
12
|
+
const { currentTarget } = val;
|
|
13
|
+
if (currentTarget.type === "checkbox") {
|
|
14
|
+
setValue(currentTarget.checked);
|
|
15
|
+
} else {
|
|
16
|
+
setValue(currentTarget.value);
|
|
17
|
+
}
|
|
18
|
+
} else {
|
|
19
|
+
setValue(val);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
exports.getInputOnChange = getInputOnChange;
|
|
25
|
+
//# sourceMappingURL=get-input-on-change.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-input-on-change.js","sources":["../../src/get-input-on-change/get-input-on-change.ts"],"sourcesContent":["export function getInputOnChange<T>(\n setValue: (value: null | undefined | T | ((current: T) => T)) => void\n) {\n return (val: null | undefined | T | React.ChangeEvent<any> | ((current: T) => T)) => {\n if (!val) {\n setValue(val as T);\n } else if (typeof val === 'function') {\n setValue(val);\n } else if (typeof val === 'object' && 'nativeEvent' in val) {\n const { currentTarget } = val;\n\n if (currentTarget.type === 'checkbox') {\n setValue(currentTarget.checked);\n } else {\n setValue(currentTarget.value);\n }\n } else {\n setValue(val);\n }\n };\n}\n"],"names":[],"mappings":";;;;AAAO,SAAS,gBAAgB,CAAC,QAAQ,EAAE;AAC3C,EAAE,OAAO,CAAC,GAAG,KAAK;AAClB,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;AACpB,KAAK,MAAM,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AAC1C,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;AACpB,KAAK,MAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,aAAa,IAAI,GAAG,EAAE;AAChE,MAAM,MAAM,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC;AACpC,MAAM,IAAI,aAAa,CAAC,IAAI,KAAK,UAAU,EAAE;AAC7C,QAAQ,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACxC,OAAO,MAAM;AACb,QAAQ,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtC,OAAO;AACP,KAAK,MAAM;AACX,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;AACpB,KAAK;AACL,GAAG,CAAC;AACJ;;;;"}
|
package/cjs/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var formList = require('./form-list/form-list.js');
|
|
6
|
+
var useForm = require('./use-form.js');
|
|
7
|
+
var zodResolver = require('./resolvers/zod-resolver/zod-resolver.js');
|
|
8
|
+
var yupResolver = require('./resolvers/yup-resolver/yup-resolver.js');
|
|
9
|
+
var joiResolver = require('./resolvers/joi-resolver/joi-resolver.js');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
exports.formList = formList.formList;
|
|
14
|
+
exports.isFormList = formList.isFormList;
|
|
15
|
+
exports.useForm = useForm.useForm;
|
|
16
|
+
exports.zodResolver = zodResolver.zodResolver;
|
|
17
|
+
exports.yupResolver = yupResolver.yupResolver;
|
|
18
|
+
exports.joiResolver = joiResolver.joiResolver;
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
package/cjs/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
function joiResolver(schema) {
|
|
6
|
+
const _schema = schema;
|
|
7
|
+
return (values) => {
|
|
8
|
+
const parsed = _schema.validate(values, { abortEarly: false });
|
|
9
|
+
if (!parsed.error) {
|
|
10
|
+
return {};
|
|
11
|
+
}
|
|
12
|
+
const results = {};
|
|
13
|
+
parsed.error.details.forEach((error) => {
|
|
14
|
+
results[error.path.join(".")] = error.message;
|
|
15
|
+
});
|
|
16
|
+
return results;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
exports.joiResolver = joiResolver;
|
|
21
|
+
//# sourceMappingURL=joi-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"joi-resolver.js","sources":["../../../src/resolvers/joi-resolver/joi-resolver.ts"],"sourcesContent":["import type { FormErrors } from '../../types';\n\ninterface JoiError {\n path: (string | number)[];\n message: string;\n}\n\ninterface JoiResults {\n success: boolean;\n error: {\n details: JoiError[];\n };\n}\n\ninterface JoiSchema {\n validate(values: Record<string, any>, options: { abortEarly: boolean }): JoiResults;\n}\n\nexport function joiResolver(schema: any) {\n const _schema: JoiSchema = schema;\n return (values: Record<string, any>): FormErrors => {\n const parsed = _schema.validate(values, { abortEarly: false });\n\n if (!parsed.error) {\n return {};\n }\n\n const results = {};\n parsed.error.details.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,QAAQ,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACvB,MAAM,OAAO,EAAE,CAAC;AAChB,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC5C,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,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
function yupResolver(schema) {
|
|
6
|
+
const _schema = schema;
|
|
7
|
+
return (values) => {
|
|
8
|
+
try {
|
|
9
|
+
_schema.validateSync(values, { abortEarly: false });
|
|
10
|
+
return {};
|
|
11
|
+
} catch (_yupError) {
|
|
12
|
+
const yupError = _yupError;
|
|
13
|
+
const results = {};
|
|
14
|
+
yupError.inner.forEach((error) => {
|
|
15
|
+
results[error.path.replace("[", ".").replace("]", "")] = error.message;
|
|
16
|
+
});
|
|
17
|
+
return results;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
exports.yupResolver = yupResolver;
|
|
23
|
+
//# 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,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
function zodResolver(schema) {
|
|
6
|
+
const _schema = schema;
|
|
7
|
+
return (values) => {
|
|
8
|
+
const parsed = _schema.safeParse(values);
|
|
9
|
+
if (parsed.success) {
|
|
10
|
+
return {};
|
|
11
|
+
}
|
|
12
|
+
const results = {};
|
|
13
|
+
parsed.error.errors.forEach((error) => {
|
|
14
|
+
results[error.path.join(".")] = error.message;
|
|
15
|
+
});
|
|
16
|
+
return results;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
exports.zodResolver = zodResolver;
|
|
21
|
+
//# 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;;;;"}
|
package/cjs/use-form.js
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var formList = require('./form-list/form-list.js');
|
|
7
|
+
var validateValues = require('./validate-values/validate-values.js');
|
|
8
|
+
var filterErrors = require('./filter-errors/filter-errors.js');
|
|
9
|
+
var getInputOnChange = require('./get-input-on-change/get-input-on-change.js');
|
|
10
|
+
var getErrorPath = require('./get-error-path/get-error-path.js');
|
|
11
|
+
|
|
12
|
+
var __defProp = Object.defineProperty;
|
|
13
|
+
var __defProps = Object.defineProperties;
|
|
14
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
15
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
16
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
17
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
18
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
19
|
+
var __spreadValues = (a, b) => {
|
|
20
|
+
for (var prop in b || (b = {}))
|
|
21
|
+
if (__hasOwnProp.call(b, prop))
|
|
22
|
+
__defNormalProp(a, prop, b[prop]);
|
|
23
|
+
if (__getOwnPropSymbols)
|
|
24
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
25
|
+
if (__propIsEnum.call(b, prop))
|
|
26
|
+
__defNormalProp(a, prop, b[prop]);
|
|
27
|
+
}
|
|
28
|
+
return a;
|
|
29
|
+
};
|
|
30
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
31
|
+
function useForm({
|
|
32
|
+
initialValues,
|
|
33
|
+
initialErrors,
|
|
34
|
+
validate: rules,
|
|
35
|
+
schema
|
|
36
|
+
}) {
|
|
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) => {
|
|
42
|
+
const clone = __spreadValues({}, current);
|
|
43
|
+
delete clone[field];
|
|
44
|
+
return clone;
|
|
45
|
+
});
|
|
46
|
+
const setFieldValue = (field, value) => {
|
|
47
|
+
setValues((currentValues) => __spreadProps(__spreadValues({}, currentValues), { [field]: value }));
|
|
48
|
+
clearFieldError(field);
|
|
49
|
+
};
|
|
50
|
+
const setListItem = (field, index, value) => {
|
|
51
|
+
const list = values[field];
|
|
52
|
+
if (formList.isFormList(list) && list[index] !== void 0) {
|
|
53
|
+
const cloned = [...list];
|
|
54
|
+
cloned[index] = value;
|
|
55
|
+
setFieldValue(field, formList.formList(cloned));
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const removeListItem = (field, indices) => {
|
|
59
|
+
const list = values[field];
|
|
60
|
+
if (formList.isFormList(list)) {
|
|
61
|
+
setFieldValue(field, formList.formList(list.filter((_, index) => Array.isArray(indices) ? !indices.includes(index) : indices !== index)));
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
const addListItem = (field, payload) => {
|
|
65
|
+
const list = values[field];
|
|
66
|
+
if (formList.isFormList(list)) {
|
|
67
|
+
setFieldValue(field, formList.formList([...list, payload]));
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
const reorderListItem = (field, { from, to }) => {
|
|
71
|
+
const list = values[field];
|
|
72
|
+
if (formList.isFormList(list) && list[from] !== void 0 && list[to] !== void 0) {
|
|
73
|
+
const cloned = [...list];
|
|
74
|
+
const item = list[from];
|
|
75
|
+
cloned.splice(from, 1);
|
|
76
|
+
cloned.splice(to, 0, item);
|
|
77
|
+
setFieldValue(field, formList.formList(cloned));
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
const validate = () => {
|
|
81
|
+
const results = validateValues.validateValues(schema || rules, values);
|
|
82
|
+
setErrors(results.errors);
|
|
83
|
+
return results;
|
|
84
|
+
};
|
|
85
|
+
const validateField = (field) => {
|
|
86
|
+
const results = validateValues.validateFieldValue(field, schema || rules, values);
|
|
87
|
+
results.hasError ? setFieldError(field, results.error) : clearFieldError(field);
|
|
88
|
+
return results;
|
|
89
|
+
};
|
|
90
|
+
const onSubmit = (handleSubmit) => (event) => {
|
|
91
|
+
event.preventDefault();
|
|
92
|
+
const results = validate();
|
|
93
|
+
!results.hasErrors && handleSubmit(values, event);
|
|
94
|
+
};
|
|
95
|
+
const reset = () => {
|
|
96
|
+
setValues(initialValues);
|
|
97
|
+
clearErrors();
|
|
98
|
+
};
|
|
99
|
+
const getInputProps = (field, { type, withError = true } = {}) => {
|
|
100
|
+
const value = values[field];
|
|
101
|
+
const onChange = getInputOnChange.getInputOnChange((val) => setFieldValue(field, val));
|
|
102
|
+
const payload = type === "checkbox" ? { checked: value, onChange } : { value, onChange };
|
|
103
|
+
if (withError && errors[field]) {
|
|
104
|
+
payload.error = errors[field];
|
|
105
|
+
}
|
|
106
|
+
return payload;
|
|
107
|
+
};
|
|
108
|
+
const getListInputProps = (field, index, listField, { type, withError = true } = {}) => {
|
|
109
|
+
const list = values[field];
|
|
110
|
+
if (formList.isFormList(list) && list[index] && listField in list[index]) {
|
|
111
|
+
const listValue = list[index];
|
|
112
|
+
const value = listValue[listField];
|
|
113
|
+
const onChange = getInputOnChange.getInputOnChange((val) => setListItem(field, index, __spreadProps(__spreadValues({}, listValue), { [listField]: val })));
|
|
114
|
+
const payload = type === "checkbox" ? { checked: value, onChange } : { value, onChange };
|
|
115
|
+
const error = errors[getErrorPath.getErrorPath([field, index, listField])];
|
|
116
|
+
if (withError && error) {
|
|
117
|
+
payload.error = error;
|
|
118
|
+
}
|
|
119
|
+
return payload;
|
|
120
|
+
}
|
|
121
|
+
return {};
|
|
122
|
+
};
|
|
123
|
+
return {
|
|
124
|
+
values,
|
|
125
|
+
setValues,
|
|
126
|
+
setFieldValue,
|
|
127
|
+
errors,
|
|
128
|
+
setErrors,
|
|
129
|
+
clearErrors,
|
|
130
|
+
clearFieldError,
|
|
131
|
+
setFieldError,
|
|
132
|
+
setListItem,
|
|
133
|
+
removeListItem,
|
|
134
|
+
addListItem,
|
|
135
|
+
reorderListItem,
|
|
136
|
+
validate,
|
|
137
|
+
validateField,
|
|
138
|
+
onSubmit,
|
|
139
|
+
reset,
|
|
140
|
+
getInputProps,
|
|
141
|
+
getListInputProps
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
exports.useForm = useForm;
|
|
146
|
+
//# 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":["useState","filterErrors","isFormList","formList","validateValues","validateFieldValue","getInputOnChange","getErrorPath"],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
function validateListValues(values, key, rules) {
|
|
6
|
+
const list = values[key];
|
|
7
|
+
const results = {};
|
|
8
|
+
list.forEach((item, itemIndex) => {
|
|
9
|
+
if (typeof item === "object" && item !== null) {
|
|
10
|
+
Object.keys(item).forEach((listItemKey) => {
|
|
11
|
+
if (typeof rules[key][listItemKey] === "function") {
|
|
12
|
+
const error = rules[key][listItemKey](item[listItemKey]);
|
|
13
|
+
if (error) {
|
|
14
|
+
results[`${key}.${itemIndex}.${listItemKey}`] = error;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
return results;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
exports.validateListValues = validateListValues;
|
|
24
|
+
//# 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,58 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var formList = require('../form-list/form-list.js');
|
|
6
|
+
var filterErrors = require('../filter-errors/filter-errors.js');
|
|
7
|
+
var validateListValues = require('./validate-list-values.js');
|
|
8
|
+
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
13
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
14
|
+
var __spreadValues = (a, b) => {
|
|
15
|
+
for (var prop in b || (b = {}))
|
|
16
|
+
if (__hasOwnProp.call(b, prop))
|
|
17
|
+
__defNormalProp(a, prop, b[prop]);
|
|
18
|
+
if (__getOwnPropSymbols)
|
|
19
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
20
|
+
if (__propIsEnum.call(b, prop))
|
|
21
|
+
__defNormalProp(a, prop, b[prop]);
|
|
22
|
+
}
|
|
23
|
+
return a;
|
|
24
|
+
};
|
|
25
|
+
function validateRecordRules(rules, values) {
|
|
26
|
+
return Object.keys(rules).reduce((acc, key) => {
|
|
27
|
+
const rule = rules[key];
|
|
28
|
+
if (formList.isFormList(values[key])) {
|
|
29
|
+
return __spreadValues(__spreadValues({}, acc), validateListValues.validateListValues(values, key, rules));
|
|
30
|
+
}
|
|
31
|
+
if (typeof rule === "function") {
|
|
32
|
+
acc[key] = rule(values[key], values);
|
|
33
|
+
}
|
|
34
|
+
return acc;
|
|
35
|
+
}, {});
|
|
36
|
+
}
|
|
37
|
+
function getValidationResults(errors) {
|
|
38
|
+
const filteredErrors = filterErrors.filterErrors(errors);
|
|
39
|
+
return { hasErrors: Object.keys(filteredErrors).length > 0, errors: filteredErrors };
|
|
40
|
+
}
|
|
41
|
+
function validateValues(rules, values) {
|
|
42
|
+
if (rules === void 0 || rules === null) {
|
|
43
|
+
return { hasErrors: false, errors: {} };
|
|
44
|
+
}
|
|
45
|
+
if (typeof rules === "function") {
|
|
46
|
+
return getValidationResults(rules(values));
|
|
47
|
+
}
|
|
48
|
+
return getValidationResults(validateRecordRules(rules, values));
|
|
49
|
+
}
|
|
50
|
+
function validateFieldValue(field, rules, values) {
|
|
51
|
+
const results = validateValues(rules, values);
|
|
52
|
+
const hasError = field in results.errors;
|
|
53
|
+
return { hasError, error: hasError ? results.errors[field] : null };
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
exports.validateFieldValue = validateFieldValue;
|
|
57
|
+
exports.validateValues = validateValues;
|
|
58
|
+
//# 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":["isFormList","validateListValues","filterErrors"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
function filterErrors(errors) {
|
|
2
|
+
if (errors === null || typeof errors !== "object") {
|
|
3
|
+
return {};
|
|
4
|
+
}
|
|
5
|
+
return Object.keys(errors).reduce((acc, key) => {
|
|
6
|
+
const errorValue = errors[key];
|
|
7
|
+
if (errorValue !== void 0 && errorValue !== null) {
|
|
8
|
+
acc[key] = errorValue;
|
|
9
|
+
}
|
|
10
|
+
return acc;
|
|
11
|
+
}, {});
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { filterErrors };
|
|
15
|
+
//# sourceMappingURL=filter-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-errors.js","sources":["../../src/filter-errors/filter-errors.ts"],"sourcesContent":["import type { FormErrors } from '../types';\n\nexport function filterErrors(errors: FormErrors): FormErrors {\n if (errors === null || typeof errors !== 'object') {\n return {};\n }\n\n return Object.keys(errors).reduce<FormErrors>((acc, key) => {\n const errorValue = errors[key];\n\n if (errorValue !== undefined && errorValue !== null) {\n acc[key] = errorValue;\n }\n\n return acc;\n }, {});\n}\n"],"names":[],"mappings":"AAAO,SAAS,YAAY,CAAC,MAAM,EAAE;AACrC,EAAE,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACrD,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK;AAClD,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACnC,IAAI,IAAI,UAAU,KAAK,KAAK,CAAC,IAAI,UAAU,KAAK,IAAI,EAAE;AACtD,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,GAAG,EAAE,EAAE,CAAC,CAAC;AACT;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const LIST_IDENTIFIER = Symbol("@mantine/form/list");
|
|
2
|
+
function formList(list) {
|
|
3
|
+
Object.defineProperty(list, LIST_IDENTIFIER, {
|
|
4
|
+
value: true,
|
|
5
|
+
writable: false,
|
|
6
|
+
enumerable: false,
|
|
7
|
+
configurable: false
|
|
8
|
+
});
|
|
9
|
+
return list;
|
|
10
|
+
}
|
|
11
|
+
function isFormList(list) {
|
|
12
|
+
return Array.isArray(list) && !!list[LIST_IDENTIFIER];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { formList, isFormList };
|
|
16
|
+
//# sourceMappingURL=form-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-list.js","sources":["../../src/form-list/form-list.ts"],"sourcesContent":["const LIST_IDENTIFIER = Symbol('@mantine/form/list');\n\nexport interface FormList<T> extends Array<T> {\n [LIST_IDENTIFIER]: true;\n}\n\nexport function formList<T>(list: T[]): FormList<T> {\n Object.defineProperty(list, LIST_IDENTIFIER, {\n value: true,\n writable: false,\n enumerable: false,\n configurable: false,\n });\n\n return list as FormList<T>;\n}\n\nexport function isFormList(list: unknown) {\n return Array.isArray(list) && !!list[LIST_IDENTIFIER];\n}\n"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAC9C,SAAS,QAAQ,CAAC,IAAI,EAAE;AAC/B,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE;AAC/C,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,QAAQ,EAAE,KAAK;AACnB,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,YAAY,EAAE,KAAK;AACvB,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACM,SAAS,UAAU,CAAC,IAAI,EAAE;AACjC,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACxD;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-error-path.js","sources":["../../src/get-error-path/get-error-path.ts"],"sourcesContent":["export function getErrorPath(path: (string | number | symbol)[]) {\n return path.join('.');\n}\n"],"names":[],"mappings":"AAAO,SAAS,YAAY,CAAC,IAAI,EAAE;AACnC,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB;;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
function getInputOnChange(setValue) {
|
|
2
|
+
return (val) => {
|
|
3
|
+
if (!val) {
|
|
4
|
+
setValue(val);
|
|
5
|
+
} else if (typeof val === "function") {
|
|
6
|
+
setValue(val);
|
|
7
|
+
} else if (typeof val === "object" && "nativeEvent" in val) {
|
|
8
|
+
const { currentTarget } = val;
|
|
9
|
+
if (currentTarget.type === "checkbox") {
|
|
10
|
+
setValue(currentTarget.checked);
|
|
11
|
+
} else {
|
|
12
|
+
setValue(currentTarget.value);
|
|
13
|
+
}
|
|
14
|
+
} else {
|
|
15
|
+
setValue(val);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { getInputOnChange };
|
|
21
|
+
//# sourceMappingURL=get-input-on-change.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-input-on-change.js","sources":["../../src/get-input-on-change/get-input-on-change.ts"],"sourcesContent":["export function getInputOnChange<T>(\n setValue: (value: null | undefined | T | ((current: T) => T)) => void\n) {\n return (val: null | undefined | T | React.ChangeEvent<any> | ((current: T) => T)) => {\n if (!val) {\n setValue(val as T);\n } else if (typeof val === 'function') {\n setValue(val);\n } else if (typeof val === 'object' && 'nativeEvent' in val) {\n const { currentTarget } = val;\n\n if (currentTarget.type === 'checkbox') {\n setValue(currentTarget.checked);\n } else {\n setValue(currentTarget.value);\n }\n } else {\n setValue(val);\n }\n };\n}\n"],"names":[],"mappings":"AAAO,SAAS,gBAAgB,CAAC,QAAQ,EAAE;AAC3C,EAAE,OAAO,CAAC,GAAG,KAAK;AAClB,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;AACpB,KAAK,MAAM,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AAC1C,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;AACpB,KAAK,MAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,aAAa,IAAI,GAAG,EAAE;AAChE,MAAM,MAAM,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC;AACpC,MAAM,IAAI,aAAa,CAAC,IAAI,KAAK,UAAU,EAAE;AAC7C,QAAQ,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACxC,OAAO,MAAM;AACb,QAAQ,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtC,OAAO;AACP,KAAK,MAAM;AACX,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;AACpB,KAAK;AACL,GAAG,CAAC;AACJ;;;;"}
|
package/esm/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { formList, isFormList } from './form-list/form-list.js';
|
|
2
|
+
export { useForm } from './use-form.js';
|
|
3
|
+
export { zodResolver } from './resolvers/zod-resolver/zod-resolver.js';
|
|
4
|
+
export { yupResolver } from './resolvers/yup-resolver/yup-resolver.js';
|
|
5
|
+
export { joiResolver } from './resolvers/joi-resolver/joi-resolver.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
function joiResolver(schema) {
|
|
2
|
+
const _schema = schema;
|
|
3
|
+
return (values) => {
|
|
4
|
+
const parsed = _schema.validate(values, { abortEarly: false });
|
|
5
|
+
if (!parsed.error) {
|
|
6
|
+
return {};
|
|
7
|
+
}
|
|
8
|
+
const results = {};
|
|
9
|
+
parsed.error.details.forEach((error) => {
|
|
10
|
+
results[error.path.join(".")] = error.message;
|
|
11
|
+
});
|
|
12
|
+
return results;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { joiResolver };
|
|
17
|
+
//# sourceMappingURL=joi-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"joi-resolver.js","sources":["../../../src/resolvers/joi-resolver/joi-resolver.ts"],"sourcesContent":["import type { FormErrors } from '../../types';\n\ninterface JoiError {\n path: (string | number)[];\n message: string;\n}\n\ninterface JoiResults {\n success: boolean;\n error: {\n details: JoiError[];\n };\n}\n\ninterface JoiSchema {\n validate(values: Record<string, any>, options: { abortEarly: boolean }): JoiResults;\n}\n\nexport function joiResolver(schema: any) {\n const _schema: JoiSchema = schema;\n return (values: Record<string, any>): FormErrors => {\n const parsed = _schema.validate(values, { abortEarly: false });\n\n if (!parsed.error) {\n return {};\n }\n\n const results = {};\n parsed.error.details.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,QAAQ,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACvB,MAAM,OAAO,EAAE,CAAC;AAChB,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC5C,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;;;;"}
|