diff --git a/html/core/src/jsMain/kotlin/org/jetbrains/compose/web/css/CSSEnums.kt b/html/core/src/jsMain/kotlin/org/jetbrains/compose/web/css/CSSEnums.kt index 4cbdd246529..7fdcf356847 100644 --- a/html/core/src/jsMain/kotlin/org/jetbrains/compose/web/css/CSSEnums.kt +++ b/html/core/src/jsMain/kotlin/org/jetbrains/compose/web/css/CSSEnums.kt @@ -260,4 +260,22 @@ object GridAutoFlow : StylePropertyString { inline val Dense get() = "dense".unsafeCast() inline val RowDense get() = "row dense".unsafeCast() inline val ColumnDense get() = "column dense".unsafeCast() -} \ No newline at end of file +} + +interface VisibilityStyle: StylePropertyEnum { + companion object { + inline val Visible get() = VisibilityStyle("visible") + inline val Hidden get() = VisibilityStyle("hidden") + inline val Collapse get() = VisibilityStyle("collapse") + + + inline val Inherit get() = VisibilityStyle("inherit") + inline val Initial get() = VisibilityStyle("initial") + + inline val Revert get() = VisibilityStyle("revert") + inline val RevertLayer get() = VisibilityStyle("revert-layer") + + inline val Unset get() = VisibilityStyle("unset") + } +} +inline fun VisibilityStyle(value: String) = value.unsafeCast() diff --git a/html/core/src/jsMain/kotlin/org/jetbrains/compose/web/css/properties/visibility.kt b/html/core/src/jsMain/kotlin/org/jetbrains/compose/web/css/properties/visibility.kt new file mode 100644 index 00000000000..de0fc6fc00a --- /dev/null +++ b/html/core/src/jsMain/kotlin/org/jetbrains/compose/web/css/properties/visibility.kt @@ -0,0 +1,12 @@ +/* + * Copyright 2020-2024 JetBrains s.r.o. and respective authors and developers. + * Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. + */ + +@file:Suppress("Unused", "NOTHING_TO_INLINE", "NESTED_CLASS_IN_EXTERNAL_INTERFACE", "INLINE_EXTERNAL_DECLARATION", "WRONG_BODY_OF_EXTERNAL_DECLARATION", "NESTED_EXTERNAL_DECLARATION") + +package org.jetbrains.compose.web.css + +fun StyleScope.visibility(visibilityStyle: VisibilityStyle) { + property("visibility", visibilityStyle.value) +} diff --git a/html/core/src/jsTest/kotlin/CSSEnums.kt b/html/core/src/jsTest/kotlin/CSSEnums.kt index 4f430db8f92..87923a6ac63 100644 --- a/html/core/src/jsTest/kotlin/CSSEnums.kt +++ b/html/core/src/jsTest/kotlin/CSSEnums.kt @@ -114,3 +114,14 @@ fun Position.Companion.values() = listOf( Position.Sticky, Position.Fixed ) + +fun VisibilityStyle.Companion.values() = listOf( + VisibilityStyle.Visible, + VisibilityStyle.Hidden, + VisibilityStyle.Collapse, + VisibilityStyle.Inherit, + VisibilityStyle.Initial, + VisibilityStyle.Revert, + VisibilityStyle.RevertLayer, + VisibilityStyle.Unset +) diff --git a/html/core/src/jsTest/kotlin/css/CSSVisibilityTests.kt b/html/core/src/jsTest/kotlin/css/CSSVisibilityTests.kt new file mode 100644 index 00000000000..359deb302e9 --- /dev/null +++ b/html/core/src/jsTest/kotlin/css/CSSVisibilityTests.kt @@ -0,0 +1,43 @@ +/* + * Copyright 2020-2021 JetBrains s.r.o. and respective authors and developers. + * Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. + */ + +package org.jetbrains.compose.web.core.tests.css + +import org.jetbrains.compose.web.testutils.* +import org.jetbrains.compose.web.core.tests.values +import org.jetbrains.compose.web.css.VisibilityStyle +import org.jetbrains.compose.web.css.visibility +import org.jetbrains.compose.web.css.value +import org.jetbrains.compose.web.dom.Div +import kotlin.test.Test +import kotlin.test.assertEquals + +class CSSVisibilityTests { + + @Test + fun stylesDisplay() = runTest { + val enumValues = VisibilityStyle.values() + + composition { + enumValues.forEach { displayStyle -> + Div( + { + style { + visibility(displayStyle) + } + } + ) + } + } + + enumValues.forEach { visibilityStyle -> + assertEquals( + visibilityStyle.value, + (nextChild()).style.visibility + ) + } + } + +}