Files
custum-hyprpanel/widget/settings/shared/components/number.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

46 lines
1.5 KiB
TypeScript

import icons from 'lib/icons';
import { Opt } from 'lib/option';
import { Attribute, BoxWidget } from 'lib/types/widget';
import { Variable } from 'types/variable';
export const numberInputter = <T>(
self: BoxWidget,
opt: Opt<T>,
min: number,
max: number,
increment = 1,
isUnsaved: Variable<boolean>,
): Attribute => {
return (self.children = [
Widget.Box({
class_name: 'unsaved-icon-container',
child: isUnsaved.bind('value').as((unsvd) => {
if (unsvd) {
return Widget.Icon({
class_name: 'unsaved-icon',
icon: icons.ui.warning,
tooltipText: "Press 'Enter' to apply your changes.",
});
}
return Widget.Box();
}),
}),
Widget.SpinButton({
setup(self) {
self.set_range(min, max);
self.set_increments(1 * increment, 5 * increment);
self.on('value-changed', () => {
opt.value = self.value as T;
});
self.hook(opt, () => {
self.value = opt.value as number;
isUnsaved.value = Number(self.text) !== (opt.value as number);
});
self.connect('key-release-event', () => {
isUnsaved.value = Number(self.text) !== (opt.value as number);
});
},
}),
]);
};