@mantine/form
Version:
Mantine form management library
52 lines (51 loc) • 1.9 kB
JavaScript
"use client";
require("../../_virtual/_rolldown/runtime.cjs");
let react = require("react");
//#region packages/@mantine/form/src/hooks/use-form-validating/use-form-validating.ts
function useFormValidating() {
const [validatingFields, setValidatingFields] = (0, react.useState)({});
const [formValidating, setFormValidatingState] = (0, react.useState)(false);
const validatingRef = (0, react.useRef)({});
const formValidatingRef = (0, react.useRef)(false);
const abortControllers = (0, react.useRef)({});
const setFieldValidating = (0, react.useCallback)((path, value) => {
validatingRef.current = {
...validatingRef.current,
[path]: value
};
setValidatingFields({ ...validatingRef.current });
}, []);
const setFormValidating = (0, react.useCallback)((value) => {
formValidatingRef.current = value;
setFormValidatingState(value);
}, []);
const isValidating = (0, react.useCallback)((path) => {
if (path) return !!validatingRef.current[path];
if (formValidatingRef.current) return true;
return Object.values(validatingRef.current).some(Boolean);
}, []);
const getAbortSignal = (0, react.useCallback)((path) => {
abortControllers.current[path]?.abort();
abortControllers.current[path] = new AbortController();
return abortControllers.current[path].signal;
}, []);
const clearValidating = (0, react.useCallback)(() => {
validatingRef.current = {};
setValidatingFields({});
formValidatingRef.current = false;
setFormValidatingState(false);
Object.values(abortControllers.current).forEach((c) => c.abort());
abortControllers.current = {};
}, []);
return {
validating: formValidating || Object.values(validatingFields).some(Boolean),
isValidating,
setFieldValidating,
setFormValidating,
getAbortSignal,
clearValidating
};
}
//#endregion
exports.useFormValidating = useFormValidating;
//# sourceMappingURL=use-form-validating.cjs.map