UNPKG

koval-ui

Version:

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

1 lines 2.4 kB
{"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","_a","_b","ValidationState","_c","_d"],"mappings":"yJAkBaA,EAAwB,CAAC,CAAC,WAAAC,EAAY,SAAAC,EAAU,YAAAC,EAAa,aAAAC,KAAyB,CAC/FC,EAAAA,UAAU,IAAM,aACR,GAAA,OAAOJ,GAAe,SAEtB,OADAE,EAAYF,CAAU,EACdA,EAAY,CAChB,IAAK,QAAS,EACDK,EAAAJ,EAAA,UAAA,MAAAI,EAAS,kBAAkB,IACpC,KAAA,CAEJ,IAAK,QAAS,EACVC,EAAAL,EAAS,UAAT,MAAAK,EAAkB,kBAAkBH,GAAgBI,EAAAA,gBAAgB,OACpE,KAAA,CAEJ,IAAK,aAAc,EACfC,EAAAP,EAAS,UAAT,MAAAO,EAAkB,kBAAkBL,GAAgBI,EAAAA,gBAAgB,YACpE,KAAA,CAEJ,SACaE,EAAAR,EAAA,UAAA,MAAAQ,EAAS,kBAAkB,GACxC,GAGT,CAACN,EAAcF,EAAUC,EAAaF,CAAU,CAAC,CACxD"}