aboutsummaryrefslogtreecommitdiff
path: root/scss/mixins
diff options
context:
space:
mode:
Diffstat (limited to 'scss/mixins')
-rw-r--r--scss/mixins/_alert.scss2
-rw-r--r--scss/mixins/_border-radius.scss2
-rw-r--r--scss/mixins/_buttons.scss15
-rw-r--r--scss/mixins/_caret.scss2
-rw-r--r--scss/mixins/_color-scheme.scss7
-rw-r--r--scss/mixins/_forms.scss40
-rw-r--r--scss/mixins/_gradients.scss4
-rw-r--r--scss/mixins/_grid.scss11
-rw-r--r--scss/mixins/_list-group.scss2
-rw-r--r--scss/mixins/_pagination.scss2
-rw-r--r--scss/mixins/_visually-hidden.scss5
11 files changed, 72 insertions, 20 deletions
diff --git a/scss/mixins/_alert.scss b/scss/mixins/_alert.scss
index 99ebbc305..f3eb59511 100644
--- a/scss/mixins/_alert.scss
+++ b/scss/mixins/_alert.scss
@@ -1,3 +1,4 @@
+// scss-docs-start alert-variant-mixin
@mixin alert-variant($background, $border, $color) {
color: $color;
@include gradient-bg($background);
@@ -7,3 +8,4 @@
color: shade-color($color, 20%);
}
}
+// scss-docs-end alert-variant-mixin
diff --git a/scss/mixins/_border-radius.scss b/scss/mixins/_border-radius.scss
index 819b8abd4..616decbce 100644
--- a/scss/mixins/_border-radius.scss
+++ b/scss/mixins/_border-radius.scss
@@ -14,6 +14,7 @@
@return $return;
}
+// scss-docs-start border-radius-mixins
@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {
@if $enable-rounded {
border-radius: valid-radius($radius);
@@ -74,3 +75,4 @@
border-bottom-left-radius: valid-radius($radius);
}
}
+// scss-docs-end border-radius-mixins
diff --git a/scss/mixins/_buttons.scss b/scss/mixins/_buttons.scss
index 3aabd896c..c06fa4a98 100644
--- a/scss/mixins/_buttons.scss
+++ b/scss/mixins/_buttons.scss
@@ -3,15 +3,16 @@
// Easily pump out default styles, as well as :hover, :focus, :active,
// and disabled options for all buttons
+// scss-docs-start btn-variant-mixin
@mixin button-variant(
$background,
$border,
$color: color-contrast($background),
- $hover-background: if($color == $color-contrast-light, shade-color($background, 15%), tint-color($background, 15%)),
- $hover-border: if($color == $color-contrast-light, shade-color($border, 20%), tint-color($border, 10%)),
+ $hover-background: if($color == $color-contrast-light, shade-color($background, $btn-hover-bg-shade-amount), tint-color($background, $btn-hover-bg-tint-amount)),
+ $hover-border: if($color == $color-contrast-light, shade-color($border, $btn-hover-border-shade-amount), tint-color($border, $btn-hover-border-tint-amount)),
$hover-color: color-contrast($hover-background),
- $active-background: if($color == $color-contrast-light, shade-color($background, 20%), tint-color($background, 20%)),
- $active-border: if($color == $color-contrast-light, shade-color($border, 25%), tint-color($border, 10%)),
+ $active-background: if($color == $color-contrast-light, shade-color($background,$btn-active-bg-shade-amount), tint-color($background, $btn-active-bg-tint-amount)),
+ $active-border: if($color == $color-contrast-light, shade-color($border, $btn-active-border-shade-amount), tint-color($border, $btn-active-border-tint-amount)),
$active-color: color-contrast($active-background),
$disabled-background: $background,
$disabled-border: $border,
@@ -71,7 +72,9 @@
border-color: $disabled-border;
}
}
+// scss-docs-end btn-variant-mixin
+// scss-docs-start btn-outline-variant-mixin
@mixin button-outline-variant(
$color,
$color-hover: color-contrast($color),
@@ -118,11 +121,13 @@
background-color: transparent;
}
}
+// scss-docs-end btn-outline-variant-mixin
-// Button sizes
+// scss-docs-start btn-size-mixin
@mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {
padding: $padding-y $padding-x;
@include font-size($font-size);
// Manually declare to provide an override to the browser default
@include border-radius($border-radius, 0);
}
+// scss-docs-end btn-size-mixin
diff --git a/scss/mixins/_caret.scss b/scss/mixins/_caret.scss
index fc1066914..4b0f0360b 100644
--- a/scss/mixins/_caret.scss
+++ b/scss/mixins/_caret.scss
@@ -1,3 +1,4 @@
+// scss-docs-start caret-mixins
@mixin caret-down {
border-top: $caret-width solid;
border-right: $caret-width solid transparent;
@@ -60,3 +61,4 @@
}
}
}
+// scss-docs-end caret-mixins
diff --git a/scss/mixins/_color-scheme.scss b/scss/mixins/_color-scheme.scss
new file mode 100644
index 000000000..90497aa0a
--- /dev/null
+++ b/scss/mixins/_color-scheme.scss
@@ -0,0 +1,7 @@
+// scss-docs-start mixin-color-scheme
+@mixin color-scheme($name) {
+ @media (prefers-color-scheme: #{$name}) {
+ @content;
+ }
+}
+// scss-docs-end mixin-color-scheme
diff --git a/scss/mixins/_forms.scss b/scss/mixins/_forms.scss
index 5e4cfd488..283462fd5 100644
--- a/scss/mixins/_forms.scss
+++ b/scss/mixins/_forms.scss
@@ -1,5 +1,7 @@
// This mixin uses an `if()` technique to be compatible with Dart Sass
// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details
+
+// scss-docs-start form-validation-mixins
@mixin form-validation-state-selector($state) {
@if ($state == "valid" or $state == "invalid") {
.was-validated #{if(&, "&", "")}:#{$state},
@@ -13,7 +15,14 @@
}
}
-@mixin form-validation-state($state, $color, $icon) {
+@mixin form-validation-state(
+ $state,
+ $color,
+ $icon,
+ $tooltip-color: color-contrast($color),
+ $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),
+ $focus-box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($color, $input-btn-focus-color-opacity)
+) {
.#{$state}-feedback {
display: none;
width: 100%;
@@ -33,8 +42,8 @@
margin-top: .1rem;
@include font-size($form-feedback-tooltip-font-size);
line-height: $form-feedback-tooltip-line-height;
- color: color-contrast($color);
- background-color: rgba($color, $form-feedback-tooltip-opacity);
+ color: $tooltip-color;
+ background-color: $tooltip-bg-color;
@include border-radius($form-feedback-tooltip-border-radius);
}
@@ -59,7 +68,7 @@
&:focus {
border-color: $color;
- box-shadow: 0 0 0 $input-focus-width rgba($color, $input-btn-focus-color-opacity);
+ box-shadow: $focus-box-shadow;
}
}
}
@@ -79,15 +88,18 @@
border-color: $color;
@if $enable-validation-icons {
- padding-right: $form-select-feedback-icon-padding-end;
- background-image: escape-svg($form-select-indicator), escape-svg($icon);
- background-position: $form-select-bg-position, $form-select-feedback-icon-position;
- background-size: $form-select-bg-size, $form-select-feedback-icon-size;
+ &:not([multiple]):not([size]),
+ &:not([multiple])[size="1"] {
+ padding-right: $form-select-feedback-icon-padding-end;
+ background-image: escape-svg($form-select-indicator), escape-svg($icon);
+ background-position: $form-select-bg-position, $form-select-feedback-icon-position;
+ background-size: $form-select-bg-size, $form-select-feedback-icon-size;
+ }
}
&:focus {
border-color: $color;
- box-shadow: 0 0 0 $input-focus-width rgba($color, .25);
+ box-shadow: $focus-box-shadow;
}
}
}
@@ -101,7 +113,7 @@
}
&:focus {
- box-shadow: 0 0 0 $input-focus-width rgba($color, .25);
+ box-shadow: $focus-box-shadow;
}
~ .form-check-label {
@@ -114,4 +126,12 @@
margin-left: .5em;
}
}
+
+ .input-group .form-control,
+ .input-group .form-select {
+ @include form-validation-state-selector($state) {
+ z-index: 3;
+ }
+ }
}
+// scss-docs-end form-validation-mixins
diff --git a/scss/mixins/_gradients.scss b/scss/mixins/_gradients.scss
index ec38ca141..44167d1b8 100644
--- a/scss/mixins/_gradients.scss
+++ b/scss/mixins/_gradients.scss
@@ -1,5 +1,6 @@
// Gradients
+// scss-docs-start gradient-bg-mixin
@mixin gradient-bg($color: null) {
background-color: $color;
@@ -7,7 +8,9 @@
background-image: var(--#{$variable-prefix}gradient);
}
}
+// scss-docs-end gradient-bg-mixin
+// scss-docs-start gradient-mixins
// Horizontal gradient, from left to right
//
// Creates two color stops, start and end, by specifying a color and position for each color stop.
@@ -41,3 +44,4 @@
@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {
background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
}
+// scss-docs-end gradient-mixins
diff --git a/scss/mixins/_grid.scss b/scss/mixins/_grid.scss
index 92bb88ad4..d757eac74 100644
--- a/scss/mixins/_grid.scss
+++ b/scss/mixins/_grid.scss
@@ -26,9 +26,14 @@
margin-top: var(--#{$variable-prefix}gutter-y);
}
-@mixin make-col($size, $columns: $grid-columns) {
- flex: 0 0 auto;
- width: percentage($size / $columns);
+@mixin make-col($size: false, $columns: $grid-columns) {
+ @if $size {
+ flex: 0 0 auto;
+ width: percentage($size / $columns);
+ } @else {
+ flex: 1 1 0;
+ max-width: 100%;
+ }
}
@mixin make-col-auto() {
diff --git a/scss/mixins/_list-group.scss b/scss/mixins/_list-group.scss
index 351e9109e..e55415f2b 100644
--- a/scss/mixins/_list-group.scss
+++ b/scss/mixins/_list-group.scss
@@ -1,5 +1,6 @@
// List Groups
+// scss-docs-start list-group-mixin
@mixin list-group-item-variant($state, $background, $color) {
.list-group-item-#{$state} {
color: $color;
@@ -20,3 +21,4 @@
}
}
}
+// scss-docs-end list-group-mixin
diff --git a/scss/mixins/_pagination.scss b/scss/mixins/_pagination.scss
index 9cb7fd8bc..3101b380d 100644
--- a/scss/mixins/_pagination.scss
+++ b/scss/mixins/_pagination.scss
@@ -1,5 +1,6 @@
// Pagination
+// scss-docs-start pagination-mixin
@mixin pagination-size($padding-y, $padding-x, $font-size, $border-radius) {
.page-link {
padding: $padding-y $padding-x;
@@ -27,3 +28,4 @@
}
}
}
+// scss-docs-end pagination-mixin
diff --git a/scss/mixins/_visually-hidden.scss b/scss/mixins/_visually-hidden.scss
index d980696c8..ed7bc9c13 100644
--- a/scss/mixins/_visually-hidden.scss
+++ b/scss/mixins/_visually-hidden.scss
@@ -17,12 +17,13 @@
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();
}
}