sidePanelLayout 侧边面板

这是一个布局组件,在页面中添加一个可以从不同侧边打开的面板,可以覆盖或推开主要内容。用于需要与主要内容一起显示的上下文信息、过滤器或编辑器。

也可以使用 侧边对话框 以编程方式创建侧边面板。

XML 元素

sidePanelLayout

Java 类

SidePanelLayout

XML 属性

通用: id - modal - closeOnOutsideClick - displayAsOverlayOnSmallDevices - visible

位置: alignSelf - justifySelf - colspan

尺寸: sidePanelHorizontalSize - sidePanelHorizontalMinSize - sidePanelHorizontalMaxSize - sidePanelVerticalSize - sidePanelVerticalMinSize - sidePanelVerticalMaxSize - height - width - maxHeight - maxWidth - minHeight - minWidth

外观: css - sidePanelOverlay - sidePanelPosition

其他: closeOnOutsideClick - displayAsOverlayOnSmallDevices - modal - overlayAriaLabel

事件和处理器

AttachEvent - DetachEvent - ModalityCurtainClickEvent - SidePanelBeforeOpenEvent - SidePanelAfterOpenEvent - SidePanelCloseEvent

基本用法

SidePanelLayout 将页面内容分为两个区域:

  • 主内容区 – 主要的布局区域

  • 侧面板内容区 – 从某一个侧边滑入的侧边内容。

side panel layout basic

如需在 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 可以用在主从范式中,主区域显示实体列表,而侧边面板用于编辑选中的实例。

side panel layout editor

样式

使用 CSS 变量和主题选择器可以自定义 SidePanelLayout 的外观和大小。

尺寸

下列全局变量定义了侧边面板的尺寸。对所有 SidePanelLayout 实例有效。

在 XML 中设置或使用 Java API 设置的值会覆盖 CSS 变量。

水平侧边面板(LEFT、RIGHT、INLINE_START、INLINE_END):

变量

描述

默认值

--jmix-side-panel-layout-horizontal-size

侧边面板的默认宽度。

auto

--jmix-side-panel-layout-horizontal-max-size

最大宽度。

50%

--jmix-side-panel-layout-horizontal-min-size

最小宽度。

14em

垂直侧边面板(TOP、BOTTOM):

变量

描述

默认值

--jmix-side-panel-layout-vertical-size

侧边面板的默认高度。

auto

--jmix-side-panel-layout-vertical-max-size

最大高度。

50%

--jmix-side-panel-layout-vertical-min-size

最小高度。

10em

外观

变量

描述

默认值

--jmix-side-panel-layout-transition-duration

控制打开和关闭动画的时长。

200ms

parts

SidePanelLayout 开放了以下 可样式化的 parts:

部分

描述

jmix-side-panel-layout::part(layout)

内容、侧边面板和模态遮罩的容器。

jmix-side-panel-layout::part(content)

主布局内容。

jmix-side-panel-layout::part(modalityCurtain)

模态遮罩层。

jmix-side-panel-layout::part(sidePanelContent)

侧边面板内容容器。

状态

组件开放了以下 状态:

状态

描述

jmix-side-panel-layout[side-panel-opened]

当侧边面板打开时使用。

jmix-side-panel-layout[modal]

当侧边面板为模态时使用。

jmix-side-panel-layout[side-panel-position='left']

匹配当前的侧边面板位置(right、top 等)。

jmix-side-panel-layout[side-panel-overlay]

当面板覆盖内容而不是推开内容时使用。

XML 属性

通用属性 对所有组件都是一样的配置。下面是 sidePanelLayout 的特殊属性:

名称

描述

默认值

sidePanelPosition

定义面板出现在哪个侧边。可选值为 LEFT、RIGHT、TOP、BOTTOM、INLINE_START 和 INLINE_END。

INLINE_START 和 INLINE_END 遵循页面的阅读方向(LTR 或 RTL)。

RIGHT

sidePanelOverlay

决定侧边面板与主内容的交互方式。

如果为 true,面板覆盖在内容上而不改变其布局。 如果为 false,面板打开时将内容推开。

true

modal

当为 true 时,侧边面板后面会出现一个模态遮罩层,并阻止与主内容的交互,直到面板关闭。

true

closeOnOutsideClick

当为 true 时,点击模态遮罩层会关闭侧边面板。

此属性仅在启用 modal 时有效。

true

overlayAriaLabel

设置覆盖元素的可访问标签。

–

displayAsOverlayOnSmallDevices

如果为 true,侧边面板在小设备上显示为全屏覆盖层,确保内容在移动布局中仍然可用。

true

sidePanelHorizontalSize

定义侧边面板位于布局左侧或右侧时的水平尺寸。

值可以是任何有效的 CSS 尺寸,例如 400px、30% 或 auto。

auto

sidePanelHorizontalMinSize

定义侧边面板位于左侧或右侧时的最小水平尺寸。

–

sidePanelHorizontalMaxSize

定义侧边面板位于左侧或右侧时的最大水平尺寸。

–

sidePanelVerticalSize

定义侧边面板从顶部或底部出现时的垂直尺寸。

auto

sidePanelVerticalMinSize

定义侧边面板的最小垂直尺寸。

–

sidePanelVerticalMaxSize

定义侧边面板的最大垂直尺寸。

–

事件和处理器

通用事件和处理器 对所有组件都是一样的配置。下面是 sidePanelLayout 的特殊事件和处理器:

名称

描述

ModalityCurtainClickEvent

当用户点击模态遮罩层时触发。

SidePanelBeforeOpenEvent

在侧边面板打开之前、显示之前以及开启动画开始之前触发。使用此事件可在面板变得可见之前修改内容。

SidePanelAfterOpenEvent

在侧边面板完全打开且开启动画完成之后触发。

SidePanelCloseEvent

当侧边面板关闭时触发。