UNPKG

@krowdy-ui/views

Version:

React components that implement Google's Material Design.

65 lines (56 loc) 2.21 kB
import { useMemo } from 'react'; import dayjs from 'dayjs'; export default function useFilterValidator(value, type, option) { var numberOfInputs = option.numberOfInputs; var errors = useMemo(function () { switch (type) { case 'generic': case 'category': return numberOfInputs && value.length === 0 ? 'Debe tener al menos un valor' : null; case 'number': if (numberOfInputs === 1) { return !value.first ? { first: 'Este campo es requerido' } : null; } else if (numberOfInputs === 2) { var err = { first: !value.first ? 'Este campo es requerido' : null, second: !value.second ? 'Este campo es requerido' : null }; if (value.first && value.second) if (parseInt(value.first) > parseInt(value.second)) { err.first = err.second = 'El rango es incorrecto'; } return !err.first && !err.second ? null : err; } return null; case 'date': if (numberOfInputs === 1) { if (!value.first) return { first: 'Este campo es requerido' };else if (!dayjs(value.first).isValid()) return { first: 'La fecha es invalida' };else return null; } else if (numberOfInputs === 2) { var _err = { first: !value.first ? 'Este campo es requerido' : null, second: !value.second ? 'Este campo es requerido' : null }; if (value.first && value.second) { var first = dayjs(value.first); var second = dayjs(value.second); if (first.isValid() && second.isValid() && second.isBefore(first)) { _err.first = _err.second = 'El rango es incorrecto'; } else { if (!first.isValid()) _err.first = 'La fecha es invalida'; if (!second.isValid()) _err.second = 'La fecha es invalida'; } } return !_err.first && !_err.second ? null : _err; } return null; default: return null; } // eslint-disable-next-line react-hooks/exhaustive-deps }, [value, numberOfInputs]); return errors; }