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