Invalid size set when map is not added to document

Parsing of an empty string with parseFloat resulted in NaN.
This commit is contained in:
Maximilian Krög
2021-02-13 15:53:20 +01:00
parent 27b4539360
commit 0f64bb7459
2 changed files with 18 additions and 9 deletions

View File

@@ -1496,9 +1496,8 @@ class PluggableMap extends BaseObject {
updateSize() {
const targetElement = this.getTargetElement();
if (!targetElement) {
this.setSize(undefined);
} else {
let size = undefined;
if (targetElement) {
const computedStyle = getComputedStyle(targetElement);
const width =
targetElement.offsetWidth -
@@ -1512,15 +1511,18 @@ class PluggableMap extends BaseObject {
parseFloat(computedStyle['paddingTop']) -
parseFloat(computedStyle['paddingBottom']) -
parseFloat(computedStyle['borderBottomWidth']);
if (height === 0 || width === 0) {
// eslint-disable-next-line
console.warn(
"No map visible because the map container's width or height are 0."
);
if (!isNaN(width) && !isNaN(height)) {
size = [width, height];
if (!hasArea(size)) {
// eslint-disable-next-line
console.warn(
"No map visible because the map container's width or height are 0."
);
}
}
this.setSize([width, height]);
}
this.setSize(size);
this.updateViewportSize_();
}

View File

@@ -687,6 +687,7 @@ describe('ol.Map', function () {
});
describe('#setTarget', function () {
/** @type {Map|undefined} */
let map;
beforeEach(function () {
@@ -696,6 +697,12 @@ describe('ol.Map', function () {
expect(map.handleResize_).to.be.ok();
});
describe('map with target not attached to dom', function () {
it('has undefined as size with target not in document', function () {
expect(map.getSize()).to.be(undefined);
});
});
describe('call setTarget with null', function () {
it('unregisters the viewport resize listener', function () {
map.setTarget(null);