import React from 'react'; import { PgMenu, PgMenuDivider, PgMenuItem, PgSubMenu } from './Menu'; import PropTypes from 'prop-types'; import gettext from 'sources/gettext'; export default function ContextMenu({menuItems, position, onClose, label='context'}) { const getPgMenuItem = (menuItem, i)=>{ if(menuItem.type == 'separator') { return ; } const hasCheck = typeof menuItem.checked == 'boolean'; return { menuItem.callback(); }} hasCheck={hasCheck} checked={menuItem.checked} >{menuItem.label}; }; return ( {menuItems.length !=0 && menuItems.map((menuItem, i)=>{ const submenus = menuItem.getMenuItems?.(); if(submenus) { return {submenus.map((submenuItem, si)=>{ return getPgMenuItem(submenuItem, i+'-'+si); })} ; } return getPgMenuItem(menuItem, i); })} {menuItems.length == 0 && getPgMenuItem({ label: gettext('No options'), isDisabled: true, }, 0)} ); } ContextMenu.propTypes = { menuItems: PropTypes.array, position: PropTypes.object, onClose: PropTypes.func, label: PropTypes.string, };