Merge pull request #11607 from mike-000/patch-15

Reset attributions control to collapsible when no uncollapsible sources are visible
This commit is contained in:
Andreas Hocevar
2020-09-30 13:04:27 +02:00
committed by GitHub

View File

@@ -66,6 +66,12 @@ class Attribution extends Control {
this.collapsed_ =
options.collapsed !== undefined ? options.collapsed : true;
/**
* @private
* @type {boolean}
*/
this.userCollapsed_ = this.collapsed_;
/**
* @private
* @type {boolean}
@@ -175,6 +181,7 @@ class Attribution extends Control {
*/
const visibleAttributions = [];
let collapsible = true;
const layerStatesArray = frameState.layerStatesArray;
for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {
const layerState = layerStatesArray[i];
@@ -197,12 +204,8 @@ class Attribution extends Control {
continue;
}
if (
!this.overrideCollapsible_ &&
source.getAttributionsCollapsible() === false
) {
this.setCollapsible(false);
}
collapsible =
collapsible && source.getAttributionsCollapsible() !== false;
if (Array.isArray(attributions)) {
for (let j = 0, jj = attributions.length; j < jj; ++j) {
@@ -218,6 +221,9 @@ class Attribution extends Control {
}
}
}
if (!this.overrideCollapsible_) {
this.setCollapsible(collapsible);
}
return visibleAttributions;
}
@@ -265,6 +271,7 @@ class Attribution extends Control {
handleClick_(event) {
event.preventDefault();
this.handleToggle_();
this.userCollapsed_ = this.collapsed_;
}
/**
@@ -300,7 +307,7 @@ class Attribution extends Control {
}
this.collapsible_ = collapsible;
this.element.classList.toggle('ol-uncollapsible');
if (!collapsible && this.collapsed_) {
if (this.userCollapsed_) {
this.handleToggle_();
}
}
@@ -313,6 +320,7 @@ class Attribution extends Control {
* @api
*/
setCollapsed(collapsed) {
this.userCollapsed_ = collapsed;
if (!this.collapsible_ || this.collapsed_ === collapsed) {
return;
}