UNPKG

vexip-ui

Version:

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

1 lines 6.75 kB
{"version":3,"file":"render.mjs","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":"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"}