UNPKG

koval-ui

Version:

React components collection with minimalistic design. Supports theming, layout, and input validation.

1 lines 1.76 kB
{"version":3,"file":"useRevalidateOnFormChange.cjs","sources":["../../../../src/internal/inputs/useRevalidateOnFormChange.ts"],"sourcesContent":["import type {MutableRefObject} from 'react';\nimport {type FormEvent, useEffect} from 'react';\n\nconst ChangeEvent = new Event('change', {bubbles: false});\n\nexport const useRevalidateOnFormChange = (\n inputRef: MutableRefObject<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | null>,\n validateInput: (event: FormEvent) => unknown,\n condition?: boolean\n) => {\n useEffect(() => {\n if (condition) {\n const inputElement = inputRef?.current;\n const formElement = inputElement?.form;\n const revalidateInput = () => {\n inputElement && inputElement?.dispatchEvent(ChangeEvent);\n inputElement && validateInput(ChangeEvent as unknown as FormEvent);\n };\n formElement && formElement.addEventListener('change', revalidateInput);\n return () => {\n formElement && formElement.removeEventListener('change', revalidateInput);\n };\n }\n }, [inputRef, condition, validateInput]);\n};\n"],"names":["ChangeEvent","useRevalidateOnFormChange","inputRef","validateInput","condition","useEffect","inputElement","formElement","revalidateInput"],"mappings":"sHAGMA,EAAc,IAAI,MAAM,SAAU,CAAC,QAAS,GAAM,EAE3CC,EAA4B,CACrCC,EACAC,EACAC,IACC,CACDC,EAAAA,UAAU,IAAM,CACZ,GAAID,EAAW,CACX,MAAME,EAAeJ,GAAA,YAAAA,EAAU,QACzBK,EAAcD,GAAA,YAAAA,EAAc,KAC5BE,EAAkB,IAAM,CACVF,IAAAA,GAAA,MAAAA,EAAc,cAAcN,IAC5CM,GAAgBH,EAAcH,CAAmC,CACrE,EACe,OAAAO,GAAAA,EAAY,iBAAiB,SAAUC,CAAe,EAC9D,IAAM,CACMD,GAAAA,EAAY,oBAAoB,SAAUC,CAAe,CAC5E,CAAA,CAEL,EAAA,CAACN,EAAUE,EAAWD,CAAa,CAAC,CAC3C"}