From f6ec6d7c9b68a09049f8d518dd944447190052b1 Mon Sep 17 00:00:00 2001 From: redphx <96280+redphx@users.noreply.github.com> Date: Wed, 25 Sep 2024 20:20:06 +0700 Subject: [PATCH] Fix not calculating controller-friendly elements - const $selects = $dialog.querySelectorAll('.bx-select:not([data-calculated]) select'); - $selects.forEach($select => { - const rect = $select.getBoundingClientRect(); - const $parent = $select.parentElement! as HTMLElement; - $parent.dataset.calculated = 'true'; - - let $label; - let width = Math.ceil(rect.width); - - if (($select as HTMLSelectElement).multiple) { - $label = $parent.querySelector('.bx-select-value') as HTMLElement; - width += 15; // Add checkbox's width - } else { - $label = $parent.querySelector('div') as HTMLElement; - } - - // Set min-width - $label.style.minWidth = width + 'px'; - }); + this.calculateSelectBoxes($dialog); }); observer.observe(this.$container, {childList: true}); } } + calculateSelectBoxes($root: HTMLElement) { + const $selects = $root.querySelectorAll('.bx-select:not([data-calculated]) select'); + $selects.forEach($select => { + const $parent = $select.parentElement! as HTMLElement; + + // Don't apply to select.bx-full-width elements + if ($parent.classList.contains('bx-full-width')) { + $parent.dataset.calculated = 'true'; + return; + } + + const rect = $select.getBoundingClientRect(); + + let $label; + let width = Math.ceil(rect.width); + if (!width) { + return; + } + + if (($select as HTMLSelectElement).multiple) { + $label = $parent.querySelector('.bx-select-value') as HTMLElement; + width += 20; // Add checkbox's width + } else { + $label = $parent.querySelector('div') as HTMLElement; + } + + // Set min-width + $label.style.minWidth = width + 'px'; + $parent.dataset.calculated = 'true'; + }); + } + handleEvent(event: Event) { switch (event.type) { case 'keydown': diff --git a/src/modules/ui/dialog/settings-dialog.ts b/src/modules/ui/dialog/settings-dialog.ts index 64e7309..6157787 100644 --- a/src/modules/ui/dialog/settings-dialog.ts +++ b/src/modules/ui/dialog/settings-dialog.ts @@ -943,6 +943,11 @@ export class SettingsNavigationDialog extends NavigationDialog { for (const $child of Array.from(this.$settings.children)) { if ($child.getAttribute('data-tab-group') === settingTab.group) { $child.classList.remove('bx-gone'); + + // Calculate size of controller-friendly select boxes + if (getPref(PrefKey.UI_CONTROLLER_FRIENDLY)) { + this.dialogManager.calculateSelectBoxes($child as HTMLElement); + } } else { $child.classList.add('bx-gone'); }