MCPcopy Create free account
hub / github.com/pgadmin-org/pgadmin4 / ContextMenu

Function ContextMenu

web/pgadmin/static/js/components/ContextMenu.jsx:14–61  ·  view source on GitHub ↗
({menuItems, position, onClose, label='context'})

Source from the content-addressed store, hash-verified

12import gettext from 'sources/gettext';
13
14export default function ContextMenu({menuItems, position, onClose, label='context'}) {
15 const getPgMenuItem = (menuItem, i)=>{
16 if(menuItem.type == 'separator') {
17 return <PgMenuDivider key={i}/>;
18 }
19 const hasCheck = typeof menuItem.checked == 'boolean';
20
21 return <PgMenuItem
22 key={i}
23 disabled={menuItem.isDisabled}
24 onClick={()=>{
25 menuItem.callback();
26 }}
27 hasCheck={hasCheck}
28 checked={menuItem.checked}
29 shortcut={menuItem.shortcut}
30 >{menuItem.label}</PgMenuItem>;
31 };
32
33 return (
34 <PgMenu
35 anchorPoint={{
36 x: position?.x,
37 y: position?.y
38 }}
39 open={Boolean(position) && menuItems.length !=0}
40 onClose={onClose}
41 label={label}
42 portal
43 >
44 {menuItems.length !=0 && menuItems.map((menuItem, i)=>{
45 const submenus = menuItem.getMenuItems?.();
46 if(submenus) {
47 return <PgSubMenu key={label+'-'+menuItem.label} label={menuItem.label}>
48 {submenus.map((submenuItem, si)=>{
49 return getPgMenuItem(submenuItem, i+'-'+si);
50 })}
51 </PgSubMenu>;
52 }
53 return getPgMenuItem(menuItem, i);
54 })}
55 {menuItems.length == 0 && getPgMenuItem({
56 label: gettext('No options'),
57 isDisabled: true,
58 }, 0)}
59 </PgMenu>
60 );
61}
62
63ContextMenu.propTypes = {
64 menuItems: PropTypes.array,

Callers

nothing calls this directly

Calls 3

gettextFunction · 0.85
getPgMenuItemFunction · 0.70
getMenuItemsMethod · 0.45

Tested by

no test coverage detected