Browse Source

Minimal documentation for the most basic CSS API

pull/988/head
Shagen Ogandzhanian 3 years ago
parent
commit
7557522e16
  1. 19
      web/core/src/jsMain/kotlin/org/jetbrains/compose/web/css/CSSMediaRule.kt
  2. 22
      web/core/src/jsMain/kotlin/org/jetbrains/compose/web/css/StyleBuilder.kt
  3. 32
      web/core/src/jsMain/kotlin/org/jetbrains/compose/web/css/StyleSheet.kt

19
web/core/src/jsMain/kotlin/org/jetbrains/compose/web/css/CSSMediaRule.kt

@ -128,14 +128,33 @@ fun <TBuilder> GenericStyleSheetBuilder<TBuilder>.not(
query: CSSMediaQuery.Invertible query: CSSMediaQuery.Invertible
) = CSSMediaQuery.Not(query) ) = CSSMediaQuery.Not(query)
/**
* A mediaQuery selector
*
* Example:
* ```
* object CombinedMediaQueries : StyleSheet() {
* media(mediaMinWidth(200.px).and(mediaMaxWidth(400.px))) { ... }
* }
* ```
*/
fun <TBuilder> GenericStyleSheetBuilder<TBuilder>.mediaMinWidth(value: CSSUnitValue) = fun <TBuilder> GenericStyleSheetBuilder<TBuilder>.mediaMinWidth(value: CSSUnitValue) =
CSSMediaQuery.MediaFeature("min-width", value) CSSMediaQuery.MediaFeature("min-width", value)
/**
* See [mediaMinWidth]
*/
fun <TBuilder> GenericStyleSheetBuilder<TBuilder>.mediaMaxWidth(value: CSSUnitValue) = fun <TBuilder> GenericStyleSheetBuilder<TBuilder>.mediaMaxWidth(value: CSSUnitValue) =
CSSMediaQuery.MediaFeature("max-width", value) CSSMediaQuery.MediaFeature("max-width", value)
/**
* See [mediaMinWidth]
*/
fun <TBuilder> GenericStyleSheetBuilder<TBuilder>.mediaMinHeight(value: CSSUnitValue) = fun <TBuilder> GenericStyleSheetBuilder<TBuilder>.mediaMinHeight(value: CSSUnitValue) =
CSSMediaQuery.MediaFeature("min-height", value) CSSMediaQuery.MediaFeature("min-height", value)
/**
* See [mediaMinWidth]
*/
fun <TBuilder> GenericStyleSheetBuilder<TBuilder>.madiaMaxHeight(value: CSSUnitValue) = fun <TBuilder> GenericStyleSheetBuilder<TBuilder>.madiaMaxHeight(value: CSSUnitValue) =
CSSMediaQuery.MediaFeature("max-height", value) CSSMediaQuery.MediaFeature("max-height", value)

22
web/core/src/jsMain/kotlin/org/jetbrains/compose/web/css/StyleBuilder.kt

@ -68,8 +68,7 @@ fun <TValue: StylePropertyValue> CSSStyleVariable<TValue>.value(fallback: TValue
fun <TValue> CSSStyleVariable<TValue>.value(fallback: TValue? = null) fun <TValue> CSSStyleVariable<TValue>.value(fallback: TValue? = null)
where TValue : CSSVariableValueAs<TValue>, where TValue : CSSVariableValueAs<TValue>,
TValue: StylePropertyValue TValue : StylePropertyValue =
=
CSSVariableValue<TValue>( CSSVariableValue<TValue>(
variableValue( variableValue(
name, name,
@ -77,6 +76,25 @@ fun <TValue> CSSStyleVariable<TValue>.value(fallback: TValue? = null)
) )
) )
/**
* Introduces CSS variable that can be later referred anywhere in [StyleSheet]
*
* Example:
* ```
* object AppCSSVariables {
* val width by variable<CSSUnitValue>()
* val stringHeight by variable<StylePropertyString>()
* val order by variable<StylePropertyNumber>()
* }
*
* object AppStylesheet : StyleSheet() {
* val classWithProperties by style {
* AppCSSVariables.width(100.px)
* property("width", AppCSSVariables.width.value())
* }
*```
*
*/
fun <TValue : StylePropertyValue> variable() = fun <TValue : StylePropertyValue> variable() =
ReadOnlyProperty<Any?, CSSStyleVariable<TValue>> { _, property -> ReadOnlyProperty<Any?, CSSStyleVariable<TValue>> { _, property ->
CSSStyleVariable(property.name) CSSStyleVariable(property.name)

32
web/core/src/jsMain/kotlin/org/jetbrains/compose/web/css/StyleSheet.kt

@ -47,6 +47,30 @@ open class StyleSheet(
protected fun style(cssRule: CSSBuilder.() -> Unit) = CSSHolder(usePrefix, cssRule) protected fun style(cssRule: CSSBuilder.() -> Unit) = CSSHolder(usePrefix, cssRule)
/**
* Example:
* ```
* object AppStyleSheet : StyleSheet() {
* val bounce by keyframes {
* from {
* property("transform", "translateX(50%)")
* }
*
* to {
* property("transform", "translateX(-50%)")
* }
* }
*
* val myClass by style {
* animation(bounce) {
* duration(2.s)
* timingFunction(AnimationTimingFunction.EaseIn)
* direction(AnimationDirection.Alternate)
* }
* }
* }
* ```
*/
protected fun keyframes(cssKeyframes: CSSKeyframesBuilder.() -> Unit) = CSSKeyframesHolder(usePrefix, cssKeyframes) protected fun keyframes(cssKeyframes: CSSKeyframesBuilder.() -> Unit) = CSSKeyframesHolder(usePrefix, cssKeyframes)
companion object { companion object {
@ -99,7 +123,13 @@ open class StyleSheet(
} }
} }
protected class CSSKeyframesHolder(private val usePrefix: Boolean, private val keyframesBuilder: CSSKeyframesBuilder.() -> Unit) { /**
* See [keyframes]
*/
protected class CSSKeyframesHolder(
private val usePrefix: Boolean,
private val keyframesBuilder: CSSKeyframesBuilder.() -> Unit
) {
operator fun provideDelegate( operator fun provideDelegate(
sheet: StyleSheet, sheet: StyleSheet,
property: KProperty<*> property: KProperty<*>

Loading…
Cancel
Save