diff --git a/umap/static/umap/css/bar.css b/umap/static/umap/css/bar.css
index 5df3bd87..444a6480 100644
--- a/umap/static/umap/css/bar.css
+++ b/umap/static/umap/css/bar.css
@@ -166,7 +166,8 @@
.umap-caption-bar button {
margin-inline-start: 10px;
}
-.umap-caption-bar button + button:before {
+.umap-caption-bar > button + select:before,
+.umap-caption-bar > button + button:before {
content: '|';
padding-inline-end: 10px;
}
@@ -196,7 +197,14 @@
z-index: var(--zindex-panels);
}
.umap-caption-bar-enabled .umap-caption-bar {
- display: block;
+ display: flex;
+ align-items: baseline;
+}
+.umap-caption-bar select {
+ margin-top: 0;
+ line-height: initial;
+ height: initial;
+ width: auto;
}
.umap-caption-bar-enabled {
--current-footer-height: var(--footer-height);
diff --git a/umap/static/umap/js/modules/data/layer.js b/umap/static/umap/js/modules/data/layer.js
index 761945b0..e46d920a 100644
--- a/umap/static/umap/js/modules/data/layer.js
+++ b/umap/static/umap/js/modules/data/layer.js
@@ -960,11 +960,11 @@ export class DataLayer extends ServerStored {
this.propagateHide()
}
- toggle() {
+ toggle(status) {
// From now on, do not try to how/hidedataChanged
// automatically this layer.
this._forcedVisibility = true
- if (!this.isVisible()) this.show()
+ if (!this.isVisible() || status) this.show()
else this.hide()
}
@@ -1252,7 +1252,7 @@ export class DataLayer extends ServerStored {
this
)
}
- DomEvent.on(toggle, 'click', this.toggle, this)
+ DomEvent.on(toggle, 'click', () => this.toggle())
DomEvent.on(zoomTo, 'click', this.zoomTo, this)
container.classList.add(this.getHidableClass())
container.classList.toggle('off', !this.isVisible())
diff --git a/umap/static/umap/js/modules/ui/bar.js b/umap/static/umap/js/modules/ui/bar.js
index d7bf77de..05adefd8 100644
--- a/umap/static/umap/js/modules/ui/bar.js
+++ b/umap/static/umap/js/modules/ui/bar.js
@@ -167,6 +167,7 @@ const BOTTOM_BAR_TEMPLATE = `
+
`
@@ -189,6 +190,13 @@ export class BottomBar extends WithTemplate {
this._umap.openBrowser('filters')
)
this._slideshow.renderToolbox(this.element)
+ this.elements.layers.addEventListener('change', () => {
+ const select = this.elements.layers
+ const selected = select.options[select.selectedIndex].value
+ this._umap.eachDataLayer((datalayer) => {
+ datalayer.toggle(datalayer.id === selected)
+ })
+ })
this.redraw()
}
@@ -201,6 +209,15 @@ export class BottomBar extends WithTemplate {
this.elements.caption.hidden = !showMenus
this.elements.browse.hidden = !showMenus
this.elements.filter.hidden = !showMenus || !this._umap.properties.facetKey
+ this.elements.layers.innerHTML = ''
+ this._umap.eachDataLayer((datalayer) => {
+ if (!datalayer.options.inCaption) return
+ this.elements.layers.appendChild(
+ Utils.loadTemplate(
+ ``
+ )
+ )
+ })
}
}