mirror of
https://github.com/Theaninova/TheaninovOS.git
synced 2026-01-08 16:52:50 +00:00
feat: update system
This commit is contained in:
@@ -1,45 +1,34 @@
|
||||
import Widget from "resource:///com/github/Aylur/ags/widget.js";
|
||||
import App from "resource:///com/github/Aylur/ags/app.js";
|
||||
|
||||
/**
|
||||
* @typedef {Object} PanelButtonProps
|
||||
* @property {any} content
|
||||
* @property {import('types/widgets/button').ButtonProps['child']} content
|
||||
* @property {string=} window
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {import('types/widgets/button').ButtonProps & PanelButtonProps} o
|
||||
*/
|
||||
export default ({
|
||||
class_name,
|
||||
content,
|
||||
window = "",
|
||||
connections = [],
|
||||
...rest
|
||||
}) => {
|
||||
let open = false;
|
||||
|
||||
const connection = [
|
||||
App,
|
||||
(self, win, visible) => {
|
||||
if (win !== window) return;
|
||||
|
||||
if (open && !visible) {
|
||||
open = false;
|
||||
self.toggleClassName("active", false);
|
||||
}
|
||||
|
||||
if (visible) {
|
||||
open = true;
|
||||
self.toggleClassName("active");
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
return Widget.Button({
|
||||
export default ({ class_name, content, window = "", setup, ...rest }) =>
|
||||
Widget.Button({
|
||||
class_name: `panel-button ${class_name}`,
|
||||
child: Widget.Box({ children: [content] }),
|
||||
connections: connections.concat([connection]),
|
||||
setup: (self) => {
|
||||
let open = false;
|
||||
|
||||
self.hook(App, (_, win, visible) => {
|
||||
if (win !== window) return;
|
||||
|
||||
if (open && !visible) {
|
||||
open = false;
|
||||
self.toggleClassName("active", false);
|
||||
}
|
||||
|
||||
if (visible) {
|
||||
open = true;
|
||||
self.toggleClassName("active");
|
||||
}
|
||||
});
|
||||
|
||||
if (setup) setup(self);
|
||||
},
|
||||
...rest,
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user