From e08a7695093009da4b72020d7d5000f01586a554 Mon Sep 17 00:00:00 2001 From: varnastadeus Date: Thu, 4 Jul 2019 15:15:10 +0300 Subject: [PATCH] fix: mark first item when last marked is filtered out fixes #1247 --- src/ng-select/items-list.spec.ts | 10 ++++++++++ src/ng-select/items-list.ts | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/src/ng-select/items-list.spec.ts b/src/ng-select/items-list.spec.ts index 465998f54..e407fd16a 100644 --- a/src/ng-select/items-list.spec.ts +++ b/src/ng-select/items-list.spec.ts @@ -454,6 +454,16 @@ describe('ItemsList', () => { list.markSelectedOrDefault(); expect(list.markedIndex).toBe(13); }); + + it('should mark first after last marked item was filtered out', () => { + list.markSelectedOrDefault(true); + list.markNextItem(); + list.filter('item-0'); + list.markSelectedOrDefault(true); + expect(list.markedIndex).toBe(0); + list.markNextItem(); + expect(list.markedIndex).toBe(0); + }); }); function itemsListFactory(cmp: NgSelectComponent): ItemsList { diff --git a/src/ng-select/items-list.ts b/src/ng-select/items-list.ts index 02896d629..e128983f9 100644 --- a/src/ng-select/items-list.ts +++ b/src/ng-select/items-list.ts @@ -316,6 +316,10 @@ export class ItemsList { return -1; } + if (this._markedIndex > -1 && this.markedItem === undefined) { + return -1; + } + const selectedIndex = this._filteredItems.indexOf(this.lastSelectedItem); if (this.lastSelectedItem && selectedIndex < 0) { return -1;