UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

65 lines (56 loc) 2.36 kB
import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import { isMoment } from 'moment'; import isEmpty from '../../_util/isEmpty'; import ValidationResult from '../ValidationResult'; import { $l } from '../../locale-context'; import { getNearStepValues } from '../../number-field/utils'; import { formatReactTemplate } from '../../formatter/formatReactTemplate'; import { toRangeValue } from '../../field/utils'; function isStepMismatch(value, step, min, max, range) { if (range) { var nearStepValues; toRangeValue(value, range).every(function (item) { if (!isEmpty(item)) { nearStepValues = getNearStepValues(isMoment(item) ? item : Number(item), step, min, max); } return !nearStepValues; }); return nearStepValues; } if (!isEmpty(value)) { return getNearStepValues(isMoment(value) ? value : Number(value), step, min, max); } } export default function stepMismatch(value, props) { var step = props.step, min = props.min, max = props.max, defaultValidationMessages = props.defaultValidationMessages, range = props.range, format = props.format, nonStrictStep = props.nonStrictStep; if (step !== undefined && nonStrictStep === false) { var nearStepValues = isStepMismatch(value, step, min, max, range); if (nearStepValues !== undefined) { var _nearStepValues = _slicedToArray(nearStepValues, 2), before = _nearStepValues[0], after = _nearStepValues[1]; var injectionOptions = { 0: isMoment(before) ? before.format(format) : before, 1: isMoment(after) ? after.format(format) : after }; var ruleName = nearStepValues.length === 2 ? 'stepMismatchBetween' : 'stepMismatch'; var key = nearStepValues.length === 2 ? 'step_mismatch_between' : 'step_mismatch'; var _defaultValidationMes = defaultValidationMessages[ruleName], validationMessage = _defaultValidationMes === void 0 ? $l('Validator', key) : _defaultValidationMes; return new ValidationResult({ validationMessage: formatReactTemplate(validationMessage, injectionOptions), injectionOptions: injectionOptions, value: isMoment(value) ? value.format(format) : value, ruleName: ruleName }); } } return true; } //# sourceMappingURL=stepMismatch.js.map