syncfusion-react-menu — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited syncfusion-react-menu (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The Syncfusion React Menu component is a flexible, feature-rich navigation control for creating hierarchical menu structures with support for icons, separators, animations, accessibility, hamburger mode, scrolling, event handling, and item state management. Use it to build navigation bars, dropdown menus, context menus, mobile-responsive menus, and complex hierarchical navigation systems.
| Component | Best For |
|---|---|
| Menu | Hierarchical navigation, dropdown menus, file menus, hamburger menus |
| Navbar | Linear top navigation |
| Sidebar | Fixed side navigation panel |
| Tabs | Flat content sections with switching |
import { MenuComponent, MenuItemModel } from '@syncfusion/ej2-react-navigations';
import React from 'react';
function App() {
const menuItems: MenuItemModel[] = [
{
text: 'File',
items: [
{ text: 'New' },
{ text: 'Open' },
{ text: 'Save' }
]
},
{
text: 'Edit',
items: [
{ text: 'Cut' },
{ text: 'Copy' },
{ text: 'Paste' }
]
}
];
return (
<MenuComponent items={menuItems}></MenuComponent>
);
}
export default App;📄 Read: references/getting-started.md
📄 Read: references/properties-and-configuration.md
📄 Read: references/methods-api.md
📄 Read: references/events-and-callbacks.md
📄 Read: references/data-binding.md
📄 Read: references/menu-items-customization.md
📄 Read: references/styling-and-appearance.md
📄 Read: references/hamburger-mode.md
📄 Read: references/use-case-scenarios.md
📄 Read: references/accessibility.md
import { MenuComponent, MenuItemModel } from '@syncfusion/ej2-react-navigations';
import * as React from 'react';
function App() {
// Define menu structure
const menuItems: MenuItemModel[] = [
{
text: 'File',
items: [
{ text: 'New' },
{ text: 'Open' },
{ text: 'Save' },
{ separator: true },
{ text: 'Exit' }
]
},
{
text: 'Edit',
items: [
{ text: 'Cut' },
{ text: 'Copy' },
{ text: 'Paste' }
]
},
{
text: 'Help'
}
];
return (
<MenuComponent items={menuItems}></MenuComponent>
);
}
export default App;| Property | Type | Default | Purpose |
|---|---|---|---|
items | MenuItemModel[] | [] | Menu items to render |
fields | FieldSettingsModel | - | Data field mappings |
hamburgerMode | boolean | false | Enable mobile hamburger view |
enableScrolling | boolean | true | Allow scrolling for large menus |
enablePersistence | boolean | false | Save state across sessions |
enableRtl | boolean | false | Right-to-left text support |
orientation | Orientation | Horizontal | Layout direction |
animationSettings | MenuAnimationSettings | - | Animation configuration |
hoverDelay | number | 400 | Sub-menu hover delay (ms) |
showItemOnClick | boolean | false | Show items only on click |
enableHtmlSanitizer | boolean | true | Sanitize HTML content |
cssClass | string | - | Custom CSS classes |
locale | string | 'en-US' | Culture/language setting |
target | string | - | Element selector for hamburger |
title | string | - | Hamburger mode title text |
| Method | Parameters | Purpose |
|---|---|---|
insertBefore() | item, selector | Insert before a menu item |
insertAfter() | item, selector | Insert after a menu item |
removeItems() | selectors | Remove items by selector |
enableItems() | selectors, enable | Enable/disable items |
showItems() | selectors | Show hidden items |
hideItems() | selectors | Hide visible items |
setItem() | item, selector | Update item properties |
getItemIndex() | selector | Get item index in menu |
open() | - | Open hamburger menu |
close() | - | Close hamburger menu |
destroy() | - | Cleanup component |
| Event | Trigger | Argument Type |
|---|---|---|
select | Menu item clicked | MenuEventArgs |
beforeOpen | Before sub-menu opens | BeforeOpenCloseMenuEventArgs |
beforeClose | Before sub-menu closes | BeforeOpenCloseMenuEventArgs |
onOpen | After sub-menu opens | OpenCloseMenuEventArgs |
onClose | After sub-menu closes | OpenCloseMenuEventArgs |
beforeItemRender | Before item renders | BeforeItemRenderEventArgs |
created | Component initialized | Object |
const handleMenuSelect = (args) => {
console.log(`Selected: ${args.item.text}`);
// Handle the selected menu item
};
<MenuComponent
items={menuItems}
select={handleMenuSelect}
></MenuComponent>let menuObj: MenuComponent;
const addMenuItem = () => {
menuObj.insertAfter([{ text: 'New Item' }], 'File');
};
<MenuComponent
ref={(menu) => (menuObj = menu)}
items={menuItems}
></MenuComponent>const handleBeforeOpen = (args) => {
if (args.item.text === 'Save') {
args.item.disabled = true; // Disable based on condition
}
};
<MenuComponent
items={menuItems}
beforeOpen={handleBeforeOpen}
></MenuComponent>~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.