docs/developer_docs/components/ui/menu.mdx
import { StoryWithControls } from '../../../src/components/StorybookWrapper';
Navigation menu component supporting horizontal, vertical, and inline modes. Based on Ant Design Menu with Superset styling.
<StoryWithControls component="Menu" props={{ mode: "horizontal", selectable: true, items: [ { label: "Dashboards", key: "dashboards" }, { label: "Charts", key: "charts" }, { label: "Datasets", key: "datasets" }, { label: "SQL Lab", key: "sqllab" } ] }} controls={[ { name: "mode", label: "Mode", type: "select", options: [ "horizontal", "vertical", "inline" ], description: "Menu display mode: horizontal navbar, vertical sidebar, or inline collapsible." }, { name: "selectable", label: "Selectable", type: "boolean", description: "Whether menu items can be selected." }, { name: "multiple", label: "Multiple", type: "boolean", description: "Allow multiple items to be selected." }, { name: "inlineCollapsed", label: "Inline Collapsed", type: "boolean", description: "Whether the inline menu is collapsed (only applies to inline mode)." } ]} />
Edit the code below to experiment with the component:
function Demo() {
return (
<Menu
mode="horizontal"
selectable
items={[
{ label: 'Dashboards', key: 'dashboards' },
{ label: 'Charts', key: 'charts' },
{ label: 'Datasets', key: 'datasets' },
{ label: 'SQL Lab', key: 'sqllab' },
]}
/>
);
}
function VerticalMenu() {
return (
<Menu
mode="vertical"
style={{ width: 200 }}
items={[
{ label: 'Dashboards', key: 'dashboards' },
{ label: 'Charts', key: 'charts' },
{ label: 'Datasets', key: 'datasets' },
{
label: 'Settings',
key: 'settings',
children: [
{ label: 'Profile', key: 'profile' },
{ label: 'Preferences', key: 'preferences' },
],
},
]}
/>
);
}
function MenuWithIcons() {
return (
<Menu
mode="horizontal"
items={[
{ label: <><Icons.DashboardOutlined /> Dashboards</>, key: 'dashboards' },
{ label: <><Icons.LineChartOutlined /> Charts</>, key: 'charts' },
{ label: <><Icons.DatabaseOutlined /> Datasets</>, key: 'datasets' },
{ label: <><Icons.ConsoleSqlOutlined /> SQL Lab</>, key: 'sqllab' },
]}
/>
);
}
| Prop | Type | Default | Description |
|---|---|---|---|
mode | string | "horizontal" | Menu display mode: horizontal navbar, vertical sidebar, or inline collapsible. |
selectable | boolean | true | Whether menu items can be selected. |
items | any | [{"label":"Dashboards","key":"dashboards"},{"label":"Charts","key":"charts"},{"label":"Datasets","key":"datasets"},{"label":"SQL Lab","key":"sqllab"}] | - |
import { Menu } from '@superset/components';
:::tip[Improve this page] This documentation is auto-generated from the component's Storybook story. Help improve it by editing the story file. :::