UNPKG

@extclp/vexip-ui

Version:

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

1 lines 5.61 kB
{"version":3,"file":"contextmenu.vue2.mjs","sources":["../../../components/contextmenu/contextmenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Dropdown } from '@/components/dropdown'\r\nimport { DropdownList } from '@/components/dropdown-list'\r\nimport { Renderer } from '@/components/renderer'\r\n\r\nimport { reactive, ref } from 'vue'\r\n\r\nimport { useNameHelper } from '@vexip-ui/config'\r\nimport { useRtl } from '@vexip-ui/hooks'\r\nimport { isFunction } from '@vexip-ui/utils'\r\nimport { renderItem } from './render'\r\n\r\nimport type { ContextmenuConfig, ContextmenuOptions, Key } from './symbol'\r\n\r\ndefineOptions({ name: 'Contextmenu' })\r\n\r\nconst nh = useNameHelper('contextmenu')\r\nconst { isRtl } = useRtl()\r\nconst visible = ref(false)\r\nconst configs = ref<ContextmenuConfig[]>([])\r\nconst appear = ref(false)\r\n\r\nconst position = reactive({\r\n x: 0,\r\n y: 0,\r\n})\r\n\r\nconst onSelect = ref<((keys: Key[]) => void) | null>(null)\r\nconst onCancel = ref<(() => void) | null>(null)\r\n\r\nfunction openContextmenu(options: ContextmenuOptions) {\r\n position.x = options.clientX || 0\r\n position.y = options.clientY || 0\r\n configs.value = options.configs\r\n appear.value = options.appear ?? false\r\n\r\n visible.value = true\r\n\r\n return new Promise<Key[] | null>(resolve => {\r\n onSelect.value = (keys: Key[]) => {\r\n resolve(keys)\r\n }\r\n onCancel.value = () => {\r\n resolve(null)\r\n }\r\n })\r\n}\r\n\r\nfunction afterContextmenu() {\r\n onSelect.value = null\r\n onCancel.value = null\r\n}\r\n\r\nfunction handleSelect(keys: Key[]) {\r\n visible.value = false\r\n\r\n if (isFunction(onSelect.value)) {\r\n onSelect.value(keys)\r\n afterContextmenu()\r\n }\r\n}\r\n\r\nfunction handleCancel() {\r\n visible.value = false\r\n\r\n if (isFunction(onCancel.value)) {\r\n onCancel.value()\r\n afterContextmenu()\r\n }\r\n}\r\n\r\ndefineExpose({ visible, position, openContextmenu, handleSelect, handleCancel })\r\n</script>\r\n\r\n<template>\r\n <Dropdown\r\n v-model:visible=\"visible\"\r\n :class=\"[nh.b(), nh.bs('vars')]\"\r\n trigger=\"click\"\r\n :placement=\"isRtl ? 'left-start' : 'right-start'\"\r\n :appear=\"appear\"\r\n :transfer=\"false\"\r\n :style=\"{\r\n top: `${position.y}px`,\r\n left: `${position.x}px`\r\n }\"\r\n @contextmenu.prevent.stop\r\n @select=\"handleSelect\"\r\n @outside-close=\"handleCancel\"\r\n >\r\n <!-- <div :class=\"nh.be('anchor')\"></div> -->\r\n <template #drop>\r\n <DropdownList\r\n :class=\"[\r\n nh.be('list'),\r\n configs.some(c => c.icon) ? nh.bem('list', 'icons') : nh.bem('list', 'no-icon'),\r\n configs.some(c => c.children && c.children.length)\r\n ? nh.bem('list', 'arrows')\r\n : nh.bem('list', 'no-arrow')\r\n ]\"\r\n >\r\n <Renderer\r\n v-for=\"item in configs\"\r\n :key=\"item.key\"\r\n :data=\"{ config: item, nh }\"\r\n :renderer=\"renderItem\"\r\n ></Renderer>\r\n </DropdownList>\r\n </template>\r\n </Dropdown>\r\n</template>\r\n"],"names":["nh","useNameHelper","isRtl","useRtl","visible","ref","configs","appear","position","reactive","onSelect","onCancel","openContextmenu","options","resolve","keys","afterContextmenu","handleSelect","isFunction","handleCancel","__expose","_createBlock","_unref","Dropdown","$event","_normalizeStyle","_createVNode","DropdownList","_normalizeClass","c","_createElementBlock","_Fragment","_renderList","item","Renderer","renderItem"],"mappings":";;;;;;;;;;;;;;;AAgBM,UAAAA,IAAKC,EAAc,aAAa,GAChC,EAAE,OAAAC,EAAM,IAAIC,EAAO,GACnBC,IAAUC,EAAI,EAAK,GACnBC,IAAUD,EAAyB,EAAE,GACrCE,IAASF,EAAI,EAAK,GAElBG,IAAWC,EAAS;AAAA,MACxB,GAAG;AAAA,MACH,GAAG;AAAA,IAAA,CACJ,GAEKC,IAAWL,EAAoC,IAAI,GACnDM,IAAWN,EAAyB,IAAI;AAE9C,aAASO,EAAgBC,GAA6B;AAC3C,aAAAL,EAAA,IAAIK,EAAQ,WAAW,GACvBL,EAAA,IAAIK,EAAQ,WAAW,GAChCP,EAAQ,QAAQO,EAAQ,SACjBN,EAAA,QAAQM,EAAQ,UAAU,IAEjCT,EAAQ,QAAQ,IAET,IAAI,QAAsB,CAAWU,MAAA;AACjC,QAAAJ,EAAA,QAAQ,CAACK,MAAgB;AAChC,UAAAD,EAAQC,CAAI;AAAA,QACd,GACAJ,EAAS,QAAQ,MAAM;AACrB,UAAAG,EAAQ,IAAI;AAAA,QACd;AAAA,MAAA,CACD;AAAA,IAAA;AAGH,aAASE,IAAmB;AAC1B,MAAAN,EAAS,QAAQ,MACjBC,EAAS,QAAQ;AAAA,IAAA;AAGnB,aAASM,EAAaF,GAAa;AACjC,MAAAX,EAAQ,QAAQ,IAEZc,EAAWR,EAAS,KAAK,MAC3BA,EAAS,MAAMK,CAAI,GACFC,EAAA;AAAA,IACnB;AAGF,aAASG,IAAe;AACtB,MAAAf,EAAQ,QAAQ,IAEZc,EAAWP,EAAS,KAAK,MAC3BA,EAAS,MAAM,GACEK,EAAA;AAAA,IACnB;AAGF,WAAAI,EAAa,EAAE,SAAAhB,GAAS,UAAAI,GAAU,iBAAAI,GAAiB,cAAAK,GAAc,cAAAE,GAAc,mBAI7EE,EAkCWC,EAAAC,CAAA,GAAA;AAAA,MAjCD,SAASnB,EAAO;AAAA,iDAAPA,EAAO,QAAAoB;AAAA,MACvB,UAAQF,EAAEtB,CAAA,EAAC,KAAKsB,EAAAtB,CAAA,EAAG,GAAE,MAAA,CAAA,CAAA;AAAA,MACtB,SAAQ;AAAA,MACP,WAAWsB,EAAKpB,CAAA,IAAA,eAAA;AAAA,MAChB,QAAQK,EAAM;AAAA,MACd,UAAU;AAAA,MACV,OAAKkB,EAAA;AAAA,QAAmB,KAAA,GAAAjB,EAAS,CAAC;AAAA,QAAsB,MAAA,GAAAA,EAAS,CAAC;AAAA,MAAA;MAIlE,iCAAD,MAAyB;AAAA,MAAA,GAAA,CAAA,WAAA,MAAA,CAAA;AAAA,MACxB,UAAQS;AAAA,MACR,gBAAeE;AAAA,IAAA;MAGL,QACT,MAee;AAAA,QAffO,EAeeJ,EAAAK,CAAA,GAAA;AAAA,UAdZ,OAAKC,EAAA;AAAA,YAAeN,EAAAtB,CAAA,EAAG,GAAE,MAAA;AAAA,YAAqBM,EAAA,MAAQ,KAAK,OAAKuB,EAAE,IAAI,IAAIP,KAAG,IAAuB,QAAA,OAAA,IAAAA,EAAAtB,CAAA,EAAG,IAAG,QAAA,SAAA;AAAA,YAAgCM,EAAA,MAAQ,KAAK,CAAAuB,MAAKA,EAAE,YAAYA,EAAE,SAAS,MAAM,IAAiBP,EAAAtB,CAAA,EAAG,IAAG,QAAA,QAAA,IAAkCsB,EAAAtB,CAAA,EAAG,IAAG,QAAA,UAAA;AAAA;;qBASzP,MAAuB;AAAA,oBADzB8B,EAKYC,GAAA,MAAAC,EAJK1B,EAAO,OAAA,CAAf2B,YADTZ,EAKYC,EAAAY,CAAA,GAAA;AAAA,cAHT,KAAKD,EAAK;AAAA,cACV,MAAI,EAAA,QAAYA,GAAI,IAAEX,EAAEtB,CAAA,EAAA;AAAA,cACxB,UAAUsB,EAAUa,CAAA;AAAA;;;;;;;;;"}