diff --git a/assets/js/phoenix_live_view/aria.js b/assets/js/phoenix_live_view/aria.js index 9377c7872..25ecf74ab 100644 --- a/assets/js/phoenix_live_view/aria.js +++ b/assets/js/phoenix_live_view/aria.js @@ -7,7 +7,7 @@ let ARIA = { (el instanceof HTMLAreaElement && el.href !== undefined) || (!el.disabled && (this.anyOf(el, [HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement, HTMLButtonElement]))) || (el instanceof HTMLIFrameElement) || - (el.tabIndex > 0 || (!interactiveOnly && el.getAttribute("tabindex") !== null && el.getAttribute("aria-hidden") !== "true")) + (el.tabIndex >= 0 || (!interactiveOnly && el.getAttribute("tabindex") !== null && el.getAttribute("aria-hidden") !== "true")) ) }, diff --git a/assets/test/js_test.js b/assets/test/js_test.js index 25d1f97a8..7cef4f6cc 100644 --- a/assets/test/js_test.js +++ b/assets/test/js_test.js @@ -900,4 +900,24 @@ describe("JS", () => { expect(document.activeElement).toBe(modal1) }) }) + + describe("exec_focus_first", () => { + test("focuses div with tabindex 0", () => { + let view = setupView(` +
+ + + +
+
+ `) + let modal2 = document.querySelector("#modal2") + let push = document.querySelector("#push") + + JS.exec(event, "click", push.getAttribute("phx-click"), view, push) + + jest.runAllTimers() + expect(document.activeElement).toBe(modal2) + }) + }) })