@mantine/form
Version:
Mantine form management library
42 lines (41 loc) • 1.46 kB
JavaScript
"use client";
require("../../_virtual/_rolldown/runtime.cjs");
const require_filter_errors = require("./filter-errors/filter-errors.cjs");
let react = require("react");
//#region packages/@mantine/form/src/hooks/use-form-errors/use-form-errors.ts
function useFormErrors(initialErrors) {
const [errorsState, setErrorsState] = (0, react.useState)(require_filter_errors.filterErrors(initialErrors));
const errorsRef = (0, react.useRef)(errorsState);
const setErrors = (0, react.useCallback)((errors) => {
setErrorsState((current) => {
const newErrors = require_filter_errors.filterErrors(typeof errors === "function" ? errors(current) : errors);
errorsRef.current = newErrors;
return newErrors;
});
}, []);
const clearErrors = (0, react.useCallback)(() => setErrors({}), []);
const clearFieldError = (0, react.useCallback)((path) => {
if (errorsRef.current[path] === void 0) return;
setErrors((current) => {
const errors = { ...current };
delete errors[path];
return errors;
});
}, [errorsState]);
return {
errorsState,
setErrors,
clearErrors,
setFieldError: (0, react.useCallback)((path, error) => {
if (error == null || error === false) clearFieldError(path);
else if (errorsRef.current[path] !== error) setErrors((current) => ({
...current,
[path]: error
}));
}, [errorsState]),
clearFieldError
};
}
//#endregion
exports.useFormErrors = useFormErrors;
//# sourceMappingURL=use-form-errors.cjs.map