TermUI.Widgets.Menu (TermUI v0.2.0)
View SourceMenu widget for displaying hierarchical actions.
Menu displays a list of items that can be actions, submenus, separators, or checkboxes. Supports keyboard navigation and shortcut display.
Usage
Menu.new(
items: [
Menu.action(:new, "New File", shortcut: "Ctrl+N"),
Menu.action(:open, "Open...", shortcut: "Ctrl+O"),
Menu.separator(),
Menu.submenu(:recent, "Recent Files", [
Menu.action(:file1, "document.txt"),
Menu.action(:file2, "notes.md")
]),
Menu.separator(),
Menu.checkbox(:autosave, "Auto Save", checked: true),
Menu.action(:exit, "Exit", shortcut: "Ctrl+Q")
],
on_select: fn id -> handle_menu_action(id) end
)Item Types
:action- Selectable menu item:submenu- Item with nested menu items:separator- Visual divider:checkbox- Toggleable item with check state
Keyboard Navigation
- Up/Down: Move between items
- Enter/Space: Select item or expand submenu
- Left: Collapse submenu
- Right: Expand submenu
- Escape: Close menu
Summary
Functions
Creates an action menu item.
Creates a checkbox item.
Gets checkbox state.
Collapses a submenu by ID.
Expands a submenu by ID.
Checks if a submenu is expanded.
Gets the currently focused item ID.
Creates new Menu widget props.
Creates a separator.
Creates a submenu item.
Types
Functions
Creates an action menu item.
Creates a checkbox item.
Gets checkbox state.
Collapses a submenu by ID.
Expands a submenu by ID.
Checks if a submenu is expanded.
Gets the currently focused item ID.
Creates new Menu widget props.
Options
:items- List of menu items (required):on_select- Callback when item is selected:on_toggle- Callback when checkbox is toggled:width- Menu width (default: auto):item_style- Style for normal items:selected_style- Style for focused item:disabled_style- Style for disabled items
@spec separator() :: map()
Creates a separator.