fix(autocomplete): not updating the size while the panel is open (#4346)

This commit is contained in:
Kristiyan Kostadinov
2017-05-09 21:18:34 +02:00
committed by Kara
parent 09c8404116
commit bfeb515a2f
2 changed files with 26 additions and 2 deletions
@@ -129,6 +129,7 @@ export class MdAutocompleteTrigger implements ControlValueAccessor, OnDestroy {
} else {
/** Update the panel width, in case the host width has changed */
this._overlayRef.getState().width = this._getHostWidth();
this._overlayRef.updateSize();
}
if (!this._overlayRef.hasAttached()) {
+25 -2
View File
@@ -1145,7 +1145,7 @@ describe('MdAutocomplete', () => {
const overlayPane = overlayContainerElement.querySelector('.cdk-overlay-pane') as HTMLElement;
// Firefox, edge return a decimal value for width, so we need to parse and round it to verify
expect(Math.ceil(parseFloat(overlayPane.style.width))).toEqual(300);
expect(Math.ceil(parseFloat(overlayPane.style.width))).toBe(300);
widthFixture.componentInstance.trigger.closePanel();
widthFixture.detectChanges();
@@ -1157,8 +1157,31 @@ describe('MdAutocomplete', () => {
widthFixture.detectChanges();
// Firefox, edge return a decimal value for width, so we need to parse and round it to verify
expect(Math.ceil(parseFloat(overlayPane.style.width))).toEqual(500);
expect(Math.ceil(parseFloat(overlayPane.style.width))).toBe(500);
});
it('should update the width while the panel is open', () => {
const widthFixture = TestBed.createComponent(SimpleAutocomplete);
widthFixture.componentInstance.width = 300;
widthFixture.detectChanges();
widthFixture.componentInstance.trigger.openPanel();
widthFixture.detectChanges();
const overlayPane = overlayContainerElement.querySelector('.cdk-overlay-pane') as HTMLElement;
const input = widthFixture.debugElement.query(By.css('input')).nativeElement;
expect(Math.ceil(parseFloat(overlayPane.style.width))).toBe(300);
widthFixture.componentInstance.width = 500;
widthFixture.detectChanges();
input.focus();
dispatchFakeEvent(input, 'input');
widthFixture.detectChanges();
expect(Math.ceil(parseFloat(overlayPane.style.width))).toBe(500);
});
it('should show the panel when the options are initialized later within a component with ' +