From 1823b2fa8e4c69f0a19a7be23a6cd30ae42d6d4c Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Fri, 29 Sep 2017 21:58:12 +0200 Subject: [PATCH] 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. --- src/cdk/a11y/list-key-manager.spec.ts | 10 ++++++++++ src/cdk/a11y/list-key-manager.ts | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/cdk/a11y/list-key-manager.spec.ts b/src/cdk/a11y/list-key-manager.spec.ts index 012fa45d8e9..ac0e83a45e9 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 cb8a1850518..c3a3def7175 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; }