Skip to content

Commit

Permalink
fix(select): not resuming keyboard selection after clicking on single…
Browse files Browse the repository at this point in the history
…-select option (#11882)
  • Loading branch information
crisbeto authored and josephperrott committed Jun 29, 2018
1 parent 4f3cbfe commit a3dba76
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 2 deletions.
22 changes: 22 additions & 0 deletions src/lib/select/select.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,28 @@ describe('MatSelect', () => {
'Expected value from second option to have been set on the model.');
}));

it('should resume focus from selected item after selecting via click', fakeAsync(() => {
const formControl = fixture.componentInstance.control;
const options = fixture.componentInstance.options.toArray();

expect(formControl.value).toBeFalsy('Expected no initial value.');

fixture.componentInstance.select.open();
fixture.detectChanges();
flush();

(overlayContainerElement.querySelectorAll('mat-option')[3] as HTMLElement).click();
fixture.detectChanges();
flush();

expect(formControl.value).toBe(options[3].value);

dispatchKeyboardEvent(select, 'keydown', DOWN_ARROW);
fixture.detectChanges();

expect(formControl.value).toBe(options[4].value);
}));

it('should select options via LEFT/RIGHT arrow keys on a closed select', fakeAsync(() => {
const formControl = fixture.componentInstance.control;
const options = fixture.componentInstance.options.toArray();
Expand Down
6 changes: 4 additions & 2 deletions src/lib/select/select.ts
Original file line number Diff line number Diff line change
Expand Up @@ -892,12 +892,14 @@ export class MatSelect extends _MatSelectMixinBase implements AfterContentInit,
} else {
option.selected ? this._selectionModel.select(option) : this._selectionModel.deselect(option);

if (isUserInput) {
this._keyManager.setActiveItem(option);
}

if (this.multiple) {
this._sortValues();

if (isUserInput) {
this._keyManager.setActiveItem(option);

// In case the user selected the option with their mouse, we
// want to restore focus back to the trigger, in order to
// prevent the select keyboard controls from clashing with
Expand Down

0 comments on commit a3dba76

Please sign in to comment.