UNPKG

choerodon-ui

Version:

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

567 lines (463 loc) 20.7 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; 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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); 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 _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _get3 = _interopRequireDefault(require("@babel/runtime/helpers/get")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper")); var _tslib = require("tslib"); var _react = _interopRequireDefault(require("react")); var _mobxReact = require("mobx-react"); var _mobx = require("mobx"); var _classnames = _interopRequireDefault(require("classnames")); var _enum = require("../../../lib/progress/enum"); var _KeyCode = _interopRequireDefault(require("../../../lib/_util/KeyCode")); var _debounce = _interopRequireDefault(require("lodash/debounce")); var _isNil = _interopRequireDefault(require("lodash/isNil")); var _TextArea2 = _interopRequireDefault(require("../text-area/TextArea")); var _TextField = require("../text-field/TextField"); var _enum2 = require("../text-area/enum"); var _icon = _interopRequireDefault(require("../icon")); var _IntlList = _interopRequireDefault(require("./IntlList")); var _enum3 = require("./enum"); var _Modal = _interopRequireDefault(require("../modal/Modal")); var _localeContext = _interopRequireWildcard(require("../locale-context")); var _progress = _interopRequireDefault(require("../progress")); var _enum4 = require("../core/enum"); var _message = _interopRequireDefault(require("../message")); var _exception = _interopRequireDefault(require("../_util/exception")); var _autobind = _interopRequireDefault(require("../_util/autobind")); var _EventManager = require("../_util/EventManager"); var _isSame = _interopRequireDefault(require("../_util/isSame")); var _isEmpty = _interopRequireDefault(require("../_util/isEmpty")); var _singleton = require("../tooltip/singleton"); var _util = _interopRequireDefault(require("../overflow-tip/util")); var IntlField = /*#__PURE__*/function (_TextArea) { (0, _inherits2["default"])(IntlField, _TextArea); var _super = (0, _createSuper2["default"])(IntlField); function IntlField(props, context) { var _this; (0, _classCallCheck2["default"])(this, IntlField); _this = _super.call(this, props, context); _this.openModal = /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() { var _this$props, modalProps, maxLengths, type, rows, cols, resize, _assertThisInitialize, record, lang, name, element, maxLength, supports, maxLengthList; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (_this.modal) { _context.next = 24; break; } _this$props = _this.props, modalProps = _this$props.modalProps, maxLengths = _this$props.maxLengths, type = _this$props.type, rows = _this$props.rows, cols = _this$props.cols, resize = _this$props.resize; _assertThisInitialize = (0, _assertThisInitialized2["default"])(_this), record = _assertThisInitialize.record, lang = _assertThisInitialize.lang, name = _assertThisInitialize.name, element = _assertThisInitialize.element; maxLength = _this.getProp('maxLength'); supports = _localeContext["default"].supports; maxLengthList = {}; Object.keys(supports).map(function (key) { maxLengthList[key] = maxLengths && (key !== lang || (0, _isNil["default"])(maxLength)) ? maxLengths[key] || maxLength : maxLength; return null; }); if (!(record && name)) { _context.next = 23; break; } _this.setLoading(true); _context.prev = 9; if (element && !(0, _isSame["default"])(_this.getValue(), element.value)) { _this.syncValueOnBlur(element.value); } _context.next = 13; return record.tls(name); case 13: _context.next = 19; break; case 15: _context.prev = 15; _context.t0 = _context["catch"](9); _message["default"].error((0, _exception["default"])(_context.t0)); return _context.abrupt("return"); case 19: _context.prev = 19; _this.setLoading(false); return _context.finish(19); case 22: _this.storeLocales(record, name); case 23: _this.modal = _Modal["default"].open((0, _objectSpread2["default"])({ title: (0, _localeContext.$l)('IntlField', 'modal_title'), children: /*#__PURE__*/_react["default"].createElement(_IntlList["default"], { readOnly: _this.readOnly, disabled: _this.disabled, record: record, name: name, lang: lang, maxLengths: maxLengthList, type: type, rows: rows, cols: cols, resize: resize, getConfig: _this.getContextConfig }), onClose: _this.handleIntlListClose, onOk: _this.handleIntlListOk, onCancel: _this.handleIntlListCancel, okButton: !_this.disabled && !_this.readOnly, destroyOnClose: true }, modalProps)); case 24: case "end": return _context.stop(); } } }, _callee, null, [[9, 15, 19, 22]]); })); _this.handleIntlListClose = /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { return _regenerator["default"].wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: delete _this.modal; if (!_this.props.displayOutput) { _this.focus(); } case 2: case "end": return _context2.stop(); } } }, _callee2); })); var suffixCls = _this.props.displayOutput ? 'output' : _this.props.type !== _enum3.IntlType.multipleLine ? 'input' : 'textarea'; _this.prefixCls = _this.getContextProPrefixCls(suffixCls, props.prefixCls); return _this; } (0, _createClass2["default"])(IntlField, [{ key: "range", get: function get() { return false; } }, { key: "readOnly", get: function get() { if (this.props.displayOutput) { return true; } return this.isReadOnly(); } }, { key: "resize", get: function get() { if (this.props.displayOutput) { return _enum2.ResizeType.none; } return (0, _get3["default"])((0, _getPrototypeOf2["default"])(IntlField.prototype), "resize", this); } }, { key: "autoSize", get: function get() { if (this.props.displayOutput) { return false; } return (0, _get3["default"])((0, _getPrototypeOf2["default"])(IntlField.prototype), "autoSize", this); } }, { key: "border", get: function get() { if (this.props.displayOutput) { return false; } return (0, _get3["default"])((0, _getPrototypeOf2["default"])(IntlField.prototype), "border", this); } }, { key: "saveSuffixRef", value: function saveSuffixRef(node) { this.suffixRef = node; } }, { key: "getEditorTextInfo", value: function getEditorTextInfo(rangeTarget) { var superText = (0, _get3["default"])((0, _getPrototypeOf2["default"])(IntlField.prototype), "getEditorTextInfo", this).call(this, rangeTarget); return this.props.displayOutput ? (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, superText), {}, { placeholder: undefined }) : superText; } }, { key: "getPlaceholders", value: function getPlaceholders() { if (this.props.displayOutput) { return []; } return (0, _get3["default"])((0, _getPrototypeOf2["default"])(IntlField.prototype), "getPlaceholders", this).call(this); } }, { key: "isEditable", value: function isEditable() { if (this.props.displayOutput) { return false; } return (0, _get3["default"])((0, _getPrototypeOf2["default"])(IntlField.prototype), "isEditable", this).call(this); } }, { key: "setLoading", value: function setLoading(loading) { this.loading = loading; } }, { key: "handleIntlListOk", value: function () { var _handleIntlListOk = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() { var supports, languages, record, name, field, tlsKey; return _regenerator["default"].wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: supports = _localeContext["default"].supports; languages = Object.keys(supports); record = this.record, name = this.name, field = this.field; if (!(record && field)) { _context3.next = 8; break; } tlsKey = this.getContextConfig('tlsKey'); _context3.next = 7; return Promise.all(languages.map(function (language) { var intlField = record.dataSet.getField("".concat(tlsKey, ".").concat(name, ".").concat(language)); return intlField ? intlField.checkValidity(record) : true; })); case 7: return _context3.abrupt("return", _context3.sent.every(Boolean)); case 8: case "end": return _context3.stop(); } } }, _callee3, this); })); function handleIntlListOk() { return _handleIntlListOk.apply(this, arguments); } return handleIntlListOk; }() }, { key: "handleIntlListCancel", value: function () { var _handleIntlListCancel = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() { var record, locales; return _regenerator["default"].wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: if (!(this.disabled || this.readOnly)) { _context4.next = 2; break; } return _context4.abrupt("return"); case 2: record = this.record, locales = this.locales; if (record && locales) { record.set(locales); } case 4: case "end": return _context4.stop(); } } }, _callee4, this); })); function handleIntlListCancel() { return _handleIntlListCancel.apply(this, arguments); } return handleIntlListCancel; }() }, { key: "handleKeyDown", value: function handleKeyDown(e) { if (e.keyCode === _KeyCode["default"].DOWN && this.props.type !== _enum3.IntlType.multipleLine) { (0, _EventManager.stopEvent)(e); this.openModal(); } (0, _get3["default"])((0, _getPrototypeOf2["default"])(IntlField.prototype), "handleKeyDown", this).call(this, e); } }, { key: "handleBlur", value: function handleBlur(e) { if (this.modal) { e.preventDefault(); } (0, _get3["default"])((0, _getPrototypeOf2["default"])(IntlField.prototype), "handleBlur", this).call(this, e); } }, { key: "storeLocales", value: function storeLocales(record, name) { var tlsKey = "".concat(this.getContextConfig('tlsKey'), ".").concat(name); var tls = record.get(tlsKey); var locales = (0, _defineProperty2["default"])({}, name, record.get(name)); if (tls) { var defaultLang = _localeContext["default"].locale.lang, supports = _localeContext["default"].supports; Object.keys(supports).forEach(function (lang) { var value = tls[lang]; if (lang === defaultLang) { locales["".concat(tlsKey, ".").concat(lang)] = locales[name]; } else { locales["".concat(tlsKey, ".").concat(lang)] = value; } }); } this.locales = locales; } }, { key: "getOmitPropsKeys", value: function getOmitPropsKeys() { if (this.props.type === _enum3.IntlType.multipleLine && !this.props.displayOutput) { return (0, _get3["default"])((0, _getPrototypeOf2["default"])(IntlField.prototype), "getOmitPropsKeys", this).call(this).concat(['type', 'displayOutput']); } return (0, _get3["default"])((0, _getPrototypeOf2["default"])(IntlField.prototype), "getOmitPropsKeys", this).call(this).concat(['cols', 'rows', 'wrap', 'resize', 'autoSize', 'onResize', 'type', 'displayOutput', 'modalProps']); } }, { key: "getOtherProps", value: function getOtherProps() { if (this.props.type === _enum3.IntlType.multipleLine) { return (0, _get3["default"])((0, _getPrototypeOf2["default"])(IntlField.prototype), "getOtherProps", this).call(this); } return _TextField.TextField.prototype.getOtherProps.call(this); } }, { key: "getWrapperClassNames", value: function getWrapperClassNames() { var _get2; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return (_get2 = (0, _get3["default"])((0, _getPrototypeOf2["default"])(IntlField.prototype), "getWrapperClassNames", this)).call.apply(_get2, [this, "".concat(this.prefixCls, "-intl")].concat(args)); } }, { key: "getSuffix", value: function getSuffix() { var suffix = this.props.suffix; return this.wrapperSuffix(this.loading ? /*#__PURE__*/_react["default"].createElement(_progress["default"], { size: _enum4.Size.small, type: _enum.ProgressType.loading }) : suffix || /*#__PURE__*/_react["default"].createElement(_icon["default"], { className: "".concat(this.prefixCls, "-intl"), type: "language" }), { onClick: (0, _debounce["default"])(this.openModal, 200) }); } }, { key: "handleEnterDown", value: function handleEnterDown(e) { if (this.props.type === _enum3.IntlType.multipleLine) { (0, _get3["default"])((0, _getPrototypeOf2["default"])(IntlField.prototype), "handleEnterDown", this).call(this, e); } else { _TextField.TextField.prototype.handleEnterDown.call(this, e); } } }, { key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps, nextContext) { if (nextProps.type !== this.props.type) { var suffixCls = nextProps.type !== _enum3.IntlType.multipleLine ? 'input' : 'textarea'; this.prefixCls = this.getContextProPrefixCls(suffixCls, nextProps.prefixCls); } (0, _get3["default"])((0, _getPrototypeOf2["default"])(IntlField.prototype), "componentWillReceiveProps", this).call(this, nextProps, nextContext); } }, { key: "componentWillUnmount", value: function componentWillUnmount() { if (this.modal) { this.modal.close(); } } }, { key: "renderWrapper", value: function renderWrapper() { if (this.props.displayOutput) { return this.renderOutput(); } if (this.props.type === _enum3.IntlType.multipleLine) { return (0, _get3["default"])((0, _getPrototypeOf2["default"])(IntlField.prototype), "renderWrapper", this).call(this); } return this.renderGroup(); } }, { key: "showTooltip", value: function showTooltip(e) { if ((0, _get3["default"])((0, _getPrototypeOf2["default"])(IntlField.prototype), "showTooltip", this).call(this, e)) { return true; } if (this.props.displayOutput) { var _this$context = this.context, getTooltip = _this$context.getTooltip, getTooltipTheme = _this$context.getTooltipTheme, getTooltipPlacement = _this$context.getTooltipPlacement; var _this$props$tooltip = this.props.tooltip, tooltip = _this$props$tooltip === void 0 ? getTooltip('output') : _this$props$tooltip; var element = this.element, field = this.field; if (element && !(field && field.get('multiLine', this.record)) && (tooltip === _enum4.Tooltip.always || tooltip === _enum4.Tooltip.overflow && (0, _util["default"])(element))) { var title = this.getRenderedValue(); if (title) { (0, _singleton.show)(element, { title: title, placement: getTooltipPlacement('output') || 'right', theme: getTooltipTheme('output') }); return true; } } } return false; } }, { key: "renderOutput", value: function renderOutput() { var result = this.getRenderedValue(); var text = (0, _isEmpty["default"])(result) || (0, _mobx.isArrayLike)(result) && !result.length ? this.getContextConfig('renderEmpty')('Output') : result; var floatLabel = this.renderFloatLabel(); var suffix = this.getSuffix(); var className = (0, _classnames["default"])("".concat(this.prefixCls, "-intl-wrapper")); if (floatLabel) { return /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({}, this.getWrapperProps()), floatLabel, /*#__PURE__*/_react["default"].createElement("span", { className: className }, /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({}, this.getOtherProps()), text), suffix)); } return /*#__PURE__*/_react["default"].createElement("span", { className: className }, /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({}, this.getMergedProps()), text), suffix); } }]); return IntlField; }(_TextArea2["default"]); IntlField.displayName = 'IntlField'; IntlField.defaultProps = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _TextArea2["default"].defaultProps), {}, { rows: 3, resize: _enum2.ResizeType.vertical, type: _enum3.IntlType.singleLine }); (0, _tslib.__decorate)([_mobx.observable], IntlField.prototype, "loading", void 0); (0, _tslib.__decorate)([_mobx.computed], IntlField.prototype, "readOnly", null); (0, _tslib.__decorate)([_autobind["default"], _mobx.action], IntlField.prototype, "saveSuffixRef", null); (0, _tslib.__decorate)([_mobx.action], IntlField.prototype, "setLoading", null); (0, _tslib.__decorate)([_autobind["default"]], IntlField.prototype, "handleIntlListOk", null); (0, _tslib.__decorate)([_autobind["default"]], IntlField.prototype, "handleIntlListCancel", null); (0, _tslib.__decorate)([_autobind["default"]], IntlField.prototype, "handleKeyDown", null); (0, _tslib.__decorate)([_autobind["default"]], IntlField.prototype, "handleBlur", null); IntlField = (0, _tslib.__decorate)([_mobxReact.observer], IntlField); var _default = IntlField; exports["default"] = _default; //# sourceMappingURL=IntlField.js.map