docs/menu.md
:::{php:namespace} Atk4\Ui
:::
(menu)=
# Menu
:::{php:class} Menu
:::
Menu implements horizontal or vertical multi-level menu by using Fomantic-UI 'menu'.
## Using Menu
:::{php:method} addItem($label, $action)
:::
Here is a simple usage:
```
$menu = Menu::addTo($app);
$menu->addItem('foo');
$menu->addItem('bar');
```
to make menu vertical:
```
$menu->addClass('vertical');
```
## Decorating Menu Items
See {php:class}`MenuItem` for more options:
```
$menu->addItem(['foo', 'icon' => 'book']);
```
## Specifying Links and Actions
Menu items can use links and actions:
```
$menu->addItem('foo', 'test.php');
$menu->addItem('bar', new JsModal('Test'));
```
## Creating sub-menus
:::{php:method} addMenu($label)
:::
:::{php:method} addGroup($label)
:::
:::{php:method} addRightMenu($label)
:::
You can create sub-menu for either vertical or horizontal menu. For a vertical
menu you can also use groups. For horizontal menu, you can use addRightMenu.
```
$menu = Menu::addTo($app);
$menu->addItem('foo');
$sub = $menu->addMenu('Some Bars');
$sub->addItem('bar 1');
$sub->addItem('bar 2');
```
## Headers
:::{php:method} addHeader($label)
:::
## Advanced Use
You can add other elements inside menu. Refer to `demos/basic/menu.php`.
## MenuItem
:::{php:class} MenuItem
:::
:::{php:attr} label
:::
:::{php:attr} icon
:::
Additionally you can use {php:meth}`View::addClass()` to disable or style your menu items.