UNPKG

@krowdy-ui/views

Version:

React components that implement Google's Material Design.

76 lines (62 loc) 2.49 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = useFilterValidator; var _react = require("react"); var _dayjs = _interopRequireDefault(require("dayjs")); function useFilterValidator(value, type, option) { var numberOfInputs = option.numberOfInputs; var errors = (0, _react.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 (!(0, _dayjs["default"])(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 = (0, _dayjs["default"])(value.first); var second = (0, _dayjs["default"])(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; }