Refactored hooks to specify events and reworked the dropdowns to be significantly faster and more responsive. (#304)

* Updated events to be more specific

* Update more events

* Update globalmousepos

* Update themes and submap module to show submap name.

* Type fixes

* Reworked menu position calculation logic to be much more efficient.

* Revert import file location

* We luv arrow functions

* Remove globalMousePos remnants since it's unused.

* Added the ability to configure menu dropdown transition and duration.

* Fix type
This commit is contained in:
Jas Singh
2024-10-06 00:22:27 -07:00
committed by GitHub
parent 8a727a080e
commit ee7d19320c
71 changed files with 2175 additions and 1796 deletions

View File

@@ -421,6 +421,14 @@ export const CustomModuleSettings = (): Scrollable<GtkWidget, Attribute> =>
title: 'Button Border',
type: 'boolean',
}),
Option({
opt: options.bar.customModules.submap.showSubmapName,
title: 'Show Submap Name',
subtitle:
'When enabled, the name of the current submap will be displayed' +
' instead of the Submap Enabled or Disabled text.',
type: 'boolean',
}),
Option({
opt: options.bar.customModules.submap.enabledIcon,
title: 'Enabled Icon',

View File

@@ -7,9 +7,11 @@ import Button from 'types/widgets/button';
import { Variable as VariableType } from 'types/variable';
import { Attribute, Child } from 'lib/types/widget';
import { BarBoxChild } from 'lib/types/bar';
import { caapitalizeFirstLetter } from 'lib/utils';
const {
label,
showSubmapName,
enabledIcon,
disabledIcon,
enabledText,
@@ -21,10 +23,10 @@ const {
scrollDown,
} = options.bar.customModules.submap;
const submapStatus: VariableType<boolean> = Variable(false);
const submapStatus: VariableType<string> = Variable('');
hyprland.connect('submap', () => {
submapStatus.value = !submapStatus.value;
hyprland.connect('submap', (_, currentSubmap) => {
submapStatus.value = currentSubmap;
});
export const Submap = (): BarBoxChild => {
@@ -32,20 +34,36 @@ export const Submap = (): BarBoxChild => {
textIcon: Utils.merge(
[submapStatus.bind('value'), enabledIcon.bind('value'), disabledIcon.bind('value')],
(status, enabled, disabled) => {
return status ? enabled : disabled;
return status.length > 0 ? enabled : disabled;
},
),
tooltipText: Utils.merge(
[submapStatus.bind('value'), enabledText.bind('value'), disabledText.bind('value')],
(status, enabled, disabled) => {
return status ? enabled : disabled;
[
submapStatus.bind('value'),
enabledText.bind('value'),
disabledText.bind('value'),
showSubmapName.bind('value'),
],
(status, enabled, disabled, showSmName) => {
if (showSmName) {
return status.length > 0 ? caapitalizeFirstLetter(status) : 'Default';
}
return status.length > 0 ? enabled : disabled;
},
),
boxClass: 'submap',
label: Utils.merge(
[submapStatus.bind('value'), enabledText.bind('value'), disabledText.bind('value')],
(status, enabled, disabled) => {
return status ? enabled : disabled;
[
submapStatus.bind('value'),
enabledText.bind('value'),
disabledText.bind('value'),
showSubmapName.bind('value'),
],
(status, enabled, disabled, showSmName) => {
if (showSmName) {
return status.length > 0 ? caapitalizeFirstLetter(status) : 'Default';
}
return status.length > 0 ? enabled : disabled;
},
),
showLabelBinding: label.bind('value'),