Files
custum-hyprpanel/modules/menus/power/helpers/actions.ts
Jas Singh 2c72cc66d8 Implemented strict linting standards and prettier formatting config. (#248)
* Implemented strict linting standards and prettier formatting config.

* More linter fixes and type updates.

* More linter updates and type fixes

* Remove noisy comments

* Linter and type updates

* Linter, formatting and type updates.

* Linter updates

* Type updates

* Type updates

* fixed all linter errors

* Fixed all linting, formatting and type issues.

* Resolve merge conflicts.
2024-09-14 16:20:05 -07:00

62 lines
1.5 KiB
TypeScript

import { Action } from 'lib/types/power';
import options from 'options';
const { sleep, reboot, logout, shutdown } = options.menus.dashboard.powermenu;
class PowerMenu extends Service {
static {
Service.register(
this,
{},
{
title: ['string'],
cmd: ['string'],
},
);
}
#title = '';
#cmd = '';
get title(): string {
return this.#title;
}
action(action: Action): void {
[this.#cmd, this.#title] = {
sleep: [sleep.value, 'Sleep'],
reboot: [reboot.value, 'Reboot'],
logout: [logout.value, 'Log Out'],
shutdown: [shutdown.value, 'Shutdown'],
}[action];
this.notify('cmd');
this.notify('title');
this.emit('changed');
App.closeWindow('powermenu');
App.openWindow('verification');
}
customAction(action: Action, cmnd: string): void {
[this.#cmd, this.#title] = [cmnd, action];
this.notify('cmd');
this.notify('title');
this.emit('changed');
App.closeWindow('powermenu');
App.openWindow('verification');
}
shutdown = (): void => {
this.action('shutdown');
};
exec = (): void => {
App.closeWindow('verification');
Utils.execAsync(this.#cmd);
};
}
const powermenu = new PowerMenu();
Object.assign(globalThis, { powermenu });
export default powermenu;