summaryrefslogtreecommitdiff
path: root/addons/web/static/src/scss/bs_mixins_overrides.scss
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/scss/bs_mixins_overrides.scss')
-rw-r--r--addons/web/static/src/scss/bs_mixins_overrides.scss74
1 files changed, 74 insertions, 0 deletions
diff --git a/addons/web/static/src/scss/bs_mixins_overrides.scss b/addons/web/static/src/scss/bs_mixins_overrides.scss
new file mode 100644
index 00000000..cc7ea1d4
--- /dev/null
+++ b/addons/web/static/src/scss/bs_mixins_overrides.scss
@@ -0,0 +1,74 @@
+//------------------------------------------------------------------------------
+// Bootstrap Mixins and Functions Extensions
+// Those will affect the way bootstrap is generated wherever bootstrap is used
+//------------------------------------------------------------------------------
+
+// This variable must be defined here instead of bootstrap overridden files
+// otherwise we will have deprecation messages for assets_common generation
+$enable-deprecation-messages: false !default;
+
+// Override color-yiq function to handle the alpha component of colors and
+// automatic threshold
+@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light, $background: $body-bg, $cross-mix: true) {
+ $threshold: if($yiq-contrasted-threshold != false, $yiq-contrasted-threshold / 255 * 100%, false);
+ @return o-get-most-contrast($color, $light, $dark, $background, $threshold, $cross-mix);
+}
+
+@function mute-color($color) {
+ @return scale-color($color, $alpha: -30%);
+}
+
+// This placeholder regroups the rules that will apply on all elements with a
+// bg-* class (see o-bg-color, bg-variant). The optimized-css way would be to
+// have a common class for them all.
+%o-bg-color-component-color-reset {
+ h1, h2, h3, h4, h5, h6 {
+ color: inherit;
+ }
+}
+
+$o-yiq-min-opacity-threshold: 0.3 !default;
+$o-color-extras-nesting-selector: '&' !default;
+
+@mixin o-bg-color($color, $text-color: null, $with-extras: true, $important: true, $yiq-min-opacity-threshold: $o-yiq-min-opacity-threshold, $background: $body-bg, $nesting-selector: $o-color-extras-nesting-selector) {
+ @if ($color) {
+ $-yiq-threshold-met: alpha($color) > $yiq-min-opacity-threshold;
+
+ $-yiq-color: if($text-color, $text-color, if($-yiq-threshold-met, color-yiq($color, $background: $background), null));
+ background-color: $color#{if($important, ' !important', '')};
+ color: $-yiq-color; // not important so that text utilities still work
+
+ @if $with-extras and $-yiq-threshold-met {
+ #{$nesting-selector} {
+ @extend %o-bg-color-component-color-reset;
+
+ .text-muted {
+ // Always important since the basic BS rule is important
+ color: mute-color($-yiq-color) !important;
+ }
+ }
+ }
+ }
+}
+
+// Override background utilities so that they come with a default contrasted
+// color (especially useful in the frontend editor for example). Also modifies
+// the way .text-muted elements are rendered in those environments.
+@mixin bg-variant($parent, $color, $text-color: null) {
+ #{$parent} {
+ @include o-bg-color($color, $text-color);
+ }
+ a#{$parent},
+ button#{$parent} {
+ @include hover-focus {
+ @include o-bg-color(darken($color, 10%), $text-color, false);
+ }
+ }
+}
+@mixin bg-gradient-variant($parent, $color, $text-color: null) {
+ #{$parent} {
+ @include o-bg-color($color, $text-color);
+ background-image: linear-gradient(180deg, mix($body-bg, $color, 15%), $color) !important;
+ background-repeat: repeat-x !important;
+ }
+}