docs/menu.md

Summary

Maintainability
Test Coverage
:::{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.