@txdfe/at
Version:
一个设计体系组件库
87 lines (83 loc) • 3.74 kB
JavaScript
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function getCfgFromProps(props, type) {
if (type in props) {
return props[type];
}
return undefined;
}
function getRule(ruleName, props) {
return _defineProperty(_defineProperty(_defineProperty({}, ruleName, props[ruleName]), "message", getCfgFromProps(props, "".concat(ruleName, "Message"))), "trigger", getCfgFromProps(props, "".concat(ruleName, "Trigger")));
}
function getValueName(props, displayName) {
if (props.valueName) {
return props.valueName;
}
if (typeof displayName === 'string') {
// Next Components are all wrappered by configProvider
var componentName = displayName.replace(/Config\(/, '').replace(')', '');
if (['Switch', 'Checkbox', 'Radio'].indexOf(componentName) !== -1) {
return 'checked';
}
}
return 'value';
}
export function getRules(props) {
var result = [];
// required
if (props.required) {
result.push(getRule('required', props));
}
var maxLength = Number(props.maxLength);
var minLength = Number(props.minLength);
if (minLength || maxLength) {
result.push({
minLength: minLength,
maxLength: maxLength,
// minLengthMessage maxLengthMessage had been deprected, please use minmaxLength. TODO: removed in 2.0
message: getCfgFromProps(props, 'minmaxLengthMessage') || getCfgFromProps(props, 'minLengthMessage') || getCfgFromProps(props, 'maxLengthMessage'),
trigger: getCfgFromProps(props, 'minmaxLengthTrigger') || getCfgFromProps(props, 'minLengthTrigger') || getCfgFromProps(props, 'maxLengthTrigger')
});
}
// length
if (props.length) {
result.push(getRule('length', props));
}
// pattern
if (props.pattern) {
result.push(getRule('pattern', props));
}
// format
if (['number', 'tel', 'url', 'email'].indexOf(props.format) > -1) {
result.push(getRule('format', props));
}
var max = Number(props.max);
var min = Number(props.min);
// max min
if (max || min) {
result.push({
min: min,
max: max,
// minMessage maxMessage had been deprected, please use minmaxLength. TODO: removed in 2.0
message: getCfgFromProps(props, 'minmaxMessage') || getCfgFromProps(props, 'minMessage') || getCfgFromProps(props, 'maxMessage'),
trigger: getCfgFromProps(props, 'minmaxTrigger') || getCfgFromProps(props, 'minTrigger') || getCfgFromProps(props, 'maxTrigger')
});
}
if (props.validator && typeof props.validator === 'function') {
result.push({
validator: props.validator,
trigger: getCfgFromProps(props, 'validatorTrigger')
});
}
return result;
}
export function getFieldInitCfg(props, displayName) {
return {
valueName: getValueName(props, displayName),
trigger: props.trigger ? props.trigger : 'onChange',
autoValidate: props.autoValidate,
rules: getRules(props)
};
}