diff --git a/src/components/pick-list/shared-list-tests.ts b/src/components/pick-list/shared-list-tests.ts
index 2cec0fb5719..c6eb4e0dedb 100644
--- a/src/components/pick-list/shared-list-tests.ts
+++ b/src/components/pick-list/shared-list-tests.ts
@@ -201,6 +201,25 @@ export function keyboardNavigation(listType: ListType): void {
expect(await getFocusedItemValue(page)).toEqual("two");
});
+
+ it("resets tabindex to selected item when focusing out of list", async () => {
+ const page = await newE2EPage({
+ html: `
+
+
+
+
+ `
+ });
+
+ await page.keyboard.press("Tab");
+ await page.keyboard.press("Tab");
+ expect(await getFocusedItemValue(page)).toEqual(null);
+
+ await page.keyboard.down("Shift");
+ await page.keyboard.press("Tab");
+ expect(await getFocusedItemValue(page)).toEqual("one");
+ });
});
}
diff --git a/src/components/value-list/value-list.tsx b/src/components/value-list/value-list.tsx
index 1b11662c53b..ff069485f99 100644
--- a/src/components/value-list/value-list.tsx
+++ b/src/components/value-list/value-list.tsx
@@ -14,6 +14,7 @@ import {
import { CSS, ICON_TYPES } from "./resources";
import {
ListFocusId,
+ calciteListFocusOutHandler,
calciteListItemChangeHandler,
calciteListItemValueChangeHandler,
cleanUpObserver,
@@ -158,6 +159,11 @@ export class ValueList<
*/
@Event() calciteListOrderChange: EventEmitter;
+ @Listen("focusout")
+ calciteListFocusOutHandler(event: FocusEvent): void {
+ calciteListFocusOutHandler.call(this, event);
+ }
+
@Listen("calciteListItemRemove")
calciteListItemRemoveHandler(event: CustomEvent): void {
removeItem.call(this, event);