Skip to content

Commit 9abc5dd

Browse files
committed
Add Opacity interface and fix Modifier.opacity(percent)
1 parent 9bf8eeb commit 9abc5dd

3 files changed

Lines changed: 28 additions & 1 deletion

File tree

frontend/compose-html-ext/src/jsMain/kotlin/com/varabyte/kobweb/compose/css/Color.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,3 +120,14 @@ sealed class ColorInterpolationMethod private constructor(private val value: Str
120120
space.withHue(hueInterpolationMethod)
121121
}
122122
}
123+
124+
sealed interface Opacity : StylePropertyValue {
125+
companion object : CssGlobalValues<Opacity> {
126+
fun of(value: Number): Opacity = value.unsafeCast<Opacity>()
127+
fun of(value: CSSPercentageNumericValue): Opacity = value.unsafeCast<Opacity>()
128+
}
129+
}
130+
131+
fun StyleScope.opacity(value: Opacity) {
132+
property("opacity", value)
133+
}

frontend/compose-html-ext/src/jsTest/kotlin/com/varabyte/kobweb/compose/css/CssStylePropertyTests.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1781,6 +1781,18 @@ class CssStylePropertyTests {
17811781
assertThat(styleToText { objectFit(ObjectFit.Unset) }).isEqualTo("object-fit: unset")
17821782
}
17831783

1784+
@Test
1785+
fun verifyOpacity() {
1786+
assertThat(styleToText { opacity(Opacity.of(0.5)) }).isEqualTo("opacity: 0.5")
1787+
assertThat(styleToText { opacity(Opacity.of(50.percent)) }).isEqualTo("opacity: 50%")
1788+
1789+
assertThat(styleToText { opacity(Opacity.Inherit) }).isEqualTo("opacity: inherit")
1790+
assertThat(styleToText { opacity(Opacity.Initial) }).isEqualTo("opacity: initial")
1791+
assertThat(styleToText { opacity(Opacity.Revert) }).isEqualTo("opacity: revert")
1792+
assertThat(styleToText { opacity(Opacity.RevertLayer) }).isEqualTo("opacity: revert-layer")
1793+
assertThat(styleToText { opacity(Opacity.Unset) }).isEqualTo("opacity: unset")
1794+
}
1795+
17841796
@Test
17851797
fun verifyOrphans() {
17861798
assertThat(styleToText { orphans(Orphans.of(2)) }).isEqualTo("orphans: 2")

frontend/kobweb-compose/src/jsMain/kotlin/com/varabyte/kobweb/compose/ui/modifiers/ColorModifiers.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,14 @@ fun Modifier.colorScheme(colorScheme: ColorScheme) = styleModifier {
2525
colorScheme(colorScheme)
2626
}
2727

28+
fun Modifier.opacity(opacity: Opacity) = styleModifier {
29+
opacity(opacity)
30+
}
31+
2832
fun Modifier.opacity(value: Number) = styleModifier {
2933
opacity(value)
3034
}
3135

3236
fun Modifier.opacity(value: CSSPercentageNumericValue) = styleModifier {
33-
opacity(value.unsafeCast<CSSSizeValue<CSSUnit.percent>>())
37+
opacity(Opacity.of(value))
3438
}

0 commit comments

Comments
 (0)