feat(ags): add anims to notifs when pressing on clear

This commit is contained in:
matt1432 2023-09-15 13:51:03 -04:00
parent 8f992718cb
commit 23ed97ea7b

View file

@ -1,13 +1,31 @@
const { Notifications } = ags.Service; const { Notifications } = ags.Service;
const { Button, Label, Box, Icon, Scrollable, Window, Revealer } = ags.Widget; const { Button, Label, Box, Icon, Scrollable, Window, Revealer } = ags.Widget;
const { timeout } = ags.Utils; const { timeout } = ags.Utils;
const { getWindow } = ags.App;
import Notification from './base.js'; import Notification from './base.js';
import { EventBox } from '../misc/cursorbox.js' import { EventBox } from '../misc/cursorbox.js'
const ClearButton = () => EventBox({child: Button({ const ClearButton = () => EventBox({
onClicked: Notifications.clear, child: Button({
onPrimaryClickRelease: button => {
button._popups.children.forEach(ch => ch.child.setStyle(ch.child._leftAnim));
button._notifList.children.forEach(ch => {
ch.child.setStyle(ch.child._rightAnim);
timeout(500, () => {
button._notifList.remove(ch);
Notifications.close(ch._id);
});
});
},
properties: [['notifList'], ['popups']],
connections: [[Notifications, button => { connections: [[Notifications, button => {
if (!button._notifList)
button._notifList = getWindow('notification-center').child.children[1].children[0].child.child.children[0];
if (!button._popups)
button._popups = getWindow('notifications').child.children[0].child;
button.sensitive = Notifications.notifications.length > 0; button.sensitive = Notifications.notifications.length > 0;
}]], }]],
child: Box({ child: Box({
@ -21,7 +39,8 @@ const ClearButton = () => EventBox({child: Button({
}), }),
], ],
}), }),
})}); }),
});
const Header = () => Box({ const Header = () => Box({
className: 'header', className: 'header',
@ -49,11 +68,9 @@ const NotificationList = () => Box({
box.show_all(); box.show_all();
} }
box.visible = Notifications.notifications.length > 0;
}, 'notified'], }, 'notified'],
[Notifications, (box, id) => { [Notifications, (box, id) => {
box.visible = Notifications.notifications.length > 0;
for (const ch of box.children) { for (const ch of box.children) {
if (ch._id == id) { if (ch._id == id) {
ch.child.setStyle(ch.child._rightAnim); ch.child.setStyle(ch.child._rightAnim);
@ -62,6 +79,8 @@ const NotificationList = () => Box({
} }
} }
}, 'closed'], }, 'closed'],
[Notifications, box => box.visible = Notifications.notifications.length > 0],
], ],
}); });