tav-ui
Version:
62 lines (59 loc) • 1.71 kB
JavaScript
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