From 166f6d4a1cd08f9ce357497cbba3bdff2029e6d9 Mon Sep 17 00:00:00 2001 From: rnentjes Date: Thu, 22 Apr 2021 13:02:51 +0200 Subject: [PATCH] Small fixes --- build.gradle.kts | 2 +- gradle.properties | 2 +- .../nl/astraeus/css/properties/Measurement.kt | 4 + .../kotlin/nl/astraeus/css/style/Style.kt | 97 ++++++++++--------- .../kotlin/nl/astraeus/css/TestCssBuilder.kt | 1 + 5 files changed, 60 insertions(+), 46 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 5ce136f..85a6100 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } group = "nl.astraeus" -version = "0.4.11" +version = "0.4.15" repositories { maven { setUrl("https://dl.bintray.com/kotlin/kotlin-eap") } diff --git a/gradle.properties b/gradle.properties index eb94736..50065db 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,4 +2,4 @@ kotlin.code.style=official kotlin.js.compiler=both nexusUsername=deployment -nexusPassword=nhPTzBWizph86j2Jz5KhPdiB4C +nexusPassword=bGtci5GLFbqORmruICmTWFmGLY diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Measurement.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Measurement.kt index 0a71aa4..4b789a3 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Measurement.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Measurement.kt @@ -27,6 +27,8 @@ val Int.px: Measurement get() = Measurement("${this}${if (this == 0) { "" } else { "px"}}") val Int.em: Measurement get() = Measurement("${this}${if (this == 0) { "" } else { "em"}}") +val Int.rem: Measurement + get() = Measurement("${this}${if (this == 0) { "" } else { "rem"}}") val Int.prc: Measurement get() = Measurement("${this}%") val Int.pc: Measurement @@ -39,6 +41,8 @@ val Double.px: Measurement get() = Measurement("${this}px") val Double.em: Measurement get() = Measurement("${this}em") +val Double.rem: Measurement + get() = Measurement("${this}rem") val Double.prc: Measurement get() = Measurement("${this}%") val Double.pc: Measurement diff --git a/src/commonMain/kotlin/nl/astraeus/css/style/Style.kt b/src/commonMain/kotlin/nl/astraeus/css/style/Style.kt index f622e6a..2a4c8ab 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/style/Style.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/style/Style.kt @@ -79,50 +79,6 @@ abstract class CssGenerator { ): String { val builder = StringBuilder() - if (this is ConditionalStyle) { - this.media.let { mq -> - mq.keys.sorted().forEach { mediaName -> - val css = mq[mediaName] - - builder.append(indent) - builder.append("@media ") - builder.append(mediaName) - builder.append(" {\n") - css?.let { css -> - val mediaStyle = ConditionalStyle() - - css(mediaStyle) - - builder.append(mediaStyle.generateCss("", " $indent")) - } - - builder.append(indent) - builder.append("}\n") - } - } - - this.supports.let { mq -> - mq.keys.sorted().forEach { mediaName -> - val css = mq[mediaName] - - builder.append(indent) - builder.append("@supports ") - builder.append(mediaName) - builder.append(" {\n") - css?.let { css -> - val mediaStyle = ConditionalStyle() - - css(mediaStyle) - - builder.append(mediaStyle.generateCss(""," $indent")) - } - - builder.append(indent) - builder.append("}\n") - } - } - } - for (name in definitions.keys) { val props = definitions[name]!! val css = StringBuilder() @@ -191,6 +147,50 @@ abstract class CssGenerator { builder.append(finalStyle.generateCss("$namespace$name".trim(), indent)) } + if (this is ConditionalStyle) { + this.media.let { mq -> + mq.keys.sorted().forEach { mediaName -> + val css = mq[mediaName] + + builder.append(indent) + builder.append("@media ") + builder.append(mediaName) + builder.append(" {\n") + css?.let { css -> + val mediaStyle = ConditionalStyle() + + css(mediaStyle) + + builder.append(mediaStyle.generateCss("", " $indent")) + } + + builder.append(indent) + builder.append("}\n") + } + } + + this.supports.let { mq -> + mq.keys.sorted().forEach { mediaName -> + val css = mq[mediaName] + + builder.append(indent) + builder.append("@supports ") + builder.append(mediaName) + builder.append(" {\n") + css?.let { css -> + val mediaStyle = ConditionalStyle() + + css(mediaStyle) + + builder.append(mediaStyle.generateCss(""," $indent")) + } + + builder.append(indent) + builder.append("}\n") + } + } + } + return if (minified) { val stripped = StringBuilder() val skip = arrayOf(' ', '\t', '\n', '\r') @@ -225,6 +225,7 @@ fun attrEquals(name: String, value: String) : DescriptionProvider = ValueDescrip fun attrContains(name: String, value: String) : DescriptionProvider = ValueDescriptionProvider("[$name*=$value]") fun attrEntriesContain(name: String, value: String) : DescriptionProvider = ValueDescriptionProvider("[$name~=$value]") fun attrEndsWith(name: String, value: String) : DescriptionProvider = ValueDescriptionProvider("[$name$=$value]") +fun attrStartsWith(name: String, value: String) : DescriptionProvider = ValueDescriptionProvider("[$name^=$value]") fun id(name: DescriptionProvider) = ValueDescriptionProvider("#${name.description()}") fun cls(name: DescriptionProvider) : DescriptionProvider = ValueDescriptionProvider(".${name.description()}") @@ -233,6 +234,7 @@ fun attrEquals(name: DescriptionProvider, value: String) : DescriptionProvider = fun attrContains(name: DescriptionProvider, value: String) : DescriptionProvider = ValueDescriptionProvider("[${name.description()}*=$value]") fun attrEntriesContain(name: DescriptionProvider, value: String) : DescriptionProvider = ValueDescriptionProvider("[${name.description()}~=$value]") fun attrEndsWith(name: DescriptionProvider, value: String) : DescriptionProvider = ValueDescriptionProvider("[${name.description()}$=$value]") +fun attrStartsWith(name: DescriptionProvider, value: String) : DescriptionProvider = ValueDescriptionProvider("[${name.description()}^=$value]") @CssTagMarker @@ -450,6 +452,13 @@ open class Style : CssGenerator() { fun clip(clip: Clip) { props["clip"] = prp(clip) } fun clipPath(path: ClipPath) { props["clip-path"] = prp(path) } fun color(color: Color) { props["color"] = listOf(color) } + var color: Color? = null + set(value) { + field = value + value?.let { + props["color"] = listOf(it) + } + } fun columnCount(count: Count) { props["column-count"] = prp(count) } fun columnFill(fill: Fill) { props["column-fill"] = prp(fill) } fun columnGap(gap: Measurement) { props["column-gap"] = prp(gap) } diff --git a/src/commonTest/kotlin/nl/astraeus/css/TestCssBuilder.kt b/src/commonTest/kotlin/nl/astraeus/css/TestCssBuilder.kt index 29b5857..bbe20bf 100644 --- a/src/commonTest/kotlin/nl/astraeus/css/TestCssBuilder.kt +++ b/src/commonTest/kotlin/nl/astraeus/css/TestCssBuilder.kt @@ -74,6 +74,7 @@ class TestCssBuilder { val css2 = style { select(id("my-label")) { color(Color.antiqueWhite) + color = Color.antiqueWhite } select(cls("my-label")) {