pragma ComponentBehavior: Bound import QtQuick import Quickshell import qs.components import qs.config import qs.modules.bar.popouts as BarPopouts Item { id: root required property DrawerVisibilities visibilities required property Item sidebar required property BarPopouts.Wrapper popouts readonly property PersistentProperties props: PersistentProperties { property bool recordingListExpanded: false property string recordingConfirmDelete property string recordingMode reloadableId: "utilities" } readonly property bool shouldBeActive: visibilities.sidebar || (visibilities.utilities && Config.utilities.enabled && !(visibilities.session && Config.session.enabled)) visible: anchors.bottomMargin > -implicitHeight - 5 anchors.bottomMargin: -implicitHeight - 5 implicitHeight: content.implicitHeight implicitWidth: sidebar.visible ? sidebar.width : Config.utilities.sizes.width onStateChanged: { if (state === "visible" && timer.running) { timer.triggered(); timer.stop(); } } states: State { name: "visible" when: root.shouldBeActive PropertyChanges { root.anchors.bottomMargin: 0 } } transitions: [ Transition { // from: "" // to: "visible" Anim { target: root.anchors property: "bottomMargin" duration: Appearance.anim.durations.expressiveDefaultSpatial easing.bezierCurve: Appearance.anim.curves.expressiveDefaultSpatial } } // Transition { // from: "visible" // to: "" // Anim { // target: root // property: "implicitHeight" // easing.bezierCurve: Appearance.anim.curves.emphasized // } // } ] Timer { id: timer running: true interval: Appearance.anim.durations.extraLarge onTriggered: { content.active = Qt.binding(() => root.shouldBeActive || root.visible); content.visible = true; } } Loader { id: content asynchronous: true anchors.top: parent.top anchors.left: parent.left anchors.margins: Appearance.padding.large visible: false active: true sourceComponent: Content { implicitWidth: root.implicitWidth - Appearance.padding.large * 2 props: root.props visibilities: root.visibilities popouts: root.popouts } } }