UNPKG

linkmore-design

Version:

🌈 πŸš€lmη»„δ»ΆεΊ“γ€‚πŸš€

105 lines (103 loc) β€’ 3.88 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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _CloseOutlined = _interopRequireDefault(require("@ant-design/icons/CloseOutlined")); var _classnames = _interopRequireDefault(require("classnames")); var _omit = _interopRequireDefault(require("rc-util/lib/omit")); var React = _interopRequireWildcard(require("react")); var _configProvider = require("../config-provider"); var _colors = require("../_util/colors"); var _wave = _interopRequireDefault(require("../_util/wave")); var _warning = _interopRequireDefault(require("../_util/warning")); var _CheckableTag = _interopRequireDefault(require("./CheckableTag")); const PresetColorRegex = new RegExp(`^(${_colors.PresetColorTypes.join('|')})(-inverse)?$`); const PresetStatusColorRegex = new RegExp(`^(${_colors.PresetStatusColorTypes.join('|')})$`); const InternalTag = ({ prefixCls: customizePrefixCls, className, style, children, icon, color, onClose, closeIcon, closable = false, ...props }, ref) => { const { getPrefixCls, direction } = React.useContext(_configProvider.ConfigContext); const [visible, setVisible] = React.useState(true); // Warning for deprecated usage if (process.env.NODE_ENV !== 'production') { (0, _warning.default)(!('visible' in props), 'Tag', '`visible` will be removed in next major version, please use `visible && <Tag />` instead.'); } React.useEffect(() => { if ('visible' in props) { setVisible(props.visible); } }, [props.visible]); const isPresetColor = () => { if (!color) { return false; } return PresetColorRegex.test(color) || PresetStatusColorRegex.test(color); }; const tagStyle = { backgroundColor: color && !isPresetColor() ? color : undefined, ...style }; const presetColor = isPresetColor(); const prefixCls = getPrefixCls('tag', customizePrefixCls); const tagClassName = (0, _classnames.default)(prefixCls, { [`${prefixCls}-${color}`]: presetColor, [`${prefixCls}-has-color`]: color && !presetColor, [`${prefixCls}-hidden`]: !visible, [`${prefixCls}-rtl`]: direction === 'rtl' }, className); const handleCloseClick = e => { e.stopPropagation(); onClose?.(e); if (e.defaultPrevented) { return; } if (!('visible' in props)) { setVisible(false); } }; const renderCloseIcon = () => { if (closable) { return closeIcon ? /*#__PURE__*/React.createElement("span", { className: `${prefixCls}-close-icon`, onClick: handleCloseClick }, closeIcon) : /*#__PURE__*/React.createElement(_CloseOutlined.default, { className: `${prefixCls}-close-icon`, onClick: handleCloseClick }); } return null; }; const isNeedWave = 'onClick' in props || children && children.type === 'a'; const tagProps = (0, _omit.default)(props, ['visible']); const iconNode = icon || null; const kids = iconNode ? /*#__PURE__*/React.createElement(React.Fragment, null, iconNode, /*#__PURE__*/React.createElement("span", null, children)) : children; const tagNode = /*#__PURE__*/React.createElement("span", (0, _extends2.default)({}, tagProps, { ref: ref, className: tagClassName, style: tagStyle }), kids, renderCloseIcon()); return isNeedWave ? /*#__PURE__*/React.createElement(_wave.default, null, tagNode) : tagNode; }; const Tag = /*#__PURE__*/React.forwardRef(InternalTag); if (process.env.NODE_ENV !== 'production') { Tag.displayName = 'Tag'; } Tag.CheckableTag = _CheckableTag.default; var _default = Tag; exports.default = _default;