sk-react
Version:
React for ShaneKing
127 lines (112 loc) • 4.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _skJs = require("sk-js");
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; }
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 = _skJs.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;
}();
exports.default = Validator;
Validator.PROP_DEPS = 'deps';
Validator.PROP_FUNC = 'func';
Validator.RULES = {
required: function required(model, value, settings) {
return _skJs.SK.s4s(value) === _skJs.SK.STR_EMPTY ? _skJs.Mesgs.get('$#{field}_is_required').skFmt({
field: _skJs.Mesgs.gets(settings.field)
}) : true;
},
email: function email(model, value, settings) {
return /^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/.test(value) ? true : _skJs.Mesgs.get('$#{field}_must_be_an_email').skFmt({
field: _skJs.Mesgs.gets(settings.field)
});
},
lengthRange: function lengthRange(model, value, settings) {
var tmpValue = _skJs.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 : _skJs.Mesgs.get('$#{field}_length_must_be_between_$#{min}_$#{max}').skFmt({
field: _skJs.Mesgs.gets(settings.field),
min: settings.min,
max: settings.max
});
} else if (minExist && !maxExist) {
return tmpValue.length > settings.min ? true : _skJs.Mesgs.get('$#{field}_length_must_be_greater_than_$#{min}').skFmt({
field: _skJs.Mesgs.gets(settings.field),
min: settings.min
});
} else if (!minExist && maxExist) {
return tmpValue.length < settings.max ? true : _skJs.Mesgs.get('$#{field}_length_must_be_less_than_$#{max}').skFmt({
field: _skJs.Mesgs.gets(settings.field),
max: settings.max
});
} else {
return true;
}
},
numberRange: function numberRange(model, value, settings) {
var tmpValue = _skJs.SK.s4n(value);
var minExist = settings.min !== undefined;
var maxExist = settings.max !== undefined;
if (minExist && maxExist) {
return tmpValue > _skJs.SK.s4n(settings.min) && tmpValue < _skJs.SK.s4n(settings.max) ? true : _skJs.Mesgs.get('$#{field}_value_must_be_between_$#{min}_$#{max}').skFmt({
field: _skJs.Mesgs.gets(settings.field),
min: settings.min,
max: settings.max
});
} else if (minExist && !maxExist) {
return tmpValue > _skJs.SK.s4n(settings.min) ? true : _skJs.Mesgs.get('$#{field}_value_must_be_greater_than_$#{min}').skFmt({
field: _skJs.Mesgs.gets(settings.field),
min: settings.min
});
} else if (!minExist && maxExist) {
return tmpValue < _skJs.SK.s4n(settings.max) ? true : _skJs.Mesgs.get('$#{field}_value_must_be_less_than_$#{max}').skFmt({
field: _skJs.Mesgs.gets(settings.field),
max: settings.max
});
} else {
return true;
}
}
};