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:
@@ -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',
|
||||
|
||||
@@ -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'),
|
||||
|
||||
Reference in New Issue
Block a user