UNPKG

hongluan-ui

Version:
1 lines 5.54 kB
{"version":3,"file":"menu-item.mjs","sources":["../../../../../../packages/components/menu/src/menu-item.vue"],"sourcesContent":["<template>\n <li\n role=\"menuitem\"\n tabindex=\"-1\"\n :style=\"[itemStyle]\"\n :class=\"{\n [namespace + '-menu-item']: true,\n 'is-active': active,\n 'is-disabled': disabled,\n }\"\n @click=\"handleClick\"\n >\n <hl-tooltip\n v-if=\"\n parentMenu.type.name === 'Menu' &&\n rootMenu.finalCollapse &&\n $slots.title\n \"\n trigger=\"hover\"\n class=\"no-style\"\n placement=\"right\"\n :fallback-placements=\"['left']\"\n :show-arrow=\"false\"\n :offset=\"0\"\n :hide-after=\"0\"\n :popper-class=\"`${namespace}-menu-popover`\"\n >\n <template #content>\n <slot name=\"title\"></slot>\n </template>\n <div class=\"item-content\">\n <slot></slot>\n </div>\n </hl-tooltip>\n <template v-else>\n <div class=\"item-content\">\n <slot></slot>\n <slot name=\"title\"></slot>\n </div>\n </template>\n </li>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n computed,\n onMounted,\n onBeforeUnmount,\n inject,\n getCurrentInstance,\n toRef,\n reactive,\n} from 'vue'\nimport HlTooltip from '@hongluan-ui/components/tooltip'\nimport { Effect } from '@hongluan-ui/components/popper'\nimport { throwError } from '@hongluan-ui/utils'\nimport { useNamespace } from '@hongluan-ui/hooks'\nimport useMenu from './use-menu'\nimport { menuItemProps } from './menu-item'\n\nimport type { MenuItemRegistered, MenuProvider, SubMenuProvider } from './types'\n\nconst COMPONENT_NAME = 'MenuItem'\nexport default defineComponent({\n name: COMPONENT_NAME,\n components: {\n HlTooltip,\n },\n\n props: menuItemProps,\n emits: ['click'],\n\n setup(props, { emit }) {\n const { namespace } = useNamespace()\n const instance = getCurrentInstance()\n const rootMenu = inject<MenuProvider>('rootMenu')\n if (!rootMenu) throwError(COMPONENT_NAME, 'can not inject root menu')\n\n const { parentMenu, indexPath } = useMenu(\n instance,\n toRef(props, 'index'),\n )\n\n const subMenu = inject<SubMenuProvider>(`subMenu:${parentMenu.value.uid}`)\n if (!subMenu) throwError(COMPONENT_NAME, 'can not inject sub menu')\n\n const active = computed(() => props.index === rootMenu.activeIndex)\n const backgroundColor = computed(() => rootMenu.props.backgroundColor || '')\n const activeTextColor = computed(() => rootMenu.props.activeTextColor || '')\n const textColor = computed(() => rootMenu.props.textColor || '')\n\n const item: MenuItemRegistered = reactive({\n index: props.index,\n indexPath,\n active,\n })\n const itemStyle = computed(() => {\n const style = {\n color: active.value ? activeTextColor.value : textColor.value,\n backgroundColor: backgroundColor.value,\n }\n return style\n })\n\n const handleClick = () => {\n if (!props.disabled) {\n rootMenu.handleMenuItemClick({\n index: props.index,\n indexPath: indexPath.value,\n route: props.route,\n })\n emit('click', item)\n }\n }\n\n onMounted(() => {\n subMenu.addSubMenu(item)\n rootMenu.addMenuItem(item)\n })\n\n onBeforeUnmount(() => {\n subMenu.removeSubMenu(item)\n rootMenu.removeMenuItem(item)\n })\n\n return {\n namespace,\n itemStyle,\n Effect,\n parentMenu,\n rootMenu,\n active,\n handleClick,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_normalizeStyle","_normalizeClass","_createBlock","_withCtx","_renderSlot","_createElementVNode"],"mappings":";;;;;;;;;;;;AA+DA,MAAM,iBAAiB;AACvB,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA;AACF,EAEA,OAAO;AAAA,EACP,OAAO,CAAC,OAAO;AAAA,EAEf,MAAM,OAAO,EAAE,QAAQ;AACrB,UAAM,EAAE,cAAc;AACtB,UAAM,WAAW;AACjB,UAAM,WAAW,OAAqB,UAAU;AAChD,QAAI,CAAC;AAAU,iBAAW,gBAAgB,0BAA0B;AAEpE,UAAM,EAAE,YAAY,cAAc,QAChC,UACA,MAAM,OAAO,OAAO,CACtB;AAEA,UAAM,UAAU,OAAwB,WAAW,WAAW,MAAM,KAAK;AACzE,QAAI,CAAC;AAAS,iBAAW,gBAAgB,yBAAyB;AAElE,UAAM,SAAS,SAAS,MAAM,MAAM,UAAU,SAAS,WAAW;AAClE,UAAM,kBAAkB,SAAS,MAAM,SAAS,MAAM,mBAAmB,EAAE;AAC3E,UAAM,kBAAkB,SAAS,MAAM,SAAS,MAAM,mBAAmB,EAAE;AAC3E,UAAM,YAAY,SAAS,MAAM,SAAS,MAAM,aAAa,EAAE;AAE/D,UAAM,OAA2B,SAAS;AAAA,MACxC,OAAO,MAAM;AAAA,MACb;AAAA,MACA;AAAA,KACD;AACD,UAAM,YAAY,SAAS,MAAM;AAC/B,YAAM,QAAQ;AAAA,QACZ,OAAO,OAAO,QAAQ,gBAAgB,QAAQ,UAAU;AAAA,QACxD,iBAAiB,gBAAgB;AAAA;AAEnC,aAAO;AAAA,KACR;AAED,UAAM,cAAc,MAAM;AACxB,UAAI,CAAC,MAAM,UAAU;AACnB,iBAAS,oBAAoB;AAAA,UAC3B,OAAO,MAAM;AAAA,UACb,WAAW,UAAU;AAAA,UACrB,OAAO,MAAM;AAAA,SACd;AACD,aAAK,SAAS,IAAI;AAAA;AACpB;AAGF,cAAU,MAAM;AACd,cAAQ,WAAW,IAAI;AACvB,eAAS,YAAY,IAAI;AAAA,KAC1B;AAED,oBAAgB,MAAM;AACpB,cAAQ,cAAc,IAAI;AAC1B,eAAS,eAAe,IAAI;AAAA,KAC7B;AAED,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;;sBAvICA,mBAuCK;AAAA,IAtCH,MAAK;AAAA,IACL,UAAS;AAAA,IACR,OAAKC,gBAAG,cAAS;AAAA,IACjB,OAAKC;AAAA,OAAW,iBAAS;AAAA,mBAA2C;AAAA,qBAA6B;AAAA;IAKjG,SAAO;AAAA;IAGS,gBAAW,KAAK,SAAI,UAAyB,cAAS,iBAA2B,YAAO,sBADzGC,YAqBa;AAAA;MAfX,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,WAAU;AAAA,MACT,uBAAqB;AAAA,MACrB,cAAY;AAAA,MACZ,QAAQ;AAAA,MACR,cAAY;AAAA,MACZ,gBAAY,GAAK;AAAA;MAEP,SAAOC,QAChB,MAA0B;AAAA,QAA1BC,WAA0B;AAAA;uBAE5B,MAEM;AAAA,QAFNC,mBAEM,SAFD,OAAM;AAAc,UACvBD,WAAa;AAAA;;;6CAIfL,mBAGM;AAAA;MAHD,OAAM;AAAA;MACTK,WAAa;AAAA,MACbA,WAA0B;AAAA;;;;;;;"}