All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.kotlinx.css.properties.Transition.kt Maven / Gradle / Ivy

package kotlinx.css.properties

import kotlinx.css.*
import kotlin.reflect.KProperty

class Transition(val property: String, val duration: Time, private val timing: Timing, private val delay: Time) {
    override fun toString() = "$property $duration $timing $delay"
}

class Transitions : StyleList(", ") {
    companion object {
        val none = Transitions()
    }
}

fun StyledElement.transition(
    property: String = "all",
    duration: Time = 0.s,
    timing: Timing = Timing.ease,
    delay: Time = 0.s,
) {
    transition += Transition(property, duration, timing, delay)
}

fun StyledElement.transition(
    property: KProperty<*>,
    duration: Time = 0.s,
    timing: Timing = Timing.ease,
    delay: Time = 0.s,
) = transition(property.name.hyphenize(), duration, timing, delay)

fun CssBuilder.delayUnhover(
    vararg properties: KProperty<*>,
    duration: Time = 300.ms,
    timing: Timing = Timing.materialDeceleration,
    delay: Time = 0.s,
) = !hover {
    when {
        properties.isNotEmpty() -> properties.forEach {
            transition(it, duration, timing, delay)
        }
        else -> transition("all", duration, timing, delay)
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy