mirror of
https://github.com/angular/angular.git
synced 2026-09-14 13:54:52 +08:00
fix(select): not resuming keyboard selection after clicking on single-select option (#11882)
This commit is contained in:
committed by
Joey Perrott
parent
8a5713ebf5
commit
195665fb17
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user