@mantine/form
Version:
Mantine form management library
1 lines • 3.38 kB
Source Map (JSON)
{"version":3,"file":"use-form-validating.mjs","names":[],"sources":["../../../src/hooks/use-form-validating/use-form-validating.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\nexport interface $FormValidating {\n validating: boolean;\n isValidating: (path?: string) => boolean;\n setFieldValidating: (path: string, validating: boolean) => void;\n setFormValidating: (validating: boolean) => void;\n getAbortSignal: (path: string) => AbortSignal;\n clearValidating: () => void;\n}\n\nexport function useFormValidating(): $FormValidating {\n const [validatingFields, setValidatingFields] = useState<Record<string, boolean>>({});\n const [formValidating, setFormValidatingState] = useState(false);\n const validatingRef = useRef<Record<string, boolean>>({});\n const formValidatingRef = useRef(false);\n const abortControllers = useRef<Record<string, AbortController>>({});\n\n const setFieldValidating = useCallback((path: string, value: boolean) => {\n validatingRef.current = { ...validatingRef.current, [path]: value };\n setValidatingFields({ ...validatingRef.current });\n }, []);\n\n const setFormValidating = useCallback((value: boolean) => {\n formValidatingRef.current = value;\n setFormValidatingState(value);\n }, []);\n\n const isValidating = useCallback((path?: string) => {\n if (path) {\n return !!validatingRef.current[path];\n }\n if (formValidatingRef.current) {\n return true;\n }\n return Object.values(validatingRef.current).some(Boolean);\n }, []);\n\n const getAbortSignal = useCallback((path: string) => {\n abortControllers.current[path]?.abort();\n abortControllers.current[path] = new AbortController();\n return abortControllers.current[path].signal;\n }, []);\n\n const clearValidating = useCallback(() => {\n validatingRef.current = {};\n setValidatingFields({});\n formValidatingRef.current = false;\n setFormValidatingState(false);\n Object.values(abortControllers.current).forEach((c) => c.abort());\n abortControllers.current = {};\n }, []);\n\n const validating = formValidating || Object.values(validatingFields).some(Boolean);\n\n return {\n validating,\n isValidating,\n setFieldValidating,\n setFormValidating,\n getAbortSignal,\n clearValidating,\n };\n}\n"],"mappings":";;;AAWA,SAAgB,oBAAqC;CACnD,MAAM,CAAC,kBAAkB,uBAAuB,SAAkC,CAAC,CAAC;CACpF,MAAM,CAAC,gBAAgB,0BAA0B,SAAS,KAAK;CAC/D,MAAM,gBAAgB,OAAgC,CAAC,CAAC;CACxD,MAAM,oBAAoB,OAAO,KAAK;CACtC,MAAM,mBAAmB,OAAwC,CAAC,CAAC;CAEnE,MAAM,qBAAqB,aAAa,MAAc,UAAmB;EACvE,cAAc,UAAU;GAAE,GAAG,cAAc;IAAU,OAAO;EAAM;EAClE,oBAAoB,EAAE,GAAG,cAAc,QAAQ,CAAC;CAClD,GAAG,CAAC,CAAC;CAEL,MAAM,oBAAoB,aAAa,UAAmB;EACxD,kBAAkB,UAAU;EAC5B,uBAAuB,KAAK;CAC9B,GAAG,CAAC,CAAC;CAEL,MAAM,eAAe,aAAa,SAAkB;EAClD,IAAI,MACF,OAAO,CAAC,CAAC,cAAc,QAAQ;EAEjC,IAAI,kBAAkB,SACpB,OAAO;EAET,OAAO,OAAO,OAAO,cAAc,OAAO,EAAE,KAAK,OAAO;CAC1D,GAAG,CAAC,CAAC;CAEL,MAAM,iBAAiB,aAAa,SAAiB;EACnD,iBAAiB,QAAQ,OAAO,MAAM;EACtC,iBAAiB,QAAQ,QAAQ,IAAI,gBAAgB;EACrD,OAAO,iBAAiB,QAAQ,MAAM;CACxC,GAAG,CAAC,CAAC;CAEL,MAAM,kBAAkB,kBAAkB;EACxC,cAAc,UAAU,CAAC;EACzB,oBAAoB,CAAC,CAAC;EACtB,kBAAkB,UAAU;EAC5B,uBAAuB,KAAK;EAC5B,OAAO,OAAO,iBAAiB,OAAO,EAAE,SAAS,MAAM,EAAE,MAAM,CAAC;EAChE,iBAAiB,UAAU,CAAC;CAC9B,GAAG,CAAC,CAAC;CAIL,OAAO;EACL,YAHiB,kBAAkB,OAAO,OAAO,gBAAgB,EAAE,KAAK,OAAO;EAI/E;EACA;EACA;EACA;EACA;CACF;AACF"}