quickshell-toki-night/modules/session/Wrapper.qml

80 lines
1.6 KiB
QML

pragma ComponentBehavior: Bound
import qs.config
import qs.custom
import Quickshell
import QtQuick
Item {
id: root
required property PersistentProperties uiState
required property var panels
readonly property real nonAnimHeight: content.implicitHeight
visible: height > 0
implicitWidth: content.implicitWidth
implicitHeight: 0
states: State {
name: "visible"
when: root.uiState.session
PropertyChanges {
root.implicitHeight: root.nonAnimHeight
}
}
transitions: [
Transition {
from: ""
to: "visible"
Anim {
target: root
property: "implicitHeight"
easing.bezierCurve: Config.anim.curves.expressiveDefaultSpatial
}
},
Transition {
from: "visible"
to: ""
Anim {
target: root
property: "implicitHeight"
easing.bezierCurve: Config.anim.curves.expressiveDefaultSpatial
}
}
]
Binding {
target: root.uiState
property: "blockScreen"
value: true
when: root.uiState.session
}
Background {
id: background
visible: false
wrapper: root
}
GlowEffect {
source: background
glowColor: Config.colors.power
}
Loader {
id: content
anchors.bottom: parent.bottom
Component.onCompleted: active = Qt.binding(() => root.uiState.session || root.visible)
sourceComponent: Content {
uiState: root.uiState
}
}
}