qt-public-ui
Version:
新设计规范下业务组件库
153 lines (151 loc) • 8.14 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var React = _interopRequireWildcard(require("react"));
var _classnames = _interopRequireDefault(require("classnames"));
var _omit = _interopRequireDefault(require("omit.js"));
var _reactLifecyclesCompat = require("react-lifecycles-compat");
var _Icon = _interopRequireDefault(require("../../Icon"));
var _CheckableTag = _interopRequireDefault(require("./CheckableTag"));
var _context = require("../config-provider/context");
var _colors = require("../_util/colors");
var _warning = _interopRequireDefault(require("../_util/warning"));
var _wave = _interopRequireDefault(require("../_util/wave"));
var _excluded = ["children"];
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /* eslint-disable */
// export from './CheckableTag';
var PresetColorRegex = new RegExp("^(".concat(_colors.PresetColorTypes.join('|'), ")(-inverse)?$"));
var Tag = /*#__PURE__*/function (_React$Component) {
function Tag(props) {
var _this;
(0, _classCallCheck2["default"])(this, Tag);
_this = _callSuper(this, Tag, [props]);
_this.state = {
visible: true
};
_this.handleIconClick = function (e) {
e.stopPropagation();
_this.setVisible(false, e);
};
_this.renderTag = function (configProps) {
var _this$props = _this.props,
children = _this$props.children,
otherProps = (0, _objectWithoutProperties2["default"])(_this$props, _excluded);
var isNeedWave = 'onClick' in otherProps || children && children.type === 'a';
var tagProps = (0, _omit["default"])(otherProps, ['onClose', 'afterClose', 'color', 'visible', 'closable', 'prefixCls']);
return isNeedWave ? /*#__PURE__*/React.createElement(_wave["default"], null, /*#__PURE__*/React.createElement("span", (0, _extends2["default"])({}, tagProps, {
className: _this.getTagClassName(configProps),
style: _this.getTagStyle()
}), children, _this.renderCloseIcon())) : /*#__PURE__*/React.createElement("span", (0, _extends2["default"])({}, tagProps, {
className: _this.getTagClassName(configProps),
style: _this.getTagStyle()
}), children, _this.renderCloseIcon());
};
(0, _warning["default"])(!('afterClose' in props), 'Tag', "'afterClose' will be deprecated, please use 'onClose', we will remove this in the next version.");
return _this;
}
(0, _inherits2["default"])(Tag, _React$Component);
return (0, _createClass2["default"])(Tag, [{
key: "getTagStyle",
value: function getTagStyle() {
var _this$props2 = this.props,
color = _this$props2.color,
style = _this$props2.style;
var isPresetColor = this.isPresetColor();
return _objectSpread({
backgroundColor: color && !isPresetColor ? color : undefined
}, style);
}
}, {
key: "getTagClassName",
value: function getTagClassName(_ref) {
var getPrefixCls = _ref.getPrefixCls;
var _this$props3 = this.props,
customizePrefixCls = _this$props3.prefixCls,
className = _this$props3.className,
color = _this$props3.color;
var visible = this.state.visible;
var isPresetColor = this.isPresetColor();
var prefixCls = getPrefixCls('tag', customizePrefixCls);
return (0, _classnames["default"])(prefixCls, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, "".concat(prefixCls, "-").concat(color), isPresetColor), "".concat(prefixCls, "-has-color"), color && !isPresetColor), "".concat(prefixCls, "-hidden"), !visible), className);
}
}, {
key: "setVisible",
value: function setVisible(visible, e) {
var _this$props4 = this.props,
onClose = _this$props4.onClose,
afterClose = _this$props4.afterClose;
if (onClose) {
onClose(e);
}
if (afterClose && !onClose) {
// next version remove.
afterClose();
}
if (e.defaultPrevented) {
return;
}
if (!('visible' in this.props)) {
this.setState({
visible: visible
});
}
}
}, {
key: "isPresetColor",
value: function isPresetColor() {
var color = this.props.color;
if (!color) {
return false;
}
return PresetColorRegex.test(color);
}
}, {
key: "renderCloseIcon",
value: function renderCloseIcon() {
var closable = this.props.closable;
return closable ? /*#__PURE__*/React.createElement(_Icon["default"], {
type: "close",
onClick: this.handleIconClick
}) : null;
}
}, {
key: "render",
value: function render() {
return /*#__PURE__*/React.createElement(_context.ConfigConsumer, null, this.renderTag);
}
}], [{
key: "getDerivedStateFromProps",
value: function getDerivedStateFromProps(nextProps) {
if ('visible' in nextProps) {
return {
visible: nextProps.visible
};
}
return null;
}
}]);
}(React.Component);
Tag.CheckableTag = _CheckableTag["default"];
Tag.defaultProps = {
closable: false
};
(0, _reactLifecyclesCompat.polyfill)(Tag);
var _default = exports["default"] = Tag;