♻️ ags(control-center/notifhistory): more structured function

This commit is contained in:
retrozinndev
2025-04-10 16:44:53 -03:00
parent e0cc539541
commit 739df31113
+58 -54
View File
@@ -4,58 +4,62 @@ import { HistoryNotification, Notifications } from "../../scripts/notifications"
import { NotificationWidget } from "../Notification"; import { NotificationWidget } from "../Notification";
export const NotifHistory = () => new Widget.Box({ export const NotifHistory = () => {
orientation: Gtk.Orientation.VERTICAL, return new Widget.Box({
className: "history", orientation: Gtk.Orientation.VERTICAL,
visible: bind(Notifications.getDefault(), "history").as(history => history.length > 0), className: bind(Notifications.getDefault(), "history").as(history => history.length > 0 ? "history" : "history hide"),
children: [ children: [
new Widget.Scrollable({ new Widget.Scrollable({
className: "history", className: "history",
hscroll: Gtk.PolicyType.NEVER, hscroll: Gtk.PolicyType.NEVER,
vscroll: Gtk.PolicyType.AUTOMATIC, vscroll: Gtk.PolicyType.AUTOMATIC,
visible: bind(Notifications.getDefault(), "history").as(history => history.length > 0), propagateNaturalHeight: true,
propagateNaturalHeight: true, propagateNaturalWidth: false,
propagateNaturalWidth: false, onDraw: (scrollable) => {
onDraw: (scrollable) => { if(!(scrollable.get_child()! as Gtk.Viewport).get_child()) return;
scrollable.minContentHeight =
((scrollable.get_child()! as Gtk.Viewport).get_child() as Widget.Box).get_children()?.[0].get_allocation().height || 0; scrollable.minContentHeight =
}, ((scrollable.get_child()! as Gtk.Viewport).get_child() as Widget.Box
child: new Widget.Box({ ).get_children()?.[0].get_allocation().height
className: "notifications", || 0;
},
child: new Widget.Box({
className: "notifications",
hexpand: true,
orientation: Gtk.Orientation.VERTICAL,
homogeneous: false,
spacing: 4,
valign: Gtk.Align.START,
children: bind(Notifications.getDefault(), "history").as((history: Array<HistoryNotification>) =>
history.map((notification: HistoryNotification) => NotificationWidget(notification,
() => Notifications.getDefault().removeHistory(notification.id), true)
))
} as Widget.BoxProps)
} as Widget.ScrollableProps),
new Widget.Box({
vexpand: false,
hexpand: true, hexpand: true,
orientation: Gtk.Orientation.VERTICAL, halign: Gtk.Align.END,
homogeneous: false, className: "button-row",
spacing: 4, children: [
valign: Gtk.Align.START, new Widget.Button({
children: bind(Notifications.getDefault(), "history").as((history: Array<HistoryNotification>) => className: "clear-all",
history.map((notification: HistoryNotification) => NotificationWidget(notification, child: new Widget.Box({
() => Notifications.getDefault().removeHistory(notification.id), true) children: [
)) new Widget.Label({
} as Widget.BoxProps) className: "nf",
} as Widget.ScrollableProps), css: "margin-right: 6px",
new Widget.Box({ label: "󰎟"
vexpand: false, } as Widget.LabelProps),
hexpand: true, new Widget.Label({
halign: Gtk.Align.END, label: "Clear"
className: "button-row", } as Widget.LabelProps)
children: [ ]
new Widget.Button({ } as Widget.BoxProps),
className: "clear-all", onClick: () => Notifications.getDefault().clearHistory(),
child: new Widget.Box({ } as Widget.ButtonProps)
children: [ ]
new Widget.Label({ })
className: "nf", ]
css: "margin-right: 6px", } as Widget.BoxProps);
label: "󰎟" }
} as Widget.LabelProps),
new Widget.Label({
label: "Clear"
} as Widget.LabelProps)
]
} as Widget.BoxProps),
onClick: () => Notifications.getDefault().clearHistory(),
} as Widget.ButtonProps)
]
})
]
} as Widget.BoxProps);