From d32ab606b0f439c264b9a7ace461f23b93916365 Mon Sep 17 00:00:00 2001
From: andycalder <28855024+andycalder@users.noreply.github.com>
Date: Wed, 13 Mar 2019 00:29:56 +1000
Subject: [PATCH 1/2] Gray out zoom buttons at maxZoom/minZoom
---
src/css/mapbox-gl.css | 12 ++++++++++--
src/css/svg/mapboxgl-ctrl-zoom-in.svg | 2 +-
src/css/svg/mapboxgl-ctrl-zoom-out.svg | 2 +-
src/ui/control/navigation_control.js | 16 ++++++++++++++++
4 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/src/css/mapbox-gl.css b/src/css/mapbox-gl.css
index 55400964a83..fa61b8fe13f 100644
--- a/src/css/mapbox-gl.css
+++ b/src/css/mapbox-gl.css
@@ -112,11 +112,19 @@
}
.mapboxgl-ctrl-icon.mapboxgl-ctrl-zoom-out {
- background-image: svg-load('svg/mapboxgl-ctrl-zoom-out.svg');
+ background-image: svg-load('svg/mapboxgl-ctrl-zoom-out.svg', fill=#333);
}
.mapboxgl-ctrl-icon.mapboxgl-ctrl-zoom-in {
- background-image: svg-load('svg/mapboxgl-ctrl-zoom-in.svg');
+ background-image: svg-load('svg/mapboxgl-ctrl-zoom-in.svg', fill=#333);
+}
+
+.mapboxgl-ctrl-icon.mapboxgl-ctrl-zoom-out.mapboxgl-ctrl-zoom-out-disabled {
+ background-image: svg-load('svg/mapboxgl-ctrl-zoom-out.svg', fill=#ccc);
+}
+
+.mapboxgl-ctrl-icon.mapboxgl-ctrl-zoom-in.mapboxgl-ctrl-zoom-in-disabled {
+ background-image: svg-load('svg/mapboxgl-ctrl-zoom-in.svg', fill=#ccc);
}
.mapboxgl-ctrl-icon.mapboxgl-ctrl-geolocate {
diff --git a/src/css/svg/mapboxgl-ctrl-zoom-in.svg b/src/css/svg/mapboxgl-ctrl-zoom-in.svg
index b26e3d16205..bc8ecf94e9a 100644
--- a/src/css/svg/mapboxgl-ctrl-zoom-in.svg
+++ b/src/css/svg/mapboxgl-ctrl-zoom-in.svg
@@ -1,3 +1,3 @@
diff --git a/src/css/svg/mapboxgl-ctrl-zoom-out.svg b/src/css/svg/mapboxgl-ctrl-zoom-out.svg
index ab6e9ff222b..f2bc0078361 100644
--- a/src/css/svg/mapboxgl-ctrl-zoom-out.svg
+++ b/src/css/svg/mapboxgl-ctrl-zoom-out.svg
@@ -1,3 +1,3 @@
diff --git a/src/ui/control/navigation_control.js b/src/ui/control/navigation_control.js
index 395fefd2e45..2d0ed13d73e 100644
--- a/src/ui/control/navigation_control.js
+++ b/src/ui/control/navigation_control.js
@@ -46,6 +46,9 @@ class NavigationControl {
this._container.addEventListener('contextmenu', (e) => e.preventDefault());
if (this.options.showZoom) {
+ bindAll([
+ '_updateZoomButtons'
+ ], this);
this._zoomInButton = this._createButton('mapboxgl-ctrl-icon mapboxgl-ctrl-zoom-in', 'Zoom in', () => this._map.zoomIn());
this._zoomOutButton = this._createButton('mapboxgl-ctrl-icon mapboxgl-ctrl-zoom-out', 'Zoom out', () => this._map.zoomOut());
}
@@ -58,6 +61,12 @@ class NavigationControl {
}
}
+ _updateZoomButtons() {
+ const zoom = this._map.getZoom();
+ this._zoomInButton.classList.toggle('mapboxgl-ctrl-zoom-in-disabled', zoom === this._map.getMaxZoom());
+ this._zoomOutButton.classList.toggle('mapboxgl-ctrl-zoom-out-disabled', zoom === this._map.getMinZoom());
+ }
+
_rotateCompassArrow() {
const rotate = `rotate(${this._map.transform.angle * (180 / Math.PI)}deg)`;
this._compassArrow.style.transform = rotate;
@@ -65,6 +74,10 @@ class NavigationControl {
onAdd(map: Map) {
this._map = map;
+ if (this.options.showZoom) {
+ this._map.on('zoom', this._updateZoomButtons);
+ this._updateZoomButtons();
+ }
if (this.options.showCompass) {
this._map.on('rotate', this._rotateCompassArrow);
this._rotateCompassArrow();
@@ -77,6 +90,9 @@ class NavigationControl {
onRemove() {
DOM.remove(this._container);
+ if (this.options.showZoom) {
+ this._map.off('zoom', this._updateZoomButtons);
+ }
if (this.options.showCompass) {
this._map.off('rotate', this._rotateCompassArrow);
DOM.removeEventListener(this._compass, 'mousedown', this._handler.onMouseDown);
From ae70746b6106153f234ea85e0042ac026cc28ebb Mon Sep 17 00:00:00 2001
From: andycalder <28855024+andycalder@users.noreply.github.com>
Date: Thu, 14 Mar 2019 02:15:23 +1000
Subject: [PATCH 2/2] Use opacity to gray out
---
src/css/mapbox-gl.css | 17 +++++++----------
src/css/svg/mapboxgl-ctrl-zoom-in.svg | 2 +-
src/css/svg/mapboxgl-ctrl-zoom-out.svg | 2 +-
src/ui/control/navigation_control.js | 4 ++--
4 files changed, 11 insertions(+), 14 deletions(-)
diff --git a/src/css/mapbox-gl.css b/src/css/mapbox-gl.css
index fa61b8fe13f..5359ae93ae4 100644
--- a/src/css/mapbox-gl.css
+++ b/src/css/mapbox-gl.css
@@ -111,20 +111,17 @@
padding: 5px;
}
-.mapboxgl-ctrl-icon.mapboxgl-ctrl-zoom-out {
- background-image: svg-load('svg/mapboxgl-ctrl-zoom-out.svg', fill=#333);
-}
-
-.mapboxgl-ctrl-icon.mapboxgl-ctrl-zoom-in {
- background-image: svg-load('svg/mapboxgl-ctrl-zoom-in.svg', fill=#333);
+.mapboxgl-ctrl-icon.mapboxgl-ctrl-icon-disabled {
+ opacity: 0.25;
+ border-color: #373737;
}
-.mapboxgl-ctrl-icon.mapboxgl-ctrl-zoom-out.mapboxgl-ctrl-zoom-out-disabled {
- background-image: svg-load('svg/mapboxgl-ctrl-zoom-out.svg', fill=#ccc);
+.mapboxgl-ctrl-icon.mapboxgl-ctrl-zoom-out {
+ background-image: svg-load('svg/mapboxgl-ctrl-zoom-out.svg');
}
-.mapboxgl-ctrl-icon.mapboxgl-ctrl-zoom-in.mapboxgl-ctrl-zoom-in-disabled {
- background-image: svg-load('svg/mapboxgl-ctrl-zoom-in.svg', fill=#ccc);
+.mapboxgl-ctrl-icon.mapboxgl-ctrl-zoom-in {
+ background-image: svg-load('svg/mapboxgl-ctrl-zoom-in.svg');
}
.mapboxgl-ctrl-icon.mapboxgl-ctrl-geolocate {
diff --git a/src/css/svg/mapboxgl-ctrl-zoom-in.svg b/src/css/svg/mapboxgl-ctrl-zoom-in.svg
index bc8ecf94e9a..b26e3d16205 100644
--- a/src/css/svg/mapboxgl-ctrl-zoom-in.svg
+++ b/src/css/svg/mapboxgl-ctrl-zoom-in.svg
@@ -1,3 +1,3 @@
diff --git a/src/css/svg/mapboxgl-ctrl-zoom-out.svg b/src/css/svg/mapboxgl-ctrl-zoom-out.svg
index f2bc0078361..ab6e9ff222b 100644
--- a/src/css/svg/mapboxgl-ctrl-zoom-out.svg
+++ b/src/css/svg/mapboxgl-ctrl-zoom-out.svg
@@ -1,3 +1,3 @@
diff --git a/src/ui/control/navigation_control.js b/src/ui/control/navigation_control.js
index 2d0ed13d73e..a2fe2afc781 100644
--- a/src/ui/control/navigation_control.js
+++ b/src/ui/control/navigation_control.js
@@ -63,8 +63,8 @@ class NavigationControl {
_updateZoomButtons() {
const zoom = this._map.getZoom();
- this._zoomInButton.classList.toggle('mapboxgl-ctrl-zoom-in-disabled', zoom === this._map.getMaxZoom());
- this._zoomOutButton.classList.toggle('mapboxgl-ctrl-zoom-out-disabled', zoom === this._map.getMinZoom());
+ this._zoomInButton.classList.toggle('mapboxgl-ctrl-icon-disabled', zoom === this._map.getMaxZoom());
+ this._zoomOutButton.classList.toggle('mapboxgl-ctrl-icon-disabled', zoom === this._map.getMinZoom());
}
_rotateCompassArrow() {