diff options
author | Robert Jaros <rjaros@finn.pl> | 2018-03-07 00:06:07 +0100 |
---|---|---|
committer | Robert Jaros <rjaros@finn.pl> | 2018-03-07 00:06:07 +0100 |
commit | 35a6bc496500d77a9f76fc9806713ed378cfbb68 (patch) | |
tree | c2d27dd35fa4446ca09a6c500aa850ffb419131f /src | |
parent | 6b925f706c530feb4c7f5f3bc3cf080c62619fca (diff) | |
download | kvision-35a6bc496500d77a9f76fc9806713ed378cfbb68.tar.gz kvision-35a6bc496500d77a9f76fc9806713ed378cfbb68.tar.bz2 kvision-35a6bc496500d77a9f76fc9806713ed378cfbb68.zip |
Add simple icon component.
Diffstat (limited to 'src')
-rw-r--r-- | src/main/kotlin/pl/treksoft/kvision/html/Icon.kt | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/main/kotlin/pl/treksoft/kvision/html/Icon.kt b/src/main/kotlin/pl/treksoft/kvision/html/Icon.kt new file mode 100644 index 00000000..4d35e889 --- /dev/null +++ b/src/main/kotlin/pl/treksoft/kvision/html/Icon.kt @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2018. Robert Jaros + */ +package pl.treksoft.kvision.html + +import pl.treksoft.kvision.core.Container +import pl.treksoft.kvision.core.StringBoolPair + +/** + * Icon component with support for FontAwesome and Bootstrap glyphicons. + * + * @constructor + * @param icon icon name + */ +open class Icon(icon: String) : Tag(TAG.SPAN) { + + /** + * Icon type. + */ + var icon by refreshOnUpdate(icon) + + override fun getSnClass(): List<StringBoolPair> { + val cl = super.getSnClass().toMutableList() + if (icon.startsWith("fa-")) { + cl.add("fa" to true) + cl.add(icon to true) + } else { + cl.add("glyphicon" to true) + cl.add("glyphicon-$icon" to true) + } + return cl + } + + companion object { + /** + * DSL builder extension function. + * + * It takes the same parameters as the constructor of the built component. + */ + fun Container.icon( + icon: String, init: (Icon.() -> Unit)? = null + ): Icon { + val i = Icon(icon).apply { init?.invoke(this) } + this.add(i) + return i + } + } +} |