@mantine/form
Version:
Mantine form management library
41 lines (40 loc) • 1.31 kB
JavaScript
"use client";
import { filterErrors } from "./filter-errors/filter-errors.mjs";
import { useCallback, useRef, useState } from "react";
//#region packages/@mantine/form/src/hooks/use-form-errors/use-form-errors.ts
function useFormErrors(initialErrors) {
const [errorsState, setErrorsState] = useState(filterErrors(initialErrors));
const errorsRef = useRef(errorsState);
const setErrors = useCallback((errors) => {
setErrorsState((current) => {
const newErrors = filterErrors(typeof errors === "function" ? errors(current) : errors);
errorsRef.current = newErrors;
return newErrors;
});
}, []);
const clearErrors = useCallback(() => setErrors({}), []);
const clearFieldError = 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: useCallback((path, error) => {
if (error == null || error === false) clearFieldError(path);
else if (errorsRef.current[path] !== error) setErrors((current) => ({
...current,
[path]: error
}));
}, [errorsState]),
clearFieldError
};
}
//#endregion
export { useFormErrors };
//# sourceMappingURL=use-form-errors.mjs.map