Fix Job Dashboard actions menu on Safari#2947
Merged
Merged
Conversation
The actions menu used an inline `onfocusout` handler with a 100 ms setTimeout to close the `<details>` element. On Safari, clicking a link inside the dropdown caused the menu to close before the click navigated, so Edit / Mark Filled / Duplicate / Renew / Delete all failed to fire. Drop the focus-based close and handle it from job-dashboard.js: - Close on outside `pointerdown`. - Close on Escape and return focus to the toggle. - Close open menus on bfcache restore (`pageshow.persisted`) so Safari doesn't show a previously-open menu after Back/Forward. Fixes #2832
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
onfocusout+ 100 ms setTimeout pattern on the<details>actions menu that ate clicks on Safari.job-dashboard.jsinstead: outsidepointerdown, Escape (with focus return), and bfcache restore.Fixes #2832
Why this fixes Safari
The previous close was driven by
focusouton the<details>, with a 100 ms timeout to allow a click inside to register first. Safari doesn't reliably focus elements on click (notably<summary>and inner<a>), so the relatedTarget check failed and the menu closed before the action link's navigation could fire. Replacing it with a document-levelpointerdownoutside-click and an Escape handler removes the focus dependency entirely.The
pageshow+event.persistedhandler covers Safari's bfcache: previously a menu left open before clicking Edit would still be open after pressing Back.Test plan
make lintpasses