diff --git a/CHANGELOG.md b/CHANGELOG.md index e7cdd9a..a3240d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 0.0.34 + +* Add `Alert` +* Add `Animation#KenBurns` + ## 0.0.33 * Fixes in attributes building and related things diff --git a/gradle.properties b/gradle.properties index 178c65a..7e971da 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,4 +9,4 @@ android.enableJetifier=true # Project data group=dev.inmo -version=0.0.33 +version=0.0.34 diff --git a/src/jsMain/kotlin/dev/inmo/jsuikit/elements/Alert.kt b/src/jsMain/kotlin/dev/inmo/jsuikit/elements/Alert.kt new file mode 100644 index 0000000..edec41f --- /dev/null +++ b/src/jsMain/kotlin/dev/inmo/jsuikit/elements/Alert.kt @@ -0,0 +1,49 @@ +package dev.inmo.jsuikit.elements + +import androidx.compose.runtime.Composable +import dev.inmo.jsuikit.buildAndAddAttribute +import dev.inmo.jsuikit.modifiers.* +import dev.inmo.jsuikit.utils.Attrs +import dev.inmo.jsuikit.utils.Milliseconds +import org.jetbrains.compose.web.dom.* +import org.w3c.dom.HTMLAnchorElement +import org.w3c.dom.HTMLDivElement + +@Composable +fun Alert( + attrs: Attrs = Attrs.empty(), + animation: UIKitAnimation? = UIKitAnimation.Fade, + duration: Milliseconds? = null, + selClose: String? = null, + content: ContentBuilder +) = Div( + { + attrs.builder(this) + include(UIKitAlert) + + buildAndAddAttribute("uk-alert") { + "animation" to animation ?.classes ?.firstOrNull() + "duration" to duration + "sel-close" to selClose + } + }, + content +) + +@Composable +fun AlertCloseButton( + attrs: Attrs = Attrs.empty(), + content: ContentBuilder = @Composable {} +) { + A( + null, + { + include(UIKitAlert.Close, UIKitIcon) + attr("uk-close", "") + classes("uk-close") + attrs.builder(this) + }, + content + ) + +} diff --git a/src/jsMain/kotlin/dev/inmo/jsuikit/elements/Icon.kt b/src/jsMain/kotlin/dev/inmo/jsuikit/elements/Icon.kt index e9e528e..ab923af 100644 --- a/src/jsMain/kotlin/dev/inmo/jsuikit/elements/Icon.kt +++ b/src/jsMain/kotlin/dev/inmo/jsuikit/elements/Icon.kt @@ -211,8 +211,7 @@ sealed class Icon(val name: String) { onClick: ((Event) -> Unit)? = null ) { val configurer: AttrBuilderContext = { - classes("uk-icon") - include(*modifiers, type) + include(*modifiers, type, UIKitIcon) attr("uk-icon", "icon: $name${if (ratio != null) { "; ratio: $ratio" } else ""}") onClick ?.let { _ -> onClick { onClick(it.nativeEvent) } diff --git a/src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitAlert.kt b/src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitAlert.kt new file mode 100644 index 0000000..dc1c2a7 --- /dev/null +++ b/src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitAlert.kt @@ -0,0 +1,18 @@ +package dev.inmo.jsuikit.modifiers + +sealed class UIKitAlert(classname: String) : UIKitModifier { + override val classes: Array = arrayOf(classname) + + sealed class Style(classname: String) : UIKitAlert(classname) { + + object Primary : Style("uk-alert-primary") + object Success : Style("uk-alert-success") + object Warning : Style("uk-alert-warning") + object Danger : Style("uk-alert-danger") + + } + + object Close : UIKitAlert("uk-alert-close") + + companion object : UIKitAlert("uk-alert") +} diff --git a/src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitAnimation.kt b/src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitAnimation.kt index 422ea74..96216e6 100644 --- a/src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitAnimation.kt +++ b/src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitAnimation.kt @@ -60,4 +60,6 @@ sealed class UIKitAnimation (name: String) : UIKitModifier, AttributeValue(name) object Fast : UIKitAnimation("fast") + object KenBurns : UIKitAnimation("kenburns") + } diff --git a/src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitIcon.kt b/src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitIcon.kt new file mode 100644 index 0000000..d951ad9 --- /dev/null +++ b/src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitIcon.kt @@ -0,0 +1,7 @@ +package dev.inmo.jsuikit.modifiers + +sealed class UIKitIcon(classname: String) : UIKitModifier { + override val classes: Array = arrayOf(classname) + + companion object : UIKitIcon("uk-icon") +}