sidePanelLayout
Компонент компоновки с боковой панелью. Панель может открываться с разных сторон и либо перекрывать основное содержимое, либо сдвигать его. Подходит для отображения фильтров, дополнительной информации или форм редактирования одновременно с основным содержимым.
| Боковую панель можно создать программно при помощи Side Dialog. |
XML Элемент |
|
|---|---|
Java Класс |
|
Атрибуты |
General: id - modal - closeOnOutsideClick - displayAsOverlayOnSmallDevices - visible |
Position: alignSelf - justifySelf - colspan |
|
Size: sidePanelHorizontalSize - sidePanelHorizontalMinSize - sidePanelHorizontalMaxSize - sidePanelVerticalSize - sidePanelVerticalMinSize - sidePanelVerticalMaxSize - height - width - maxHeight - maxWidth - minHeight - minWidth |
|
Look & Feel: css - sidePanelOverlay - sidePanelPosition |
|
Other: closeOnOutsideClick - displayAsOverlayOnSmallDevices - modal - overlayAriaLabel |
|
Handlers |
AttachEvent - DetachEvent - ModalityCurtainClickEvent - SidePanelBeforeOpenEvent - SidePanelAfterOpenEvent - SidePanelCloseEvent |
Основы
SidePanelLayout делит экран на две части:
-
Основная область – содержащая основной контент страницы.
-
Боковая панель — появляется сбоку.

В XML компонент задаётся элементом sidePanelLayout. Он должен содержать два дочерних элемента:
<sidePanelLayout id="sidePanelLayout"
width="100%"
height="100%">
<vbox id="contentBox">
<!-- Main content -->
</vbox>
<vbox id="sidePanelBox" width="100%" height="100%">
<hbox id="headerBox" width="100%"> (1)
<h2 text="Customer information"/>
<sidePanelLayoutCloser/>
</hbox>
<!-- Side panel content -->
</vbox>
</sidePanelLayout>
| 1 | Обычно в панели присутствует кнопка закрытия. Для этого используйте специальный компонент sidePanelLayoutCloser. |
Открытие боковой панели
Панель открывается по действию пользователя, например, по нажатию кнопки. Используйте метод toggleSidePanel():
@ViewComponent
private SidePanelLayout sidePanelLayout;
@Subscribe(id = "toggleButton", subject = "clickListener")
public void onToggleButtonClick(final ClickEvent<JmixButton> event) {
sidePanelLayout.toggleSidePanel();
}
Редактирование в панели
Используйте SidePanelLayout для реализации паттерна master-detail, где основная область содержит список сущностей, а боковая панель используется для редактирования выбранного экземпляра.

Стилизация
Вы можете настроить внешний вид и размеры SidePanelLayout с помощью CSS-переменных и селекторов темы.
Размеры через CSS-переменные
Следующие переменные задают размеры боковой панели. Они применяются ко всем экземплярам SidePanelLayout.
| Значения, заданные в XML или через Java API, имеют приоритет над CSS-переменными. |
Горизонтальные панели (LEFT, RIGHT, INLINE_START, INLINE_END):
Переменная |
Описание |
По умолчанию |
|---|---|---|
|
Предпочтительная ширина панели. |
|
|
Максимальная ширина. |
|
|
Минимальная ширина. |
|
Вертикальные панели (TOP, BOTTOM):
Переменная |
Описание |
По умолчанию |
|---|---|---|
|
Предпочтительная высота панели. |
|
|
Максимальная высота. |
|
|
Минимальная высота. |
|
Внешний вид
Переменная |
Описание |
По умолчанию |
|---|---|---|
|
Длительность анимации открытия и закрытия. |
|
Части
SidePanelLayout предоставляет следующие стилизируемые части:
Часть |
Описание |
|---|---|
|
Контейнер для содержимого, боковой панели и модального фона. |
|
Основное содержимое. |
|
Модальный фон. |
|
Контейнер содержимого боковой панели. |
Состояния
Компонент поддерживает следующие состояния:
Состояние |
Описание |
|---|---|
|
Применяется, когда панель открыта |
|
Применяется, когда панель модальная |
|
Соответствует текущей позиции панели ( |
|
Применяется, когда панель перекрывает содержимое, а не сдвигает его |
Атрибуты
Общие атрибуты имеют одинаковое назначение для всех компонентов. Ниже приведены атрибуты, специфичные для sidePanelLayout.
Имя |
Описание |
По умолчанию |
|---|---|---|
Определяет сторону, с которой появляется панель. Возможные значения:
|
|
|
Определяет, как боковая панель взаимодействует с основным содержимым. Если |
|
|
Если |
|
|
Если Этот атрибут действует только при включённом modal. |
|
|
Sets the accessible label for the overlay element. |
– |
|
Если |
|
|
Определяет горизонтальный размер панели, если она расположена слева или справа. Значение может быть любым допустимым CSS-размером, например |
|
|
Определяет минимальный горизонтальный размер панели при расположении слева или справа. |
– |
|
Определяет максимальный горизонтальный размер панели при расположении слева или справа. |
– |
|
Определяет вертикальный размер панели, если она появляется сверху или снизу. |
|
|
Определяет минимальный вертикальный размер панели. |
– |
|
Определяет максимальный вертикальный размер панели. |
– |
Обработчики
Общие обработчики настраиваются одинаково для всех компонентов. Ниже приведены обработчики, специфичные для sidePanelLayout.
Имя |
Описание |
|---|---|
Срабатывает при клике пользователя по модальному фону. |
|
Срабатывает перед открытием боковой панели. |
|
Срабатывает после полного открытия панели. |
|
Срабатывает при закрытии боковой панели. |