From d57b6a08c49ed42cbf646e3cbb39619743764660 Mon Sep 17 00:00:00 2001 From: crisbeto Date: Sun, 24 Sep 2017 13:52:44 +0200 Subject: [PATCH] fix(list-key-manager): don't focus disabled items in typeahead mode 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 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; }