diff --git a/CHANGELOG.md b/CHANGELOG.md index b3f8fe0..093a1c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.5.2 + +* More fixes in Dialogs +* Badge supported +* Inline creation support + ## 0.5.1 * Fixes in new `Dialog`s diff --git a/gradle.properties b/gradle.properties index a8df07a..2f27757 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,4 +9,4 @@ android.enableJetifier=true # Project data group=dev.inmo -version=0.5.1 +version=0.5.2 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/elements/Dialog.kt b/src/jsMain/kotlin/dev/inmo/jsuikit/elements/Dialog.kt index 8531351..cb40954 100644 --- a/src/jsMain/kotlin/dev/inmo/jsuikit/elements/Dialog.kt +++ b/src/jsMain/kotlin/dev/inmo/jsuikit/elements/Dialog.kt @@ -54,6 +54,8 @@ fun Dialog( if (onHidden != null || removeOnHide) { htmlElement.addEventListener("hidden", { + if (it.target != htmlElement) return@addEventListener + onHidden ?.invoke(htmlElement) if (removeOnHide) { @@ -64,6 +66,8 @@ fun Dialog( onShown ?.let { htmlElement.addEventListener("shown", { + if (it.target != htmlElement) return@addEventListener + onShown(htmlElement) }) } diff --git a/src/jsMain/kotlin/dev/inmo/jsuikit/elements/Inline.kt b/src/jsMain/kotlin/dev/inmo/jsuikit/elements/Inline.kt new file mode 100644 index 0000000..c81c3ba --- /dev/null +++ b/src/jsMain/kotlin/dev/inmo/jsuikit/elements/Inline.kt @@ -0,0 +1,18 @@ +package dev.inmo.jsuikit.elements + +import androidx.compose.runtime.Composable +import dev.inmo.jsuikit.modifiers.UIKitUtility +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.Div +import org.w3c.dom.HTMLDivElement + +@Composable +fun Inline( + attrBuilderContext: AttrBuilderContext? = null, + contentBuilder: ContentBuilder +) = Div({ + include(UIKitUtility.Inline) + attrBuilderContext ?.invoke(this) +}, contentBuilder) 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") +}