tav-ui
Version:
107 lines (104 loc) • 5.82 kB
JavaScript
import { defineComponent, openBlock, createBlock, unref, mergeProps, withCtx, createVNode, createElementBlock, Fragment, renderList, withModifiers, createCommentVNode, createSlots, createElementVNode, normalizeClass, toDisplayString, renderSlot } from 'vue';
import { Dropdown as Dropdown$1, Menu } from 'ant-design-vue';
import { TaButtonModal } from '../../button-modal/index2.mjs';
import { TaIcon } from '../../icon/index2.mjs';
import '../../../utils/index2.mjs';
import { dropdownProps } from './types2.mjs';
import _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';
import { isDef } from '../../../utils/is2.mjs';
const _hoisted_1 = { style: { "position": "relative" } };
const _sfc_main = /* @__PURE__ */ defineComponent({
props: dropdownProps,
emits: ["menuEvent", "menuItemPopConfirmVisible"],
setup(__props, { emit }) {
const props = __props;
const ADropdown = Dropdown$1;
const AMenu = Menu;
const AMenuItem = Menu.Item;
const AMenuDivider = Menu.Divider;
function handleClickMenu(item) {
const { event } = item;
if (isDef(event)) {
const menu = props.dropMenuList.find((item2) => `${item2.event}` === `${event}`);
menu && emit("menuEvent", menu);
}
item.onClick?.();
}
const getAttr = (key) => ({ key });
return (_ctx, _cache) => {
return openBlock(), createBlock(unref(ADropdown), mergeProps({ trigger: _ctx.trigger }, _ctx.$attrs, {
"overlay-class-name": props.overlayClassName
}), {
overlay: withCtx(() => [
createVNode(unref(AMenu), { "selected-keys": _ctx.selectedKeys }, {
default: withCtx(() => [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.dropMenuList, (item) => {
return openBlock(), createElementBlock(Fragment, {
key: `${item.event}`
}, [
createVNode(unref(AMenuItem), mergeProps(getAttr(item.event), {
disabled: item.disabled,
size: "small",
onClick: withModifiers(($event) => handleClickMenu(item), ["stop", "prevent"])
}), {
default: withCtx(() => [
createCommentVNode(' <a-popconfirm\n v-if="popconfirm && item.popConfirm"\n v-bind="getPopConfirmAttrs(item.popConfirm)"\n :getPopupContainer="item.getPopupContainer"\n @visibleChange="handlePopConfirmVisible"\n >\n <template #icon v-if="item.popConfirm.icon">\n <Icon :icon="item.popConfirm.icon" />\n </template>\n <div>\n <Icon :icon="item.icon" v-if="item.icon" />\n <span class="ml-1">{{ item.text }}</span>\n </div>\n </a-popconfirm> '),
_ctx.popconfirm && item.popConfirm ? (openBlock(), createBlock(unref(TaButtonModal), mergeProps({ key: 0 }, item, { "is-in-drop-down": true }), createSlots({
default: withCtx(() => [
createElementVNode("div", null, [
item.icon ? (openBlock(), createBlock(unref(TaIcon), {
key: 0,
icon: item.icon
}, null, 8, ["icon"])) : createCommentVNode("v-if", true),
createElementVNode("span", {
class: normalizeClass(`ml-1 ant-btn ant-btn-${item.type ?? "link"} ant-btn-sm ${item.className ?? ""}`),
style: { "font-size": "12px" }
}, toDisplayString(item.text), 3)
])
]),
_: 2
}, [
item.popConfirm.icon ? {
name: "icon",
fn: withCtx(() => [
createVNode(unref(TaIcon), {
icon: item.popConfirm.icon
}, null, 8, ["icon"])
])
} : void 0
]), 1040)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
item.icon ? (openBlock(), createBlock(unref(TaIcon), {
key: 0,
icon: item.icon
}, null, 8, ["icon"])) : createCommentVNode("v-if", true),
createElementVNode("span", {
class: normalizeClass(`ml-1 ant-btn ant-btn-${item.type ?? "link"} ant-btn-sm ${item.className ?? ""}`),
style: { "font-size": "12px" }
}, toDisplayString(item.text), 3),
createCommentVNode(' <span class="ml-1">{{ item.text }}</span> ')
], 64))
]),
_: 2
}, 1040, ["disabled", "onClick"]),
item.divider ? (openBlock(), createBlock(unref(AMenuDivider), {
key: `d-${item.event}`
})) : createCommentVNode("v-if", true)
], 64);
}), 128))
]),
_: 1
}, 8, ["selected-keys"])
]),
default: withCtx(() => [
createElementVNode("span", _hoisted_1, [
renderSlot(_ctx.$slots, "default")
])
]),
_: 3
}, 16, ["trigger", "overlay-class-name"]);
};
}
});
var Dropdown = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/home/runner/work/tav-ui/tav-ui/packages/components/dropdown/src/dropdown.vue"]]);
export { Dropdown as default };
//# sourceMappingURL=dropdown2.mjs.map