menu.js (1218B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */ 4 5 const Menu = require("resource://devtools/client/framework/menu.js"); 6 const MenuItem = require("resource://devtools/client/framework/menu-item.js"); 7 8 export function showMenu(evt, items) { 9 if (items.length === 0) { 10 return; 11 } 12 13 const menu = new Menu(); 14 items 15 .filter(item => item.visible === undefined || item.visible === true) 16 .forEach(item => { 17 const menuItem = new MenuItem(item); 18 menuItem.submenu = createSubMenu(item.submenu); 19 menu.append(menuItem); 20 }); 21 22 menu.popup(evt.screenX, evt.screenY, window.parent.document); 23 } 24 25 function createSubMenu(subItems) { 26 if (subItems) { 27 const subMenu = new Menu(); 28 subItems.forEach(subItem => { 29 subMenu.append(new MenuItem(subItem)); 30 }); 31 return subMenu; 32 } 33 return null; 34 } 35 36 export function buildMenu(items) { 37 return items 38 .map(itm => { 39 const hide = typeof itm.hidden === "function" ? itm.hidden() : itm.hidden; 40 return hide ? null : itm.item; 41 }) 42 .filter(itm => itm !== null); 43 }