diff --git a/README.md b/README.md
index 8b98fd0..6a6addc 100644
--- a/README.md
+++ b/README.md
@@ -77,7 +77,7 @@ For simplicity, this project will use the same version numbers as Bootstrap.
## Changelog
-https://github.com/twbs/bootstrap/releases/tag/v5.2.0
+https://github.com/twbs/bootstrap/releases/tag/v5.2.1
## Copyright and license
diff --git a/_accordion.scss b/_accordion.scss
index b306540..f09601b 100644
--- a/_accordion.scss
+++ b/_accordion.scss
@@ -4,7 +4,7 @@
.accordion {
// scss-docs-start accordion-css-vars
- --#{$prefix}accordion-color: #{color-contrast($accordion-bg)};
+ --#{$prefix}accordion-color: #{$accordion-color};
--#{$prefix}accordion-bg: #{$accordion-bg};
--#{$prefix}accordion-transition: #{$accordion-transition};
--#{$prefix}accordion-border-color: #{$accordion-border-color};
@@ -13,7 +13,7 @@
--#{$prefix}accordion-inner-border-radius: #{$accordion-inner-border-radius};
--#{$prefix}accordion-btn-padding-x: #{$accordion-button-padding-x};
--#{$prefix}accordion-btn-padding-y: #{$accordion-button-padding-y};
- --#{$prefix}accordion-btn-color: #{$accordion-color};
+ --#{$prefix}accordion-btn-color: #{$accordion-button-color};
--#{$prefix}accordion-btn-bg: #{$accordion-button-bg};
--#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon)};
--#{$prefix}accordion-btn-icon-width: #{$accordion-icon-width};
@@ -47,7 +47,7 @@
&:not(.collapsed) {
color: var(--#{$prefix}accordion-active-color);
background-color: var(--#{$prefix}accordion-active-bg);
- box-shadow: inset 0 calc(var(--#{$prefix}accordion-border-width) * -1) 0 var(--#{$prefix}accordion-border-color); // stylelint-disable-line function-disallowed-list
+ box-shadow: inset 0 calc(-1 * var(--#{$prefix}accordion-border-width)) 0 var(--#{$prefix}accordion-border-color); // stylelint-disable-line function-disallowed-list
&::after {
background-image: var(--#{$prefix}accordion-btn-active-icon);
@@ -140,7 +140,10 @@
&:last-child { border-bottom: 0; }
.accordion-button {
- @include border-radius(0);
+ &,
+ &.collapsed {
+ @include border-radius(0);
+ }
}
}
}
diff --git a/_button-group.scss b/_button-group.scss
index f78b8c1..79b100c 100644
--- a/_button-group.scss
+++ b/_button-group.scss
@@ -37,7 +37,7 @@
@include border-radius($btn-border-radius);
// Prevent double borders when buttons are next to each other
- > .btn:not(:first-child),
+ > :not(.btn-check:first-child) + .btn,
> .btn-group:not(:first-child) {
margin-left: -$btn-border-width;
}
diff --git a/_buttons.scss b/_buttons.scss
index 044b8d6..c2d0773 100644
--- a/_buttons.scss
+++ b/_buttons.scss
@@ -15,6 +15,7 @@
--#{$prefix}btn-border-width: #{$btn-border-width};
--#{$prefix}btn-border-color: transparent;
--#{$prefix}btn-border-radius: #{$btn-border-radius};
+ --#{$prefix}btn-hover-border-color: transparent;
--#{$prefix}btn-box-shadow: #{$btn-box-shadow};
--#{$prefix}btn-disabled-opacity: #{$btn-disabled-opacity};
--#{$prefix}btn-focus-box-shadow: 0 0 0 #{$btn-focus-width} rgba(var(--#{$prefix}btn-focus-shadow-rgb), .5);
@@ -39,15 +40,15 @@
@include box-shadow(var(--#{$prefix}btn-box-shadow));
@include transition($btn-transition);
- &:hover {
+ :not(.btn-check) + &:hover,
+ &:first-child:hover {
color: var(--#{$prefix}btn-hover-color);
text-decoration: if($link-hover-decoration == underline, none, null);
background-color: var(--#{$prefix}btn-hover-bg);
border-color: var(--#{$prefix}btn-hover-border-color);
}
- .btn-check:focus + &,
- &:focus {
+ &:focus-visible {
color: var(--#{$prefix}btn-hover-color);
@include gradient-bg(var(--#{$prefix}btn-hover-bg));
border-color: var(--#{$prefix}btn-hover-border-color);
@@ -60,9 +61,20 @@
}
}
+ .btn-check:focus-visible + & {
+ border-color: var(--#{$prefix}btn-hover-border-color);
+ outline: 0;
+ // Avoid using mixin so we can pass custom focus shadow properly
+ @if $enable-shadows {
+ box-shadow: var(--#{$prefix}btn-box-shadow), var(--#{$prefix}btn-focus-box-shadow);
+ } @else {
+ box-shadow: var(--#{$prefix}btn-focus-box-shadow);
+ }
+ }
+
.btn-check:checked + &,
- .btn-check:active + &,
- &:active,
+ :not(.btn-check) + &:active,
+ &:first-child:active,
&.active,
&.show {
color: var(--#{$prefix}btn-active-color);
@@ -72,7 +84,7 @@
border-color: var(--#{$prefix}btn-active-border-color);
@include box-shadow(var(--#{$prefix}btn-active-shadow));
- &:focus {
+ &:focus-visible {
// Avoid using mixin so we can pass custom focus shadow properly
@if $enable-shadows {
box-shadow: var(--#{$prefix}btn-active-shadow), var(--#{$prefix}btn-focus-box-shadow);
@@ -155,13 +167,16 @@
--#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix(color-contrast($primary), $primary, 15%))};
text-decoration: $link-decoration;
+ @if $enable-gradients {
+ background-image: none;
+ }
&:hover,
- &:focus {
+ &:focus-visible {
text-decoration: $link-hover-decoration;
}
- &:focus {
+ &:focus-visible {
color: var(--#{$prefix}btn-color);
}
diff --git a/_dropdown.scss b/_dropdown.scss
index 62125b9..8899d25 100644
--- a/_dropdown.scss
+++ b/_dropdown.scss
@@ -18,6 +18,7 @@
// The dropdown menu
.dropdown-menu {
// scss-docs-start dropdown-css-vars
+ --#{$prefix}dropdown-zindex: #{$zindex-dropdown};
--#{$prefix}dropdown-min-width: #{$dropdown-min-width};
--#{$prefix}dropdown-padding-x: #{$dropdown-padding-x};
--#{$prefix}dropdown-padding-y: #{$dropdown-padding-y};
@@ -46,7 +47,7 @@
// scss-docs-end dropdown-css-vars
position: absolute;
- z-index: $zindex-dropdown;
+ z-index: var(--#{$prefix}dropdown-zindex);
display: none; // none by default, but block on "open" of the menu
min-width: var(--#{$prefix}dropdown-min-width);
padding: var(--#{$prefix}dropdown-padding-y) var(--#{$prefix}dropdown-padding-x);
diff --git a/_functions.scss b/_functions.scss
index 855768b..969a4b0 100644
--- a/_functions.scss
+++ b/_functions.scss
@@ -109,7 +109,7 @@
// Replace `$search` with `$replace` in `$string`
// Used on our SVG icon backgrounds for custom forms.
//
-// @author Hugo Giraudel
+// @author Kitty Giraudel
// @param {String} $string - Initial string
// @param {String} $search - Substring to replace
// @param {String} $replace ('') - New value
diff --git a/_list-group.scss b/_list-group.scss
index 22546cc..c0ec164 100644
--- a/_list-group.scss
+++ b/_list-group.scss
@@ -104,11 +104,12 @@
border-color: var(--#{$prefix}list-group-active-border-color);
}
- & + & {
+ // stylelint-disable-next-line scss/selector-no-redundant-nesting-selector
+ & + .list-group-item {
border-top-width: 0;
&.active {
- margin-top: calc(var(--#{$prefix}list-group-border-width) * -1); // stylelint-disable-line function-disallowed-list
+ margin-top: calc(-1 * var(--#{$prefix}list-group-border-width)); // stylelint-disable-line function-disallowed-list
border-top-width: var(--#{$prefix}list-group-border-width);
}
}
@@ -126,12 +127,12 @@
flex-direction: row;
> .list-group-item {
- &:first-child {
+ &:first-child:not(:last-child) {
@include border-bottom-start-radius(var(--#{$prefix}list-group-border-radius));
@include border-top-end-radius(0);
}
- &:last-child {
+ &:last-child:not(:first-child) {
@include border-top-end-radius(var(--#{$prefix}list-group-border-radius));
@include border-bottom-start-radius(0);
}
@@ -145,7 +146,7 @@
border-left-width: 0;
&.active {
- margin-left: calc(var(--#{$prefix}list-group-border-width) * -1); // stylelint-disable-line function-disallowed-list
+ margin-left: calc(-1 * var(--#{$prefix}list-group-border-width)); // stylelint-disable-line function-disallowed-list
border-left-width: var(--#{$prefix}list-group-border-width);
}
}
diff --git a/_modal.scss b/_modal.scss
index a25af57..5f1429f 100644
--- a/_modal.scss
+++ b/_modal.scss
@@ -133,7 +133,7 @@
.btn-close {
padding: calc(var(--#{$prefix}modal-header-padding-y) * .5) calc(var(--#{$prefix}modal-header-padding-x) * .5);
- margin: calc(var(--#{$prefix}modal-header-padding-y) * -.5) calc(var(--#{$prefix}modal-header-padding-x) * -.5) calc(var(--#{$prefix}modal-header-padding-y) * -.5) auto;
+ margin: calc(-.5 * var(--#{$prefix}modal-header-padding-y)) calc(-.5 * var(--#{$prefix}modal-header-padding-x)) calc(-.5 * var(--#{$prefix}modal-header-padding-y)) auto;
}
}
diff --git a/_nav.scss b/_nav.scss
index e96b273..9efc03b 100644
--- a/_nav.scss
+++ b/_nav.scss
@@ -62,7 +62,7 @@
border-bottom: var(--#{$prefix}nav-tabs-border-width) solid var(--#{$prefix}nav-tabs-border-color);
.nav-link {
- margin-bottom: calc(var(--#{$prefix}nav-tabs-border-width) * -1); // stylelint-disable-line function-disallowed-list
+ margin-bottom: calc(-1 * var(--#{$prefix}nav-tabs-border-width)); // stylelint-disable-line function-disallowed-list
background: none;
border: var(--#{$prefix}nav-tabs-border-width) solid transparent;
@include border-top-radius(var(--#{$prefix}nav-tabs-border-radius));
@@ -91,7 +91,7 @@
.dropdown-menu {
// Make dropdown border overlap tab border
- margin-top: calc(var(--#{$prefix}nav-tabs-border-width) * -1); // stylelint-disable-line function-disallowed-list
+ margin-top: calc(-1 * var(--#{$prefix}nav-tabs-border-width)); // stylelint-disable-line function-disallowed-list
// Remove the top rounded corners here since there is a hard edge above the menu
@include border-top-radius(0);
}
diff --git a/_navbar.scss b/_navbar.scss
index fd6603d..599b055 100644
--- a/_navbar.scss
+++ b/_navbar.scss
@@ -265,6 +265,7 @@
}
.navbar-dark {
+ // scss-docs-start navbar-dark-css-vars
--#{$prefix}navbar-color: #{$navbar-dark-color};
--#{$prefix}navbar-hover-color: #{$navbar-dark-hover-color};
--#{$prefix}navbar-disabled-color: #{$navbar-dark-disabled-color};
@@ -273,4 +274,5 @@
--#{$prefix}navbar-brand-hover-color: #{$navbar-dark-brand-hover-color};
--#{$prefix}navbar-toggler-border-color: #{$navbar-dark-toggler-border-color};
--#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-dark-toggler-icon-bg)};
+ // scss-docs-end navbar-dark-css-vars
}
diff --git a/_offcanvas.scss b/_offcanvas.scss
index 5709479..23fc357 100644
--- a/_offcanvas.scss
+++ b/_offcanvas.scss
@@ -2,6 +2,7 @@
%offcanvas-css-vars {
// scss-docs-start offcanvas-css-vars
+ --#{$prefix}offcanvas-zindex: #{$zindex-offcanvas};
--#{$prefix}offcanvas-width: #{$offcanvas-horizontal-width};
--#{$prefix}offcanvas-height: #{$offcanvas-vertical-height};
--#{$prefix}offcanvas-padding-x: #{$offcanvas-padding-x};
@@ -31,7 +32,7 @@
@include media-breakpoint-down($next) {
position: fixed;
bottom: 0;
- z-index: $zindex-offcanvas;
+ z-index: var(--#{$prefix}offcanvas-zindex);
display: flex;
flex-direction: column;
max-width: 100%;
@@ -125,9 +126,9 @@
.btn-close {
padding: calc(var(--#{$prefix}offcanvas-padding-y) * .5) calc(var(--#{$prefix}offcanvas-padding-x) * .5);
- margin-top: calc(var(--#{$prefix}offcanvas-padding-y) * -.5);
- margin-right: calc(var(--#{$prefix}offcanvas-padding-x) * -.5);
- margin-bottom: calc(var(--#{$prefix}offcanvas-padding-y) * -.5);
+ margin-top: calc(-.5 * var(--#{$prefix}offcanvas-padding-y));
+ margin-right: calc(-.5 * var(--#{$prefix}offcanvas-padding-x));
+ margin-bottom: calc(-.5 * var(--#{$prefix}offcanvas-padding-y));
}
}
diff --git a/_pagination.scss b/_pagination.scss
index e8e10a6..cf4db3c 100644
--- a/_pagination.scss
+++ b/_pagination.scss
@@ -75,7 +75,7 @@
margin-left: $pagination-margin-start;
}
- @if $pagination-margin-start == (calc($pagination-border-width * -1)) {
+ @if $pagination-margin-start == ($pagination-border-width * -1) {
&:first-child {
.page-link {
@include border-start-radius(var(--#{$prefix}pagination-border-radius));
diff --git a/_popover.scss b/_popover.scss
index b00c029..7b69f62 100644
--- a/_popover.scss
+++ b/_popover.scss
@@ -56,7 +56,7 @@
.bs-popover-top {
> .popover-arrow {
- bottom: calc((var(--#{$prefix}popover-arrow-height) * -1) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
+ bottom: calc(-1 * (var(--#{$prefix}popover-arrow-height)) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
&::before,
&::after {
@@ -78,7 +78,7 @@
/* rtl:begin:ignore */
.bs-popover-end {
> .popover-arrow {
- left: calc((var(--#{$prefix}popover-arrow-height) * -1) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
+ left: calc(-1 * (var(--#{$prefix}popover-arrow-height)) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
width: var(--#{$prefix}popover-arrow-height);
height: var(--#{$prefix}popover-arrow-width);
@@ -103,7 +103,7 @@
.bs-popover-bottom {
> .popover-arrow {
- top: calc((var(--#{$prefix}popover-arrow-height) * -1) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
+ top: calc(-1 * (var(--#{$prefix}popover-arrow-height)) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
&::before,
&::after {
@@ -128,7 +128,7 @@
left: 50%;
display: block;
width: var(--#{$prefix}popover-arrow-width);
- margin-left: calc(var(--#{$prefix}popover-arrow-width) * -.5); // stylelint-disable-line function-disallowed-list
+ margin-left: calc(-.5 * var(--#{$prefix}popover-arrow-width)); // stylelint-disable-line function-disallowed-list
content: "";
border-bottom: var(--#{$prefix}popover-border-width) solid var(--#{$prefix}popover-header-bg);
}
@@ -137,7 +137,7 @@
/* rtl:begin:ignore */
.bs-popover-start {
> .popover-arrow {
- right: calc((var(--#{$prefix}popover-arrow-height) * -1) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
+ right: calc(-1 * (var(--#{$prefix}popover-arrow-height)) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
width: var(--#{$prefix}popover-arrow-height);
height: var(--#{$prefix}popover-arrow-width);
diff --git a/_toasts.scss b/_toasts.scss
index 68ed8ab..c34e49b 100644
--- a/_toasts.scss
+++ b/_toasts.scss
@@ -1,5 +1,6 @@
.toast {
// scss-docs-start toast-css-vars
+ --#{$prefix}toast-zindex: #{$zindex-toast};
--#{$prefix}toast-padding-x: #{$toast-padding-x};
--#{$prefix}toast-padding-y: #{$toast-padding-y};
--#{$prefix}toast-spacing: #{$toast-spacing};
@@ -38,7 +39,7 @@
.toast-container {
position: absolute;
- z-index: $zindex-toast;
+ z-index: var(--#{$prefix}toast-zindex);
width: max-content;
max-width: 100%;
pointer-events: none;
@@ -59,7 +60,7 @@
@include border-top-radius(calc(var(--#{$prefix}toast-border-radius) - var(--#{$prefix}toast-border-width)));
.btn-close {
- margin-right: calc(var(--#{$prefix}toast-padding-x) * -.5); // stylelint-disable-line function-disallowed-list
+ margin-right: calc(-.5 * var(--#{$prefix}toast-padding-x)); // stylelint-disable-line function-disallowed-list
margin-left: var(--#{$prefix}toast-padding-x);
}
}
diff --git a/_variables.scss b/_variables.scss
index 3048510..07ce922 100644
--- a/_variables.scss
+++ b/_variables.scss
@@ -1100,15 +1100,6 @@ $navbar-toggler-font-size: $font-size-lg !default;
$navbar-toggler-border-radius: $btn-border-radius !default;
$navbar-toggler-focus-width: $btn-focus-width !default;
$navbar-toggler-transition: box-shadow .15s ease-in-out !default;
-// scss-docs-end navbar-variables
-
-// scss-docs-start navbar-theme-variables
-$navbar-dark-color: rgba($white, .55) !default;
-$navbar-dark-hover-color: rgba($white, .75) !default;
-$navbar-dark-active-color: $white !default;
-$navbar-dark-disabled-color: rgba($white, .25) !default;
-$navbar-dark-toggler-icon-bg: url("data:image/svg+xml,") !default;
-$navbar-dark-toggler-border-color: rgba($white, .1) !default;
$navbar-light-color: rgba($black, .55) !default;
$navbar-light-hover-color: rgba($black, .7) !default;
@@ -1116,12 +1107,20 @@ $navbar-light-active-color: rgba($black, .9) !default;
$navbar-light-disabled-color: rgba($black, .3) !default;
$navbar-light-toggler-icon-bg: url("data:image/svg+xml,") !default;
$navbar-light-toggler-border-color: rgba($black, .1) !default;
+$navbar-light-brand-color: $navbar-light-active-color !default;
+$navbar-light-brand-hover-color: $navbar-light-active-color !default;
+// scss-docs-end navbar-variables
-$navbar-light-brand-color: $navbar-light-active-color !default;
-$navbar-light-brand-hover-color: $navbar-light-active-color !default;
-$navbar-dark-brand-color: $navbar-dark-active-color !default;
-$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;
-// scss-docs-end navbar-theme-variables
+// scss-docs-start navbar-dark-variables
+$navbar-dark-color: rgba($white, .55) !default;
+$navbar-dark-hover-color: rgba($white, .75) !default;
+$navbar-dark-active-color: $white !default;
+$navbar-dark-disabled-color: rgba($white, .25) !default;
+$navbar-dark-toggler-icon-bg: url("data:image/svg+xml,") !default;
+$navbar-dark-toggler-border-color: rgba($white, .1) !default;
+$navbar-dark-brand-color: $navbar-dark-active-color !default;
+$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;
+// scss-docs-end navbar-dark-variables
// Dropdowns
@@ -1333,7 +1332,7 @@ $popover-box-shadow: $box-shadow !default;
$popover-header-font-size: $font-size-base !default;
$popover-header-bg: shade-color($popover-bg, 6%) !default;
-$popover-header-color: var(--#{$prefix}heading-color) !default;
+$popover-header-color: $headings-color !default;
$popover-header-padding-y: .5rem !default;
$popover-header-padding-x: $spacer !default;
@@ -1560,11 +1559,13 @@ $carousel-control-next-icon-bg: url("data:image/svg+xml,