Skip to content

Commit 1b13a6c

Browse files
Merge pull request #14351 from IgniteUI/rivanova/fix-14198-18.0.x
fix(simple-combo): prevent Enter key default behavior when filtering data - 18.0.x
2 parents 9374654 + 3e2239d commit 1b13a6c

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

projects/igniteui-angular/src/lib/simple-combo/simple-combo.component.spec.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1528,6 +1528,34 @@ describe('IgxSimpleCombo', () => {
15281528
expect(combo.filteredData.length).toBeLessThan(combo.data.length)
15291529
expect(combo.filteredData[0].field).toBe(target.value)
15301530
});
1531+
1532+
it('should prevent Enter key default behavior when filtering data', fakeAsync(() => {
1533+
const keyEvent = new KeyboardEvent('keydown', { key: 'Enter' });
1534+
const spy = spyOn(keyEvent, 'preventDefault');
1535+
1536+
expect(combo.collapsed).toBe(true);
1537+
expect(combo.selection).toBeUndefined();
1538+
1539+
input.triggerEventHandler('focus', {});
1540+
UIInteractions.simulateTyping('c', input);
1541+
fixture.detectChanges();
1542+
1543+
expect(combo.collapsed).toBe(false);
1544+
1545+
combo.handleKeyDown(keyEvent);
1546+
tick();
1547+
fixture.detectChanges();
1548+
1549+
expect(combo.selection).toBeDefined();
1550+
expect(combo.collapsed).toBe(true);
1551+
expect(spy).toHaveBeenCalled();
1552+
1553+
combo.handleKeyDown(keyEvent);
1554+
tick();
1555+
fixture.detectChanges();
1556+
1557+
expect(spy).toHaveBeenCalledTimes(1);
1558+
}));
15311559
});
15321560

15331561
describe('Display density', () => {

projects/igniteui-angular/src/lib/simple-combo/simple-combo.component.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -317,10 +317,12 @@ export class IgxSimpleComboComponent extends IgxComboBaseDirective implements Co
317317
if (filtered === null || filtered === undefined) {
318318
return;
319319
}
320-
this.select(this.dropdown.focusedItem.itemID);
321-
event.preventDefault();
322-
event.stopPropagation();
323-
this.close();
320+
if (!this.dropdown.collapsed) {
321+
this.select(this.dropdown.focusedItem.itemID);
322+
event.preventDefault();
323+
event.stopPropagation();
324+
this.close();
325+
}
324326
// manually trigger text selection as it will not be triggered during editing
325327
this.textSelection.trigger();
326328
return;

0 commit comments

Comments
 (0)