From 1d6c0db692b0c880dbd6355e4b45ff584755fe53 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 24 Jan 2023 13:44:01 +0600 Subject: [PATCH] add badge support --- .../kotlin/dev/inmo/jsuikit/elements/Badge.kt | 25 +++++++++++++++++++ .../dev/inmo/jsuikit/modifiers/UIKitBadge.kt | 7 ++++++ 2 files changed, 32 insertions(+) create mode 100644 src/jsMain/kotlin/dev/inmo/jsuikit/elements/Badge.kt create mode 100644 src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitBadge.kt diff --git a/src/jsMain/kotlin/dev/inmo/jsuikit/elements/Badge.kt b/src/jsMain/kotlin/dev/inmo/jsuikit/elements/Badge.kt new file mode 100644 index 0000000..6fb0b35 --- /dev/null +++ b/src/jsMain/kotlin/dev/inmo/jsuikit/elements/Badge.kt @@ -0,0 +1,25 @@ +package dev.inmo.jsuikit.elements + +import androidx.compose.runtime.Composable +import dev.inmo.jsuikit.modifiers.UIKitBadge +import dev.inmo.jsuikit.modifiers.include +import org.jetbrains.compose.web.dom.AttrBuilderContext +import org.jetbrains.compose.web.dom.ContentBuilder +import org.jetbrains.compose.web.dom.Span +import org.jetbrains.compose.web.dom.Text +import org.w3c.dom.HTMLSpanElement + +@Composable +fun Badge( + text: String, + onAfterText: ContentBuilder? = null, + onBeforeText: ContentBuilder? = null, + attrs: AttrBuilderContext? = null +) = Span({ + include(UIKitBadge) + attrs ?.invoke(this) +}) { + onAfterText ?.invoke(this) + Text(text) + onBeforeText ?.invoke(this) +} diff --git a/src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitBadge.kt b/src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitBadge.kt new file mode 100644 index 0000000..8c32e6c --- /dev/null +++ b/src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitBadge.kt @@ -0,0 +1,7 @@ +package dev.inmo.jsuikit.modifiers + +sealed class UIKitBadge(classname: String) : UIKitModifier { + override val classes: Array = arrayOf(classname) + + companion object : UIKitBadge("uk-badge") +}