@forcecalendar/interface 1.0.44 → 1.0.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forcecalendar/interface",
3
- "version": "1.0.44",
3
+ "version": "1.0.45",
4
4
  "type": "module",
5
5
  "description": "Official interface layer for forceCalendar Core - Enterprise calendar components",
6
6
  "main": "dist/force-calendar-interface.umd.js",
@@ -50,8 +50,8 @@ export class ForceCalendar extends BaseComponent {
50
50
 
51
51
  this.stateManager = new StateManager(config);
52
52
 
53
- // Subscribe to state changes
54
- this.stateManager.subscribe(this.handleStateChange.bind(this));
53
+ // Subscribe to state changes (store unsubscribe for cleanup)
54
+ this._stateUnsubscribe = this.stateManager.subscribe(this.handleStateChange.bind(this));
55
55
 
56
56
  // Listen for events
57
57
  this.setupEventListeners();
@@ -903,10 +903,25 @@ export class ForceCalendar extends BaseComponent {
903
903
  this.stateManager.today();
904
904
  }
905
905
 
906
+ unmount() {
907
+ // Called by disconnectedCallback — clean up all subscriptions
908
+ this.destroy();
909
+ }
910
+
906
911
  destroy() {
907
912
  this._busUnsubscribers.forEach(unsub => unsub());
908
913
  this._busUnsubscribers = [];
909
914
 
915
+ if (this._stateUnsubscribe) {
916
+ this._stateUnsubscribe();
917
+ this._stateUnsubscribe = null;
918
+ }
919
+
920
+ if (this._currentViewInstance && this._currentViewInstance.cleanup) {
921
+ this._currentViewInstance.cleanup();
922
+ this._currentViewInstance = null;
923
+ }
924
+
910
925
  if (this.stateManager) {
911
926
  this.stateManager.destroy();
912
927
  }
@@ -436,6 +436,10 @@ class StateManager {
436
436
  this._subscriberIds.clear();
437
437
  this._subscriberIds = null;
438
438
  }
439
+ if (this.eventBus) {
440
+ this.eventBus.clear();
441
+ this.eventBus = null;
442
+ }
439
443
  this.state = null;
440
444
  this.calendar = null;
441
445
  }