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,