sk-react
Version:
React for ShaneKing
118 lines (107 loc) • 4.3 kB
JavaScript
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
import { Mesgs, SK } from 'sk-js';
var Validator =
/*#__PURE__*/
function () {
/**
*
* @param modelIds
* {
* "id1": {
* "deps": "dependencies: option, can be string[reg], string array or object",
* "func": "custom rule by function",
* "rule1": {
* "field": "x.xx.xxx, this is i18n mesg for required rule"
* },
* "rule2": {
* "exec": "enable function"
* }
* }
* }
* @param rules
*/
function Validator() {
var modelIds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var rules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
_classCallCheck(this, Validator);
this.modelIds = modelIds;
this.rules = SK.extends(true, {}, Validator.RULES, rules);
}
_createClass(Validator, [{
key: "getModelIds",
value: function getModelIds() {
return this.modelIds;
}
}, {
key: "getRules",
value: function getRules() {
return this.rules;
}
}]);
return Validator;
}();
Validator.PROP_DEPS = 'deps';
Validator.PROP_FUNC = 'func';
Validator.RULES = {
required: function required(model, value, settings) {
return SK.s4s(value) === SK.STR_EMPTY ? Mesgs.get('$#{field}_is_required').skFmt({
field: Mesgs.gets(settings.field)
}) : true;
},
email: function email(model, value, settings) {
return /^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/.test(value) ? true : Mesgs.get('$#{field}_must_be_an_email').skFmt({
field: Mesgs.gets(settings.field)
});
},
lengthRange: function lengthRange(model, value, settings) {
var tmpValue = SK.s4s(value);
var minExist = settings.min !== undefined;
var maxExist = settings.max !== undefined;
if (minExist && maxExist) {
return tmpValue.length > settings.min && tmpValue.length < settings.max ? true : Mesgs.get('$#{field}_length_must_be_between_$#{min}_$#{max}').skFmt({
field: Mesgs.gets(settings.field),
min: settings.min,
max: settings.max
});
} else if (minExist && !maxExist) {
return tmpValue.length > settings.min ? true : Mesgs.get('$#{field}_length_must_be_greater_than_$#{min}').skFmt({
field: Mesgs.gets(settings.field),
min: settings.min
});
} else if (!minExist && maxExist) {
return tmpValue.length < settings.max ? true : Mesgs.get('$#{field}_length_must_be_less_than_$#{max}').skFmt({
field: Mesgs.gets(settings.field),
max: settings.max
});
} else {
return true;
}
},
numberRange: function numberRange(model, value, settings) {
var tmpValue = SK.s4n(value);
var minExist = settings.min !== undefined;
var maxExist = settings.max !== undefined;
if (minExist && maxExist) {
return tmpValue > SK.s4n(settings.min) && tmpValue < SK.s4n(settings.max) ? true : Mesgs.get('$#{field}_value_must_be_between_$#{min}_$#{max}').skFmt({
field: Mesgs.gets(settings.field),
min: settings.min,
max: settings.max
});
} else if (minExist && !maxExist) {
return tmpValue > SK.s4n(settings.min) ? true : Mesgs.get('$#{field}_value_must_be_greater_than_$#{min}').skFmt({
field: Mesgs.gets(settings.field),
min: settings.min
});
} else if (!minExist && maxExist) {
return tmpValue < SK.s4n(settings.max) ? true : Mesgs.get('$#{field}_value_must_be_less_than_$#{max}').skFmt({
field: Mesgs.gets(settings.field),
max: settings.max
});
} else {
return true;
}
}
};
export { Validator as default };