diff --git a/src/systems/dashboard/dashboardManager.js b/src/systems/dashboard/dashboardManager.js index 825f789..8c0df1e 100644 --- a/src/systems/dashboard/dashboardManager.js +++ b/src/systems/dashboard/dashboardManager.js @@ -746,21 +746,8 @@ export class DashboardManager { console.warn(`[DashboardManager] No render function for ${widget.type}`); } - // If in edit mode, disable content editing on this widget - if (this.editManager && this.editManager.isEditMode) { - const editableElements = element.querySelectorAll('[contenteditable="true"]'); - editableElements.forEach(el => { - el.dataset.wasEditable = 'true'; - el.contentEditable = 'false'; - }); - - // Also disable input fields (except file inputs which should remain functional) - const inputElements = element.querySelectorAll('input:not([type="file"]), textarea'); - inputElements.forEach(el => { - el.dataset.wasEnabled = el.disabled ? 'false' : 'true'; - el.disabled = true; - }); - } + // Note: Content editing will be disabled in bulk after all widgets are rendered + // (see onTabChange for global disable pass) } /** @@ -1104,6 +1091,12 @@ export class DashboardManager { }); } + // Disable content editing once for all widgets if in edit mode + // (More efficient than per-widget queries - 2 queries vs 2N queries) + if (this.editManager && this.editManager.isEditMode) { + this.editManager.disableContentEditing(); + } + this.notifyChange('tabChanged', { tabId }); } diff --git a/src/systems/dashboard/editModeManager.js b/src/systems/dashboard/editModeManager.js index 8040bd3..803cb6a 100644 --- a/src/systems/dashboard/editModeManager.js +++ b/src/systems/dashboard/editModeManager.js @@ -482,8 +482,8 @@ export class EditModeManager { } }); - // Ensure content editing is disabled for all widgets - this.disableContentEditing(); + // Note: Content editing disabling is handled by enterEditMode() and onTabChange() + // No need to call it here as well console.log('[EditModeManager] Synced controls for', widgets.length, 'widgets'); }