Skip to content

Commit 36e1d4c

Browse files
authored
fix(simple-combo): prevent Enter key default behavior when filtering data - 17.2.x (#14295)
* fix(simple-combo): prevent Enter key default behavior when filtering data * test(simple-combo): use KeyboardEvent object
1 parent a7dc814 commit 36e1d4c

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
@@ -319,10 +319,12 @@ export class IgxSimpleComboComponent extends IgxComboBaseDirective implements Co
319319
if (filtered === null || filtered === undefined) {
320320
return;
321321
}
322-
this.select(this.dropdown.focusedItem.itemID);
323-
event.preventDefault();
324-
event.stopPropagation();
325-
this.close();
322+
if (!this.dropdown.collapsed) {
323+
this.select(this.dropdown.focusedItem.itemID);
324+
event.preventDefault();
325+
event.stopPropagation();
326+
this.close();
327+
}
326328
// manually trigger text selection as it will not be triggered during editing
327329
this.textSelection.trigger();
328330
return;

0 commit comments

Comments
 (0)