@krowdy-ui/views
Version:
React components that implement Google's Material Design.
76 lines (62 loc) • 2.49 kB
JavaScript
;
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;
}