diff --git a/src/systems/dashboard/dashboardIntegration.js b/src/systems/dashboard/dashboardIntegration.js index ace8a0a..4d592be 100644 --- a/src/systems/dashboard/dashboardIntegration.js +++ b/src/systems/dashboard/dashboardIntegration.js @@ -238,6 +238,17 @@ function setupDashboardEventListeners(dependencies) { }); } + // Lock/unlock widgets button + const lockWidgetsBtn = document.querySelector('#rpg-dashboard-lock-widgets'); + if (lockWidgetsBtn) { + lockWidgetsBtn.addEventListener('click', () => { + if (dashboardManager && dashboardManager.editManager) { + console.log('[RPG Companion] Lock button clicked'); + dashboardManager.editManager.toggleLock(); + } + }); + } + // Add widget button const addWidgetBtn = document.querySelector('#rpg-dashboard-add-widget'); if (addWidgetBtn) { diff --git a/src/systems/dashboard/dashboardManager.js b/src/systems/dashboard/dashboardManager.js index e3c8842..a915a36 100644 --- a/src/systems/dashboard/dashboardManager.js +++ b/src/systems/dashboard/dashboardManager.js @@ -156,21 +156,7 @@ export class DashboardManager { } }); - // Initialize Drag & Drop - this.dragHandler = new DragDropHandler(this.gridEngine, { - showGrid: true, - enableSnap: true - }); - - // Initialize Resize Handler - this.resizeHandler = new ResizeHandler(this.gridEngine, { - minWidth: 1, - minHeight: 2, - maxWidth: 4, // Max 4 columns (will be clamped to actual column count) - maxHeight: 10 - }); - - // Initialize Edit Mode Manager + // Initialize Edit Mode Manager first (needed by drag/resize handlers) this.editManager = new EditModeManager({ container: this.container, onSave: () => this.handleEditSave(), @@ -180,6 +166,22 @@ export class DashboardManager { onWidgetSettings: (widgetId) => this.openWidgetSettings(widgetId) }); + // Initialize Drag & Drop (with editManager reference) + this.dragHandler = new DragDropHandler(this.gridEngine, { + showGrid: true, + enableSnap: true, + editManager: this.editManager + }); + + // Initialize Resize Handler (with editManager reference) + this.resizeHandler = new ResizeHandler(this.gridEngine, { + minWidth: 1, + minHeight: 2, + maxWidth: 4, // Max 4 columns (will be clamped to actual column count) + maxHeight: 10, + editManager: this.editManager + }); + // Initialize Layout Persistence this.persistence = new LayoutPersistence({ debounceMs: this.config.debounceMs, diff --git a/src/systems/dashboard/dashboardTemplate.html b/src/systems/dashboard/dashboardTemplate.html index 08ea754..d8648cf 100644 --- a/src/systems/dashboard/dashboardTemplate.html +++ b/src/systems/dashboard/dashboardTemplate.html @@ -18,6 +18,11 @@ + + +