UNPKG

@elastic-suite/gally-admin-components

Version:
27 lines (21 loc) 700 B
import { RefObject, useEffect, useRef, useState } from 'react' interface IFormValidation { formRef: RefObject<HTMLFormElement> formIsValid: boolean } export const useFormValidation = (): IFormValidation => { const formRef = useRef<HTMLFormElement>(null) const [formIsValid, setFormIsValid] = useState(false) useEffect(() => { const mutationObserver = new MutationObserver(() => { setFormIsValid(Boolean(formRef.current?.checkValidity())) }) mutationObserver.observe(formRef.current as Node, { childList: true, subtree: true, attributes: true, }) return () => mutationObserver.disconnect() }, [formRef]) return { formRef, formIsValid } }