Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/scss
diff options
context:
space:
mode:
Diffstat (limited to 'scss')
-rw-r--r--scss/_helpers.scss1
-rw-r--r--scss/_root.scss17
-rw-r--r--scss/_variables.scss3
-rw-r--r--scss/helpers/_focus-ring.scss16
4 files changed, 29 insertions, 8 deletions
diff --git a/scss/_helpers.scss b/scss/_helpers.scss
index 644b693fbc..6126781cde 100644
--- a/scss/_helpers.scss
+++ b/scss/_helpers.scss
@@ -1,6 +1,7 @@
@import "helpers/clearfix";
@import "helpers/color-bg";
@import "helpers/colored-links";
+@import "helpers/focus-ring";
@import "helpers/ratio";
@import "helpers/position";
@import "helpers/stacks";
diff --git a/scss/_root.scss b/scss/_root.scss
index 6eff503cee..7061bcc548 100644
--- a/scss/_root.scss
+++ b/scss/_root.scss
@@ -77,12 +77,15 @@
// Focus styles
// scss-docs-start root-focus-variables
- --#{$variable-prefix}focus-ring-width: #{$focus-ring-width};
- --#{$variable-prefix}focus-ring-opacity: #{$focus-ring-opacity};
- --#{$variable-prefix}focus-ring-color: #{$focus-ring-color};
- --#{$variable-prefix}focus-ring-blur: #{$focus-ring-blur};
- // By default, there is no `--bs-focus-ring-offset-x` or `--bs-focus-ring-offset-y`, but we provide CSS variables with fallbacks to initial `0` values
- --#{$variable-prefix}focus-ring-box-shadow: var(--#{$variable-prefix}focus-ring-offset-x, 0) var(--#{$variable-prefix}focus-ring-offset-y, 0) var(--#{$variable-prefix}focus-ring-blur) var(--#{$variable-prefix}focus-ring-width) var(--#{$variable-prefix}focus-ring-color);
+ --#{$prefix}focus-ring-width: #{$focus-ring-width};
+ --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};
+ --#{$prefix}focus-ring-color: #{$focus-ring-color};
+ --#{$prefix}focus-ring-blur: #{$focus-ring-blur};
+ // --#{$prefix}focus-ring-offset: 0 0 0 1px var(--#{$prefix}focus-ring-offset-color, var(--#{$prefix}body-bg));
+ --#{$prefix}focus-ring-offset-width: 1px;
+ --#{$prefix}focus-ring-offset-color: var(--#{$prefix}body-bg);
+
+ // By default, there is no `--bs-focus-ring-x` or `--bs-focus-ring-y`, but we provide CSS variables with fallbacks to initial `0` values
+ --#{$prefix}focus-ring-box-shadow: 0 0 0 var(--#{$prefix}focus-ring-offset-width) var(--#{$prefix}focus-ring-offset-color), var(--#{$prefix}focus-ring-x, 0) var(--#{$prefix}focus-ring-y, 0) var(--#{$prefix}focus-ring-blur) var(--#{$prefix}focus-ring-width) var(--#{$prefix}focus-ring-color);
// scss-docs-end root-focus-variables
- // stylelint-enable custom-property-empty-line-before
}
diff --git a/scss/_variables.scss b/scss/_variables.scss
index 6cb065f11b..b956d6f045 100644
--- a/scss/_variables.scss
+++ b/scss/_variables.scss
@@ -515,7 +515,8 @@ $focus-ring-width: .25rem !default;
$focus-ring-opacity: .25 !default;
$focus-ring-color: rgba($primary, $focus-ring-opacity) !default;
$focus-ring-blur: 0 !default;
-$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color !default;
+$focus-ring-offset: 0 0 0 1px var(--#{$prefix}focus-ring-offset-color, var(--#{$prefix}body-bg)) !default;
+$focus-ring-box-shadow: $focus-ring-offset, 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color !default;
// scss-docs-end focus-ring-variables
// scss-docs-start caret-variables
diff --git a/scss/helpers/_focus-ring.scss b/scss/helpers/_focus-ring.scss
new file mode 100644
index 0000000000..0a9509b1d0
--- /dev/null
+++ b/scss/helpers/_focus-ring.scss
@@ -0,0 +1,16 @@
+// stylelint-disable indentation, function-disallowed-list, declaration-colon-newline-after, value-list-comma-newline-after, value-list-comma-space-after
+
+.focus-ring:focus {
+ outline: 0;
+ // By default, there is no `--bs-focus-ring-x` or `--bs-focus-ring-y`, but we provide CSS variables with fallbacks to initial `0` values
+ box-shadow: 0 0 0 var(--#{$prefix}focus-ring-offset-width) var(--#{$prefix}focus-ring-offset-color, var(--#{$prefix}body-bg)),
+ var(--#{$prefix}focus-ring-x, 0)
+ var(--#{$prefix}focus-ring-y, 0)
+ var(--#{$prefix}focus-ring-blur)
+ calc(var(--#{$prefix}focus-ring-width) + var(--#{$prefix}focus-ring-offset-width))
+ var(--#{$prefix}focus-ring-color);
+}
+
+@each $state, $value in $theme-colors {
+ .focus-ring-#{$state}:focus { --#{$prefix}focus-ring-color: rgba(#{to-rgb($value)}, var(--bs-focus-ring-opacity)); }
+}