fix: clean up map resize hook listeners
This commit is contained in:
parent
be1c9f1038
commit
512b7c4fe9
2 changed files with 12 additions and 3 deletions
|
|
@ -835,7 +835,10 @@ let MapAPRSMap = {
|
|||
|
||||
// Store the event handler so we can remove it later
|
||||
self.popupNavigationHandler = (e: Event) => {
|
||||
const target = e.target as HTMLElement;
|
||||
const target = e.target;
|
||||
if (!(target instanceof Element)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if clicked element or its parent is a LiveView navigation link
|
||||
const navLink = target.closest(".aprs-lv-link") as HTMLAnchorElement;
|
||||
|
|
@ -1492,13 +1495,14 @@ let MapAPRSMap = {
|
|||
});
|
||||
|
||||
// Resize map when slideover toggles (class changes handled by LiveView JS commands)
|
||||
self.el.addEventListener("phx:map-resize", () => {
|
||||
self.mapResizeHandler = () => {
|
||||
setTimeout(() => {
|
||||
if (self.map) {
|
||||
self.map.invalidateSize();
|
||||
}
|
||||
}, 350);
|
||||
});
|
||||
};
|
||||
self.el.addEventListener("phx:map-resize", self.mapResizeHandler);
|
||||
|
||||
// Handle bounds-based marker filtering
|
||||
self.handleEvent(
|
||||
|
|
@ -2504,6 +2508,10 @@ let MapAPRSMap = {
|
|||
window.removeEventListener("resize", self.resizeHandler);
|
||||
self.resizeHandler = undefined;
|
||||
}
|
||||
if (self.mapResizeHandler !== undefined) {
|
||||
self.el.removeEventListener("phx:map-resize", self.mapResizeHandler);
|
||||
self.mapResizeHandler = undefined;
|
||||
}
|
||||
|
||||
// Remove map event handlers
|
||||
if (self.map !== undefined && self.mapEventHandlers !== undefined) {
|
||||
|
|
|
|||
1
assets/js/types/map.d.ts
vendored
1
assets/js/types/map.d.ts
vendored
|
|
@ -30,6 +30,7 @@ export interface LiveViewHookContext {
|
|||
mapEventHandlers?: Map<string, Function>;
|
||||
isDestroyed?: boolean;
|
||||
popupNavigationHandler?: (e: Event) => void;
|
||||
mapResizeHandler?: () => void;
|
||||
moveEndHandler?: () => void;
|
||||
zoomEndHandler?: () => void;
|
||||
rfPathLines?: Array<Polyline | Marker>; // Array of Leaflet polylines and markers for RF path visualization
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue