diff --git a/src/cdk/a11y/list-key-manager.spec.ts b/src/cdk/a11y/list-key-manager.spec.ts index 012fa45d8e9b..ac0e83a45e91 100644 --- a/src/cdk/a11y/list-key-manager.spec.ts +++ b/src/cdk/a11y/list-key-manager.spec.ts @@ -481,6 +481,16 @@ describe('Key managers', () => { expect(keyManager.activeItem).toBe(itemList.items[0]); })); + it('should not focus disabled items', fakeAsync(() => { + expect(keyManager.activeItem).toBeFalsy(); + + itemList.items[0].disabled = true; + keyManager.onKeydown(createKeyboardEvent('keydown', 79, undefined, 'o')); // types "o" + tick(debounceInterval); + + expect(keyManager.activeItem).toBeFalsy(); + })); + }); }); diff --git a/src/cdk/a11y/list-key-manager.ts b/src/cdk/a11y/list-key-manager.ts index cb8a1850518a..c3a3def7175e 100644 --- a/src/cdk/a11y/list-key-manager.ts +++ b/src/cdk/a11y/list-key-manager.ts @@ -74,7 +74,9 @@ export class ListKeyManager { const items = this._items.toArray(); for (let i = 0; i < items.length; i++) { - if (items[i].getLabel!().toUpperCase().trim().indexOf(inputString) === 0) { + let item = items[i]; + + if (!item.disabled && item.getLabel!().toUpperCase().trim().indexOf(inputString) === 0) { this.setActiveItem(i); break; }