UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

310 lines (242 loc) 9.87 kB
"use strict"; 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