<Menuplacement="top"trigger={({ ...triggerProps }) => {return (<Button {...triggerProps}><ButtonText>Menu</ButtonText></Button>)}}><MenuItem key="Community" textValue="Community"><Icon as={GlobeIcon} size="sm" mr="$2" /><MenuItemLabel size="sm">Community</MenuItemLabel></MenuItem><MenuItem key="Plugins" textValue="Plugins">{/* PuzzleIcon is imported from 'lucide-react-native' */}<Icon as={PuzzleIcon} size="sm" mr="$2" /><MenuItemLabel size="sm">Plugins</MenuItemLabel></MenuItem><MenuItem key="Theme" textValue="Theme">{/* PaintBucket is imported from 'lucide-react-native' */}<Icon as={PaintBucket} size="sm" mr="$2" /><MenuItemLabel size="sm">Theme</MenuItemLabel></MenuItem><MenuItem key="Settings" textValue="Settings"><Icon as={SettingsIcon} size="sm" mr="$2" /><MenuItemLabel size="sm">Settings</MenuItemLabel></MenuItem><MenuItem key="Add account" textValue="Add account"><Icon as={AddIcon} size="sm" mr="$2" /><MenuItemLabel size="sm">Add account</MenuItemLabel></MenuItem></Menu>
import { Menu } from "@darden/design-system"
export default () => (<Menu><MenuItem><MenuItemLabel /></MenuItem></Menu>)
Prop | Type | Default | Description |
---|---|---|---|
trigger | (_props: any, state: { open: boolean; }) => Element | - | Function that returns a React Element. This element will be used as a Trigger for the Menu |
placement | "bottom" | "top" | "right" | "left" | "top left" | "top right" | "bottom left" | "bottom right" | "right top" | "right bottom" | "left top" | "left bottom" | bottom left | menu placement |
defaultIsOpen | boolean | false | If true, the menu will be opened by default. |
onOpen | () => void | true | This function will be invoked when the menu is opened. |
onClose | () => void | - | This function will be invoked when menu is closed. It will also be called when the user attempts to close the menu via Escape key or backdrop press. |
isOpen | boolean | false | Whether the menu is opened. Useful for controlling the open state. |
offset | number | - | The additional offset applied along the main axis between the
element and its trigger element. |
crossOffset | number | - | The additional offset applied along the cross axis between the
element and its trigger element. |
disabledKeys | string [] | - | Item keys in this collection will be disabled. |
closeOnSelect | boolean | true | This prop determine whether menu is closed after option is selected. |
selectedKeys | 'all' | Iterable<Key> | - | The currently selected keys in the collection (controlled). |
selectionMode | 'none'| 'single' | 'multiple' | - | The type of selection that is allowed in the collection. |
onSelectionChange | (keys: 'all' | Iterable<Key>) => void | - | Handler that is called when the selection changes. |
Prop | Type | Default | Description |
---|---|---|---|
closeOnSelect | boolean | true | This prop determine whether menu is closed after option is selected. |
Sx Prop | Description |
---|---|
_text | Prop to style MenuItemLabel Component |
<Menuplacement="top"trigger={({ ...triggerProps }) => {return (<Button {...triggerProps}><ButtonText>Menu</ButtonText></Button>)}}><MenuItem key="Community" textValue="Community"><Icon as={GlobeIcon} size="sm" mr="$2" /><MenuItemLabel size="sm">Community</MenuItemLabel></MenuItem><MenuItem key="Plugins" textValue="Plugins">{/* PuzzleIcon is imported from 'lucide-react-native' */}<Icon as={PuzzleIcon} size="sm" mr="$2" /><MenuItemLabel size="sm">Plugins</MenuItemLabel></MenuItem><MenuItem key="Theme" textValue="Theme">{/* PaintBucket is imported from 'lucide-react-native' */}<Icon as={PaintBucket} size="sm" mr="$2" /><MenuItemLabel size="sm">Theme</MenuItemLabel></MenuItem><MenuItem key="Settings" textValue="Settings"><Icon as={SettingsIcon} size="sm" mr="$2" /><MenuItemLabel size="sm">Settings</MenuItemLabel></MenuItem><MenuItem key="Add account" textValue="Add account"><Icon as={AddIcon} size="sm" mr="$2" /><MenuItemLabel size="sm">Add account</MenuItemLabel></MenuItem></Menu>
<Menuplacement={"top"}disabledKeys={["Theme"]}trigger={({ ...triggerProps }) => {return (<Button {...triggerProps}><ButtonText>Menu</ButtonText></Button>)}}><MenuItem key="Community" textValue="Community"><Icon as={GlobeIcon} size="sm" mr="$2" /><MenuItemLabel size="sm">Community</MenuItemLabel></MenuItem><MenuItem key="Plugins" textValue="Plugins">{/* PuzzleIcon is imported from 'lucide-react-native' */}<Icon as={PuzzleIcon} size="sm" mr="$2" /><MenuItemLabel size="sm">Plugins</MenuItemLabel></MenuItem><MenuItem key="Theme" textValue="Theme">{/* PaintBucket is imported from 'lucide-react-native' */}<Icon as={PaintBucket} size="sm" mr="$2" /><MenuItemLabel size="sm">Theme</MenuItemLabel></MenuItem><MenuItem key="Settings" textValue="Settings"><Icon as={SettingsIcon} size="sm" mr="$2" /><MenuItemLabel size="sm">Settings</MenuItemLabel></MenuItem><MenuItem key="Add account" textValue="Add account"><Icon as={AddIcon} size="sm" mr="$2" /><MenuItemLabel size="sm">Add account</MenuItemLabel></MenuItem></Menu>
function Example() {const [selected, setSelected] = React.useState(new Set([]))return (<Menuplacement="bottom left"selectionMode="single"selectedKeys={selected}onSelectionChange={(keys) => {console.log("onSelectionChange", keys)setSelected(keys)if (keys.currentKey === "Community") {console.log("Push to", keys.currentKey, "route")} else if (keys.currentKey === "Plugins") {console.log("Push to", keys.currentKey, "route")} else if (keys.currentKey === "Theme") {console.log("Push to", keys.currentKey, "route")} else if (keys.currentKey === "Settings") {console.log("Push to", keys.currentKey, "route")}}}closeOnSelect={true}trigger={({ ...triggerProps }) => {return (<Button {...triggerProps}><ButtonText>Menu</ButtonText></Button>)}}><MenuItem key="Community" textValue="Community"><Icon as={GlobeIcon} size="sm" mr="$2" /><MenuItemLabel size="sm">Community</MenuItemLabel></MenuItem><MenuItem key="Plugins" textValue="Plugins">{/* PuzzleIcon is imported from 'lucide-react-native' */}<Icon as={PuzzleIcon} size="sm" mr="$2" /><MenuItemLabel size="sm">Plugins</MenuItemLabel></MenuItem><MenuItem key="Theme" textValue="Theme">{/* PaintBucket is imported from 'lucide-react-native' */}<Icon as={PaintBucket} size="sm" mr="$2" /><MenuItemLabel size="sm">Theme</MenuItemLabel></MenuItem><MenuItem key="Settings" textValue="Settings"><Icon as={SettingsIcon} size="sm" mr="$2" /><MenuItemLabel size="sm">Settings</MenuItemLabel></MenuItem></Menu>)}