From d568e029dac04b50305000df4c1bf33cac7db64a Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Sun, 28 Nov 2021 00:56:37 -1000 Subject: [PATCH] Convert dropdowns to CSS variables --- scss/_dropdown.scss | 122 +++++++++--------- site/content/docs/5.1/components/dropdowns.md | 14 +- .../docs/5.1/examples/dropdowns/index.html | 8 +- 3 files changed, 79 insertions(+), 65 deletions(-) diff --git a/scss/_dropdown.scss b/scss/_dropdown.scss index adc114327d..7476acd85d 100644 --- a/scss/_dropdown.scss +++ b/scss/_dropdown.scss @@ -15,26 +15,51 @@ // The dropdown menu .dropdown-menu { + // scss-docs-start dropdown-css-vars + --#{$variable-prefix}dropdown-min-width: #{$dropdown-min-width}; + --#{$variable-prefix}dropdown-padding: #{$dropdown-padding-y $dropdown-padding-x}; + --#{$variable-prefix}dropdown-spacer: #{$dropdown-spacer}; + @include rfs($dropdown-font-size, --#{$variable-prefix}dropdown-font-size); + --#{$variable-prefix}dropdown-color: #{$dropdown-color}; // stylelint-disable-line custom-property-empty-line-before + --#{$variable-prefix}dropdown-bg: #{$dropdown-bg}; + --#{$variable-prefix}dropdown-border-color: #{$dropdown-border-color}; + --#{$variable-prefix}dropdown-border-radius: #{$dropdown-border-radius}; + --#{$variable-prefix}dropdown-border-width: #{$dropdown-border-width}; + --#{$variable-prefix}dropdown-inner-border: #{$dropdown-inner-border-radius}; + --#{$variable-prefix}dropdown-divider-bg: #{$dropdown-divider-bg}; + --#{$variable-prefix}dropdown-divider-margin-y: #{$dropdown-divider-margin-y}; + --#{$variable-prefix}dropdown-shadow: #{$dropdown-box-shadow}; + --#{$variable-prefix}dropdown-link-color: #{$dropdown-link-color}; + --#{$variable-prefix}dropdown-link-hover-color: #{$dropdown-link-hover-color}; + --#{$variable-prefix}dropdown-link-hover-bg: #{$dropdown-link-hover-bg}; + --#{$variable-prefix}dropdown-link-active-color: #{$dropdown-link-active-color}; + --#{$variable-prefix}dropdown-link-active-bg: #{$dropdown-link-active-bg}; + --#{$variable-prefix}dropdown-link-disabled-color: #{$dropdown-link-disabled-color}; + --#{$variable-prefix}dropdown-item-padding: #{$dropdown-item-padding-y $dropdown-item-padding-x}; + --#{$variable-prefix}dropdown-header-color: #{$dropdown-header-color}; + --#{$variable-prefix}dropdown-header-padding: #{$dropdown-header-padding}; + // scss-docs-end dropdown-css-vars + position: absolute; z-index: $zindex-dropdown; display: none; // none by default, but block on "open" of the menu - min-width: $dropdown-min-width; - padding: $dropdown-padding-y $dropdown-padding-x; + min-width: var(--#{$variable-prefix}dropdown-min-width); + padding: var(--#{$variable-prefix}dropdown-padding); margin: 0; // Override default margin of ul @include font-size($dropdown-font-size); - color: $dropdown-color; + color: var(--#{$variable-prefix}dropdown-color); text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) list-style: none; - background-color: $dropdown-bg; + background-color: var(--#{$variable-prefix}dropdown-bg); background-clip: padding-box; - border: $dropdown-border-width solid $dropdown-border-color; - @include border-radius($dropdown-border-radius); - @include box-shadow($dropdown-box-shadow); + border: var(--#{$variable-prefix}dropdown-border-width) solid var(--#{$variable-prefix}dropdown-border-color); + @include border-radius(var(--#{$variable-prefix}dropdown-border-radius)); + @include box-shadow(var(--#{$variable-prefix}dropdown-shadow)); &[data-bs-popper] { top: 100%; left: 0; - margin-top: $dropdown-spacer; + margin-top: var(--#{$variable-prefix}dropdown-spacer); } } @@ -74,7 +99,7 @@ top: auto; bottom: 100%; margin-top: 0; - margin-bottom: $dropdown-spacer; + margin-bottom: var(--#{$variable-prefix}dropdown-spacer); } .dropdown-toggle { @@ -88,7 +113,7 @@ right: auto; left: 100%; margin-top: 0; - margin-left: $dropdown-spacer; + margin-left: var(--#{$variable-prefix}dropdown-spacer); } .dropdown-toggle { @@ -105,7 +130,7 @@ right: 100%; left: auto; margin-top: 0; - margin-right: $dropdown-spacer; + margin-right: var(--#{$variable-prefix}dropdown-spacer); } .dropdown-toggle { @@ -122,7 +147,7 @@ height: 0; margin: $dropdown-divider-margin-y 0; overflow: hidden; - border-top: 1px solid $dropdown-divider-bg; + border-top: 1px solid var(--#{$variable-prefix}dropdown-divider-bg); } // Links, buttons, and more within the dropdown menu @@ -131,10 +156,10 @@ .dropdown-item { display: block; width: 100%; // For `