choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
289 lines (232 loc) • 9.85 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _tslib = require("tslib");
var _react = _interopRequireDefault(require("react"));
var _mobx = require("mobx");
var _isPromise = _interopRequireDefault(require("is-promise"));
var _isString = _interopRequireDefault(require("lodash/isString"));
var _noop = _interopRequireDefault(require("lodash/noop"));
var _ValidationResult = _interopRequireDefault(require("./ValidationResult"));
var _rules = _interopRequireDefault(require("./rules"));
var _valueMissing = _interopRequireDefault(require("./rules/valueMissing"));
var _utils = require("../utils");
var Validator = /*#__PURE__*/function () {
function Validator() {
(0, _classCallCheck2["default"])(this, Validator);
}
(0, _createClass2["default"])(Validator, null, [{
key: "addError",
value: function addError(result, validationResults) {
validationResults.push(result);
}
}, {
key: "reportAll",
value: function reportAll(errors) {
var length = errors.length;
if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined' && length > 0) {
console.warn('validations:', (0, _mobx.toJS)(errors));
}
}
}, {
key: "reportDataSet",
value: function reportDataSet(errors) {
var length = errors.length;
if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined' && length) {
console.warn('validations:', (0, _mobx.toJS)(errors));
}
}
}, {
key: "report",
value: function () {
var _report = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(results, props) {
var _console, name, dataSet, record, reportMessage, promises, dsName, id, field;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (!(process.env.NODE_ENV !== 'production' && typeof console !== 'undefined' && results.length)) {
_context.next = 17;
break;
}
name = props.name, dataSet = props.dataSet, record = props.record;
reportMessage = [];
promises = [];
results.forEach(function (_ref) {
var validationMessage = _ref.validationMessage,
value = _ref.value;
promises.push('validation:', (0, _isString["default"])(validationMessage) ? validationMessage : (0, _utils.getGlobalConfig)('validationMessageReportFormatter', dataSet && dataSet.getField(name))( /*#__PURE__*/_react["default"].createElement("span", null, validationMessage)));
promises.push('\n[value]:', value);
});
_context.t0 = reportMessage.push;
_context.t1 = reportMessage;
_context.t2 = _toConsumableArray2["default"];
_context.next = 10;
return Promise.all(promises);
case 10:
_context.t3 = _context.sent;
_context.t4 = (0, _context.t2)(_context.t3);
_context.t0.apply.call(_context.t0, _context.t1, _context.t4);
if (dataSet) {
dsName = dataSet.name, id = dataSet.id;
if (dsName || id) {
reportMessage.push("\n[dataSet<".concat(dsName || id, ">]:"), dataSet);
} else {
reportMessage.push('\n[dataSet]:', dataSet);
}
}
if (record) {
if (dataSet) {
reportMessage.push("\n[record<".concat(dataSet.indexOf(record), ">]:"), record);
} else {
reportMessage.push("\n[record]:", record);
}
}
if (name) {
field = record && record.ownerFields.get(name) || dataSet && dataSet.getField(name);
if (field) {
reportMessage.push("\n[field<".concat(name, ">]:"), field);
} else {
reportMessage.push('[field]:', name);
}
}
(_console = console).warn.apply(_console, reportMessage);
case 17:
case "end":
return _context.stop();
}
}
}, _callee);
}));
function report(_x, _x2) {
return _report.apply(this, arguments);
}
return report;
}()
}, {
key: "execute",
value: function () {
var _execute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(rules, value, props, getProp, validationResults) {
var _this = this;
var method, results, promises;
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
method = rules.shift();
if (!method) {
_context2.next = 12;
break;
}
results = [];
promises = [];
value.forEach(function (item) {
var result = method(item, props, getProp);
if ((0, _isPromise["default"])(result)) {
promises.push(result.then(function (re) {
results.push(re);
return re;
}));
} else {
results.push(result);
}
});
if (!promises.length) {
_context2.next = 8;
break;
}
_context2.next = 8;
return Promise.all(promises);
case 8:
results.forEach(function (result) {
if (result instanceof _ValidationResult["default"]) {
_this.addError(result, validationResults);
var index = value.indexOf(result.value);
if (index !== -1) {
value.splice(index, 1);
}
}
});
if (!value.length) {
_context2.next = 12;
break;
}
_context2.next = 12;
return this.execute(rules, value, props, getProp, validationResults);
case 12:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function execute(_x3, _x4, _x5, _x6, _x7) {
return _execute.apply(this, arguments);
}
return execute;
}()
}, {
key: "checkValidity",
value: function () {
var _checkValidity = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
var value,
props,
getProp,
validationResults,
valueMiss,
multiple,
_args3 = arguments;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
value = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : null;
props = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {};
getProp = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : _noop["default"];
validationResults = [];
valueMiss = (0, _valueMissing["default"])(value, props, getProp);
if (!(valueMiss !== true)) {
_context3.next = 9;
break;
}
this.addError(valueMiss, validationResults);
_context3.next = 12;
break;
case 9:
multiple = getProp('multiple');
_context3.next = 12;
return this.execute(_rules["default"].slice(), multiple && (0, _mobx.isArrayLike)(value) ? value.slice() : [value], props, getProp, validationResults);
case 12:
return _context3.abrupt("return", {
valid: !validationResults.length,
validationResults: validationResults,
validatorProps: props
});
case 13:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}));
function checkValidity() {
return _checkValidity.apply(this, arguments);
}
return checkValidity;
}()
}]);
return Validator;
}();
exports["default"] = Validator;
(0, _tslib.__decorate)([_mobx.observable], Validator.prototype, "validationResults", void 0);
(0, _tslib.__decorate)([_mobx.action], Validator, "addError", null);
(0, _tslib.__decorate)([_mobx.action], Validator, "checkValidity", null);
//# sourceMappingURL=Validator.js.map
;