@seemusic/ui-components
Version:
A Vue 3 UI Library. Uses Composable.
1 lines • 4.98 kB
Source Map (JSON)
{"version":3,"file":"SidebarItem.mjs","sources":["../../../src/components/SopTheSidebar/SidebarItem.tsx"],"sourcesContent":["import { defineComponent, nextTick, ref, computed, type PropType } from 'vue';\nimport { ElMenuItem, ElSubMenu, type MenuItemClicked } from 'element-plus';\nimport { setMenuIndex, type SidebarListItem } from './SopTheSidebar';\nimport { useCustomRouter } from '../../composables/customRouter';\nimport { isURL } from '../../utils/index';\n\n\nexport const SidebarItem = defineComponent({\n name: 'SidebarItem',\n components: {\n ElMenuItem, ElSubMenu\n },\n props: {\n item: {\n type: Object as PropType<SidebarListItem>,\n required: true\n },\n index: {\n type: String,\n required: true\n }\n },\n emits: ['click-menu-item'],\n setup(props, { emit }) {\n const { router } = useCustomRouter();\n\n const item = computed(() => props.item);\n const menuIndex = ref(props.index);\n const disabled = computed(() => item.value.disabled !== undefined ? item.value.disabled : false);\n\n function menuClick(menuItem: MenuItemClicked) {\n const index = menuItem.index;\n\n emit('click-menu-item', index);\n if (isURL(index)) {\n nextTick(() => {\n window.open(index, '_blank');\n });\n } else {\n router.value?.push(index);\n menuIndex.value = index;\n }\n }\n\n function renderMenu() {\n if (!item.value.subMenu) {\n return <ElMenuItem\n index={menuIndex.value}\n disabled={disabled.value}\n onClick={menuClick}\n >\n <div class=\"menu-icon\">{item.value.icon && item.value.icon}</div>\n <span>{item.value.title}</span>\n </ElMenuItem>;\n }\n\n if (item.value.subMenu && item.value.subMenu.length) {\n return (\n <ElSubMenu\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n index={`${menuIndex.value}` as any}\n disabled={disabled.value}\n popper-class=\"sub-menu__popper\"\n >\n {{\n title: () => (\n <>\n <div class=\"menu-icon\">{item.value.icon}</div>\n <span>{item.value.title}</span>\n </>\n ),\n default: () => (\n <>\n {\n item.value.subMenu &&\n item.value.subMenu.map((i, idx) => <SidebarItem item={i} index={setMenuIndex(i, idx) || ''} />)\n }\n </>\n )\n }}\n </ElSubMenu>\n );\n }\n }\n return () => (\n <>\n {renderMenu()}\n </>\n );\n },\n});\n"],"names":["SidebarItem","defineComponent","name","components","ElMenuItem","ElSubMenu","props","item","type","Object","required","index","String","emits","setup","emit","router","useCustomRouter","computed","menuIndex","ref","disabled","value","undefined","menuClick","menuItem","isURL","nextTick","window","open","push","renderMenu","subMenu","_createVNode","default","icon","title","length","_Fragment","map","i","idx","setMenuIndex"],"mappings":";;;;;AAOaA,MAAAA,cAAcC,gCAAgB;AAAA,EACzCC,MAAM;AAAA,EACNC,YAAY;AAAA,IACVC;AAAAA,IAAYC;AAAAA,EACb;AAAA,EACDC,OAAO;AAAA,IACLC,MAAM;AAAA,MACJC,MAAMC;AAAAA,MACNC,UAAU;AAAA,IACX;AAAA,IACDC,OAAO;AAAA,MACLH,MAAMI;AAAAA,MACNF,UAAU;AAAA,IACZ;AAAA,EACD;AAAA,EACDG,OAAO,CAAC,iBAAiB;AAAA,EACzBC,MAAMR,OAAO;AAAA,IAAES;AAAAA,EAAK,GAAG;AACrB,UAAM;AAAA,MAAEC;AAAAA,IAAQ,IAAGC,gBAAe;AAElC,UAAMV,OAAOW,SAAS,MAAMZ,MAAMC,IAAI;AACtC,UAAMY,YAAYC,IAAId,MAAMK,KAAK;AACjC,UAAMU,WAAWH,SAAS,MAAMX,KAAKe,MAAMD,aAAaE,SAAYhB,KAAKe,MAAMD,WAAW,KAAK;AAE/F,aAASG,UAAUC,UAA2B;;AAC5C,YAAMd,QAAQc,SAASd;AAEvBI,WAAK,mBAAmBJ,KAAK;AAC7B,UAAIe,MAAMf,KAAK,GAAG;AAChBgB,iBAAS,MAAM;AACbC,iBAAOC,KAAKlB,OAAO,QAAQ;AAAA,QAC7B,CAAC;AAAA,MACH,OAAO;AACLK,qBAAOM,UAAPN,mBAAcc,KAAKnB;AACnBQ,kBAAUG,QAAQX;AAAAA,MACpB;AAAA,IACF;AAEA,aAASoB,aAAa;AACpB,UAAI,CAACxB,KAAKe,MAAMU,SAAS;AACvB,eAAAC,YAAA7B,YAAA;AAAA,UAAA,SACSe,UAAUG;AAAAA,UAAK,YACZD,SAASC;AAAAA,UAAK,WACfE;AAAAA,QAAS,GAAA;AAAA,UAAAU,SAAAA,MAAA,CAAAD,YAAA,OAAA;AAAA,YAAA,SAAA;AAAA,UAAA,GAAA,CAEM1B,KAAKe,MAAMa,QAAQ5B,KAAKe,MAAMa,IAAI,IAAAF,YAAA,QAAA,MAAA,CACnD1B,KAAKe,MAAMc,KAAK,CAAA,CAAA;AAAA,QAAA,CAAA;AAAA,MAE3B;AAEA,UAAI7B,KAAKe,MAAMU,WAAWzB,KAAKe,MAAMU,QAAQK,QAAQ;AACnD,eAAAJ,YAAA5B,WAAA;AAAA,UAAA,SAGY,GAAEc,UAAUG,KAAM;AAAA,UAAC,YACjBD,SAASC;AAAAA,UAAK,gBAAA;AAAA,QAAA,GAAA;AAAA,UAItBc,OAAOA,MAAAH,YAAAK,iBAAAL,YAAA,OAAA;AAAA,YAAA,SAAA;AAAA,UAAA,GAAA,CAEqB1B,KAAKe,MAAMa,IAAI,CAAA,GAAAF,YAAA,QAAA,MAAA,CAChC1B,KAAKe,MAAMc,KAAK,CAE1B,CAAA,CAAA;AAAA,UACDF,SAASA,MAAAD,YAAAK,UAGH/B,MAAAA,CAAAA,KAAKe,MAAMU,WACXzB,KAAKe,MAAMU,QAAQO,IAAI,CAACC,GAAGC,QAAGR,YAAAjC,aAAA;AAAA,YAAA,QAAwBwC;AAAAA,YAAC,SAASE,aAAaF,GAAGC,GAAG,KAAK;AAAA,UAAE,GAAA,IAAA,CAAI,CAAC,CAAA;AAAA,QAGpG,CAAA;AAAA,MAIT;AAAA,IACF;AACA,WAAO,MAAAR,YAAAK,iBAEFP,WAAY,CAAA,CAEhB;AAAA,EACH;AACF,CAAC;"}