Vaadin 对话框以编程方式调整大小

Vaadin Dialog resize programmatically

Vaadin 14.2.0.alpha7 向对话框组件 (https://vaadin.com/api/platform/14.2.0.alpha7/com/vaadin/flow/component/dialog/Dialog.html) 添加了新功能,尤其是调整大小的可用性。不幸的是,我无法找到一种方法来创建带有宽度的对话框,我既不需要在打开对话框后以编程方式设置宽度。

以下是我用于描述目的的几行代码(未成功):

    dialog.isResizable = true

    dialog.width = "900px"


    dialog.addOpenedChangeListener { event ->

        println("!!!opened-changed event fired")

        dialog.width = "900px"

        println("!!!dialog width = ${dialog.width}")
    }

    dialog.addResizeListener { event ->

        println("!!! on resize event width = ${dialog.width}")
    }

当我打开对话框时,它的宽度有限(大约 500 像素),OpenedChanged 事件被触发并打印出该对话框的宽度为 900 像素(实际上不是!),当我手动调整它的大小时,Resize 事件被触发并打印出该对话框的宽度约为 600 像素(在我使用鼠标手动增加了它之后)。

我知道 Dialog 的早期版本在模板中的宽度有限(大约 500 像素),并且有一种解决方法是通过导入样式来调整对话框宽度。我希望新版本能够在不触及模板和客户端的情况下增加对话框宽度。

有没有什么方法可以设置对话框宽度并在不触及客户端模板的情况下以编程方式打开时进行调整?

P.S。 14.2.0 版本宣布将在 4 月发布,所以我认为这个问题即使现在它的预发布版本也是合适的。

这是由于 ~560pxmax-width 设置符合 materials 设计。这里有一张关于它的票:Dialog Size - Material Theme。 (在默认的 Lumo 主题中,这是开箱即用的。您可以通过在 MainLayout.kt 中注释掉 @Theme(value = Material::class, variant = Material.LIGHT) 来验证它)

不幸的是,由于样式针对 overlay 部分,因此解决此问题的唯一方法是使用样式文件。另一方面,在当前版本中它应该非常简单:)

我根据需要的更改向您的存储库创建了拉取请求。随意使用它,如果你想要 Make width acccept values more than 500px :)