commit 919d51a744b451468b108cf285bb49a26bda6a4a
parent 3536f26007f4cab034536a375d751cbf64d88ed2
Author: Sergej Orlov <wladimirych@gmail.com>
Date: Thu, 4 Dec 2025 18:30:24 +0100
layers control: refactor extensions, call inits from `onAdd`
Diffstat:
6 files changed, 19 insertions(+), 28 deletions(-)
diff --git a/src/App.js b/src/App.js
@@ -182,12 +182,12 @@ function setUp() { // eslint-disable-line complexity
/* controls top-right corner */
- const layersControl = L.control.layers(null, null, {collapsed: false})
- .addTo(map);
+ const layersControl = L.control.layers(null, null, {collapsed: false});
enableLayersControlHotkeys(layersControl);
enableLayersControlAdaptiveHeight(layersControl);
enableLayersMinimize(layersControl);
enableLayersConfig(layersControl, getLayers());
+ layersControl.addTo(map);
layersControl.enableHashState('l');
/* controls bottom-left corner */
diff --git a/src/lib/leaflet.control.layers.adaptive-height/index.js b/src/lib/leaflet.control.layers.adaptive-height/index.js
@@ -33,11 +33,6 @@ function enableAdaptiveHeight(control) {
}
}
);
-
- if (control._map) {
- control.__setupResizeEventsHandler();
- setTimeout(() => control.__setAdaptiveHeight(), 0);
- }
}
export default enableAdaptiveHeight;
diff --git a/src/lib/leaflet.control.layers.configure/index.js b/src/lib/leaflet.control.layers.configure/index.js
@@ -8,14 +8,16 @@ import safeLocalStorage from '~/lib/safe-localstorage';
import './customLayer';
function enableConfig(control, {layers, customLayersOrder}) {
- const originalOnAdd = control.onAdd;
- const originalUnserializeState = control.unserializeState;
- const originalAddItem = control._addItem;
if (control._configEnabled) {
return;
}
+
enableTopRow(control);
+ const originalOnAdd = control.onAdd;
+ const originalUnserializeState = control.unserializeState;
+ const originalAddItem = control._addItem;
+
L.Util.extend(control, {
_configEnabled: true,
_allLayersGroups: layers,
@@ -25,6 +27,7 @@ function enableConfig(control, {layers, customLayersOrder}) {
onAdd: function(map) {
const container = originalOnAdd.call(this, map);
this.__injectConfigButton();
+ this._initializeLayersState();
return container;
},
@@ -525,10 +528,6 @@ function enableConfig(control, {layers, customLayersOrder}) {
}
);
- if (control._map) {
- control.__injectConfigButton();
- }
- control._initializeLayersState();
}
export default enableConfig;
diff --git a/src/lib/leaflet.control.layers.hotkeys/index.js b/src/lib/leaflet.control.layers.hotkeys/index.js
@@ -27,14 +27,14 @@ function extendLayerName(name, layer) {
}
function enableHotkeys(control) {
- const originalOnAdd = control.onAdd;
- const originalOnRemove = control.onRemove;
- const originalAddItem = control._addItem;
-
if (control._hotkeysEnabled) {
return control;
}
+ const originalOnAdd = control.onAdd;
+ const originalOnRemove = control.onRemove;
+ const originalAddItem = control._addItem;
+
L.Util.extend(control, {
_hotkeysEnabled: true,
diff --git a/src/lib/leaflet.control.layers.minimize/index.js b/src/lib/leaflet.control.layers.minimize/index.js
@@ -4,18 +4,20 @@ import '~/lib/controls-styles/controls-styles.css';
import enableTopRow from '~/lib/leaflet.control.layers.top-row';
function enableMinimize(control) {
- const originalOnAdd = control.onAdd;
if (control._minimizeEnabled) {
return;
}
+
enableTopRow(control);
+ const originalOnAdd = control.onAdd;
+
L.Util.extend(control, {
_minimizeEnabled: true,
onAdd: function(map) {
const container = originalOnAdd.call(this, map);
- setTimeout(() => this.__injectMinimizeButtons(), 0);
+ this.__injectMinimizeButtons();
return container;
},
@@ -43,9 +45,6 @@ function enableMinimize(control) {
}
}
);
- if (control._map) {
- control.__injectMinimizeButtons();
- }
}
export default enableMinimize;
diff --git a/src/lib/leaflet.control.layers.top-row/index.js b/src/lib/leaflet.control.layers.top-row/index.js
@@ -2,17 +2,18 @@ import L from 'leaflet';
import './style.css';
function enableTopRow(control) {
- const originalOnAdd = control.onAdd;
if (control._topRowEnabled) {
return;
}
+ const originalOnAdd = control.onAdd;
+
L.Util.extend(control, {
_topRowEnabled: true,
onAdd: function(map) {
const container = originalOnAdd.call(this, map);
- setTimeout(() => this.__injectTopRow(), 0);
+ this.__injectTopRow();
return container;
},
@@ -22,9 +23,6 @@ function enableTopRow(control) {
}
});
- if (control._map) {
- control.__injectTopRow();
- }
}
export default enableTopRow;