Стандартные иконки

Jmix включает более 600 стандартных иконок, организованных в три набора:

Jmix

Набор иконок по умолчанию. Объединяет все иконки Vaadin, иконки Lumo, отсутствующие в Vaadin, и иконки, специфичные для Jmix.

Vaadin

Иконки, предоставляемые фреймворком Vaadin.

Lumo

Иконки из дизайн-системы Lumo.

Задание иконки через атрибут

Многие UI-компоненты позволяют добавлять иконки через атрибуты. Некоторые компоненты предоставляют несколько таких атрибутов для разных слотов иконки, например icon, uploadIcon, downloadButtonIcon, dropLabelIcon.

Например:

<icon icon="USER"/>
<button text="Approve" icon="CHECK"/>
<fileUploadField uploadText="Upload file" uploadIcon="UPLOAD"/>

Чтобы использовать иконки из конкретного набора, добавьте соответствующий префикс:

<icon icon="vaadin:user"/>
<button text="Approve" icon="lumo:checkmark"/>
<fileUploadField uploadText="Upload file" uploadIcon="vaadin:upload"/>

Иконки можно просматривать и выбирать в Studio. В панели инспектора нажмите на атрибут иконки, чтобы открыть диалог Choose Icon. В диалоге отобразятся доступные наборы иконок.

choose icon dialog

Задание иконки через вложенный элемент

Некоторые компоненты поддерживают добавление иконок с помощью вложенных элементов, соответствующих определённым слотам иконок, таким как <icon>, <uploadIcon>, <dropdownIcon>, <prefix>, или <suffix>. Такой подход позволяет использовать как встроенные, так и собственные иконки, включая SVG, иконочные шрифты и изображения.

Например:

<button text="Approve">
    <icon>
        <icon icon="CHECK"/>
    </icon>
</button>
<button text="Start">
    <icon>
        <svgIcon resource="/icons/jmix-icon.svg"/>
    </icon>
</button>
<button text="Download">
    <prefix>
        <fontIcon fontFamily="lumo-icons" charCode="ea17"/>
    </prefix>
</button>
<button text="Create">
    <icon>
        <image resource="/icons/icon.png" width="24px"/>
    </icon>
</button>

Программное задание иконки

Иконки можно задавать в коде. Рекомендуется использовать Icons бин как центральный интерфейс для создания компонентов UI, представляющих иконки. Это обеспечивает согласованное поведение (Icons также применяется при разборе XML) и упрощает централизованную замену иконок.

Например:

helperButton.setIcon(icons.get(JmixFontIcon.QUESTION_CIRCLE));

Либо, можно обойти разбор имён иконок через бин и создавать иконки напрямую из конкретного набора:

helperButton.setIcon(VaadinIcon.QUESTION_CIRCLE.create());
editorButton.setIcon(LumoIcon.COG.create());