您如何在Vaadin Flow中包含自己的图标?您是否使用Vaadin Icons制作了一个this这样的HTML文件,并通过
@HtmlImport("frontend://path/to/your/icons.html")
到目前为止,我没有找到任何文档。所以我猜这是一种可能性吗?
答案 0 :(得分:3)
这里是向Vaadin Flow应用程序中添加一些IcoMoon图标的示例;
使用https://icomoon.io/docs.html中“在SVG中生成图标及更多内容”部分下的注释,生成了Iron-iconset-svg格式的Polymer兼容图标集。
解压缩zip文件,然后打开聚合物文件夹。它包含* -svg.html文件,该文件是@Jouni在上述说明中讨论的'iron-iconset-svg'格式文件。这个html文件实际上是内联SVG的集合。
将html文件复制到资源文件夹中;
e.g. resources/META-INF/resources/frontend/styles/
并使用@HtmlImport
导入;
e.g. @HtmlImport("frontend://styles/icomoon-iconset-svg.html")
然后您可以使用集合名称和图标名称创建图标;
Icon icon = new Icon("icomoon", "mobile");
<iron-iconset-svg name=...
中的名称值。答案 1 :(得分:1)
您还可以手动创建图标集合。 我使用https://github.com/vaadin/vaadin-icons/blob/master/iconset.html作为模板(或多或少):
创建一个以
开头的新SVG文件myicons.svg。 <iron-iconset-svg name="myiconset"><svg><defs>
...以
结尾 </defs></svg></iron-iconset-svg>
在defs-tag中,为每个图形插入一个“ g”元素,例如:
<g id="myicon" viewBox="0 0 52 56"></g>
设置此文件中唯一的ID。
从原始SVG文件复制路径元素(并删除任何“ g”或“ symbol”或“ title”或其他没有路径/线条/形状的元素)并粘贴/将它们添加到您新创建的“ g”元素中。
<path d="m14 15h-13c-.55228475 [...]" />
将此创建的myicons.svg文件放置在所需的位置。
在您的Java代码中读取该myicons.svg文件并将其粘贴到您的网站中,例如以这种直接方式(如果选择其他路径,则替换路径):
add(new Html(Files.readString(new File("src/main/webapp/img/myicons.svg").toPath())));
创建图标:
com.vaadin.flow.component.icon.Icon myIcon = new Icon("myiconset", "myicon");
myIcon.getStyle().set("color", "var(--lumo-primary-text-color)");
add(myIcon);
答案 2 :(得分:1)
更新:从 Vaadin 14 开始(兼容模式除外),您应该改用 @JsModule。即@JsModule("@polymer/iron-icon/iron-icon.js")