listMenu

listMenu - это компонент для отображения вертикального меню с выпадающими подменю, которые можно сворачивать.

XML-элемент

listMenu

Java-класс

JmixListMenu

Атрибуты

id - alignSelf - classNames - colspan - css - height - loadMenuConfig - maxHeight - maxWidth - minHeight - minWidth - themeNames - visible - width

Обработчики

AttachEvent - DetachEvent

Основы

listMenu, вместе с drawerToggle и drawerLayout, используется в MainView.

listMenu позволяет вам настраивать главный экран, управлять элементами меню и применять собственные стили.

Его также можно использовать в любом экране как любой другой визуальный компонент.

Чтобы добавить компонент в экран, поместите его в дескриптор XML:

<listMenu id="listMenu"/>
list menu

Вы также можете создать компонент и добавить его в экран в Java-контроллере:

@ViewComponent
private VerticalLayout navigation;
@Autowired
private UiComponents uiComponents;
@Autowired
private ApplicationContext applicationContext;

@Subscribe
public void onInit(final InitEvent event) {
    JmixListMenu listMenu = uiComponents.create(JmixListMenu.class);

    MenuConfigListMenuItemProvider itemProvider =
            applicationContext.getBean(MenuConfigListMenuItemProvider.class);
    listMenu.setMenuItemProvider(itemProvider);
    navigation.add(listMenu);

    itemProvider.load();
}

Привязка данных

Атрибут loadMenuConfig управляет тем, загружает ли компонент listMenu свою структуру из класса MenuConfig. По умолчанию этот атрибут установлен в true, что означает, что listMenu будет загружать свои элементы меню из файла menu.xml.

Вы также можете создавать элементы меню программным образом, используя экземпляр JmixListMenu, например:

@Route("")
@ViewController("MainView")
@ViewDescriptor("main-view.xml")
public class MainView extends StandardMainView {

    @ViewComponent
    private JmixListMenu menu;

    @Subscribe
    public void onInit(final InitEvent event) {
        ListMenu.MenuBarItem rootItem = new ListMenu.MenuBarItem("help")
                .withTitle("Help")
                .withPrefixComponent(VaadinIcon.QUESTION.create()); (1)
        ListMenu.MenuItem subItemNews = new ListMenu.MenuItem("news")
                .withTitle("News")
                .withClickHandler(  (2)
                        item -> {
                            notifications.create("News menu item clicked")
                                    .show();
                        }
                );
        rootItem.addChildItem(subItemNews);
        ListMenu.MenuSeparatorItem sep =
                new ListMenu.MenuSeparatorItem("separator"); (3)
        rootItem.addChildItem(sep);
        ListMenu.MenuItem subItemBlog = new ListMenu.MenuItem("blog")
                .withTitle("Blog");
        rootItem.addChildItem(subItemBlog);
        menu.addMenuItem(rootItem);
    }
}
1 Создает новый элемент меню с иконкой.
2 Создает новый элемент меню с обработчиком clickHandler.
3 Создает новый элемент-разделитель.

Значки для элементов меню

Пример настройки значков для элементов меню вы можете найти в разделе События UI.

Варианты оформления

Атрибут themeNames позволяет вам назначить определенный стиль listMenu из набора предопределенных вариантов.

Обратный порядок отображения маркера

С настройкой themeNames="toggle-reverse" в компоненте listMenu, маркер развертывания/сворачивания будет перемещен в конец родительского элемента меню. Это означает, что иконка, показывающая, развернуты ли дочерние элементы меню или свернуты, будет расположена справа от метки родительского элемента меню.

list menu toggle reverse

Атрибуты

В Jmix есть множество общих атрибутов, которые выполняют одну и ту же функцию для всех компонентов.

Ниже приведены атрибуты, специфичные для listMenu:

Название

Описание

Значение по умолчанию

loadMenuConfig

Атрибут loadMenuConfig используется для управления загрузкой структуры меню из конфигурации меню. По умолчанию его значение равно true, что означает, что компонент listMenu загружает свою структуру меню из MenuConfig по умолчанию. Если вы хотите использовать другой поставщик элементов, вы должны сначала установить атрибут loadMenuConfig в false.

true