lux-shell/styled/StyledPopupWindow.qml
2025-07-25 10:26:38 -04:00

75 lines
1.7 KiB
QML

import QtQuick
import Quickshell
import Quickshell.Widgets
PopupWindow {
id: root
property bool opened: false
property int animationDuration: 200
property int margins: 10
property alias backgroundColor: background.color
property alias radius: background.radius
required property Component content
color: "transparent"
implicitWidth: background.width
implicitHeight: background.height
Rectangle {
id: background
implicitWidth: margins.width
implicitHeight: margins.height
opacity: 0
Behavior on opacity {
NumberAnimation {
duration: root.animationDuration
}
}
states: State {
name: "opened"
when: root.opened
PropertyChanges {
background {
opacity: 1
}
}
}
transitions: [
Transition {
from: ""
to: "opened"
ScriptAction {
script: root.visible = true
}
},
Transition {
from: "opened"
to: ""
SequentialAnimation {
PauseAnimation {
duration: root.animationDuration
}
ScriptAction {
script: root.visible = false
}
}
}
]
WrapperItem {
id: margins
margin: root.margins
Loader {
active: root.visible
sourceComponent: content
}
}
}
}