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

Function AppMenuBar

web/pgadmin/static/js/AppMenuBar.jsx:61–152  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

59
60
61export default function AppMenuBar() {
62
63 const forceUpdate = useForceUpdate();
64 const pgAdmin = usePgAdmin();
65
66 useEffect(()=>{
67 pgAdmin.Browser.Events.on('pgadmin:enable-disable-menu-items', _.debounce(()=>{
68 forceUpdate();
69 }, 100));
70 pgAdmin.Browser.Events.on('pgadmin:refresh-app-menu', _.debounce(()=>{
71 forceUpdate();
72 }, 100));
73 }, []);
74
75 const getPgMenuItem = (menuItem, i)=>{
76 if(menuItem.type == 'separator') {
77 return <PgMenuDivider key={i}/>;
78 }
79 const hasCheck = typeof menuItem.checked == 'boolean';
80
81 return <PgMenuItem
82 key={i}
83 disabled={menuItem.isDisabled}
84 onClick={()=>{
85 menuItem.callback();
86 if(hasCheck) {
87 forceUpdate();
88 }
89 }}
90 hasCheck={hasCheck}
91 checked={menuItem.checked}
92 closeOnCheck={true}
93 shortcut={menuItem.shortcut}
94 >{menuItem.label}</PgMenuItem>;
95 };
96
97 const userMenuInfo = pgAdmin.Browser.utils.userMenuInfo;
98
99 const getPgMenu = (menu)=>{
100 return menu.getMenuItems()?.map((menuItem, i)=>{
101 const submenus = menuItem.getMenuItems();
102 if(submenus) {
103 return <PgSubMenu key={menuItem.label} label={menuItem.label}>
104 {getPgMenu(menuItem)}
105 </PgSubMenu>;
106 }
107 return getPgMenuItem(menuItem, i);
108 });
109 };
110
111 return (
112 <StyledBox data-test="app-menu-bar">
113 <div className='AppMenuBar-logo' />
114 <div className='AppMenuBar-menus'>
115 {pgAdmin.Browser.MainMenus?.map((menu)=>{
116 return (
117 <PgMenu
118 menuButton={<PrimaryButton key={menu.label} data-label={menu.label}>{menu.label}<KeyboardArrowDownIcon fontSize="small" /></PrimaryButton>}

Callers

nothing calls this directly

Calls 5

useForceUpdateFunction · 0.90
usePgAdminFunction · 0.90
getPgMenuFunction · 0.85
onMethod · 0.80
getPgMenuItemFunction · 0.70

Tested by

no test coverage detected