UNPKG

@mantine/form

Version:

Mantine form management library

52 lines (51 loc) 1.9 kB
"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