Files
custum-hyprpanel/modules/menus/network/wifi/index.ts
Rubin Bhandari 2126cf0657 feat: add wifi toggle slider (#348)
* feat: add wifi toggle slider

* Added styling options for the network switch

---------

Co-authored-by: Jas Singh <jaskiratpal.singh@outlook.com>
2024-10-21 01:30:53 -07:00

82 lines
2.8 KiB
TypeScript

const network = await Service.import('network');
import { renderWAPs } from './WirelessAPs.js';
import { renderWapStaging } from './APStaging.js';
import { AccessPoint } from 'lib/types/network.js';
import { BoxWidget } from 'lib/types/widget.js';
const Staging = Variable({} as AccessPoint);
const Connecting = Variable('');
const searchInProgress = Variable(false);
const startRotation = (): void => {
searchInProgress.value = true;
setTimeout(() => {
searchInProgress.value = false;
}, 5 * 1000);
};
const Wifi = (): BoxWidget => {
return Widget.Box({
class_name: 'menu-section-container wifi',
vertical: true,
children: [
Widget.Box({
class_name: 'menu-label-container',
hpack: 'fill',
children: [
Widget.Label({
class_name: 'menu-label',
hexpand: true,
hpack: 'start',
label: 'Wi-Fi',
}),
Widget.Switch({
class_name: 'menu-switch network',
vpack: 'center',
tooltip_text: 'Toggle Wifi',
active: network.wifi.enabled,
on_activate: () => {
network.toggleWifi();
},
}),
Widget.Button({
vpack: 'center',
hpack: 'end',
class_name: 'menu-icon-button search network',
on_primary_click: () => {
startRotation();
network.wifi.scan();
},
child: Widget.Icon({
class_name: searchInProgress.bind('value').as((v) => (v ? 'spinning' : '')),
icon: 'view-refresh-symbolic',
}),
}),
],
}),
Widget.Box({
class_name: 'menu-items-section',
vertical: true,
children: [
Widget.Box({
class_name: 'wap-staging',
setup: (self) => {
renderWapStaging(self, network, Staging, Connecting);
},
}),
Widget.Box({
class_name: 'available-waps',
vertical: true,
setup: (self) => {
renderWAPs(self, network, Staging, Connecting);
},
}),
],
}),
],
});
};
export { Wifi };