User tests: Successful: Unsuccessful:
Pull Request resolves #48424.
Keyboard focus was undefined or hard to see on many controls in Atum and Cassiopeia (no indicator, a faint low-contrast halo, or an indicator clipped by its container). This adds one shared, consistent focus indicator. It is SCSS only: no PHP, JS or XML changes.
media_source/system/scss/_focus-indicator.scss with focus tokens (colour, contrast colour, width, offset) and a focus-ring mixin. The indicator is a coloured 2px outline separated from the control by a contrasting 2px ring, so it stays visible on light and dark backgrounds.#6fbfdb on dark, Cassiopeia #0b5ed7 on white).:focus-visible rule replaces the old .js-focus-visible polyfill rule in Atum and adds a forced-colors (Highlight) fallback..btn variant get it (Atum, Cassiopeia and the installer template).joomla-tab tabs, and the Media Manager toolbar, browser tiles, tree items and preview close buttonCompiled assets are not part of this PR; run npm ci && npm run build to test.
npm ci && npm run build.On 6.2-dev (Chrome 156 and Firefox, dark Atum, 1366x768):
6.2-dev: the burger button still shows no indicator, the Toggle Menu and sidebar links show only a pale-blue line along their edges, and the Media Manager "Change Ordering" button in Chrome has only a pale-blue ring on a white toolbar (low contrast).Before/after screenshots
Scene 1: Atum mobile burger button (375px), Firefox.
Before:

After

Scene 2: Atum sidebar "Toggle Menu", Firefox.
Before

After

Scene 4: Media Manager "Change Ordering" button, Chrome, light mode.
Before

After

Every control above shows the same clear keyboard focus indicator in Chrome and Firefox, in Atum dark and light and in Cassiopeia: a 2px coloured outline with a contrasting ring, drawn inside the control where its container would clip it.
Not changed or not tested:
6.2-dev in Chrome and Firefox, in both Atum colour schemes, so I am not claiming a fix there. The Media Manager toolbar example shows a clear ring in dark mode and in Firefox light mode, but in Chrome light mode it is only a pale-blue ring on white, which this PR fixes. I did not test Safari, which the issue names, so I am not claiming the original report is wrong.Please select:
Documentation link for guide.joomla.org:
No documentation changes for guide.joomla.org needed
Pull Request link for manual.joomla.org:
No documentation changes for manual.joomla.org needed
| Status | New | ⇒ | Pending |
| Category | ⇒ | NPM Change |
| Title |
|
||||||
@Nikhil-sinhaa very nice work... I've been testing your PR and what you mention being fixed appears working now.
BUT in my testing I also found some odd keyboard navigation behavior - it may be outside of your PR but it felt like it might be in it and / or should be mentioned here:
Once PR applied, If you go to https://www.mydomain.com/_j62dev/administrator/index.php?option=com_media&path=local-images:/
I tab over It goes to Take the Tour, it then moves to Multilingual Status, SKIPS J!6.2 DEV Nightly Build (the front end site link) for some reason, then User Menu, then on the next line Upload, Create Folder, then Delete, then SKIPS Options, then go to Help, then Clean Cache...
Why is the front end link and more importantly the Options button skipped? There may be a good reason but it doesn't seem logical...
@exlemor thanks for testing! I couldn't reproduce this as a Joomla/PR issue. Everything that was skipped is a link (<a href>): the frontend site link, Options, the sidebar. Everything reached is a <button>.
That's browser/OS behaviour, not tab order in the template:
accessibility.tabfocus is a bit field (1 text, 2 other form elements, 4 links). With 3 links are skipped, and on macOS Firefox switches between 7 and 3 with a system checkbox. Firefox source
when accessibility.tabfocus = 3
https://github.com/user-attachments/assets/5908fb41-daad-417d-ab77-9abec04cfacf
-when accessibility.tabfocus = 7
https://github.com/user-attachments/assets/9bafdd13-23c1-43c2-aaf7-3ecacd6b62d7
I reproduced your exact order (Keyboard Navigation, Take a Tour, User Menu, Upload, Create New Folder, Delete, Help) in Firefox on Linux with accessibility.tabfocus = 3. With the default 7 (and in Chrome), the frontend link and Options both get focus and show the new ring. This PR is SCSS only, so it can't change tab order.
Could you retest with Option+Tab in Safari, or with links enabled in your browser, and tell me which browser and OS you used?
@exlemor thanks for testing! I couldn't reproduce this as a Joomla/PR issue. Everything that was skipped is a link (<a href>): the frontend site link, Options, the sidebar. Everything reached is a <button>.
That's browser/OS behaviour, not tab order in the template:
accessibility.tabfocus is a bit field (1 text, 2 other form elements, 4 links). With 3 links are skipped, and on macOS Firefox switches between 7 and 3 with a system checkbox. Firefox source
when accessibility.tabfocus = 3
https://github.com/user-attachments/assets/5908fb41-daad-417d-ab77-9abec04cfacf
-when accessibility.tabfocus = 7
https://github.com/user-attachments/assets/9bafdd13-23c1-43c2-aaf7-3ecacd6b62d7
I reproduced your exact order (Keyboard Navigation, Take a Tour, User Menu, Upload, Create New Folder, Delete, Help) in Firefox on Linux with accessibility.tabfocus = 3. With the default 7 the frontend link and Options both get focus and show the new ring. This PR is SCSS only, so it can't change tab order.
Could you retest with Option+Tab in Safari, or with links enabled in your browser, and tell me which browser and OS you used?
I have tested this item ✅ successfully on a0f55ef
Hi @Nikhil-sinhaa, thank you for that clarification/precision, I was able to retest and match the expected results with Option-TAB and yes I was using Safari latest version on MacBook Pro M4. Thank you for the fix! :)
I have tested this item ✅ successfully on a0f55ef
Hi @Nikhil-sinhaa, thank you for that clarification/precision, I was able to retest and match the expected results with Option-TAB and yes I was using Safari latest version on MacBook Pro M4. Thank you for the fix! :)
Thank you for this comprehensive PR - could you please change the title to something more meaningful