UNPKG

choerodon-ui

Version:

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

289 lines (232 loc) 9.85 kB
"use strict"; 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