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 @@
+
+
+