choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
278 lines (225 loc) • 9.77 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
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 _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
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 _TextField2 = require("../text-field/TextField");
var _icon = _interopRequireDefault(require("../icon"));
var _ModalContainer = require("../modal-container/ModalContainer");
var _SecretFieldView = _interopRequireDefault(require("./SecretFieldView"));
var _autobind = _interopRequireDefault(require("../_util/autobind"));
var _isEmpty = _interopRequireDefault(require("../_util/isEmpty"));
var _CountDown = _interopRequireDefault(require("./CountDown"));
var SecretField = /*#__PURE__*/function (_TextField) {
(0, _inherits2["default"])(SecretField, _TextField);
var _super = (0, _createSuper2["default"])(SecretField);
function SecretField(props, context) {
var _this;
(0, _classCallCheck2["default"])(this, SecretField);
_this = _super.call(this, props, context);
_this.secretEnable = false;
(0, _mobx.runInAction)(function () {
_this.setSecretEnable();
});
return _this;
}
(0, _createClass2["default"])(SecretField, [{
key: "multiple",
get: function get() {
return false;
}
}, {
key: "range",
get: function get() {
return false;
}
}, {
key: "isSecretEnable",
get: function get() {
var record = this.record,
name = this.name;
if (!record || !record.get('_token') || !record.getPristineValue(name)) {
// 新增数据,record没有token或者查询没有返回值,显示为textfield
return false;
}
return this.secretEnable;
}
}, {
key: "setSecretEnable",
value: function setSecretEnable() {
var secretFieldEnableConfig = this.getContextConfig('secretFieldEnable');
if (secretFieldEnableConfig) {
// 从配置项获取是否开启脱敏组件
this.secretEnable = secretFieldEnableConfig();
}
}
}, {
key: "openModal",
value: function openModal() {
if (!this.modal) {
var label = this.getLabel();
var readOnly = this.readOnly,
name = this.name,
record = this.record;
var key = "_secretField_countDown_".concat(name);
if (record && !record.getState(key)) {
record.setState(key, new _CountDown["default"]());
}
var pattern = this.getProp('pattern');
var restrict = this.getProp('restrict');
var required = this.getProp('required');
var modalProps = this.props.modalProps;
this.modal = (0, _ModalContainer.open)((0, _objectSpread2["default"])((0, _objectSpread2["default"])({
title: label
}, modalProps), {}, {
children: /*#__PURE__*/_react["default"].createElement(_SecretFieldView["default"], {
readOnly: readOnly,
name: name || '',
record: record,
label: label,
pattern: pattern,
restrict: restrict,
required: required,
token: record && record.get('_token'),
onChange: this.handleSecretChange,
countDown: record && record.getState(key)
}),
destroyOnClose: true,
closable: true,
autoFocus: false,
footer: null,
onClose: this.handleSecretFieldViewClose
}));
}
}
}, {
key: "handleSecretFieldViewClose",
value: function handleSecretFieldViewClose() {
this.modal = undefined;
}
}, {
key: "handleSecretChange",
value: function handleSecretChange(data) {
var record = this.record;
if (record) {
record.init(this.name || '', data);
}
}
}, {
key: "handleOpenModal",
value: function handleOpenModal() {
return this.openModal();
}
}, {
key: "getSuffix",
value: function getSuffix() {
var readOnly = this.readOnly,
record = this.record,
name = this.name,
isSecretEnable = this.isSecretEnable,
props = this.props,
disabled = this.disabled; // 未开启脱敏组件或者脱敏组件值为空时,不显示编辑/查看按钮
if (!isSecretEnable) {
var suffix = props.suffix;
return suffix ? this.wrapperSuffix(suffix) : null;
} // 开启脱敏组件
// 编辑
if (!readOnly) {
return this.wrapperSuffix( /*#__PURE__*/_react["default"].createElement(_icon["default"], {
type: 'edit-o'
}), {
onClick: disabled ? null : this.handleOpenModal
});
} // 只读:已读不显示查看按钮
// readFlag: true已查看 undefined未查看
var readFlag = record && record.getState("_secretField_queryFlag_".concat(name));
if (!readFlag && readOnly) {
return this.wrapperSuffix( /*#__PURE__*/_react["default"].createElement(_icon["default"], {
type: 'visibility-o'
}), {
onClick: disabled ? null : this.handleOpenModal
});
}
return null;
}
}, {
key: "isEditable",
value: function isEditable() {
return !this.isSecretEnable && (0, _get3["default"])((0, _getPrototypeOf2["default"])(SecretField.prototype), "isEditable", this).call(this);
}
}, {
key: "getWrapperClassNames",
value: function getWrapperClassNames() {
var _get2;
var prefixCls = this.prefixCls;
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"])(SecretField.prototype), "getWrapperClassNames", this)).call.apply(_get2, [this].concat(args, [(0, _defineProperty2["default"])({}, "".concat(prefixCls, "-secret"), true)]));
}
}, {
key: "getInnerSpanButton",
value: function getInnerSpanButton() {
var isSecretEnable = this.isSecretEnable; // 显示为脱敏组件时,禁用clearButton
if (isSecretEnable) {
return null;
} // 显示为textField时,正常显示clearButton
return (0, _get3["default"])((0, _getPrototypeOf2["default"])(SecretField.prototype), "getInnerSpanButton", this).call(this);
}
}, {
key: "clearButton",
get: function get() {
var isSecretEnable = this.isSecretEnable; // 显示为脱敏组件时,clearButton为false
if (isSecretEnable) {
return false;
} // 显示为textField时,正常显示clearButton
return (0, _get3["default"])((0, _getPrototypeOf2["default"])(SecretField.prototype), "clearButton", this);
}
}, {
key: "clear",
value: function clear() {
var isSecretEnable = this.isSecretEnable; // 只有显示为textField时,退格键正常删除内容
if (!isSecretEnable) {
(0, _get3["default"])((0, _getPrototypeOf2["default"])(SecretField.prototype), "clear", this).call(this);
}
}
}, {
key: "renderWrapper",
value: function renderWrapper() {
var readOnly = this.readOnly,
prefixCls = this.prefixCls;
var result = this.getRenderedValue();
var renderEmpty = this.props.renderEmpty; // 脱敏组件只读且值为空时,renderEmpty
return readOnly && ((0, _isEmpty["default"])(result) || (0, _mobx.isArrayLike)(result) && !result.length) ? /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({}, this.getMergedProps()), /*#__PURE__*/_react["default"].createElement("span", {
className: "".concat(prefixCls, "-secret-empty")
}, renderEmpty ? renderEmpty() : this.getContextConfig('renderEmpty')('SecretField') || '-')) : (0, _get3["default"])((0, _getPrototypeOf2["default"])(SecretField.prototype), "renderWrapper", this).call(this);
}
}]);
return SecretField;
}(_TextField2.TextField);
SecretField.displayName = 'SecretField';
SecretField.defaultProps = (0, _objectSpread2["default"])({}, _TextField2.TextField.defaultProps);
(0, _tslib.__decorate)([_mobx.action], SecretField.prototype, "setSecretEnable", null);
(0, _tslib.__decorate)([_mobx.action], SecretField.prototype, "openModal", null);
(0, _tslib.__decorate)([_autobind["default"], _mobx.action], SecretField.prototype, "handleSecretFieldViewClose", null);
(0, _tslib.__decorate)([_autobind["default"]], SecretField.prototype, "handleSecretChange", null);
(0, _tslib.__decorate)([_autobind["default"]], SecretField.prototype, "handleOpenModal", null);
(0, _tslib.__decorate)([_mobx.action], SecretField.prototype, "clear", null);
SecretField = (0, _tslib.__decorate)([_mobxReact.observer], SecretField);
var _default = SecretField;
exports["default"] = _default;
//# sourceMappingURL=SecretField.js.map