UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

1 lines 6.47 kB
{"version":3,"file":"render.cjs","sources":["../../../components/contextmenu/render.tsx"],"sourcesContent":["import { Dropdown } from '@/components/dropdown'\nimport { DropdownList } from '@/components/dropdown-list'\nimport { DropdownItem } from '@/components/dropdown-item'\nimport { Icon } from '@/components/icon'\n\nimport { useIcons } from '@vexip-ui/config'\nimport { useRtl } from '@vexip-ui/hooks'\n\nimport type { NameHelper } from '@vexip-ui/config'\nimport type { ContextmenuConfig } from './symbol'\n\nfunction renderItemIcon(item: ContextmenuConfig, nh: NameHelper) {\n if (!item.icon) return null\n\n return (\n <div class={nh.be('icon')}>\n <Icon\n icon={item.icon}\n style={[{ color: item.iconColor || item.color }, (item.icon as any).style]}\n ></Icon>\n </div>\n )\n}\n\nfunction renderItemShortcut(item: ContextmenuConfig, nh: NameHelper) {\n if (!item.shortcut) return null\n\n return <div class={nh.be('shortcut')}>{item.shortcut}</div>\n}\n\nfunction renderGroupItem(item: ContextmenuConfig, nh: NameHelper) {\n const icons = useIcons()\n const { isRtl } = useRtl()\n\n return (\n <Dropdown\n inherit\n transfer={false}\n {...{\n onContextmenu: (event: MouseEvent) => {\n event.preventDefault()\n event.stopPropagation()\n },\n }}\n >\n {{\n default: () => (\n <DropdownItem\n class={nh.be('item')}\n label={item.key}\n divided={item.divided}\n disabled={item.disabled}\n >\n {renderItemIcon(item, nh)}\n {typeof item.renderer === 'function' ? (\n item.renderer()\n ) : (\n <span class={nh.be('label')} style={{ color: item.color }}>\n {item.label || item.key}\n </span>\n )}\n {renderItemShortcut(item, nh)}\n <div class={[nh.be('icon'), nh.be('arrow')]}>\n <Icon\n {...(isRtl.value ? icons.value.angleLeft : icons.value.angleRight)}\n style={{ color: item.iconColor || item.color }}\n ></Icon>\n </div>\n </DropdownItem>\n ),\n drop: () => (\n <DropdownList\n class={[\n nh.be('list'),\n item.children!.some(c => c.icon)\n ? nh.bem('list', 'icons')\n : nh.bem('list', 'no-icon'),\n item.children!.some(c => c.children?.length)\n ? nh.bem('list', 'arrows')\n : nh.bem('list', 'no-arrow'),\n ]}\n >\n {item.children!.map(i => renderItem({ nh, config: i }))}\n </DropdownList>\n ),\n }}\n </Dropdown>\n )\n}\n\nexport function renderItem({ config, nh }: { config: ContextmenuConfig, nh: NameHelper }) {\n if (config.children?.length) {\n return renderGroupItem(config, nh)\n } else {\n return (\n <DropdownItem\n class={nh.be('item')}\n label={config.key}\n divided={config.divided}\n disabled={config.disabled}\n >\n {renderItemIcon(config, nh)}\n {typeof config.renderer === 'function' ? (\n config.renderer()\n ) : (\n <span class={nh.be('label')} style={{ color: config.color }}>\n {config.label || config.key}\n </span>\n )}\n {renderItemShortcut(config, nh)}\n </DropdownItem>\n )\n }\n}\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","renderItemIcon","item","nh","icon","_createVNode","be","Icon","color","iconColor","style","renderItemShortcut","shortcut","renderGroupItem","icons","useIcons","isRtl","useRtl","Dropdown","_mergeProps","onContextmenu","event","preventDefault","stopPropagation","default","DropdownItem","key","divided","disabled","renderer","label","value","angleLeft","angleRight","drop","_slot","DropdownList","children","some","c","bem","length","map","i","renderItem","config"],"mappings":"2dAMwC,SAAAA,EAAAC,EAAA,CAAA,OAAA,OAAAA,GAAA,YAAAC,OAAAC,UAAAC,SAAAC,KAAAJ,CAAA,IAAAK,mBAAAA,CAAAA,EAAAA,QAAAL,CAAA,CAAA,CAKxC,SAASM,EAAeC,EAAyBC,EAAgB,CAC/D,OAAKD,EAAKE,KAEVC,EAAAA,YAAA,MAAA,CAAA,MACcF,EAAGG,GAAG,MAAM,GAACD,CAAAA,EAAA,YAAAE,EAAA,CAAA,KAEfL,EAAKE,KAAI,MACR,CAAC,CAAEI,MAAON,EAAKO,WAAaP,EAAKM,KAAM,EAAIN,EAAKE,KAAaM,KAAK,CAAC,EAAA,IAAA,CAAA,CAAA,EANzD,IAUzB,CAEA,SAASC,EAAmBT,EAAyBC,EAAgB,CACnE,OAAKD,EAAKU,SAEVP,EAAAA,YAAA,MAAA,CAAA,MAAmBF,EAAGG,GAAG,UAAU,GAAIJ,CAAAA,EAAKU,QAAQ,CAAA,EAFzB,IAG7B,CAEA,SAASC,EAAgBX,EAAyBC,EAAgB,CAChE,MAAMW,EAAQC,EAAAA,SAAU,EAClB,CAAEC,MAAAA,CAAO,EAAGC,SAAQ,EAE1B,OAAAZ,EAAA,YAAAa,EAAAC,aAAA,CAAA,QAAA,GAAA,SAGc,EAAK,EAAA,CAEbC,cAAgBC,GAAsB,CACpCA,EAAMC,eAAgB,EACtBD,EAAME,gBAAiB,CACzB,CAAC,CAAA,EAAA,CAIDC,QAASA,IAAAnB,EAAA,YAAAoB,EAAA,CAAA,MAEEtB,EAAGG,GAAG,MAAM,EAAC,MACbJ,EAAKwB,IAAG,QACNxB,EAAKyB,QAAO,SACXzB,EAAK0B,QAAQ,EAAA,CAAAJ,QAAAA,IAEtBvB,CAAAA,EAAeC,EAAMC,CAAE,EACvB,OAAOD,EAAK2B,UAAa,WACxB3B,EAAK2B,SAAQ,EAAExB,EAAAA,YAAA,OAAA,CAAA,MAEFF,EAAGG,GAAG,OAAO,EAAC,MAAS,CAAEE,MAAON,EAAKM,KAAM,CAAC,EAAA,CACtDN,EAAK4B,OAAS5B,EAAKwB,GAAG,CAAA,EAG1Bf,EAAmBT,EAAMC,CAAE,EAACE,EAAAA,YAAA,MAAA,CAAA,MACjB,CAACF,EAAGG,GAAG,MAAM,EAAGH,EAAGG,GAAG,OAAO,CAAC,CAACD,EAAAA,CAAAA,EAAA,YAAAE,EAAAY,EAAAA,WAElCH,EAAMe,MAAQjB,EAAMiB,MAAMC,UAAYlB,EAAMiB,MAAME,WAAU,CAAA,MAC1D,CAAEzB,MAAON,EAAKO,WAAaP,EAAKM,KAAM,CAAC,CAAA,EAAA,IAAA,CAAA,CAAA,CAAA,EAIrD,EACD0B,KAAMA,IAAA,CAAA,IAAAC,EAAA,OAAA9B,EAAAA,YAAA+B,EAAA,CAAA,MAEK,CACLjC,EAAGG,GAAG,MAAM,EACZJ,EAAKmC,SAAUC,KAAKC,GAAKA,EAAEnC,IAAI,EAC3BD,EAAGqC,IAAI,OAAQ,OAAO,EACtBrC,EAAGqC,IAAI,OAAQ,SAAS,EAC5BtC,EAAKmC,SAAUC,KAAKC,GAAKA,OAAAA,OAAAA,EAAAA,EAAEF,WAAFE,YAAAA,EAAYE,OAAM,EACvCtC,EAAGqC,IAAI,OAAQ,QAAQ,EACvBrC,EAAGqC,IAAI,OAAQ,UAAU,CAAC,CAC/B,EAAA9C,EAAAyC,EAEAjC,EAAKmC,SAAUK,IAAIC,GAAKC,EAAW,CAAEzC,GAAAA,EAAI0C,OAAQF,EAAG,CAAC,CAAC,EAAAR,EAAA,CAAAX,QAAAA,IAAA,CAAAW,CAAA,CAAA,CAAA,CAAA,CAE1D,CAAA,CAIT,CAEO,SAASS,EAAW,CAAEC,OAAAA,EAAQ1C,GAAAA,CAAkD,EAAG,OACxF,OAAI0C,EAAAA,EAAOR,WAAPQ,MAAAA,EAAiBJ,OACZ5B,EAAgBgC,EAAQ1C,CAAE,EAEjCE,EAAAA,YAAAoB,EAAA,CAAA,MAEWtB,EAAGG,GAAG,MAAM,EAAC,MACbuC,EAAOnB,IAAG,QACRmB,EAAOlB,QAAO,SACbkB,EAAOjB,QAAQ,EAAA,CAAAJ,QAAAA,IAExBvB,CAAAA,EAAe4C,EAAQ1C,CAAE,EACzB,OAAO0C,EAAOhB,UAAa,WAC1BgB,EAAOhB,SAAQ,EAAExB,EAAAA,YAAA,OAAA,CAAA,MAEJF,EAAGG,GAAG,OAAO,EAAC,MAAS,CAAEE,MAAOqC,EAAOrC,KAAM,CAAC,EAAA,CACxDqC,EAAOf,OAASe,EAAOnB,GAAG,CAE9B,EACAf,EAAmBkC,EAAQ1C,CAAE,CAAC,CAAA,CAAA,CAIvC"}