From 16b9f09e66ffe1584f925cb1a9f261bc159c8dda Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Mon, 4 Nov 2024 19:25:04 -0500 Subject: [PATCH] fix: reinitialize settings tabs for DOM events --- src/gui/src/UI/Settings/UIWindowSettings.js | 3 +++ src/gui/src/UI/UIElement.js | 6 ++++++ src/gui/src/services/SettingsService.js | 7 ++++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/gui/src/UI/Settings/UIWindowSettings.js b/src/gui/src/UI/Settings/UIWindowSettings.js index 7c5a50c61..1b30e6469 100644 --- a/src/gui/src/UI/Settings/UIWindowSettings.js +++ b/src/gui/src/UI/Settings/UIWindowSettings.js @@ -110,6 +110,9 @@ async function UIWindowSettings(options){ const component = tab.factory(); component.attach(tab_placeholders[i]); } + if ( tab.reinitialize ) { + tab.reinitialize(); + } if ( tab.dom ) { tab_placeholders[i].replaceWith(tab.dom); } diff --git a/src/gui/src/UI/UIElement.js b/src/gui/src/UI/UIElement.js index 3a8b381dc..5220622c3 100644 --- a/src/gui/src/UI/UIElement.js +++ b/src/gui/src/UI/UIElement.js @@ -93,6 +93,12 @@ export default def(class UIElement extends AdvancedBase { this.make(this); } + reinitialize () { + this.root = document.createElement(this.tagName); + this.make(this); + return this.root; + } + async open_as_window (options = {}) { const placeholder = Placeholder(); console.log('window options?', this.windowOptions); diff --git a/src/gui/src/services/SettingsService.js b/src/gui/src/services/SettingsService.js index 828f3f635..5b28422cc 100644 --- a/src/gui/src/services/SettingsService.js +++ b/src/gui/src/services/SettingsService.js @@ -49,7 +49,12 @@ export class SettingsService extends Service { const ui_element = tab; tab = { ...ui_element.as(TSettingsTab).get_metadata(), - dom: ui_element.root, + reinitialize () { + ui_element.reinitialize(); + }, + get dom () { + return ui_element.root; + }, }; } this.#tabs.push(tab);