comic-plus
Version:
<p align="center"> <img width="200px" src="./logo.png"/> </p>
76 lines (75 loc) • 2.9 kB
JavaScript
"use strict";
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const vue = require("vue");
const index = require("../../tooltip/index.js");
const menu = require("../utils/menu.js");
const item_props = require("./item.props.js");
const type = require("./type.js");
require("../../../utils/config.js");
const typescript = require("../../../utils/typescript.js");
require("@vueuse/core");
const _hoisted_1 = ["tooltip-disabled"];
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
...{
name: "CuMenuItem"
},
__name: "item",
props: item_props.menuItemProps,
setup(__props) {
var _a, _b;
const props = __props;
const vMenuTooltip = index.useTooltip();
const instance = vue.getCurrentInstance();
const { props: injectProps, menuClick } = vue.inject(type.MENU_PROVIDE);
const { parentMenu } = menu.useMenu(instance);
const parentProvideKey = "submenu:provide" + ((_b = (_a = parentMenu.value) == null ? void 0 : _a.exposed) == null ? void 0 : _b.submenuKey);
const submenu = vue.inject(parentProvideKey, void 0);
const tooltipDisabled = vue.computed(() => {
return !(injectProps.collapse && !submenu || props.showEllipsis);
});
const active = vue.computed(() => {
if (injectProps.modelValue) {
return injectProps.modelValue === props.index;
}
return false;
});
const menuItemKey = props.index ?? instance.uid.toString();
function itemClick() {
menuClick(props.index);
if (injectProps.mode === "horizontal" || injectProps.collapse) {
submenu == null ? void 0 : submenu.closeMenu(true);
}
}
vue.onMounted(() => {
submenu == null ? void 0 : submenu.setMenu({
idx: menuItemKey,
active
});
});
vue.onBeforeUnmount(() => {
submenu == null ? void 0 : submenu.removeMenu(menuItemKey);
});
return (_ctx, _cache) => {
return vue.withDirectives((vue.openBlock(), vue.createElementBlock("li", {
class: vue.normalizeClass(["cu-menu-item", { "is-active": active.value }]),
onClick: itemClick,
"tooltip-disabled": tooltipDisabled.value
}, [
vue.unref(typescript.isVueComponent)(_ctx.icon) ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.icon), {
key: 0,
class: "cu-menu__icon"
})) : vue.createCommentVNode("", true),
vue.withDirectives(vue.createElementVNode("span", null, [
vue.renderSlot(_ctx.$slots, "default", {}, () => [
vue.createTextVNode(vue.toDisplayString(_ctx.label), 1)
])
], 512), [
[vue.vShow, !vue.unref(injectProps).collapse || vue.unref(submenu)]
])
], 10, _hoisted_1)), [
[vue.unref(vMenuTooltip), props.label, "right-center"]
]);
};
}
});
exports.default = _sfc_main;