From be4d63f0e0187a4610a1a3b0e2b97bb58b6b67e8 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 31 Mar 2022 09:12:01 +0600 Subject: [PATCH] improvements in UIKitModifier tools --- CHANGELOG.md | 2 ++ .../dev/inmo/jsuikit/modifiers/UIKitModifier.kt | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 190de63..be2f8e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ ## 0.0.48 * Added support of `Breadcrumb` +* Add opportunity to summarize `UIKitModifier` +* Add opportunity to simply create attributes builder using `UIKitModifier` of array of them ## 0.0.47 diff --git a/src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitModifier.kt b/src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitModifier.kt index 0e826e0..bfffeb6 100644 --- a/src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitModifier.kt +++ b/src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitModifier.kt @@ -1,6 +1,9 @@ package dev.inmo.jsuikit.modifiers +import dev.inmo.jsuikit.utils.Attrs import org.jetbrains.compose.web.attributes.AttrsScope +import org.jetbrains.compose.web.dom.AttrBuilderContext +import org.w3c.dom.Element interface UIKitModifier { val classes: Array @@ -15,3 +18,16 @@ fun AttrsScope<*>.include(vararg container: UIKitModifier?) { it ?.otherAttrs ?.let { attrs -> attrs.forEach { (k, v) -> attr(k, v) } } } } + +fun UIKitModifier.asAttributesBuilder(): AttrBuilderContext = { + include(this@asAttributesBuilder) +} +operator fun UIKitModifier.plus(other: UIKitModifier): UIKitModifier = UIKitCustom( + classes + other.classes, + otherAttrs + other.otherAttrs +) +fun UIKitModifier.builder() = Attrs(this).builder +fun Array.builder() = Attrs(*this).builder +inline fun attrsBuilder(vararg modifiers: UIKitModifier) = modifiers.builder() +@JsName("plusBuilder") +operator fun UIKitModifier.plus(other: UIKitModifier): AttrBuilderContext = Attrs(this@plus, other).builder