UNPKG

ant-design-vue

Version:

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

157 lines (128 loc) 5.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _vue = require("vue"); var _classNames2 = _interopRequireDefault(require("../_util/classNames")); var _vueTypes = _interopRequireDefault(require("../_util/vue-types")); var _CloseOutlined = _interopRequireDefault(require("@ant-design/icons-vue/CloseOutlined")); var _wave = _interopRequireDefault(require("../_util/wave")); var _colors = require("../_util/colors"); var _configProvider = require("../config-provider"); var _CheckableTag = _interopRequireDefault(require("./CheckableTag")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _isSlot(s) { return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !(0, _vue.isVNode)(s); } var PresetColorRegex = new RegExp("^(".concat(_colors.PresetColorTypes.join('|'), ")(-inverse)?$")); var PresetStatusColorRegex = new RegExp("^(".concat(_colors.PresetStatusColorTypes.join('|'), ")$")); var tagProps = { prefixCls: _vueTypes.default.string, color: { type: String }, closable: _vueTypes.default.looseBool.def(false), closeIcon: _vueTypes.default.VNodeChild, visible: _vueTypes.default.looseBool, onClose: { type: Function }, icon: _vueTypes.default.VNodeChild }; var Tag = (0, _vue.defineComponent)({ name: 'ATag', emits: ['update:visible', 'close'], setup: function setup(props, _ref) { var slots = _ref.slots, emit = _ref.emit, attrs = _ref.attrs; var _inject = (0, _vue.inject)('configProvider', _configProvider.defaultConfigProvider), getPrefixCls = _inject.getPrefixCls; var visible = (0, _vue.ref)(true); (0, _vue.watchEffect)(function () { if (props.visible !== undefined) { visible.value = props.visible; } }); var handleCloseClick = function handleCloseClick(e) { e.stopPropagation(); emit('update:visible', false); emit('close', e); if (e.defaultPrevented) { return; } if (props.visible === undefined) { visible.value = false; } }; var isPresetColor = function isPresetColor() { var color = props.color; if (!color) { return false; } return PresetColorRegex.test(color) || PresetStatusColorRegex.test(color); }; return function () { var _classNames; var _a, _b, _c; var customizePrefixCls = props.prefixCls, _props$icon = props.icon, icon = _props$icon === void 0 ? (_a = slots.icon) === null || _a === void 0 ? void 0 : _a.call(slots) : _props$icon, color = props.color, _props$closeIcon = props.closeIcon, closeIcon = _props$closeIcon === void 0 ? (_b = slots.closeIcon) === null || _b === void 0 ? void 0 : _b.call(slots) : _props$closeIcon, _props$closable = props.closable, closable = _props$closable === void 0 ? false : _props$closable; var presetColor = isPresetColor(); var prefixCls = getPrefixCls('tag', customizePrefixCls); var renderCloseIcon = function renderCloseIcon() { if (closable) { return closeIcon ? (0, _vue.createVNode)("div", { "class": "".concat(prefixCls, "-close-icon"), "onClick": handleCloseClick }, _isSlot(closeIcon) ? closeIcon : { default: function _default() { return [closeIcon]; } }) : (0, _vue.createVNode)(_CloseOutlined.default, { "class": "".concat(prefixCls, "-close-icon"), "onClick": handleCloseClick }, null); } return null; }; var tagStyle = { backgroundColor: color && !isPresetColor() ? color : undefined }; var tagClassName = (0, _classNames2.default)(prefixCls, (_classNames = {}, _defineProperty(_classNames, "".concat(prefixCls, "-").concat(color), presetColor), _defineProperty(_classNames, "".concat(prefixCls, "-has-color"), color && !presetColor), _defineProperty(_classNames, "".concat(prefixCls, "-hidden"), !visible.value), _classNames)); var iconNode = icon || null; var children = (_c = slots.default) === null || _c === void 0 ? void 0 : _c.call(slots); var kids = iconNode ? (0, _vue.createVNode)(_vue.Fragment, null, [iconNode, (0, _vue.createVNode)("span", null, _isSlot(children) ? children : { default: function _default() { return [children]; } })]) : children; var isNeedWave = ('onClick' in attrs); var tagNode = (0, _vue.createVNode)("span", { "class": tagClassName, "style": tagStyle }, [kids, renderCloseIcon()]); return isNeedWave ? (0, _vue.createVNode)(_wave.default, null, _isSlot(tagNode) ? tagNode : { default: function _default() { return [tagNode]; } }) : tagNode; }; } }); Tag.props = tagProps; Tag.CheckableTag = _CheckableTag.default; Tag.install = function (app) { app.component(Tag.name, Tag); app.component(_CheckableTag.default.name, _CheckableTag.default); return app; }; var _default2 = Tag; exports.default = _default2;