UNPKG

vuestic-ui

Version:
1 lines 2.5 kB
{"version":3,"file":"useMenu.mjs","sources":["../../../../../../src/components/va-menu/hooks/useMenu.ts"],"sourcesContent":["import { useMount } from '../../../composables/useMount'\nimport { VaMenu } from '../va-menu'\nimport { ExtractComponentPropTypes } from '../../../utils/component-options'\nimport { onBeforeUnmount, computed } from 'vue'\n\ntype OmitMenuProps = 'modelValue' | 'anchor' | 'cursor' | 'stateful' | 'preset'\n\n/** This hook can be used without plugin used */\nexport const useMenu = () => {\n const { createInstance } = useMount(VaMenu)\n const instances: (() => void)[] = []\n\n const destroyAll = () => instances.forEach(destroy => destroy())\n\n const show = (props: Omit<ExtractComponentPropTypes<typeof VaMenu>, OmitMenuProps> & { event: MouseEvent }) => {\n destroyAll()\n\n props.event.preventDefault()\n\n const destroy = createInstance({\n ...props,\n anchor: props.event.target,\n cursor: {\n getBoundingClientRect () {\n const resX = props.event.clientX\n const resY = props.event.clientY\n return {\n width: 0,\n height: 0,\n x: resX,\n y: resY,\n top: resY,\n right: resX,\n bottom: resY,\n left: resX,\n }\n },\n contextElement: props.event.target,\n },\n stateful: true,\n modelValue: true,\n preset: 'context',\n onBeforeUnmount: () => {\n destroy()\n },\n })\n\n instances.push(destroy)\n\n return () => {\n destroy()\n instances.splice(instances.indexOf(destroy), 1)\n }\n }\n\n onBeforeUnmount(destroyAll)\n\n return {\n show,\n }\n}\n"],"names":[],"mappings":";;;AAQO,MAAM,UAAU,MAAM;AAC3B,QAAM,EAAE,eAAA,IAAmB,SAAS,MAAM;AAC1C,QAAM,YAA4B,CAAA;AAElC,QAAM,aAAa,MAAM,UAAU,QAAQ,CAAA,YAAW,SAAS;AAEzD,QAAA,OAAO,CAAC,UAAiG;AAClG;AAEX,UAAM,MAAM;AAEZ,UAAM,UAAU,eAAe;AAAA,MAC7B,GAAG;AAAA,MACH,QAAQ,MAAM,MAAM;AAAA,MACpB,QAAQ;AAAA,QACN,wBAAyB;AACjB,gBAAA,OAAO,MAAM,MAAM;AACnB,gBAAA,OAAO,MAAM,MAAM;AAClB,iBAAA;AAAA,YACL,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,GAAG;AAAA,YACH,GAAG;AAAA,YACH,KAAK;AAAA,YACL,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,MAAM;AAAA,UAAA;AAAA,QAEV;AAAA,QACA,gBAAgB,MAAM,MAAM;AAAA,MAC9B;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,iBAAiB,MAAM;AACb;MACV;AAAA,IAAA,CACD;AAED,cAAU,KAAK,OAAO;AAEtB,WAAO,MAAM;AACH;AACR,gBAAU,OAAO,UAAU,QAAQ,OAAO,GAAG,CAAC;AAAA,IAAA;AAAA,EAChD;AAGF,kBAAgB,UAAU;AAEnB,SAAA;AAAA,IACL;AAAA,EAAA;AAEJ;"}