From 36de22c50aa6019c28a2b729ef6d538a4a1dfa5f Mon Sep 17 00:00:00 2001 From: johndoe Date: Wed, 31 Mar 2021 15:28:45 +0300 Subject: [PATCH] DivOverlay: new public method `toggle` Refactor Layer\ togglePopup/Tooltip: use common method DivOverlay\toggle Popup: do not clear map._popup on close as it's redundant --- src/layer/DivOverlay.js | 18 ++++++++++++++++++ src/layer/Popup.js | 10 +--------- src/layer/Tooltip.js | 6 +----- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/layer/DivOverlay.js b/src/layer/DivOverlay.js index 4e228590967..a677dd40e02 100644 --- a/src/layer/DivOverlay.js +++ b/src/layer/DivOverlay.js @@ -61,6 +61,24 @@ export var DivOverlay = Layer.extend({ return this; }, + // @method toggle(layer?: Layer): this + // Opens or closes the overlay bound to layer depending on its current state. + // Argument may be omitted only for overlay bound to layer. + // Alternative to `layer.togglePopup()`/`.toggleTooltip()`. + toggle: function (layer, target) { + if (this._map) { + this.close(); + } else { + layer = arguments.length ? layer : this._source; + var latlng = this._prepareOpen(layer, target); + this.setLatLng(latlng); + + // open the overlay on the map + this.openOn(layer._map); + } + return this; + }, + onAdd: function (map) { this._zoomAnimated = map._zoomAnimated; diff --git a/src/layer/Popup.js b/src/layer/Popup.js index ed169048368..397c446509d 100644 --- a/src/layer/Popup.js +++ b/src/layer/Popup.js @@ -140,10 +140,6 @@ export var Popup = DivOverlay.extend({ onRemove: function (map) { DivOverlay.prototype.onRemove.call(this, map); - if (this === map._popup) { - map._popup = null; - } - // @namespace Map // @section Popup events // @event popupclose: PopupEvent @@ -416,11 +412,7 @@ Layer.include({ // Opens or closes the popup bound to this layer depending on its current state. togglePopup: function (target) { if (this._popup) { - if (this._popup._map) { - this._popup.close(); - } else { - this.openPopup(target); - } + this._popup.toggle(this, target); } return this; }, diff --git a/src/layer/Tooltip.js b/src/layer/Tooltip.js index 3358cddcdb3..11a0da0d2d0 100644 --- a/src/layer/Tooltip.js +++ b/src/layer/Tooltip.js @@ -333,11 +333,7 @@ Layer.include({ // Opens or closes the tooltip bound to this layer depending on its current state. toggleTooltip: function (target) { if (this._tooltip) { - if (this._tooltip._map) { - this._tooltip.close(); - } else { - this.openTooltip(target); - } + this._tooltip.toggle(this, target); } return this; },