Skip to content

🎨 Palette: [a11y] Accessible Disabled State for Watchlist Add Button#300

Merged
d3mocide merged 2 commits into
devfrom
palette/watchlist-aria-disabled-6467418498224659055
May 19, 2026
Merged

🎨 Palette: [a11y] Accessible Disabled State for Watchlist Add Button#300
d3mocide merged 2 commits into
devfrom
palette/watchlist-aria-disabled-6467418498224659055

Conversation

@d3mocide

Copy link
Copy Markdown
Owner

💡 What: Refactored the 'Add' button in the Global Watchlist manager to use aria-disabled instead of the native HTML disabled attribute. Also attached dynamic, state-aware title and aria-label tooltips to explain when and why the button is unavailable.

🎯 Why: Using native disabled completely removes the button from the tab order and frequently swallows pointer events, making it impossible for keyboard users and screen-readers to even focus on the button to find out why they can't add an aircraft. Furthermore, users were previously left guessing why the Add button wasn't working if they typed only 5 characters of an ICAO hex.

📸 Before/After: Visually unchanged (Tailwind's aria-disabled matches the disabled styles perfectly). Behaviorally, hovering over the disabled button now displays a helpful native tooltip ("Requires 6-character hex code") instead of nothing.

Accessibility: The element remains focusable when disabled so screen-readers can navigate to it and announce its state and dynamically generated aria-label reason.


PR created automatically by Jules for task 6467418498224659055 started by @d3mocide

- Replaced native `disabled` attribute with `aria-disabled` on the Add button in `WatchlistManager` to maintain keyboard focus and swallow pointer events less often.
- Updated styling to use `aria-disabled:` Tailwind variants.
- Added dynamic `title` and `aria-label` attributes to explicitly inform screen-reader and visual hover users why the button might be unavailable (e.g. requires a 6-character hex code).
- Re-routed action checks to the `onClick` handler.

Co-authored-by: d3mocide <136547209+d3mocide@users.noreply.github.com>
@google-labs-jules

Copy link
Copy Markdown
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@d3mocide d3mocide changed the base branch from main to dev May 19, 2026 20:13
@d3mocide d3mocide merged commit 6ee827b into dev May 19, 2026
@d3mocide d3mocide deleted the palette/watchlist-aria-disabled-6467418498224659055 branch May 19, 2026 20:15
d3mocide added a commit that referenced this pull request May 19, 2026
- fix(frontend): remove unused useId import in ListeningPost (lint gate)
- chore(packaging): add PEP 517 build-system + setuptools py-modules to
  backend/api, aviation_poller, gdelt_pulse, js8call pyproject.toml so
  local CI editable installs resolve flat-layout discovery errors
- chore(deps): bump asyncpg in space_pulse 0.30.0 -> 0.31.0 for Python 3.12
  wheel compatibility in local CI
- chore(.gitignore): exclude *.egg-info/ artifacts generated by pip install -e
- docs(changelog): populate Unreleased with all PRs since v1.0.11 (PRs
  #284-#300) including Sentinel SSRF/DNS rebinding fix, Bolt orbital
  pass loop optimization, and 8 Palette a11y fixes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant