From 58e2ff2220dbf2ea27c00d9c77d690b728fe794e Mon Sep 17 00:00:00 2001 From: Anveshreddy mekala Date: Fri, 11 Aug 2023 16:20:12 -0500 Subject: [PATCH] fix(combobox): prevents navigation list with Space key (#7505) **Related Issue:** #6387 ## Summary This prevents `Space` key navigating combobox list when opened. --- .../src/components/combobox/combobox.e2e.ts | 8 +++++++- .../src/components/combobox/combobox.tsx | 6 ++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/calcite-components/src/components/combobox/combobox.e2e.ts b/packages/calcite-components/src/components/combobox/combobox.e2e.ts index a377e635a0d..221d3a0d2fa 100644 --- a/packages/calcite-components/src/components/combobox/combobox.e2e.ts +++ b/packages/calcite-components/src/components/combobox/combobox.e2e.ts @@ -897,7 +897,7 @@ describe("calcite-combobox", () => { expect(await page.evaluate(() => document.activeElement.id)).toBe("myCombobox"); }); - it(`Space opens dropdown and puts focus on first item`, async () => { + it(`Space opens dropdown and puts focus on first item and subsequent Space do not change the focus`, async () => { const inputEl = await page.find(`#myCombobox >>> input`); await inputEl.focus(); await page.waitForChanges(); @@ -910,6 +910,12 @@ describe("calcite-combobox", () => { const visible = await firstFocusedGroupItem.isVisible(); expect(visible).toBe(true); + + await page.keyboard.press("Space"); + await page.waitForChanges(); + await page.keyboard.press("Space"); + await page.waitForChanges(); + expect(firstFocusedGroupItem).toBeTruthy(); }); it("when the combobox is focused & closed, Page up/down (fn arrow up/down) scrolls up and down the page", async () => { diff --git a/packages/calcite-components/src/components/combobox/combobox.tsx b/packages/calcite-components/src/components/combobox/combobox.tsx index 6fe2676744f..3110c0020ff 100644 --- a/packages/calcite-components/src/components/combobox/combobox.tsx +++ b/packages/calcite-components/src/components/combobox/combobox.tsx @@ -604,9 +604,11 @@ export class Combobox break; case " ": if (!this.textInput.value) { + if (!this.open) { + this.open = true; + this.shiftActiveItemIndex(1); + } event.preventDefault(); - this.open = true; - this.shiftActiveItemIndex(1); } break; case "Home":