71 lines
2.8 KiB
TypeScript
71 lines
2.8 KiB
TypeScript
import { closeNotifications } from "globals/notification";
|
|
import { Notifications } from "types/service/notifications";
|
|
|
|
const Controls = (notifs: Notifications) => {
|
|
return Widget.Box({
|
|
class_name: "notification-menu-controls",
|
|
expand: false,
|
|
vertical: false,
|
|
children: [
|
|
Widget.Box({
|
|
class_name: "menu-label-container notifications",
|
|
hpack: "start",
|
|
vpack: "center",
|
|
expand: true,
|
|
children: [
|
|
Widget.Label({
|
|
class_name: "menu-label notifications",
|
|
label: "Notifications",
|
|
}),
|
|
],
|
|
}),
|
|
Widget.Box({
|
|
hpack: "end",
|
|
vpack: "center",
|
|
expand: false,
|
|
children: [
|
|
Widget.Switch({
|
|
class_name: "menu-switch notifications",
|
|
vpack: "center",
|
|
active: notifs.bind("dnd").as((dnd: boolean) => !dnd),
|
|
on_activate: ({ active }) => {
|
|
notifs.dnd = !active;
|
|
},
|
|
}),
|
|
Widget.Box({
|
|
children: [
|
|
Widget.Separator({
|
|
hpack: "center",
|
|
vexpand: true,
|
|
vertical: true,
|
|
class_name: "menu-separator notification-controls",
|
|
}),
|
|
Widget.Button({
|
|
className: "clear-notifications-button",
|
|
tooltip_text: "Clear Notifications",
|
|
on_primary_click: () => {
|
|
if (removingNotifications.value) {
|
|
return;
|
|
}
|
|
|
|
closeNotifications(notifs.notifications);
|
|
},
|
|
child: Widget.Label({
|
|
class_name: removingNotifications.bind("value").as((removing: boolean) => {
|
|
return removing
|
|
? "clear-notifications-label txt-icon removing"
|
|
: "clear-notifications-label txt-icon";
|
|
}),
|
|
label: "",
|
|
}),
|
|
}),
|
|
],
|
|
}),
|
|
],
|
|
}),
|
|
],
|
|
});
|
|
};
|
|
|
|
export { Controls };
|