choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
310 lines (242 loc) • 9.87 kB
JavaScript
var _regeneratorRuntime2 = require("@babel/runtime/regenerator");
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 _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
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 _marked = /*#__PURE__*/_regeneratorRuntime2.mark(execute);
function execute(rules, value, props, getProp, validationResults) {
var method, results, promises, _iterator, _step, result;
return _regenerator["default"].wrap(function execute$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
method = rules.shift();
if (!method) {
_context.next = 27;
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) {
_context.next = 8;
break;
}
_context.next = 8;
return Promise.all(promises);
case 8:
results.forEach(function (result) {
if (result instanceof _ValidationResult["default"]) {
validationResults.push(result);
var index = value.indexOf(result.value);
if (index !== -1) {
value.splice(index, 1);
}
}
});
if (!value.length) {
_context.next = 27;
break;
}
_iterator = (0, _createForOfIteratorHelper2["default"])(execute(rules, value, props, getProp, validationResults));
_context.prev = 11;
_iterator.s();
case 13:
if ((_step = _iterator.n()).done) {
_context.next = 19;
break;
}
result = _step.value;
_context.next = 17;
return result;
case 17:
_context.next = 13;
break;
case 19:
_context.next = 24;
break;
case 21:
_context.prev = 21;
_context.t0 = _context["catch"](11);
_iterator.e(_context.t0);
case 24:
_context.prev = 24;
_iterator.f();
return _context.finish(24);
case 27:
case "end":
return _context.stop();
}
}
}, _marked, null, [[11, 21, 24, 27]]);
}
var Validator = /*#__PURE__*/function () {
function Validator() {
(0, _classCallCheck2["default"])(this, Validator);
}
(0, _createClass2["default"])(Validator, null, [{
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$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
if (!(process.env.NODE_ENV !== 'production' && typeof console !== 'undefined' && results.length)) {
_context2.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);
});
_context2.t0 = reportMessage.push;
_context2.t1 = reportMessage;
_context2.t2 = _toConsumableArray2["default"];
_context2.next = 10;
return Promise.all(promises);
case 10:
_context2.t3 = _context2.sent;
_context2.t4 = (0, _context2.t2)(_context2.t3);
_context2.t0.apply.call(_context2.t0, _context2.t1, _context2.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 _context2.stop();
}
}
}, _callee);
}));
function report(_x, _x2) {
return _report.apply(this, arguments);
}
return report;
}()
}, {
key: "checkValidity",
value: function () {
var _checkValidity = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
var value,
props,
getProp,
validationResults,
valueMiss,
multiple,
_args3 = arguments;
return _regenerator["default"].wrap(function _callee2$(_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;
}
validationResults.push(valueMiss);
_context3.next = 12;
break;
case 9:
multiple = getProp('multiple');
_context3.next = 12;
return (0, _mobx.flow)(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();
}
}
}, _callee2);
}));
function checkValidity() {
return _checkValidity.apply(this, arguments);
}
return checkValidity;
}()
}]);
return Validator;
}();
exports["default"] = Validator;
(0, _tslib.__decorate)([_mobx.action], Validator, "checkValidity", null);
//# sourceMappingURL=Validator.js.map
;