koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
1 lines • 2.34 kB
Source Map (JSON)
{"version":3,"file":"useExternalValidation.cjs","sources":["../../../../src/internal/inputs/useExternalValidation.ts"],"sourcesContent":["import type {Dispatch, SetStateAction, MutableRefObject} from 'react';\nimport {useEffect} from 'react';\n\nimport type {ValidationProps} from '@/internal/inputs';\nimport {ValidationState} from '@/internal/inputs';\n\nexport type Props = {\n validation?: ValidationProps['validation'];\n setValidity: Dispatch<SetStateAction<keyof typeof ValidationState>>;\n inputRef: MutableRefObject<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | null>;\n errorMessage?: string;\n};\n\n/**\n * React hook designed to contain effects which synchronize input validation\n * with external validation state via prop or context (TODO).\n * @see ValidationState\n */\nexport const useExternalValidation = ({validation, inputRef, setValidity, errorMessage}: Props) => {\n useEffect(() => {\n if (typeof validation === 'string') {\n setValidity(validation);\n switch (validation) {\n case 'valid': {\n inputRef.current?.setCustomValidity('');\n break;\n }\n case 'error': {\n inputRef.current?.setCustomValidity(errorMessage || ValidationState.error);\n break;\n }\n case 'inProgress': {\n inputRef.current?.setCustomValidity(errorMessage || ValidationState.inProgress);\n break;\n }\n default: {\n inputRef.current?.setCustomValidity('');\n }\n }\n }\n }, [errorMessage, inputRef, setValidity, validation]);\n};\n"],"names":["useExternalValidation","validation","inputRef","setValidity","errorMessage","useEffect","ValidationState"],"mappings":"yJAkBaA,EAAwB,CAAC,CAAC,WAAAC,EAAY,SAAAC,EAAU,YAAAC,EAAa,aAAAC,KAAyB,CAC/FC,EAAAA,UAAU,IAAM,CACZ,GAAI,OAAOJ,GAAe,SAEtB,OADAE,EAAYF,CAAU,EACdA,EAAA,CACJ,IAAK,QAAS,CACVC,EAAS,SAAS,kBAAkB,EAAE,EACtC,KACJ,CACA,IAAK,QAAS,CACVA,EAAS,SAAS,kBAAkBE,GAAgBE,EAAAA,gBAAgB,KAAK,EACzE,KACJ,CACA,IAAK,aAAc,CACfJ,EAAS,SAAS,kBAAkBE,GAAgBE,EAAAA,gBAAgB,UAAU,EAC9E,KACJ,CACA,QACIJ,EAAS,SAAS,kBAAkB,EAAE,CAC1C,CAGZ,EAAG,CAACE,EAAcF,EAAUC,EAAaF,CAAU,CAAC,CACxD"}