import QtQuick import ZShell.Config import qs.Services import qs.Helpers import qs.Components CustomRect { id: root readonly property bool closing: PopupManager.closed readonly property url currentPopup: PopupManager.currentPopup property bool shouldBeVisible: loader.status === Loader.Ready color: Qt.alpha(Colors.palette.m3shadow, 0.3) opacity: shouldBeVisible && !closing ? 1 : 0 visible: opacity > 0 Behavior on opacity { Anim { } } onVisibleChanged: { if (!visible) { PopupManager.requestClose(); PopupManager.currentPopup = ""; } } CustomMouseArea { anchors.fill: parent hoverEnabled: true preventStealing: true propagateComposedEvents: false onClicked: { const insideItemWidth = mouseX < loader.x + loader.item.width && mouseX > loader.x; const insideItemHeight = mouseY < loader.y + loader.item.height && mouseY > loader.y; if (insideItemHeight && insideItemWidth) return; PopupManager.requestClose(); } } Loader { id: loader anchors.centerIn: parent Connections { function onCurrentPopupChanged(): void { if (PopupManager.currentPopup) { loader.setSource(PopupManager.currentPopup, PopupManager.currentPopupProps); } else { loader.source = null; } } target: PopupManager } } Connections { function onNetworkConnected(): void { PopupManager.requestClose(); } target: Network } }