aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/pl/treksoft/kvision/html
diff options
context:
space:
mode:
authorRobert Jaros <rjaros@finn.pl>2018-03-22 20:23:54 +0100
committerRobert Jaros <rjaros@finn.pl>2018-03-22 20:23:54 +0100
commit7081cfaed23fe8b34bfdf15918775a846d7649e0 (patch)
tree15458e3d7fb2cc0ebf32281362ba44f82d27fa0b /src/main/kotlin/pl/treksoft/kvision/html
parent6ba1eefc59a2940a7258655da4e88b4118e61746 (diff)
downloadkvision-7081cfaed23fe8b34bfdf15918775a846d7649e0.tar.gz
kvision-7081cfaed23fe8b34bfdf15918775a846d7649e0.tar.bz2
kvision-7081cfaed23fe8b34bfdf15918775a846d7649e0.zip
Context menu component based on Bootstrap dropdown.
Diffstat (limited to 'src/main/kotlin/pl/treksoft/kvision/html')
-rw-r--r--src/main/kotlin/pl/treksoft/kvision/html/Link.kt33
-rw-r--r--src/main/kotlin/pl/treksoft/kvision/html/List.kt5
2 files changed, 36 insertions, 2 deletions
diff --git a/src/main/kotlin/pl/treksoft/kvision/html/Link.kt b/src/main/kotlin/pl/treksoft/kvision/html/Link.kt
index 94c7c594..50a45047 100644
--- a/src/main/kotlin/pl/treksoft/kvision/html/Link.kt
+++ b/src/main/kotlin/pl/treksoft/kvision/html/Link.kt
@@ -25,6 +25,7 @@ import com.github.snabbdom.VNode
import pl.treksoft.kvision.core.Container
import pl.treksoft.kvision.core.ResString
import pl.treksoft.kvision.core.StringPair
+import pl.treksoft.kvision.dropdown.DropDown
import pl.treksoft.kvision.panel.SimplePanel
/**
@@ -81,5 +82,37 @@ open class Link(
this.add(link)
return link
}
+
+ /**
+ * DSL builder extension function for a disabled link in a dropdown list.
+ *
+ * It takes the same parameters as the constructor of the built component.
+ */
+ fun ListTag.linkDisabled(
+ label: String, icon: String? = null, image: ResString? = null,
+ classes: Set<String> = setOf(), init: (Link.() -> Unit)? = null
+ ): Link {
+ val link = Link(label, "javascript:void(0)", icon, image, classes).apply { init?.invoke(this) }
+ val tag = Tag(TAG.LI, classes = setOf("disabled"))
+ tag.add(link)
+ this.add(tag)
+ return link
+ }
+
+ /**
+ * DSL builder extension function for a disabled link in a dropdown list.
+ *
+ * It takes the same parameters as the constructor of the built component.
+ */
+ fun DropDown.linkDisabled(
+ label: String, icon: String? = null, image: ResString? = null,
+ classes: Set<String> = setOf(), init: (Link.() -> Unit)? = null
+ ): Link {
+ val link = Link(label, "javascript:void(0)", icon, image, classes).apply { init?.invoke(this) }
+ val tag = Tag(TAG.LI, classes = setOf("disabled"))
+ tag.add(link)
+ this.add(tag)
+ return link
+ }
}
}
diff --git a/src/main/kotlin/pl/treksoft/kvision/html/List.kt b/src/main/kotlin/pl/treksoft/kvision/html/List.kt
index fb49cd62..020806ce 100644
--- a/src/main/kotlin/pl/treksoft/kvision/html/List.kt
+++ b/src/main/kotlin/pl/treksoft/kvision/html/List.kt
@@ -27,6 +27,7 @@ import pl.treksoft.kvision.KVManager
import pl.treksoft.kvision.core.Component
import pl.treksoft.kvision.core.Container
import pl.treksoft.kvision.core.StringBoolPair
+import pl.treksoft.kvision.dropdown.DropDown
import pl.treksoft.kvision.panel.SimplePanel
/**
@@ -96,14 +97,14 @@ open class ListTag(
val childrenElements = children.filter { it.visible }
val res = when (type) {
ListType.UL, ListType.OL, ListType.UNSTYLED, ListType.INLINE -> childrenElements.map { v ->
- if (v is Tag && v.type == TAG.LI) {
+ if (v is Tag && v.type == TAG.LI || v is DropDown && v.forNavbar) {
v.renderVNode()
} else {
h("li", arrayOf(v.renderVNode()))
}
}
ListType.DL, ListType.DL_HORIZ -> childrenElements.mapIndexed { index, v ->
- if (v is Tag && v.type == TAG.LI) {
+ if (v is Tag && v.type == TAG.LI || v is DropDown && v.forNavbar) {
v.renderVNode()
} else {
h(if (index % 2 == 0) "dt" else "dd", arrayOf(v.renderVNode()))