]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Expand `visually-hidden-focusable` so it can be used on a container, so the container...
authorPatrick H. Lauke <redux@splintered.co.uk>
Fri, 11 Dec 2020 21:28:45 +0000 (23:28 +0200)
committerXhmikosR <xhmikosr@gmail.com>
Tue, 15 Dec 2020 07:22:14 +0000 (09:22 +0200)
scss/helpers/_visually-hidden.scss
scss/mixins/_visually-hidden.scss
site/content/docs/5.0/helpers/visually-hidden.md
site/content/docs/5.0/migration.md

index 0a843d383de2693db0121126f4b411812ee858f3..4760ff03d19c1fc18f53160c4b34e2468fbec0d8 100644 (file)
@@ -3,6 +3,6 @@
 //
 
 .visually-hidden,
-.visually-hidden-focusable:not(:focus) {
+.visually-hidden-focusable:not(:focus):not(:focus-within) {
   @include visually-hidden();
 }
index d980696c802c100b5e168f7a1e05ae36d0f42adf..ed7bc9c13a85bf81c49483acabd1f6b2b9a6db83 100644 (file)
   border: 0 !important;
 }
 
-// Use to only display content when it's focused.
+// Use to only display content when it's focused, or one of its child elements is focused
+// (i.e. when focus is within the element/container that the class was applied to)
 //
 // Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
 
 @mixin visually-hidden-focusable() {
-  &:not(:focus) {
+  &:not(:focus):not(:focus-within) {
     @include visually-hidden();
   }
 }
index f80160edd6dd358e5114f7ab73a4c1eff5936d47..d8148b3f3ce4d12245e39379b9b908ccac52dddc 100644 (file)
@@ -6,13 +6,16 @@ group: helpers
 aliases: "/docs/5.0/helpers/screen-readers/"
 ---
 
-Visually hide an element while still allowing it to be exposed to assistive technologies (such as screen readers) with `.visually-hidden`. Use `.visually-hidden-focusable` to visually hide an element by default, but to display it when it's focused (e.g. by a keyboard-only user). Can also be used as mixins.
+Visually hide an element while still allowing it to be exposed to assistive technologies (such as screen readers) with `.visually-hidden`. Use `.visually-hidden-focusable` to visually hide an element by default, but to display it when it's focused (e.g. by a keyboard-only user). `.visually-hidden-focusable` can also be applied to a container–thanks to `:focus-within`, the container will be displayed when any child element of the container receives focus.
 
 {{< example >}}
 <h2 class="visually-hidden">Title for screen readers</h2>
 <a class="visually-hidden-focusable" href="#content">Skip to main content</a>
+<div class="visually-hidden-focusable">A container with a <a href="#">focusable element</a>.</div>
 {{< /example >}}
 
+Both `visually-hidden` and `visually-hidden-focusable` can also be used as mixins.
+
 ```scss
 // Usage as a mixin
 
index 05bf4770588f4c8e0742c0e3aea2f242b87a15f2..952cc937eac029c7c7347b10edc5e45830565b92 100644 (file)
@@ -9,6 +9,10 @@ toc: true
 
 ## v5.0.0-beta2
 
+### Sass
+
+- Extended the `.visually-hidden-focusable` helper to also work on containers, using `:focus-within`.
+
 ### JavaScript
 
 - The default value for the `fallbackPlacements` is changed to `['top', 'right', 'bottom', 'left']` for better placement of popper elements.
@@ -58,7 +62,6 @@ Breakpoints specific variants are consequently renamed too (eg. `.text-md-start`
 - Renamed `$form-check-inline-margin-right` to `$form-check-inline-margin-end`.
 - Renamed `$form-select-feedback-icon-padding-right` to `$form-select-feedback-icon-padding-end`.
 
-
 ### JavaScript
 
 - Data attributes for all JavaScript plugins are now namespaced to help distinguish Bootstrap functionality from third parties and your own code. For example, we use `data-bs-toggle` instead of `data-toggle`.