Vaadin Accordion with Button 总结
Vaadin Accordion with Button in summary
在我的 Vaadin 14 应用程序中,我想添加一个 Accordion
组件,该组件在其摘要(始终显示)中包含多个组件,其中有一个 Button
。单击摘要通常会切换 AccordionPanel
内容的显示。单击摘要中的按钮时,如何防止 AccordionPanel
变为 collapse/expand?
对象的创建简单如下:
Accordion accordion = new Accordion();
MyPanel panel = new MyPanel();
accordion.add(panel);
使用 MyPanel
构造函数只需调用 setSummary()
并使用包含按钮的布局。
将此添加到您的视图中:
UI.getCurrent().getPage()
.executeJs("Array.from(document.getElementsByTagName('vaadin-accordion-panel')).forEach(element=>element.shadowRoot.querySelector(\"div[role=button]\").replaceWith(element.shadowRoot.querySelector(\"div[role=button]\").cloneNode(true)))");
将禁用对所有手风琴切换和手风琴摘要的所有点击。但是,您需要包含一个按钮或触发器来打开和关闭手风琴。不知道这是不是你想要的?
我找到了答案in this thread on the forum。
事实证明,您可以使用此 hack 阻止按钮点击的传播:
button.getElement().addEventListener("click", click -> {
//do nothing
}).addEventData("event.stopPropagation()");
这似乎是框架应该提供的开箱即用的核心功能,但 this ticket 仍然开放。
在我的 Vaadin 14 应用程序中,我想添加一个 Accordion
组件,该组件在其摘要(始终显示)中包含多个组件,其中有一个 Button
。单击摘要通常会切换 AccordionPanel
内容的显示。单击摘要中的按钮时,如何防止 AccordionPanel
变为 collapse/expand?
对象的创建简单如下:
Accordion accordion = new Accordion();
MyPanel panel = new MyPanel();
accordion.add(panel);
使用 MyPanel
构造函数只需调用 setSummary()
并使用包含按钮的布局。
将此添加到您的视图中:
UI.getCurrent().getPage()
.executeJs("Array.from(document.getElementsByTagName('vaadin-accordion-panel')).forEach(element=>element.shadowRoot.querySelector(\"div[role=button]\").replaceWith(element.shadowRoot.querySelector(\"div[role=button]\").cloneNode(true)))");
将禁用对所有手风琴切换和手风琴摘要的所有点击。但是,您需要包含一个按钮或触发器来打开和关闭手风琴。不知道这是不是你想要的?
我找到了答案in this thread on the forum。
事实证明,您可以使用此 hack 阻止按钮点击的传播:
button.getElement().addEventListener("click", click -> {
//do nothing
}).addEventData("event.stopPropagation()");
这似乎是框架应该提供的开箱即用的核心功能,但 this ticket 仍然开放。