diff --git a/src/cdk/overlay/position/flexible-connected-position-strategy.spec.ts b/src/cdk/overlay/position/flexible-connected-position-strategy.spec.ts index cd9c152be74..a60d0364208 100644 --- a/src/cdk/overlay/position/flexible-connected-position-strategy.spec.ts +++ b/src/cdk/overlay/position/flexible-connected-position-strategy.spec.ts @@ -2226,6 +2226,19 @@ describe('FlexibleConnectedPositionStrategy', () => { expect(overlayRef.overlayElement.classList).toContain('is-under'); }); + it('should not throw if an empty string is passed in as a panel class', () => { + positionStrategy.withPositions([{ + originX: 'start', + originY: 'bottom', + overlayX: 'start', + overlayY: 'top', + panelClass: ['is-below', ''] + }]); + + expect(() => attachOverlay({positionStrategy})).not.toThrow(); + expect(overlayRef.overlayElement.classList).toContain('is-below'); + }); + it('should remove the panel class when detaching', () => { positionStrategy.withPositions([{ originX: 'start', diff --git a/src/cdk/overlay/position/flexible-connected-position-strategy.ts b/src/cdk/overlay/position/flexible-connected-position-strategy.ts index 7915de81562..533b37af3ec 100644 --- a/src/cdk/overlay/position/flexible-connected-position-strategy.ts +++ b/src/cdk/overlay/position/flexible-connected-position-strategy.ts @@ -1081,7 +1081,7 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy { private _addPanelClasses(cssClasses: string | string[]) { if (this._pane) { coerceArray(cssClasses).forEach(cssClass => { - if (this._appliedPanelClasses.indexOf(cssClass) === -1) { + if (cssClass !== '' && this._appliedPanelClasses.indexOf(cssClass) === -1) { this._appliedPanelClasses.push(cssClass); this._pane.classList.add(cssClass); } @@ -1092,7 +1092,9 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy { /** Clears the classes that the position strategy has applied from the overlay panel. */ private _clearPanelClasses() { if (this._pane) { - this._appliedPanelClasses.forEach(cssClass => this._pane.classList.remove(cssClass)); + this._appliedPanelClasses.forEach(cssClass => { + this._pane.classList.remove(cssClass); + }); this._appliedPanelClasses = []; } }