choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
65 lines (56 loc) • 2.36 kB
JavaScript
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