nosignal-shell/modules/sidebar/Wrapper.qml
2026-03-25 12:04:55 +11:00

71 lines
1.9 KiB
QML

pragma ComponentBehavior: Bound
import QtQuick
import qs.components
import qs.config
Item {
id: root
required property DrawerVisibilities visibilities
required property var panels
readonly property Props props: Props {}
visible: anchors.rightMargin > -implicitWidth - 5
anchors.rightMargin: -implicitWidth - 5
implicitWidth: Config.sidebar.sizes.width
states: State {
name: "visible"
when: root.visibilities.sidebar && Config.sidebar.enabled
PropertyChanges {
root.anchors.rightMargin: 0
}
}
transitions: [
Transition {
// from: ""
// to: "visible"
Anim {
target: root.anchors
property: "rightMargin"
duration: Appearance.anim.durations.expressiveDefaultSpatial
easing.bezierCurve: Appearance.anim.curves.expressiveDefaultSpatial
}
}
// Transition {
// from: "visible"
// to: ""
// Anim {
// target: root
// property: "implicitWidth"
// easing.bezierCurve: root.panels.osd.width > 0 || root.panels.session.width > 0 ? Appearance.anim.curves.expressiveDefaultSpatial : Appearance.anim.curves.emphasized
// }
// }
]
Loader {
id: content
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.margins: Appearance.padding.large
anchors.bottomMargin: 0
active: true
Component.onCompleted: active = Qt.binding(() => (root.visibilities.sidebar && Config.sidebar.enabled) || root.visible)
sourceComponent: Content {
implicitWidth: Config.sidebar.sizes.width - Appearance.padding.large * 2
props: root.props
visibilities: root.visibilities
}
}
}