UNPKG

tav-ui

Version:
62 lines (59 loc) 1.71 kB
import { createVNode, render } from 'vue'; import { isClient } from '../../../utils/is2.mjs'; import ContextMenu from './context-menu2.mjs'; const menuManager = { domList: [], resolve: () => { } }; const createContextMenu = function(options) { const { event } = options || {}; event && event?.preventDefault(); if (!isClient) return; return new Promise((resolve) => { const body = document.body; const container = document.createElement("div"); const propsData = {}; if (options.styles) propsData.styles = options.styles; if (options.items) propsData.items = options.items; if (options.event) { propsData.customEvent = event; propsData.axis = { x: event.clientX, y: event.clientY }; } const vm = createVNode(ContextMenu, propsData); render(vm, container); const handleClick = function() { menuManager.resolve(""); }; menuManager.domList.push(container); const remove = function() { menuManager.domList.forEach((dom) => { try { dom && body.removeChild(dom); } catch (error) { } }); body.removeEventListener("click", handleClick); body.removeEventListener("scroll", handleClick); }; menuManager.resolve = function(arg) { remove(); resolve(arg); }; remove(); body.appendChild(container); body.addEventListener("click", handleClick); body.addEventListener("scroll", handleClick); }); }; const destroyContextMenu = function() { if (menuManager) { menuManager.resolve(""); menuManager.domList = []; } }; export { createContextMenu, destroyContextMenu }; //# sourceMappingURL=context-menu-method2.mjs.map