Skip to content

Commit 1823b2f

Browse files
crisbetoandrewseguin
authored andcommitted
fix(list-key-manager): don't focus disabled items in typeahead mode (#7382)
Fixes the list key manager attempting to focus disabled items in typeahead mode.
1 parent 53c42a4 commit 1823b2f

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

src/cdk/a11y/list-key-manager.spec.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,16 @@ describe('Key managers', () => {
481481
expect(keyManager.activeItem).toBe(itemList.items[0]);
482482
}));
483483

484+
it('should not focus disabled items', fakeAsync(() => {
485+
expect(keyManager.activeItem).toBeFalsy();
486+
487+
itemList.items[0].disabled = true;
488+
keyManager.onKeydown(createKeyboardEvent('keydown', 79, undefined, 'o')); // types "o"
489+
tick(debounceInterval);
490+
491+
expect(keyManager.activeItem).toBeFalsy();
492+
}));
493+
484494
});
485495

486496
});

src/cdk/a11y/list-key-manager.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,9 @@ export class ListKeyManager<T extends ListKeyManagerOption> {
7474
const items = this._items.toArray();
7575

7676
for (let i = 0; i < items.length; i++) {
77-
if (items[i].getLabel!().toUpperCase().trim().indexOf(inputString) === 0) {
77+
let item = items[i];
78+
79+
if (!item.disabled && item.getLabel!().toUpperCase().trim().indexOf(inputString) === 0) {
7880
this.setActiveItem(i);
7981
break;
8082
}

0 commit comments

Comments
 (0)