[Rt-commit] rt branch 5.0/upgrade-bootstrap-to-4.6.1 created. rt-5.0.2-54-g0c451636d9
BPS Git Server
git at git.bestpractical.com
Thu Dec 30 16:07:24 UTC 2021
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "rt".
The branch, 5.0/upgrade-bootstrap-to-4.6.1 has been created
at 0c451636d93ec5cec74f1642c7f62e21be65bdd5 (commit)
- Log -----------------------------------------------------------------
commit 0c451636d93ec5cec74f1642c7f62e21be65bdd5
Author: sunnavy <sunnavy at bestpractical.com>
Date: Tue Dec 28 05:40:09 2021 +0800
Upgrade bootstrap to 4.6.1
diff --git a/devel/third-party/README b/devel/third-party/README
index 846e6f9da8..756395bfd8 100644
--- a/devel/third-party/README
+++ b/devel/third-party/README
@@ -4,7 +4,7 @@ users over developer modification.
The rest of this file documents the contents of the directory.
-* bootstrap-4.2.1
+* bootstrap-4.6.1
Description: front-end framework
Origin: https://github.com/twbs/bootstrap
License: MIT
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_functions.scss b/devel/third-party/bootstrap-4.2.1/scss/_functions.scss
deleted file mode 100644
index 77b8c8f104..0000000000
--- a/devel/third-party/bootstrap-4.2.1/scss/_functions.scss
+++ /dev/null
@@ -1,86 +0,0 @@
-// Bootstrap functions
-//
-// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.
-
-// Ascending
-// Used to evaluate Sass maps like our grid breakpoints.
- at mixin _assert-ascending($map, $map-name) {
- $prev-key: null;
- $prev-num: null;
- @each $key, $num in $map {
- @if $prev-num == null or unit($num) == "%" {
- // Do nothing
- } @else if not comparable($prev-num, $num) {
- @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
- } @else if $prev-num >= $num {
- @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
- }
- $prev-key: $key;
- $prev-num: $num;
- }
-}
-
-// Starts at zero
-// Another grid mixin that ensures the min-width of the lowest breakpoint starts at 0.
- at mixin _assert-starts-at-zero($map) {
- $values: map-values($map);
- $first-value: nth($values, 1);
- @if $first-value != 0 {
- @warn "First breakpoint in `$grid-breakpoints` must start at 0, but starts at #{$first-value}.";
- }
-}
-
-// Replace `$search` with `$replace` in `$string`
-// Used on our SVG icon backgrounds for custom forms.
-//
-// @author Hugo Giraudel
-// @param {String} $string - Initial string
-// @param {String} $search - Substring to replace
-// @param {String} $replace ('') - New value
-// @return {String} - Updated string
- at function str-replace($string, $search, $replace: "") {
- $index: str-index($string, $search);
-
- @if $index {
- @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
- }
-
- @return $string;
-}
-
-// Color contrast
- at function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {
- $r: red($color);
- $g: green($color);
- $b: blue($color);
-
- $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;
-
- @if ($yiq >= $yiq-contrasted-threshold) {
- @return $dark;
- } @else {
- @return $light;
- }
-}
-
-// Retrieve color Sass maps
- at function color($key: "blue") {
- @return map-get($colors, $key);
-}
-
- at function theme-color($key: "primary") {
- @return map-get($theme-colors, $key);
-}
-
- at function gray($key: "100") {
- @return map-get($grays, $key);
-}
-
-// Request a theme color level
- at function theme-color-level($color-name: "primary", $level: 0) {
- $color: theme-color($color-name);
- $color-base: if($level > 0, $black, $white);
- $level: abs($level);
-
- @return mix($color-base, $color, $level * $theme-color-interval);
-}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_grid.scss b/devel/third-party/bootstrap-4.2.1/scss/_grid.scss
deleted file mode 100644
index a227515379..0000000000
--- a/devel/third-party/bootstrap-4.2.1/scss/_grid.scss
+++ /dev/null
@@ -1,52 +0,0 @@
-// Container widths
-//
-// Set the container width, and override it for fixed navbars in media queries.
-
- at if $enable-grid-classes {
- .container {
- @include make-container();
- @include make-container-max-widths();
- }
-}
-
-// Fluid container
-//
-// Utilizes the mixin meant for fixed width containers, but with 100% width for
-// fluid, full width layouts.
-
- at if $enable-grid-classes {
- .container-fluid {
- @include make-container();
- }
-}
-
-// Row
-//
-// Rows contain and clear the floats of your columns.
-
- at if $enable-grid-classes {
- .row {
- @include make-row();
- }
-
- // Remove the negative margin from default .row, then the horizontal padding
- // from all immediate children columns (to prevent runaway style inheritance).
- .no-gutters {
- margin-right: 0;
- margin-left: 0;
-
- > .col,
- > [class*="col-"] {
- padding-right: 0;
- padding-left: 0;
- }
- }
-}
-
-// Columns
-//
-// Common styles for small and large grid columns
-
- at if $enable-grid-classes {
- @include make-grid-columns();
-}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_border-radius.scss b/devel/third-party/bootstrap-4.2.1/scss/mixins/_border-radius.scss
deleted file mode 100644
index 2024febcfa..0000000000
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_border-radius.scss
+++ /dev/null
@@ -1,35 +0,0 @@
-// Single side border-radius
-
- at mixin border-radius($radius: $border-radius) {
- @if $enable-rounded {
- border-radius: $radius;
- }
-}
-
- at mixin border-top-radius($radius) {
- @if $enable-rounded {
- border-top-left-radius: $radius;
- border-top-right-radius: $radius;
- }
-}
-
- at mixin border-right-radius($radius) {
- @if $enable-rounded {
- border-top-right-radius: $radius;
- border-bottom-right-radius: $radius;
- }
-}
-
- at mixin border-bottom-radius($radius) {
- @if $enable-rounded {
- border-bottom-right-radius: $radius;
- border-bottom-left-radius: $radius;
- }
-}
-
- at mixin border-left-radius($radius) {
- @if $enable-rounded {
- border-top-left-radius: $radius;
- border-bottom-left-radius: $radius;
- }
-}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_box-shadow.scss b/devel/third-party/bootstrap-4.2.1/scss/mixins/_box-shadow.scss
deleted file mode 100644
index b2410e53ac..0000000000
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_box-shadow.scss
+++ /dev/null
@@ -1,5 +0,0 @@
- at mixin box-shadow($shadow...) {
- @if $enable-shadows {
- box-shadow: $shadow;
- }
-}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_float.scss b/devel/third-party/bootstrap-4.2.1/scss/mixins/_float.scss
deleted file mode 100644
index 48fa8b6d59..0000000000
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_float.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-// stylelint-disable declaration-no-important
-
- at mixin float-left {
- float: left !important;
-}
- at mixin float-right {
- float: right !important;
-}
- at mixin float-none {
- float: none !important;
-}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_text-emphasis.scss b/devel/third-party/bootstrap-4.2.1/scss/mixins/_text-emphasis.scss
deleted file mode 100644
index 1819fb03df..0000000000
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_text-emphasis.scss
+++ /dev/null
@@ -1,14 +0,0 @@
-// stylelint-disable declaration-no-important
-
-// Typography
-
- at mixin text-emphasis-variant($parent, $color) {
- #{$parent} {
- color: $color !important;
- }
- a#{$parent} {
- @include hover-focus {
- color: darken($color, $emphasized-link-hover-darken-percentage) !important;
- }
- }
-}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_transition.scss b/devel/third-party/bootstrap-4.2.1/scss/mixins/_transition.scss
deleted file mode 100644
index 485f76c768..0000000000
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_transition.scss
+++ /dev/null
@@ -1,16 +0,0 @@
-// stylelint-disable property-blacklist
- at mixin transition($transition...) {
- @if $enable-transitions {
- @if length($transition) == 0 {
- transition: $transition-base;
- } @else {
- transition: $transition;
- }
- }
-
- @if $enable-prefers-reduced-motion-media-query {
- @media screen and (prefers-reduced-motion: reduce) {
- transition: none;
- }
- }
-}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/utilities/_display.scss b/devel/third-party/bootstrap-4.2.1/scss/utilities/_display.scss
deleted file mode 100644
index 20aeeb5f3e..0000000000
--- a/devel/third-party/bootstrap-4.2.1/scss/utilities/_display.scss
+++ /dev/null
@@ -1,38 +0,0 @@
-// stylelint-disable declaration-no-important
-
-//
-// Utilities for common `display` values
-//
-
- at each $breakpoint in map-keys($grid-breakpoints) {
- @include media-breakpoint-up($breakpoint) {
- $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
-
- .d#{$infix}-none { display: none !important; }
- .d#{$infix}-inline { display: inline !important; }
- .d#{$infix}-inline-block { display: inline-block !important; }
- .d#{$infix}-block { display: block !important; }
- .d#{$infix}-table { display: table !important; }
- .d#{$infix}-table-row { display: table-row !important; }
- .d#{$infix}-table-cell { display: table-cell !important; }
- .d#{$infix}-flex { display: flex !important; }
- .d#{$infix}-inline-flex { display: inline-flex !important; }
- }
-}
-
-
-//
-// Utilities for toggling `display` in print
-//
-
- at media print {
- .d-print-none { display: none !important; }
- .d-print-inline { display: inline !important; }
- .d-print-inline-block { display: inline-block !important; }
- .d-print-block { display: block !important; }
- .d-print-table { display: table !important; }
- .d-print-table-row { display: table-row !important; }
- .d-print-table-cell { display: table-cell !important; }
- .d-print-flex { display: flex !important; }
- .d-print-inline-flex { display: inline-flex !important; }
-}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/utilities/_float.scss b/devel/third-party/bootstrap-4.2.1/scss/utilities/_float.scss
deleted file mode 100644
index 01655e9a52..0000000000
--- a/devel/third-party/bootstrap-4.2.1/scss/utilities/_float.scss
+++ /dev/null
@@ -1,9 +0,0 @@
- at each $breakpoint in map-keys($grid-breakpoints) {
- @include media-breakpoint-up($breakpoint) {
- $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
-
- .float#{$infix}-left { @include float-left; }
- .float#{$infix}-right { @include float-right; }
- .float#{$infix}-none { @include float-none; }
- }
-}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/utilities/_visibility.scss b/devel/third-party/bootstrap-4.2.1/scss/utilities/_visibility.scss
deleted file mode 100644
index 823406dc3c..0000000000
--- a/devel/third-party/bootstrap-4.2.1/scss/utilities/_visibility.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// Visibility utilities
-//
-
-.visible {
- @include invisible(visible);
-}
-
-.invisible {
- @include invisible(hidden);
-}
diff --git a/devel/third-party/bootstrap-4.2.1/.browserslistrc b/devel/third-party/bootstrap-4.6.1/.browserslistrc
old mode 100755
new mode 100644
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/.browserslistrc
rename to devel/third-party/bootstrap-4.6.1/.browserslistrc
diff --git a/devel/third-party/bootstrap-4.2.1/bootstrap.scss b/devel/third-party/bootstrap-4.6.1/bootstrap.scss
similarity index 71%
rename from devel/third-party/bootstrap-4.2.1/bootstrap.scss
rename to devel/third-party/bootstrap-4.6.1/bootstrap.scss
index 0ea513ca24..df6f96ea7a 100644
--- a/devel/third-party/bootstrap-4.2.1/bootstrap.scss
+++ b/devel/third-party/bootstrap-4.6.1/bootstrap.scss
@@ -4,8 +4,11 @@ $font-family-monospace: 'Inter', monospace;
$input-border-color: #c0c7d1;
$input-border-width: 1px;
$input-border-radius: 3px;
-$input-padding-x: 6px;
-$input-padding-y: 6px;
+
+/* use rem to be more consistent with bootstrap core, also to get rid of scss compilation errors:
+ Incompatible units: 'px' and 'rem' */
+$input-padding-x: 0.4615rem; /* 6px */
+
$input-focus-border-color: #5c6273;
$input-focus-color: #5c6273;
diff --git a/devel/third-party/bootstrap-4.2.1/dist/bootstrap.css b/devel/third-party/bootstrap-4.6.1/dist/bootstrap.css
similarity index 86%
rename from devel/third-party/bootstrap-4.2.1/dist/bootstrap.css
rename to devel/third-party/bootstrap-4.6.1/dist/bootstrap.css
index f1980e869a..9a54320c7d 100644
--- a/devel/third-party/bootstrap-4.2.1/dist/bootstrap.css
+++ b/devel/third-party/bootstrap-4.6.1/dist/bootstrap.css
@@ -1,8 +1,8 @@
/*!
- * Bootstrap v4.2.1 (https://getbootstrap.com/)
- * Copyright 2011-2018 The Bootstrap Authors
- * Copyright 2011-2018 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * Bootstrap v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root {
--blue: #007bff;
@@ -31,7 +31,7 @@
--breakpoint-md: 768px;
--breakpoint-lg: 992px;
--breakpoint-xl: 1200px;
- --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
@@ -54,7 +54,7 @@ article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
body {
margin: 0;
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
@@ -63,7 +63,7 @@ body {
background-color: #fff;
}
-[tabindex="-1"]:focus {
+[tabindex="-1"]:focus:not(:focus-visible) {
outline: 0 !important;
}
@@ -90,6 +90,7 @@ abbr[data-original-title] {
text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
+ -webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
@@ -162,20 +163,16 @@ a:hover {
text-decoration: underline;
}
-a:not([href]):not([tabindex]) {
+a:not([href]):not([class]) {
color: inherit;
text-decoration: none;
}
-a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {
+a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
-a:not([href]):not([tabindex]):focus {
- outline: 0;
-}
-
pre,
code,
kbd,
@@ -188,6 +185,7 @@ pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
+ -ms-overflow-style: scrollbar;
}
figure {
@@ -218,6 +216,7 @@ caption {
th {
text-align: inherit;
+ text-align: -webkit-match-parent;
}
label {
@@ -229,9 +228,8 @@ button {
border-radius: 0;
}
-button:focus {
- outline: 1px dotted;
- outline: 5px auto -webkit-focus-ring-color;
+button:focus:not(:focus-visible) {
+ outline: 0;
}
input,
@@ -255,6 +253,14 @@ select {
text-transform: none;
}
+[role="button"] {
+ cursor: pointer;
+}
+
+select {
+ word-wrap: normal;
+}
+
button,
[type="button"],
[type="reset"],
@@ -262,6 +268,13 @@ button,
-webkit-appearance: button;
}
+button:not(:disabled),
+[type="button"]:not(:disabled),
+[type="reset"]:not(:disabled),
+[type="submit"]:not(:disabled) {
+ cursor: pointer;
+}
+
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
@@ -276,13 +289,6 @@ input[type="checkbox"] {
padding: 0;
}
-input[type="date"],
-input[type="time"],
-input[type="datetime-local"],
-input[type="month"] {
- -webkit-appearance: listbox;
-}
-
textarea {
overflow: auto;
resize: vertical;
@@ -350,10 +356,8 @@ template {
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
margin-bottom: 0.5rem;
- font-family: inherit;
font-weight: 500;
line-height: 1.2;
- color: inherit;
}
h1, .h1 {
@@ -497,7 +501,7 @@ mark,
code {
font-size: 87.5%;
color: #e83e8c;
- word-break: break-word;
+ word-wrap: break-word;
}
a > code {
@@ -535,7 +539,12 @@ pre code {
overflow-y: scroll;
}
-.container {
+.container,
+.container-fluid,
+.container-sm,
+.container-md,
+.container-lg,
+.container-xl {
width: 100%;
padding-right: 15px;
padding-left: 15px;
@@ -544,37 +553,29 @@ pre code {
}
@media (min-width: 576px) {
- .container {
+ .container, .container-sm {
max-width: 540px;
}
}
@media (min-width: 768px) {
- .container {
+ .container, .container-sm, .container-md {
max-width: 720px;
}
}
@media (min-width: 992px) {
- .container {
+ .container, .container-sm, .container-md, .container-lg {
max-width: 960px;
}
}
@media (min-width: 1200px) {
- .container {
+ .container, .container-sm, .container-md, .container-lg, .container-xl {
max-width: 1140px;
}
}
-.container-fluid {
- width: 100%;
- padding-right: 15px;
- padding-left: 15px;
- margin-right: auto;
- margin-left: auto;
-}
-
.row {
display: -ms-flexbox;
display: flex;
@@ -615,6 +616,42 @@ pre code {
max-width: 100%;
}
+.row-cols-1 > * {
+ -ms-flex: 0 0 100%;
+ flex: 0 0 100%;
+ max-width: 100%;
+}
+
+.row-cols-2 > * {
+ -ms-flex: 0 0 50%;
+ flex: 0 0 50%;
+ max-width: 50%;
+}
+
+.row-cols-3 > * {
+ -ms-flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
+ max-width: 33.333333%;
+}
+
+.row-cols-4 > * {
+ -ms-flex: 0 0 25%;
+ flex: 0 0 25%;
+ max-width: 25%;
+}
+
+.row-cols-5 > * {
+ -ms-flex: 0 0 20%;
+ flex: 0 0 20%;
+ max-width: 20%;
+}
+
+.row-cols-6 > * {
+ -ms-flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
+ max-width: 16.666667%;
+}
+
.col-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
@@ -821,6 +858,36 @@ pre code {
flex-grow: 1;
max-width: 100%;
}
+ .row-cols-sm-1 > * {
+ -ms-flex: 0 0 100%;
+ flex: 0 0 100%;
+ max-width: 100%;
+ }
+ .row-cols-sm-2 > * {
+ -ms-flex: 0 0 50%;
+ flex: 0 0 50%;
+ max-width: 50%;
+ }
+ .row-cols-sm-3 > * {
+ -ms-flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
+ max-width: 33.333333%;
+ }
+ .row-cols-sm-4 > * {
+ -ms-flex: 0 0 25%;
+ flex: 0 0 25%;
+ max-width: 25%;
+ }
+ .row-cols-sm-5 > * {
+ -ms-flex: 0 0 20%;
+ flex: 0 0 20%;
+ max-width: 20%;
+ }
+ .row-cols-sm-6 > * {
+ -ms-flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
+ max-width: 16.666667%;
+ }
.col-sm-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
@@ -993,6 +1060,36 @@ pre code {
flex-grow: 1;
max-width: 100%;
}
+ .row-cols-md-1 > * {
+ -ms-flex: 0 0 100%;
+ flex: 0 0 100%;
+ max-width: 100%;
+ }
+ .row-cols-md-2 > * {
+ -ms-flex: 0 0 50%;
+ flex: 0 0 50%;
+ max-width: 50%;
+ }
+ .row-cols-md-3 > * {
+ -ms-flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
+ max-width: 33.333333%;
+ }
+ .row-cols-md-4 > * {
+ -ms-flex: 0 0 25%;
+ flex: 0 0 25%;
+ max-width: 25%;
+ }
+ .row-cols-md-5 > * {
+ -ms-flex: 0 0 20%;
+ flex: 0 0 20%;
+ max-width: 20%;
+ }
+ .row-cols-md-6 > * {
+ -ms-flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
+ max-width: 16.666667%;
+ }
.col-md-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
@@ -1165,6 +1262,36 @@ pre code {
flex-grow: 1;
max-width: 100%;
}
+ .row-cols-lg-1 > * {
+ -ms-flex: 0 0 100%;
+ flex: 0 0 100%;
+ max-width: 100%;
+ }
+ .row-cols-lg-2 > * {
+ -ms-flex: 0 0 50%;
+ flex: 0 0 50%;
+ max-width: 50%;
+ }
+ .row-cols-lg-3 > * {
+ -ms-flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
+ max-width: 33.333333%;
+ }
+ .row-cols-lg-4 > * {
+ -ms-flex: 0 0 25%;
+ flex: 0 0 25%;
+ max-width: 25%;
+ }
+ .row-cols-lg-5 > * {
+ -ms-flex: 0 0 20%;
+ flex: 0 0 20%;
+ max-width: 20%;
+ }
+ .row-cols-lg-6 > * {
+ -ms-flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
+ max-width: 16.666667%;
+ }
.col-lg-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
@@ -1337,6 +1464,36 @@ pre code {
flex-grow: 1;
max-width: 100%;
}
+ .row-cols-xl-1 > * {
+ -ms-flex: 0 0 100%;
+ flex: 0 0 100%;
+ max-width: 100%;
+ }
+ .row-cols-xl-2 > * {
+ -ms-flex: 0 0 50%;
+ flex: 0 0 50%;
+ max-width: 50%;
+ }
+ .row-cols-xl-3 > * {
+ -ms-flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
+ max-width: 33.333333%;
+ }
+ .row-cols-xl-4 > * {
+ -ms-flex: 0 0 25%;
+ flex: 0 0 25%;
+ max-width: 25%;
+ }
+ .row-cols-xl-5 > * {
+ -ms-flex: 0 0 20%;
+ flex: 0 0 20%;
+ max-width: 20%;
+ }
+ .row-cols-xl-6 > * {
+ -ms-flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
+ max-width: 16.666667%;
+ }
.col-xl-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
@@ -1504,7 +1661,7 @@ pre code {
.table {
width: 100%;
margin-bottom: 1rem;
- background-color: transparent;
+ color: #212529;
}
.table th,
@@ -1523,10 +1680,6 @@ pre code {
border-top: 2px solid #dee2e6;
}
-.table .table {
- background-color: #fff;
-}
-
.table-sm th,
.table-sm td {
padding: 0.3rem;
@@ -1558,6 +1711,7 @@ pre code {
}
.table-hover tbody tr:hover {
+ color: #212529;
background-color: rgba(0, 0, 0, 0.075);
}
@@ -1754,8 +1908,8 @@ pre code {
.table .thead-dark th {
color: #fff;
- background-color: #212529;
- border-color: #32383e;
+ background-color: #343a40;
+ border-color: #454d55;
}
.table .thead-light th {
@@ -1766,13 +1920,13 @@ pre code {
.table-dark {
color: #fff;
- background-color: #212529;
+ background-color: #343a40;
}
.table-dark th,
.table-dark td,
.table-dark thead th {
- border-color: #32383e;
+ border-color: #454d55;
}
.table-dark.table-bordered {
@@ -1784,6 +1938,7 @@ pre code {
}
.table-dark.table-hover tbody tr:hover {
+ color: #fff;
background-color: rgba(255, 255, 255, 0.075);
}
@@ -1793,7 +1948,6 @@ pre code {
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
- -ms-overflow-style: -ms-autohiding-scrollbar;
}
.table-responsive-sm > .table-bordered {
border: 0;
@@ -1806,7 +1960,6 @@ pre code {
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
- -ms-overflow-style: -ms-autohiding-scrollbar;
}
.table-responsive-md > .table-bordered {
border: 0;
@@ -1819,7 +1972,6 @@ pre code {
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
- -ms-overflow-style: -ms-autohiding-scrollbar;
}
.table-responsive-lg > .table-bordered {
border: 0;
@@ -1832,7 +1984,6 @@ pre code {
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
- -ms-overflow-style: -ms-autohiding-scrollbar;
}
.table-responsive-xl > .table-bordered {
border: 0;
@@ -1844,7 +1995,6 @@ pre code {
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
- -ms-overflow-style: -ms-autohiding-scrollbar;
}
.table-responsive > .table-bordered {
@@ -1854,7 +2004,7 @@ pre code {
.form-control {
display: block;
width: 100%;
- height: calc(2.25rem + 2px);
+ height: calc(1.5em + 0.75rem + 2px);
padding: 0.375rem 0.75rem;
font-size: 1rem;
font-weight: 400;
@@ -1867,7 +2017,7 @@ pre code {
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.form-control {
transition: none;
}
@@ -1916,6 +2066,20 @@ pre code {
opacity: 1;
}
+input[type="date"].form-control,
+input[type="time"].form-control,
+input[type="datetime-local"].form-control,
+input[type="month"].form-control {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+}
+
+select.form-control:-moz-focusring {
+ color: transparent;
+ text-shadow: 0 0 0 #495057;
+}
+
select.form-control:focus::-ms-value {
color: #495057;
background-color: #fff;
@@ -1952,9 +2116,9 @@ select.form-control:focus::-ms-value {
.form-control-plaintext {
display: block;
width: 100%;
- padding-top: 0.375rem;
- padding-bottom: 0.375rem;
+ padding: 0.375rem 0;
margin-bottom: 0;
+ font-size: 1rem;
line-height: 1.5;
color: #212529;
background-color: transparent;
@@ -1968,7 +2132,7 @@ select.form-control:focus::-ms-value {
}
.form-control-sm {
- height: calc(1.8125rem + 2px);
+ height: calc(1.5em + 0.5rem + 2px);
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
line-height: 1.5;
@@ -1976,7 +2140,7 @@ select.form-control:focus::-ms-value {
}
.form-control-lg {
- height: calc(2.875rem + 2px);
+ height: calc(1.5em + 1rem + 2px);
padding: 0.5rem 1rem;
font-size: 1.25rem;
line-height: 1.5;
@@ -2027,6 +2191,7 @@ textarea.form-control {
margin-left: -1.25rem;
}
+.form-check-input[disabled] ~ .form-check-label,
.form-check-input:disabled ~ .form-check-label {
color: #6c757d;
}
@@ -2062,6 +2227,7 @@ textarea.form-control {
.valid-tooltip {
position: absolute;
top: 100%;
+ left: 0;
z-index: 5;
display: none;
max-width: 100%;
@@ -2074,13 +2240,25 @@ textarea.form-control {
border-radius: 0.25rem;
}
+.form-row > .col > .valid-tooltip,
+.form-row > [class*="col-"] > .valid-tooltip {
+ left: 5px;
+}
+
+.was-validated :valid ~ .valid-feedback,
+.was-validated :valid ~ .valid-tooltip,
+.is-valid ~ .valid-feedback,
+.is-valid ~ .valid-tooltip {
+ display: block;
+}
+
.was-validated .form-control:valid, .form-control.is-valid {
border-color: #28a745;
- padding-right: 2.25rem;
+ padding-right: calc(1.5em + 0.75rem) !important;
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
background-repeat: no-repeat;
- background-position: center right calc(2.25rem / 4);
- background-size: calc(2.25rem / 2) calc(2.25rem / 2);
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
+ background-position: right calc(0.375em + 0.1875rem) center;
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.was-validated .form-control:valid:focus, .form-control.is-valid:focus {
@@ -2088,21 +2266,20 @@ textarea.form-control {
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}
-.was-validated .form-control:valid ~ .valid-feedback,
-.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,
-.form-control.is-valid ~ .valid-tooltip {
- display: block;
+.was-validated select.form-control:valid, select.form-control.is-valid {
+ padding-right: 3rem !important;
+ background-position: right 1.5rem center;
}
.was-validated textarea.form-control:valid, textarea.form-control.is-valid {
- padding-right: 2.25rem;
- background-position: top calc(2.25rem / 4) right calc(2.25rem / 4);
+ padding-right: calc(1.5em + 0.75rem);
+ background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
}
.was-validated .custom-select:valid, .custom-select.is-valid {
border-color: #28a745;
- padding-right: 3.4375rem;
- background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") no-repeat center right 1.75rem/1.125rem 1.125rem;
+ padding-right: calc(0.75em + 2.3125rem) !important;
+ background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.75rem center/8px 10px no-repeat, #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) no-repeat;
}
.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {
@@ -2110,18 +2287,6 @@ textarea.form-control {
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}
-.was-validated .custom-select:valid ~ .valid-feedback,
-.was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback,
-.custom-select.is-valid ~ .valid-tooltip {
- display: block;
-}
-
-.was-validated .form-control-file:valid ~ .valid-feedback,
-.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback,
-.form-control-file.is-valid ~ .valid-tooltip {
- display: block;
-}
-
.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {
color: #28a745;
}
@@ -2140,12 +2305,6 @@ textarea.form-control {
border-color: #28a745;
}
-.was-validated .custom-control-input:valid ~ .valid-feedback,
-.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,
-.custom-control-input.is-valid ~ .valid-tooltip {
- display: block;
-}
-
.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {
border-color: #34ce57;
background-color: #34ce57;
@@ -2163,12 +2322,6 @@ textarea.form-control {
border-color: #28a745;
}
-.was-validated .custom-file-input:valid ~ .valid-feedback,
-.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,
-.custom-file-input.is-valid ~ .valid-tooltip {
- display: block;
-}
-
.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {
border-color: #28a745;
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
@@ -2185,6 +2338,7 @@ textarea.form-control {
.invalid-tooltip {
position: absolute;
top: 100%;
+ left: 0;
z-index: 5;
display: none;
max-width: 100%;
@@ -2197,13 +2351,25 @@ textarea.form-control {
border-radius: 0.25rem;
}
+.form-row > .col > .invalid-tooltip,
+.form-row > [class*="col-"] > .invalid-tooltip {
+ left: 5px;
+}
+
+.was-validated :invalid ~ .invalid-feedback,
+.was-validated :invalid ~ .invalid-tooltip,
+.is-invalid ~ .invalid-feedback,
+.is-invalid ~ .invalid-tooltip {
+ display: block;
+}
+
.was-validated .form-control:invalid, .form-control.is-invalid {
border-color: #dc3545;
- padding-right: 2.25rem;
+ padding-right: calc(1.5em + 0.75rem) !important;
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
background-repeat: no-repeat;
- background-position: center right calc(2.25rem / 4);
- background-size: calc(2.25rem / 2) calc(2.25rem / 2);
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");
+ background-position: right calc(0.375em + 0.1875rem) center;
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {
@@ -2211,21 +2377,20 @@ textarea.form-control {
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
-.was-validated .form-control:invalid ~ .invalid-feedback,
-.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,
-.form-control.is-invalid ~ .invalid-tooltip {
- display: block;
+.was-validated select.form-control:invalid, select.form-control.is-invalid {
+ padding-right: 3rem !important;
+ background-position: right 1.5rem center;
}
.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {
- padding-right: 2.25rem;
- background-position: top calc(2.25rem / 4) right calc(2.25rem / 4);
+ padding-right: calc(1.5em + 0.75rem);
+ background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
}
.was-validated .custom-select:invalid, .custom-select.is-invalid {
border-color: #dc3545;
- padding-right: 3.4375rem;
- background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") no-repeat center right 1.75rem/1.125rem 1.125rem;
+ padding-right: calc(0.75em + 2.3125rem) !important;
+ background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.75rem center/8px 10px no-repeat, #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) no-repeat;
}
.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {
@@ -2233,18 +2398,6 @@ textarea.form-control {
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
-.was-validated .custom-select:invalid ~ .invalid-feedback,
-.was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback,
-.custom-select.is-invalid ~ .invalid-tooltip {
- display: block;
-}
-
-.was-validated .form-control-file:invalid ~ .invalid-feedback,
-.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback,
-.form-control-file.is-invalid ~ .invalid-tooltip {
- display: block;
-}
-
.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {
color: #dc3545;
}
@@ -2263,12 +2416,6 @@ textarea.form-control {
border-color: #dc3545;
}
-.was-validated .custom-control-input:invalid ~ .invalid-feedback,
-.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,
-.custom-control-input.is-invalid ~ .invalid-tooltip {
- display: block;
-}
-
.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {
border-color: #e4606d;
background-color: #e4606d;
@@ -2286,12 +2433,6 @@ textarea.form-control {
border-color: #dc3545;
}
-.was-validated .custom-file-input:invalid ~ .invalid-feedback,
-.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,
-.custom-file-input.is-invalid ~ .invalid-tooltip {
- display: block;
-}
-
.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {
border-color: #dc3545;
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
@@ -2355,6 +2496,8 @@ textarea.form-control {
}
.form-inline .form-check-input {
position: relative;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
margin-top: 0;
margin-right: 0.25rem;
margin-left: 0;
@@ -2389,7 +2532,7 @@ textarea.form-control {
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.btn {
transition: none;
}
@@ -2431,6 +2574,9 @@ fieldset:disabled a.btn {
}
.btn-primary:focus, .btn-primary.focus {
+ color: #fff;
+ background-color: #0069d9;
+ border-color: #0062cc;
box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
}
@@ -2465,6 +2611,9 @@ fieldset:disabled a.btn {
}
.btn-secondary:focus, .btn-secondary.focus {
+ color: #fff;
+ background-color: #5a6268;
+ border-color: #545b62;
box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);
}
@@ -2499,6 +2648,9 @@ fieldset:disabled a.btn {
}
.btn-success:focus, .btn-success.focus {
+ color: #fff;
+ background-color: #218838;
+ border-color: #1e7e34;
box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);
}
@@ -2533,6 +2685,9 @@ fieldset:disabled a.btn {
}
.btn-info:focus, .btn-info.focus {
+ color: #fff;
+ background-color: #138496;
+ border-color: #117a8b;
box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);
}
@@ -2567,6 +2722,9 @@ fieldset:disabled a.btn {
}
.btn-warning:focus, .btn-warning.focus {
+ color: #212529;
+ background-color: #e0a800;
+ border-color: #d39e00;
box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);
}
@@ -2601,6 +2759,9 @@ fieldset:disabled a.btn {
}
.btn-danger:focus, .btn-danger.focus {
+ color: #fff;
+ background-color: #c82333;
+ border-color: #bd2130;
box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);
}
@@ -2635,6 +2796,9 @@ fieldset:disabled a.btn {
}
.btn-light:focus, .btn-light.focus {
+ color: #212529;
+ background-color: #e2e6ea;
+ border-color: #dae0e5;
box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);
}
@@ -2669,6 +2833,9 @@ fieldset:disabled a.btn {
}
.btn-dark:focus, .btn-dark.focus {
+ color: #fff;
+ background-color: #23272b;
+ border-color: #1d2124;
box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);
}
@@ -2949,6 +3116,7 @@ fieldset:disabled a.btn {
.btn-link {
font-weight: 400;
color: #007bff;
+ text-decoration: none;
}
.btn-link:hover {
@@ -2958,7 +3126,6 @@ fieldset:disabled a.btn {
.btn-link:focus, .btn-link.focus {
text-decoration: underline;
- box-shadow: none;
}
.btn-link:disabled, .btn-link.disabled {
@@ -2999,7 +3166,7 @@ input[type="button"].btn-block {
transition: opacity 0.15s linear;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.fade {
transition: none;
}
@@ -3020,7 +3187,7 @@ input[type="button"].btn-block {
transition: height 0.35s ease;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.collapsing {
transition: none;
}
@@ -3033,6 +3200,10 @@ input[type="button"].btn-block {
position: relative;
}
+.dropdown-toggle {
+ white-space: nowrap;
+}
+
.dropdown-toggle::after {
display: inline-block;
margin-left: 0.255em;
@@ -3068,49 +3239,25 @@ input[type="button"].btn-block {
border-radius: 0.25rem;
}
-.dropdown-menu-right {
- right: 0;
- left: auto;
-}
-
- at media (min-width: 576px) {
- .dropdown-menu-sm-right {
- right: 0;
- left: auto;
- }
-}
-
- at media (min-width: 768px) {
- .dropdown-menu-md-right {
- right: 0;
- left: auto;
- }
-}
-
- at media (min-width: 992px) {
- .dropdown-menu-lg-right {
- right: 0;
- left: auto;
- }
-}
-
- at media (min-width: 1200px) {
- .dropdown-menu-xl-right {
- right: 0;
- left: auto;
- }
-}
-
.dropdown-menu-left {
right: auto;
left: 0;
}
+.dropdown-menu-right {
+ right: 0;
+ left: auto;
+}
+
@media (min-width: 576px) {
.dropdown-menu-sm-left {
right: auto;
left: 0;
}
+ .dropdown-menu-sm-right {
+ right: 0;
+ left: auto;
+ }
}
@media (min-width: 768px) {
@@ -3118,6 +3265,10 @@ input[type="button"].btn-block {
right: auto;
left: 0;
}
+ .dropdown-menu-md-right {
+ right: 0;
+ left: auto;
+ }
}
@media (min-width: 992px) {
@@ -3125,6 +3276,10 @@ input[type="button"].btn-block {
right: auto;
left: 0;
}
+ .dropdown-menu-lg-right {
+ right: 0;
+ left: auto;
+ }
}
@media (min-width: 1200px) {
@@ -3132,6 +3287,10 @@ input[type="button"].btn-block {
right: auto;
left: 0;
}
+ .dropdown-menu-xl-right {
+ right: 0;
+ left: auto;
+ }
}
.dropup .dropdown-menu {
@@ -3245,20 +3404,10 @@ input[type="button"].btn-block {
border: 0;
}
-.dropdown-item:first-child {
- border-top-left-radius: calc(0.25rem - 1px);
- border-top-right-radius: calc(0.25rem - 1px);
-}
-
-.dropdown-item:last-child {
- border-bottom-right-radius: calc(0.25rem - 1px);
- border-bottom-left-radius: calc(0.25rem - 1px);
-}
-
.dropdown-item:hover, .dropdown-item:focus {
color: #16181b;
text-decoration: none;
- background-color: #f8f9fa;
+ background-color: #e9ecef;
}
.dropdown-item.active, .dropdown-item:active {
@@ -3268,7 +3417,7 @@ input[type="button"].btn-block {
}
.dropdown-item.disabled, .dropdown-item:disabled {
- color: #6c757d;
+ color: #adb5bd;
pointer-events: none;
background-color: transparent;
}
@@ -3438,6 +3587,7 @@ input[type="button"].btn-block {
-ms-flex: 1 1 auto;
flex: 1 1 auto;
width: 1%;
+ min-width: 0;
margin-bottom: 0;
}
@@ -3466,12 +3616,6 @@ input[type="button"].btn-block {
z-index: 4;
}
-.input-group > .form-control:not(:last-child),
-.input-group > .custom-select:not(:last-child) {
- border-top-right-radius: 0;
- border-bottom-right-radius: 0;
-}
-
.input-group > .form-control:not(:first-child),
.input-group > .custom-select:not(:first-child) {
border-top-left-radius: 0;
@@ -3496,6 +3640,22 @@ input[type="button"].btn-block {
border-bottom-left-radius: 0;
}
+.input-group:not(.has-validation) > .form-control:not(:last-child),
+.input-group:not(.has-validation) > .custom-select:not(:last-child),
+.input-group:not(.has-validation) > .custom-file:not(:last-child) .custom-file-label,
+.input-group:not(.has-validation) > .custom-file:not(:last-child) .custom-file-label::after {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.input-group.has-validation > .form-control:nth-last-child(n + 3),
+.input-group.has-validation > .custom-select:nth-last-child(n + 3),
+.input-group.has-validation > .custom-file:nth-last-child(n + 3) .custom-file-label,
+.input-group.has-validation > .custom-file:nth-last-child(n + 3) .custom-file-label::after {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
.input-group-prepend,
.input-group-append {
display: -ms-flexbox;
@@ -3557,7 +3717,7 @@ input[type="button"].btn-block {
.input-group-lg > .form-control:not(textarea),
.input-group-lg > .custom-select {
- height: calc(2.875rem + 2px);
+ height: calc(1.5em + 1rem + 2px);
}
.input-group-lg > .form-control,
@@ -3574,7 +3734,7 @@ input[type="button"].btn-block {
.input-group-sm > .form-control:not(textarea),
.input-group-sm > .custom-select {
- height: calc(1.8125rem + 2px);
+ height: calc(1.5em + 0.5rem + 2px);
}
.input-group-sm > .form-control,
@@ -3596,8 +3756,10 @@ input[type="button"].btn-block {
.input-group > .input-group-prepend > .btn,
.input-group > .input-group-prepend > .input-group-text,
-.input-group > .input-group-append:not(:last-child) > .btn,
-.input-group > .input-group-append:not(:last-child) > .input-group-text,
+.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .btn,
+.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .input-group-text,
+.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .btn,
+.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .input-group-text,
.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
border-top-right-radius: 0;
@@ -3616,9 +3778,12 @@ input[type="button"].btn-block {
.custom-control {
position: relative;
+ z-index: 1;
display: block;
min-height: 1.5rem;
padding-left: 1.5rem;
+ -webkit-print-color-adjust: exact;
+ color-adjust: exact;
}
.custom-control-inline {
@@ -3629,7 +3794,10 @@ input[type="button"].btn-block {
.custom-control-input {
position: absolute;
+ left: 0;
z-index: -1;
+ width: 1rem;
+ height: 1.25rem;
opacity: 0;
}
@@ -3653,11 +3821,11 @@ input[type="button"].btn-block {
border-color: #b3d7ff;
}
-.custom-control-input:disabled ~ .custom-control-label {
+.custom-control-input[disabled] ~ .custom-control-label, .custom-control-input:disabled ~ .custom-control-label {
color: #6c757d;
}
-.custom-control-input:disabled ~ .custom-control-label::before {
+.custom-control-input[disabled] ~ .custom-control-label::before, .custom-control-input:disabled ~ .custom-control-label::before {
background-color: #e9ecef;
}
@@ -3688,9 +3856,7 @@ input[type="button"].btn-block {
width: 1rem;
height: 1rem;
content: "";
- background-repeat: no-repeat;
- background-position: center center;
- background-size: 50% 50%;
+ background: 50% / 50% 50% no-repeat;
}
.custom-checkbox .custom-control-label::before {
@@ -3698,7 +3864,7 @@ input[type="button"].btn-block {
}
.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e");
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e");
}
.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {
@@ -3707,7 +3873,7 @@ input[type="button"].btn-block {
}
.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e");
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e");
}
.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {
@@ -3723,7 +3889,7 @@ input[type="button"].btn-block {
}
.custom-radio .custom-control-input:checked ~ .custom-control-label::after {
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
}
.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {
@@ -3753,7 +3919,7 @@ input[type="button"].btn-block {
transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.custom-switch .custom-control-label::after {
transition: none;
}
@@ -3772,14 +3938,14 @@ input[type="button"].btn-block {
.custom-select {
display: inline-block;
width: 100%;
- height: calc(2.25rem + 2px);
+ height: calc(1.5em + 0.75rem + 2px);
padding: 0.375rem 1.75rem 0.375rem 0.75rem;
+ font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #495057;
vertical-align: middle;
- background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px;
- background-color: #fff;
+ background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.75rem center/8px 10px no-repeat;
border: 1px solid #ced4da;
border-radius: 0.25rem;
-webkit-appearance: none;
@@ -3790,7 +3956,7 @@ input[type="button"].btn-block {
.custom-select:focus {
border-color: #80bdff;
outline: 0;
- box-shadow: 0 0 0 0.2rem rgba(128, 189, 255, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.custom-select:focus::-ms-value {
@@ -3810,11 +3976,16 @@ input[type="button"].btn-block {
}
.custom-select::-ms-expand {
- opacity: 0;
+ display: none;
+}
+
+.custom-select:-moz-focusring {
+ color: transparent;
+ text-shadow: 0 0 0 #495057;
}
.custom-select-sm {
- height: calc(1.8125rem + 2px);
+ height: calc(1.5em + 0.5rem + 2px);
padding-top: 0.25rem;
padding-bottom: 0.25rem;
padding-left: 0.5rem;
@@ -3822,7 +3993,7 @@ input[type="button"].btn-block {
}
.custom-select-lg {
- height: calc(2.875rem + 2px);
+ height: calc(1.5em + 1rem + 2px);
padding-top: 0.5rem;
padding-bottom: 0.5rem;
padding-left: 1rem;
@@ -3833,7 +4004,7 @@ input[type="button"].btn-block {
position: relative;
display: inline-block;
width: 100%;
- height: calc(2.25rem + 2px);
+ height: calc(1.5em + 0.75rem + 2px);
margin-bottom: 0;
}
@@ -3841,8 +4012,9 @@ input[type="button"].btn-block {
position: relative;
z-index: 2;
width: 100%;
- height: calc(2.25rem + 2px);
+ height: calc(1.5em + 0.75rem + 2px);
margin: 0;
+ overflow: hidden;
opacity: 0;
}
@@ -3851,6 +4023,7 @@ input[type="button"].btn-block {
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
+.custom-file-input[disabled] ~ .custom-file-label,
.custom-file-input:disabled ~ .custom-file-label {
background-color: #e9ecef;
}
@@ -3869,8 +4042,9 @@ input[type="button"].btn-block {
right: 0;
left: 0;
z-index: 1;
- height: calc(2.25rem + 2px);
+ height: calc(1.5em + 0.75rem + 2px);
padding: 0.375rem 0.75rem;
+ overflow: hidden;
font-weight: 400;
line-height: 1.5;
color: #495057;
@@ -3886,7 +4060,7 @@ input[type="button"].btn-block {
bottom: 0;
z-index: 3;
display: block;
- height: 2.25rem;
+ height: calc(1.5em + 0.75rem);
padding: 0.375rem 0.75rem;
line-height: 1.5;
color: #495057;
@@ -3898,7 +4072,7 @@ input[type="button"].btn-block {
.custom-range {
width: 100%;
- height: calc(1rem + 0.4rem);
+ height: 1.4rem;
padding: 0;
background-color: transparent;
-webkit-appearance: none;
@@ -3907,7 +4081,7 @@ input[type="button"].btn-block {
}
.custom-range:focus {
- outline: none;
+ outline: 0;
}
.custom-range:focus::-webkit-slider-thumb {
@@ -3933,13 +4107,15 @@ input[type="button"].btn-block {
background-color: #007bff;
border: 0;
border-radius: 1rem;
+ -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
-webkit-appearance: none;
appearance: none;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.custom-range::-webkit-slider-thumb {
+ -webkit-transition: none;
transition: none;
}
}
@@ -3964,13 +4140,15 @@ input[type="button"].btn-block {
background-color: #007bff;
border: 0;
border-radius: 1rem;
+ -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
-moz-appearance: none;
appearance: none;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.custom-range::-moz-range-thumb {
+ -moz-transition: none;
transition: none;
}
}
@@ -3998,12 +4176,14 @@ input[type="button"].btn-block {
background-color: #007bff;
border: 0;
border-radius: 1rem;
+ -ms-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
appearance: none;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.custom-range::-ms-thumb {
+ -ms-transition: none;
transition: none;
}
}
@@ -4059,7 +4239,7 @@ input[type="button"].btn-block {
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.custom-control-label::before,
.custom-file-label,
.custom-select {
@@ -4096,11 +4276,8 @@ input[type="button"].btn-block {
border-bottom: 1px solid #dee2e6;
}
-.nav-tabs .nav-item {
- margin-bottom: -1px;
-}
-
.nav-tabs .nav-link {
+ margin-bottom: -1px;
border: 1px solid transparent;
border-top-left-radius: 0.25rem;
border-top-right-radius: 0.25rem;
@@ -4139,12 +4316,14 @@ input[type="button"].btn-block {
background-color: #007bff;
}
+.nav-fill > .nav-link,
.nav-fill .nav-item {
-ms-flex: 1 1 auto;
flex: 1 1 auto;
text-align: center;
}
+.nav-justified > .nav-link,
.nav-justified .nav-item {
-ms-flex-preferred-size: 0;
flex-basis: 0;
@@ -4174,8 +4353,8 @@ input[type="button"].btn-block {
padding: 0.5rem 1rem;
}
-.navbar > .container,
-.navbar > .container-fluid {
+.navbar .container,
+.navbar .container-fluid, .navbar .container-sm, .navbar .container-md, .navbar .container-lg, .navbar .container-xl {
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
@@ -4248,23 +4427,23 @@ input[type="button"].btn-block {
text-decoration: none;
}
-.navbar-toggler:not(:disabled):not(.disabled) {
- cursor: pointer;
-}
-
.navbar-toggler-icon {
display: inline-block;
width: 1.5em;
height: 1.5em;
vertical-align: middle;
content: "";
- background: no-repeat center center;
- background-size: 100% 100%;
+ background: 50% / 100% 100% no-repeat;
+}
+
+.navbar-nav-scroll {
+ max-height: 75vh;
+ overflow-y: auto;
}
@media (max-width: 575.98px) {
.navbar-expand-sm > .container,
- .navbar-expand-sm > .container-fluid {
+ .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {
padding-right: 0;
padding-left: 0;
}
@@ -4289,10 +4468,13 @@ input[type="button"].btn-block {
padding-left: 0.5rem;
}
.navbar-expand-sm > .container,
- .navbar-expand-sm > .container-fluid {
+ .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
+ .navbar-expand-sm .navbar-nav-scroll {
+ overflow: visible;
+ }
.navbar-expand-sm .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
@@ -4306,7 +4488,7 @@ input[type="button"].btn-block {
@media (max-width: 767.98px) {
.navbar-expand-md > .container,
- .navbar-expand-md > .container-fluid {
+ .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {
padding-right: 0;
padding-left: 0;
}
@@ -4331,10 +4513,13 @@ input[type="button"].btn-block {
padding-left: 0.5rem;
}
.navbar-expand-md > .container,
- .navbar-expand-md > .container-fluid {
+ .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
+ .navbar-expand-md .navbar-nav-scroll {
+ overflow: visible;
+ }
.navbar-expand-md .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
@@ -4348,7 +4533,7 @@ input[type="button"].btn-block {
@media (max-width: 991.98px) {
.navbar-expand-lg > .container,
- .navbar-expand-lg > .container-fluid {
+ .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {
padding-right: 0;
padding-left: 0;
}
@@ -4373,10 +4558,13 @@ input[type="button"].btn-block {
padding-left: 0.5rem;
}
.navbar-expand-lg > .container,
- .navbar-expand-lg > .container-fluid {
+ .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
+ .navbar-expand-lg .navbar-nav-scroll {
+ overflow: visible;
+ }
.navbar-expand-lg .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
@@ -4390,7 +4578,7 @@ input[type="button"].btn-block {
@media (max-width: 1199.98px) {
.navbar-expand-xl > .container,
- .navbar-expand-xl > .container-fluid {
+ .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {
padding-right: 0;
padding-left: 0;
}
@@ -4415,10 +4603,13 @@ input[type="button"].btn-block {
padding-left: 0.5rem;
}
.navbar-expand-xl > .container,
- .navbar-expand-xl > .container-fluid {
+ .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
+ .navbar-expand-xl .navbar-nav-scroll {
+ overflow: visible;
+ }
.navbar-expand-xl .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
@@ -4438,7 +4629,7 @@ input[type="button"].btn-block {
}
.navbar-expand > .container,
-.navbar-expand > .container-fluid {
+.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {
padding-right: 0;
padding-left: 0;
}
@@ -4458,11 +4649,15 @@ input[type="button"].btn-block {
}
.navbar-expand > .container,
-.navbar-expand > .container-fluid {
+.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
+.navbar-expand .navbar-nav-scroll {
+ overflow: visible;
+}
+
.navbar-expand .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
@@ -4507,7 +4702,7 @@ input[type="button"].btn-block {
}
.navbar-light .navbar-toggler-icon {
- background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.navbar-light .navbar-text {
@@ -4555,7 +4750,7 @@ input[type="button"].btn-block {
}
.navbar-dark .navbar-toggler-icon {
- background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.navbar-dark .navbar-text {
@@ -4589,19 +4784,32 @@ input[type="button"].btn-block {
margin-left: 0;
}
-.card > .list-group:first-child .list-group-item:first-child {
- border-top-left-radius: 0.25rem;
- border-top-right-radius: 0.25rem;
+.card > .list-group {
+ border-top: inherit;
+ border-bottom: inherit;
}
-.card > .list-group:last-child .list-group-item:last-child {
- border-bottom-right-radius: 0.25rem;
- border-bottom-left-radius: 0.25rem;
+.card > .list-group:first-child {
+ border-top-width: 0;
+ border-top-left-radius: calc(0.25rem - 1px);
+ border-top-right-radius: calc(0.25rem - 1px);
+}
+
+.card > .list-group:last-child {
+ border-bottom-width: 0;
+ border-bottom-right-radius: calc(0.25rem - 1px);
+ border-bottom-left-radius: calc(0.25rem - 1px);
+}
+
+.card > .card-header + .list-group,
+.card > .list-group + .card-footer {
+ border-top: 0;
}
.card-body {
-ms-flex: 1 1 auto;
flex: 1 1 auto;
+ min-height: 1px;
padding: 1.25rem;
}
@@ -4629,7 +4837,6 @@ input[type="button"].btn-block {
.card-header {
padding: 0.75rem 1.25rem;
margin-bottom: 0;
- color: inherit;
background-color: rgba(0, 0, 0, 0.03);
border-bottom: 1px solid rgba(0, 0, 0, 0.125);
}
@@ -4638,10 +4845,6 @@ input[type="button"].btn-block {
border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;
}
-.card-header + .list-group .list-group-item:first-child {
- border-top: 0;
-}
-
.card-footer {
padding: 0.75rem 1.25rem;
background-color: rgba(0, 0, 0, 0.03);
@@ -4671,69 +4874,59 @@ input[type="button"].btn-block {
bottom: 0;
left: 0;
padding: 1.25rem;
+ border-radius: calc(0.25rem - 1px);
}
-.card-img {
+.card-img,
+.card-img-top,
+.card-img-bottom {
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
width: 100%;
- border-radius: calc(0.25rem - 1px);
}
+.card-img,
.card-img-top {
- width: 100%;
border-top-left-radius: calc(0.25rem - 1px);
border-top-right-radius: calc(0.25rem - 1px);
}
+.card-img,
.card-img-bottom {
- width: 100%;
border-bottom-right-radius: calc(0.25rem - 1px);
border-bottom-left-radius: calc(0.25rem - 1px);
}
-.card-deck {
- display: -ms-flexbox;
- display: flex;
- -ms-flex-direction: column;
- flex-direction: column;
-}
-
.card-deck .card {
margin-bottom: 15px;
}
@media (min-width: 576px) {
.card-deck {
+ display: -ms-flexbox;
+ display: flex;
-ms-flex-flow: row wrap;
flex-flow: row wrap;
margin-right: -15px;
margin-left: -15px;
}
.card-deck .card {
- display: -ms-flexbox;
- display: flex;
-ms-flex: 1 0 0%;
flex: 1 0 0%;
- -ms-flex-direction: column;
- flex-direction: column;
margin-right: 15px;
margin-bottom: 0;
margin-left: 15px;
}
}
-.card-group {
- display: -ms-flexbox;
- display: flex;
- -ms-flex-direction: column;
- flex-direction: column;
-}
-
.card-group > .card {
margin-bottom: 15px;
}
@media (min-width: 576px) {
.card-group {
+ display: -ms-flexbox;
+ display: flex;
-ms-flex-flow: row wrap;
flex-flow: row wrap;
}
@@ -4746,52 +4939,30 @@ input[type="button"].btn-block {
margin-left: 0;
border-left: 0;
}
- .card-group > .card:first-child {
+ .card-group > .card:not(:last-child) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
- .card-group > .card:first-child .card-img-top,
- .card-group > .card:first-child .card-header {
+ .card-group > .card:not(:last-child) .card-img-top,
+ .card-group > .card:not(:last-child) .card-header {
border-top-right-radius: 0;
}
- .card-group > .card:first-child .card-img-bottom,
- .card-group > .card:first-child .card-footer {
+ .card-group > .card:not(:last-child) .card-img-bottom,
+ .card-group > .card:not(:last-child) .card-footer {
border-bottom-right-radius: 0;
}
- .card-group > .card:last-child {
+ .card-group > .card:not(:first-child) {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
- .card-group > .card:last-child .card-img-top,
- .card-group > .card:last-child .card-header {
+ .card-group > .card:not(:first-child) .card-img-top,
+ .card-group > .card:not(:first-child) .card-header {
border-top-left-radius: 0;
}
- .card-group > .card:last-child .card-img-bottom,
- .card-group > .card:last-child .card-footer {
+ .card-group > .card:not(:first-child) .card-img-bottom,
+ .card-group > .card:not(:first-child) .card-footer {
border-bottom-left-radius: 0;
}
- .card-group > .card:only-child {
- border-radius: 0.25rem;
- }
- .card-group > .card:only-child .card-img-top,
- .card-group > .card:only-child .card-header {
- border-top-left-radius: 0.25rem;
- border-top-right-radius: 0.25rem;
- }
- .card-group > .card:only-child .card-img-bottom,
- .card-group > .card:only-child .card-footer {
- border-bottom-right-radius: 0.25rem;
- border-bottom-left-radius: 0.25rem;
- }
- .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {
- border-radius: 0;
- }
- .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,
- .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,
- .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,
- .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {
- border-radius: 0;
- }
}
.card-columns .card {
@@ -4815,31 +4986,27 @@ input[type="button"].btn-block {
}
}
-.accordion .card {
- overflow: hidden;
-}
-
-.accordion .card:not(:first-of-type) .card-header:first-child {
- border-radius: 0;
+.accordion {
+ overflow-anchor: none;
}
-.accordion .card:not(:first-of-type):not(:last-of-type) {
- border-bottom: 0;
- border-radius: 0;
+.accordion > .card {
+ overflow: hidden;
}
-.accordion .card:first-of-type {
+.accordion > .card:not(:last-of-type) {
border-bottom: 0;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
-.accordion .card:last-of-type {
+.accordion > .card:not(:first-of-type) {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
-.accordion .card .card-header {
+.accordion > .card > .card-header {
+ border-radius: 0;
margin-bottom: -1px;
}
@@ -4860,7 +5027,7 @@ input[type="button"].btn-block {
}
.breadcrumb-item + .breadcrumb-item::before {
- display: inline-block;
+ float: left;
padding-right: 0.5rem;
color: #6c757d;
content: "/";
@@ -4906,15 +5073,11 @@ input[type="button"].btn-block {
}
.page-link:focus {
- z-index: 2;
+ z-index: 3;
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
-.page-link:not(:disabled):not(.disabled) {
- cursor: pointer;
-}
-
.page-item:first-child .page-link {
margin-left: 0;
border-top-left-radius: 0.25rem;
@@ -4927,7 +5090,7 @@ input[type="button"].btn-block {
}
.page-item.active .page-link {
- z-index: 1;
+ z-index: 3;
color: #fff;
background-color: #007bff;
border-color: #007bff;
@@ -4983,6 +5146,13 @@ input[type="button"].btn-block {
white-space: nowrap;
vertical-align: baseline;
border-radius: 0.25rem;
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+
+ at media (prefers-reduced-motion: reduce) {
+ .badge {
+ transition: none;
+ }
}
a.badge:hover, a.badge:focus {
@@ -5014,6 +5184,11 @@ a.badge-primary:hover, a.badge-primary:focus {
background-color: #0062cc;
}
+a.badge-primary:focus, a.badge-primary.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
+}
+
.badge-secondary {
color: #fff;
background-color: #6c757d;
@@ -5024,6 +5199,11 @@ a.badge-secondary:hover, a.badge-secondary:focus {
background-color: #545b62;
}
+a.badge-secondary:focus, a.badge-secondary.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
+}
+
.badge-success {
color: #fff;
background-color: #28a745;
@@ -5034,6 +5214,11 @@ a.badge-success:hover, a.badge-success:focus {
background-color: #1e7e34;
}
+a.badge-success:focus, a.badge-success.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
+}
+
.badge-info {
color: #fff;
background-color: #17a2b8;
@@ -5044,6 +5229,11 @@ a.badge-info:hover, a.badge-info:focus {
background-color: #117a8b;
}
+a.badge-info:focus, a.badge-info.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
+}
+
.badge-warning {
color: #212529;
background-color: #ffc107;
@@ -5054,6 +5244,11 @@ a.badge-warning:hover, a.badge-warning:focus {
background-color: #d39e00;
}
+a.badge-warning:focus, a.badge-warning.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
+}
+
.badge-danger {
color: #fff;
background-color: #dc3545;
@@ -5064,6 +5259,11 @@ a.badge-danger:hover, a.badge-danger:focus {
background-color: #bd2130;
}
+a.badge-danger:focus, a.badge-danger.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
+}
+
.badge-light {
color: #212529;
background-color: #f8f9fa;
@@ -5074,6 +5274,11 @@ a.badge-light:hover, a.badge-light:focus {
background-color: #dae0e5;
}
+a.badge-light:focus, a.badge-light.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
+}
+
.badge-dark {
color: #fff;
background-color: #343a40;
@@ -5084,6 +5289,11 @@ a.badge-dark:hover, a.badge-dark:focus {
background-color: #1d2124;
}
+a.badge-dark:focus, a.badge-dark.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
+}
+
.jumbotron {
padding: 2rem 1rem;
margin-bottom: 2rem;
@@ -5127,6 +5337,7 @@ a.badge-dark:hover, a.badge-dark:focus {
position: absolute;
top: 0;
right: 0;
+ z-index: 2;
padding: 0.75rem 1.25rem;
color: inherit;
}
@@ -5266,6 +5477,7 @@ a.badge-dark:hover, a.badge-dark:focus {
display: flex;
height: 1rem;
overflow: hidden;
+ line-height: 0;
font-size: 0.75rem;
background-color: #e9ecef;
border-radius: 0.25rem;
@@ -5278,6 +5490,7 @@ a.badge-dark:hover, a.badge-dark:focus {
flex-direction: column;
-ms-flex-pack: center;
justify-content: center;
+ overflow: hidden;
color: #fff;
text-align: center;
white-space: nowrap;
@@ -5285,7 +5498,7 @@ a.badge-dark:hover, a.badge-dark:focus {
transition: width 0.6s ease;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.progress-bar {
transition: none;
}
@@ -5297,8 +5510,15 @@ a.badge-dark:hover, a.badge-dark:focus {
}
.progress-bar-animated {
- -webkit-animation: progress-bar-stripes 1s linear infinite;
- animation: progress-bar-stripes 1s linear infinite;
+ -webkit-animation: 1s linear infinite progress-bar-stripes;
+ animation: 1s linear infinite progress-bar-stripes;
+}
+
+ at media (prefers-reduced-motion: reduce) {
+ .progress-bar-animated {
+ -webkit-animation: none;
+ animation: none;
+ }
}
.media {
@@ -5320,6 +5540,7 @@ a.badge-dark:hover, a.badge-dark:focus {
flex-direction: column;
padding-left: 0;
margin-bottom: 0;
+ border-radius: 0.25rem;
}
.list-group-item-action {
@@ -5329,6 +5550,7 @@ a.badge-dark:hover, a.badge-dark:focus {
}
.list-group-item-action:hover, .list-group-item-action:focus {
+ z-index: 1;
color: #495057;
text-decoration: none;
background-color: #f8f9fa;
@@ -5343,25 +5565,18 @@ a.badge-dark:hover, a.badge-dark:focus {
position: relative;
display: block;
padding: 0.75rem 1.25rem;
- margin-bottom: -1px;
background-color: #fff;
border: 1px solid rgba(0, 0, 0, 0.125);
}
.list-group-item:first-child {
- border-top-left-radius: 0.25rem;
- border-top-right-radius: 0.25rem;
+ border-top-left-radius: inherit;
+ border-top-right-radius: inherit;
}
.list-group-item:last-child {
- margin-bottom: 0;
- border-bottom-right-radius: 0.25rem;
- border-bottom-left-radius: 0.25rem;
-}
-
-.list-group-item:hover, .list-group-item:focus {
- z-index: 1;
- text-decoration: none;
+ border-bottom-right-radius: inherit;
+ border-bottom-left-radius: inherit;
}
.list-group-item.disabled, .list-group-item:disabled {
@@ -5377,23 +5592,158 @@ a.badge-dark:hover, a.badge-dark:focus {
border-color: #007bff;
}
-.list-group-flush .list-group-item {
- border-right: 0;
- border-left: 0;
- border-radius: 0;
+.list-group-item + .list-group-item {
+ border-top-width: 0;
}
-.list-group-flush .list-group-item:last-child {
- margin-bottom: -1px;
+.list-group-item + .list-group-item.active {
+ margin-top: -1px;
+ border-top-width: 1px;
}
-.list-group-flush:first-child .list-group-item:first-child {
- border-top: 0;
+.list-group-horizontal {
+ -ms-flex-direction: row;
+ flex-direction: row;
}
-.list-group-flush:last-child .list-group-item:last-child {
- margin-bottom: 0;
- border-bottom: 0;
+.list-group-horizontal > .list-group-item:first-child {
+ border-bottom-left-radius: 0.25rem;
+ border-top-right-radius: 0;
+}
+
+.list-group-horizontal > .list-group-item:last-child {
+ border-top-right-radius: 0.25rem;
+ border-bottom-left-radius: 0;
+}
+
+.list-group-horizontal > .list-group-item.active {
+ margin-top: 0;
+}
+
+.list-group-horizontal > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0;
+}
+
+.list-group-horizontal > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px;
+}
+
+ at media (min-width: 576px) {
+ .list-group-horizontal-sm {
+ -ms-flex-direction: row;
+ flex-direction: row;
+ }
+ .list-group-horizontal-sm > .list-group-item:first-child {
+ border-bottom-left-radius: 0.25rem;
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item:last-child {
+ border-top-right-radius: 0.25rem;
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px;
+ }
+}
+
+ at media (min-width: 768px) {
+ .list-group-horizontal-md {
+ -ms-flex-direction: row;
+ flex-direction: row;
+ }
+ .list-group-horizontal-md > .list-group-item:first-child {
+ border-bottom-left-radius: 0.25rem;
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-md > .list-group-item:last-child {
+ border-top-right-radius: 0.25rem;
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-md > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-md > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0;
+ }
+ .list-group-horizontal-md > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px;
+ }
+}
+
+ at media (min-width: 992px) {
+ .list-group-horizontal-lg {
+ -ms-flex-direction: row;
+ flex-direction: row;
+ }
+ .list-group-horizontal-lg > .list-group-item:first-child {
+ border-bottom-left-radius: 0.25rem;
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item:last-child {
+ border-top-right-radius: 0.25rem;
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px;
+ }
+}
+
+ at media (min-width: 1200px) {
+ .list-group-horizontal-xl {
+ -ms-flex-direction: row;
+ flex-direction: row;
+ }
+ .list-group-horizontal-xl > .list-group-item:first-child {
+ border-bottom-left-radius: 0.25rem;
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item:last-child {
+ border-top-right-radius: 0.25rem;
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px;
+ }
+}
+
+.list-group-flush {
+ border-radius: 0;
+}
+
+.list-group-flush > .list-group-item {
+ border-width: 0 0 1px;
+}
+
+.list-group-flush > .list-group-item:last-child {
+ border-bottom-width: 0;
}
.list-group-item-primary {
@@ -5539,10 +5889,6 @@ a.badge-dark:hover, a.badge-dark:focus {
text-decoration: none;
}
-.close:not(:disabled):not(.disabled) {
- cursor: pointer;
-}
-
.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {
opacity: .75;
}
@@ -5551,9 +5897,6 @@ button.close {
padding: 0;
background-color: transparent;
border: 0;
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
}
a.close.disabled {
@@ -5561,17 +5904,16 @@ a.close.disabled {
}
.toast {
+ -ms-flex-preferred-size: 350px;
+ flex-basis: 350px;
max-width: 350px;
- overflow: hidden;
font-size: 0.875rem;
background-color: rgba(255, 255, 255, 0.85);
background-clip: padding-box;
border: 1px solid rgba(0, 0, 0, 0.1);
- border-radius: 0.25rem;
box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);
- -webkit-backdrop-filter: blur(10px);
- backdrop-filter: blur(10px);
opacity: 0;
+ border-radius: 0.25rem;
}
.toast:not(:last-child) {
@@ -5601,6 +5943,8 @@ a.close.disabled {
background-color: rgba(255, 255, 255, 0.85);
background-clip: padding-box;
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
+ border-top-left-radius: calc(0.25rem - 1px);
+ border-top-right-radius: calc(0.25rem - 1px);
}
.toast-body {
@@ -5643,7 +5987,7 @@ a.close.disabled {
transform: translate(0, -50px);
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.modal.fade .modal-dialog {
transition: none;
}
@@ -5654,20 +5998,65 @@ a.close.disabled {
transform: none;
}
+.modal.modal-static .modal-dialog {
+ -webkit-transform: scale(1.02);
+ transform: scale(1.02);
+}
+
+.modal-dialog-scrollable {
+ display: -ms-flexbox;
+ display: flex;
+ max-height: calc(100% - 1rem);
+}
+
+.modal-dialog-scrollable .modal-content {
+ max-height: calc(100vh - 1rem);
+ overflow: hidden;
+}
+
+.modal-dialog-scrollable .modal-header,
+.modal-dialog-scrollable .modal-footer {
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.modal-dialog-scrollable .modal-body {
+ overflow-y: auto;
+}
+
.modal-dialog-centered {
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
- min-height: calc(100% - (0.5rem * 2));
+ min-height: calc(100% - 1rem);
}
.modal-dialog-centered::before {
display: block;
- height: calc(100vh - (0.5rem * 2));
+ height: calc(100vh - 1rem);
+ height: -webkit-min-content;
+ height: -moz-min-content;
+ height: min-content;
content: "";
}
+.modal-dialog-centered.modal-dialog-scrollable {
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -ms-flex-pack: center;
+ justify-content: center;
+ height: 100%;
+}
+
+.modal-dialog-centered.modal-dialog-scrollable .modal-content {
+ max-height: none;
+}
+
+.modal-dialog-centered.modal-dialog-scrollable::before {
+ content: none;
+}
+
.modal-content {
position: relative;
display: -ms-flexbox;
@@ -5709,9 +6098,9 @@ a.close.disabled {
-ms-flex-pack: justify;
justify-content: space-between;
padding: 1rem 1rem;
- border-bottom: 1px solid #e9ecef;
- border-top-left-radius: 0.3rem;
- border-top-right-radius: 0.3rem;
+ border-bottom: 1px solid #dee2e6;
+ border-top-left-radius: calc(0.3rem - 1px);
+ border-top-right-radius: calc(0.3rem - 1px);
}
.modal-header .close {
@@ -5734,22 +6123,20 @@ a.close.disabled {
.modal-footer {
display: -ms-flexbox;
display: flex;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
-ms-flex-align: center;
align-items: center;
-ms-flex-pack: end;
justify-content: flex-end;
- padding: 1rem;
- border-top: 1px solid #e9ecef;
- border-bottom-right-radius: 0.3rem;
- border-bottom-left-radius: 0.3rem;
-}
-
-.modal-footer > :not(:first-child) {
- margin-left: .25rem;
+ padding: 0.75rem;
+ border-top: 1px solid #dee2e6;
+ border-bottom-right-radius: calc(0.3rem - 1px);
+ border-bottom-left-radius: calc(0.3rem - 1px);
}
-.modal-footer > :not(:last-child) {
- margin-right: .25rem;
+.modal-footer > * {
+ margin: 0.25rem;
}
.modal-scrollbar-measure {
@@ -5765,11 +6152,20 @@ a.close.disabled {
max-width: 500px;
margin: 1.75rem auto;
}
+ .modal-dialog-scrollable {
+ max-height: calc(100% - 3.5rem);
+ }
+ .modal-dialog-scrollable .modal-content {
+ max-height: calc(100vh - 3.5rem);
+ }
.modal-dialog-centered {
- min-height: calc(100% - (1.75rem * 2));
+ min-height: calc(100% - 3.5rem);
}
.modal-dialog-centered::before {
- height: calc(100vh - (1.75rem * 2));
+ height: calc(100vh - 3.5rem);
+ height: -webkit-min-content;
+ height: -moz-min-content;
+ height: min-content;
}
.modal-sm {
max-width: 300px;
@@ -5794,7 +6190,7 @@ a.close.disabled {
z-index: 1070;
display: block;
margin: 0;
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-style: normal;
font-weight: 400;
line-height: 1.5;
@@ -5907,7 +6303,7 @@ a.close.disabled {
z-index: 1060;
display: block;
max-width: 276px;
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-style: normal;
font-weight: 400;
line-height: 1.5;
@@ -5949,25 +6345,19 @@ a.close.disabled {
margin-bottom: 0.5rem;
}
-.bs-popover-top .arrow, .bs-popover-auto[x-placement^="top"] .arrow {
- bottom: calc((0.5rem + 1px) * -1);
-}
-
-.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before,
-.bs-popover-top .arrow::after,
-.bs-popover-auto[x-placement^="top"] .arrow::after {
- border-width: 0.5rem 0.5rem 0;
+.bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow {
+ bottom: calc(-0.5rem - 1px);
}
-.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before {
+.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before {
bottom: 0;
+ border-width: 0.5rem 0.5rem 0;
border-top-color: rgba(0, 0, 0, 0.25);
}
-
-.bs-popover-top .arrow::after,
-.bs-popover-auto[x-placement^="top"] .arrow::after {
+.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after {
bottom: 1px;
+ border-width: 0.5rem 0.5rem 0;
border-top-color: #fff;
}
@@ -5975,28 +6365,22 @@ a.close.disabled {
margin-left: 0.5rem;
}
-.bs-popover-right .arrow, .bs-popover-auto[x-placement^="right"] .arrow {
- left: calc((0.5rem + 1px) * -1);
+.bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow {
+ left: calc(-0.5rem - 1px);
width: 0.5rem;
height: 1rem;
margin: 0.3rem 0;
}
-.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before,
-.bs-popover-right .arrow::after,
-.bs-popover-auto[x-placement^="right"] .arrow::after {
- border-width: 0.5rem 0.5rem 0.5rem 0;
-}
-
-.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before {
+.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before {
left: 0;
+ border-width: 0.5rem 0.5rem 0.5rem 0;
border-right-color: rgba(0, 0, 0, 0.25);
}
-
-.bs-popover-right .arrow::after,
-.bs-popover-auto[x-placement^="right"] .arrow::after {
+.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after {
left: 1px;
+ border-width: 0.5rem 0.5rem 0.5rem 0;
border-right-color: #fff;
}
@@ -6004,25 +6388,19 @@ a.close.disabled {
margin-top: 0.5rem;
}
-.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^="bottom"] .arrow {
- top: calc((0.5rem + 1px) * -1);
-}
-
-.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before,
-.bs-popover-bottom .arrow::after,
-.bs-popover-auto[x-placement^="bottom"] .arrow::after {
- border-width: 0 0.5rem 0.5rem 0.5rem;
+.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow {
+ top: calc(-0.5rem - 1px);
}
-.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before {
+.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before {
top: 0;
+ border-width: 0 0.5rem 0.5rem 0.5rem;
border-bottom-color: rgba(0, 0, 0, 0.25);
}
-
-.bs-popover-bottom .arrow::after,
-.bs-popover-auto[x-placement^="bottom"] .arrow::after {
+.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after {
top: 1px;
+ border-width: 0 0.5rem 0.5rem 0.5rem;
border-bottom-color: #fff;
}
@@ -6041,28 +6419,22 @@ a.close.disabled {
margin-right: 0.5rem;
}
-.bs-popover-left .arrow, .bs-popover-auto[x-placement^="left"] .arrow {
- right: calc((0.5rem + 1px) * -1);
+.bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow {
+ right: calc(-0.5rem - 1px);
width: 0.5rem;
height: 1rem;
margin: 0.3rem 0;
}
-.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before,
-.bs-popover-left .arrow::after,
-.bs-popover-auto[x-placement^="left"] .arrow::after {
- border-width: 0.5rem 0 0.5rem 0.5rem;
-}
-
-.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before {
+.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before {
right: 0;
+ border-width: 0.5rem 0 0.5rem 0.5rem;
border-left-color: rgba(0, 0, 0, 0.25);
}
-
-.bs-popover-left .arrow::after,
-.bs-popover-auto[x-placement^="left"] .arrow::after {
+.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after {
right: 1px;
+ border-width: 0.5rem 0 0.5rem 0.5rem;
border-left-color: #fff;
}
@@ -6070,7 +6442,6 @@ a.close.disabled {
padding: 0.5rem 0.75rem;
margin-bottom: 0;
font-size: 1rem;
- color: inherit;
background-color: #f7f7f7;
border-bottom: 1px solid #ebebeb;
border-top-left-radius: calc(0.3rem - 1px);
@@ -6120,7 +6491,7 @@ a.close.disabled {
transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.carousel-item {
transition: none;
}
@@ -6162,10 +6533,10 @@ a.close.disabled {
.carousel-fade .active.carousel-item-right {
z-index: 0;
opacity: 0;
- transition: 0s 0.6s opacity;
+ transition: opacity 0s 0.6s;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.carousel-fade .active.carousel-item-left,
.carousel-fade .active.carousel-item-right {
transition: none;
@@ -6185,13 +6556,16 @@ a.close.disabled {
-ms-flex-pack: center;
justify-content: center;
width: 15%;
+ padding: 0;
color: #fff;
text-align: center;
+ background: none;
+ border: 0;
opacity: 0.5;
transition: opacity 0.15s ease;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.carousel-control-prev,
.carousel-control-next {
transition: none;
@@ -6220,16 +6594,15 @@ a.close.disabled {
display: inline-block;
width: 20px;
height: 20px;
- background: transparent no-repeat center center;
- background-size: 100% 100%;
+ background: 50% / 100% 100% no-repeat;
}
.carousel-control-prev-icon {
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e");
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e");
}
.carousel-control-next-icon {
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e");
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e");
}
.carousel-indicators {
@@ -6266,7 +6639,7 @@ a.close.disabled {
transition: opacity 0.6s ease;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.carousel-indicators li {
transition: none;
}
@@ -6306,12 +6679,12 @@ a.close.disabled {
display: inline-block;
width: 2rem;
height: 2rem;
- vertical-align: text-bottom;
+ vertical-align: -0.125em;
border: 0.25em solid currentColor;
border-right-color: transparent;
border-radius: 50%;
- -webkit-animation: spinner-border .75s linear infinite;
- animation: spinner-border .75s linear infinite;
+ -webkit-animation: .75s linear infinite spinner-border;
+ animation: .75s linear infinite spinner-border;
}
.spinner-border-sm {
@@ -6327,6 +6700,8 @@ a.close.disabled {
}
50% {
opacity: 1;
+ -webkit-transform: none;
+ transform: none;
}
}
@@ -6337,6 +6712,8 @@ a.close.disabled {
}
50% {
opacity: 1;
+ -webkit-transform: none;
+ transform: none;
}
}
@@ -6344,12 +6721,12 @@ a.close.disabled {
display: inline-block;
width: 2rem;
height: 2rem;
- vertical-align: text-bottom;
+ vertical-align: -0.125em;
background-color: currentColor;
border-radius: 50%;
opacity: 0;
- -webkit-animation: spinner-grow .75s linear infinite;
- animation: spinner-grow .75s linear infinite;
+ -webkit-animation: .75s linear infinite spinner-grow;
+ animation: .75s linear infinite spinner-grow;
}
.spinner-grow-sm {
@@ -6357,6 +6734,14 @@ a.close.disabled {
height: 1rem;
}
+ at media (prefers-reduced-motion: reduce) {
+ .spinner-border,
+ .spinner-grow {
+ -webkit-animation-duration: 1.5s;
+ animation-duration: 1.5s;
+ }
+}
+
.align-baseline {
vertical-align: baseline !important;
}
@@ -6545,6 +6930,10 @@ button.bg-dark:focus {
border-color: #fff !important;
}
+.rounded-sm {
+ border-radius: 0.2rem !important;
+}
+
.rounded {
border-radius: 0.25rem !important;
}
@@ -6569,6 +6958,10 @@ button.bg-dark:focus {
border-bottom-left-radius: 0.25rem !important;
}
+.rounded-lg {
+ border-radius: 0.3rem !important;
+}
+
.rounded-circle {
border-radius: 50% !important;
}
@@ -6820,8 +7213,8 @@ button.bg-dark:focus {
padding-top: 56.25%;
}
-.embed-responsive-3by4::before {
- padding-top: 133.333333%;
+.embed-responsive-4by3::before {
+ padding-top: 75%;
}
.embed-responsive-1by1::before {
@@ -7614,6 +8007,26 @@ button.bg-dark:focus {
}
}
+.user-select-all {
+ -webkit-user-select: all !important;
+ -moz-user-select: all !important;
+ user-select: all !important;
+}
+
+.user-select-auto {
+ -webkit-user-select: auto !important;
+ -moz-user-select: auto !important;
+ -ms-user-select: auto !important;
+ user-select: auto !important;
+}
+
+.user-select-none {
+ -webkit-user-select: none !important;
+ -moz-user-select: none !important;
+ -ms-user-select: none !important;
+ user-select: none !important;
+}
+
.overflow-auto {
overflow: auto !important;
}
@@ -7673,6 +8086,7 @@ button.bg-dark:focus {
width: 1px;
height: 1px;
padding: 0;
+ margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
@@ -9580,8 +9994,20 @@ button.bg-dark:focus {
}
}
+.stretched-link::after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1;
+ pointer-events: auto;
+ content: "";
+ background-color: rgba(0, 0, 0, 0);
+}
+
.text-monospace {
- font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+ font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important;
}
.text-justify {
@@ -9794,6 +10220,11 @@ a.text-dark:hover, a.text-dark:focus {
text-decoration: none !important;
}
+.text-break {
+ word-break: break-word !important;
+ word-wrap: break-word !important;
+}
+
.text-reset {
color: inherit !important;
}
@@ -9827,9 +10258,6 @@ a.text-dark:hover, a.text-dark:focus {
border: 1px solid #adb5bd;
page-break-inside: avoid;
}
- thead {
- display: table-header-group;
- }
tr,
img {
page-break-inside: avoid;
diff --git a/devel/third-party/bootstrap-4.2.1/dist/bootstrap.js b/devel/third-party/bootstrap-4.6.1/dist/bootstrap.js
similarity index 52%
rename from devel/third-party/bootstrap-4.2.1/dist/bootstrap.js
rename to devel/third-party/bootstrap-4.6.1/dist/bootstrap.js
index 867da25717..4eb9985ace 100644
--- a/devel/third-party/bootstrap-4.2.1/dist/bootstrap.js
+++ b/devel/third-party/bootstrap-4.6.1/dist/bootstrap.js
@@ -1,16 +1,18 @@
/*!
- * Bootstrap v4.2.1 (https://getbootstrap.com/)
- * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * Bootstrap v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('popper.js'), require('jquery')) :
- typeof define === 'function' && define.amd ? define(['exports', 'popper.js', 'jquery'], factory) :
- (factory((global.bootstrap = {}),global.Popper,global.jQuery));
-}(this, (function (exports,Popper,$) { 'use strict';
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :
+ typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));
+})(this, (function (exports, $, Popper) { 'use strict';
- Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
+
+ var $__default = /*#__PURE__*/_interopDefaultLegacy($);
+ var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
@@ -28,56 +30,48 @@
return Constructor;
}
- function _defineProperty(obj, key, value) {
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true
- });
- } else {
- obj[key] = value;
- }
-
- return obj;
- }
-
- function _objectSpread(target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i] != null ? arguments[i] : {};
- var ownKeys = Object.keys(source);
+ function _extends() {
+ _extends = Object.assign || function (target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
- if (typeof Object.getOwnPropertySymbols === 'function') {
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
- }));
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
}
- ownKeys.forEach(function (key) {
- _defineProperty(target, key, source[key]);
- });
- }
+ return target;
+ };
- return target;
+ return _extends.apply(this, arguments);
}
function _inheritsLoose(subClass, superClass) {
subClass.prototype = Object.create(superClass.prototype);
subClass.prototype.constructor = subClass;
- subClass.__proto__ = superClass;
+
+ _setPrototypeOf(subClass, superClass);
+ }
+
+ function _setPrototypeOf(o, p) {
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
+ o.__proto__ = p;
+ return o;
+ };
+
+ return _setPrototypeOf(o, p);
}
/**
* --------------------------------------------------------------------------
- * Bootstrap (v4.2.1): util.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * Bootstrap (v4.6.1): util.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
- * ------------------------------------------------------------------------
* Private TransitionEnd Helpers
- * ------------------------------------------------------------------------
*/
var TRANSITION_END = 'transitionend';
@@ -85,6 +79,10 @@
var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
function toType(obj) {
+ if (obj === null || typeof obj === 'undefined') {
+ return "" + obj;
+ }
+
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
}
@@ -93,11 +91,11 @@
bindType: TRANSITION_END,
delegateType: TRANSITION_END,
handle: function handle(event) {
- if ($(event.target).is(this)) {
+ if ($__default["default"](event.target).is(this)) {
return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
}
- return undefined; // eslint-disable-line no-undefined
+ return undefined;
}
};
}
@@ -106,7 +104,7 @@
var _this = this;
var called = false;
- $(this).one(Util.TRANSITION_END, function () {
+ $__default["default"](this).one(Util.TRANSITION_END, function () {
called = true;
});
setTimeout(function () {
@@ -118,13 +116,11 @@
}
function setTransitionEndSupport() {
- $.fn.emulateTransitionEnd = transitionEndEmulator;
- $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
+ $__default["default"].fn.emulateTransitionEnd = transitionEndEmulator;
+ $__default["default"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
}
/**
- * --------------------------------------------------------------------------
- * Public Util Api
- * --------------------------------------------------------------------------
+ * Public Util API
*/
@@ -146,7 +142,11 @@
selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';
}
- return selector && document.querySelector(selector) ? selector : null;
+ try {
+ return document.querySelector(selector) ? selector : null;
+ } catch (_) {
+ return null;
+ }
},
getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
if (!element) {
@@ -154,8 +154,8 @@
} // Get transition-duration of the element
- var transitionDuration = $(element).css('transition-duration');
- var transitionDelay = $(element).css('transition-delay');
+ var transitionDuration = $__default["default"](element).css('transition-duration');
+ var transitionDelay = $__default["default"](element).css('transition-delay');
var floatTransitionDuration = parseFloat(transitionDuration);
var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
@@ -172,9 +172,8 @@
return element.offsetHeight;
},
triggerTransitionEnd: function triggerTransitionEnd(element) {
- $(element).trigger(TRANSITION_END);
+ $__default["default"](element).trigger(TRANSITION_END);
},
- // TODO: Remove in v5
supportsTransitionEnd: function supportsTransitionEnd() {
return Boolean(TRANSITION_END);
},
@@ -215,45 +214,49 @@
}
return Util.findShadowRoot(element.parentNode);
+ },
+ jQueryDetection: function jQueryDetection() {
+ if (typeof $__default["default"] === 'undefined') {
+ throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
+ }
+
+ var version = $__default["default"].fn.jquery.split(' ')[0].split('.');
+ var minMajor = 1;
+ var ltMajor = 2;
+ var minMinor = 9;
+ var minPatch = 1;
+ var maxMajor = 4;
+
+ if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
+ throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
+ }
}
};
+ Util.jQueryDetection();
setTransitionEndSupport();
/**
- * ------------------------------------------------------------------------
* Constants
- * ------------------------------------------------------------------------
*/
- var NAME = 'alert';
- var VERSION = '4.2.1';
- var DATA_KEY = 'bs.alert';
- var EVENT_KEY = "." + DATA_KEY;
- var DATA_API_KEY = '.data-api';
- var JQUERY_NO_CONFLICT = $.fn[NAME];
- var Selector = {
- DISMISS: '[data-dismiss="alert"]'
- };
- var Event = {
- CLOSE: "close" + EVENT_KEY,
- CLOSED: "closed" + EVENT_KEY,
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
- };
- var ClassName = {
- ALERT: 'alert',
- FADE: 'fade',
- SHOW: 'show'
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
- };
+ var NAME$a = 'alert';
+ var VERSION$a = '4.6.1';
+ var DATA_KEY$a = 'bs.alert';
+ var EVENT_KEY$a = "." + DATA_KEY$a;
+ var DATA_API_KEY$7 = '.data-api';
+ var JQUERY_NO_CONFLICT$a = $__default["default"].fn[NAME$a];
+ var CLASS_NAME_ALERT = 'alert';
+ var CLASS_NAME_FADE$5 = 'fade';
+ var CLASS_NAME_SHOW$7 = 'show';
+ var EVENT_CLOSE = "close" + EVENT_KEY$a;
+ var EVENT_CLOSED = "closed" + EVENT_KEY$a;
+ var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$a + DATA_API_KEY$7;
+ var SELECTOR_DISMISS = '[data-dismiss="alert"]';
+ /**
+ * Class definition
+ */
- var Alert =
- /*#__PURE__*/
- function () {
+ var Alert = /*#__PURE__*/function () {
function Alert(element) {
this._element = element;
} // Getters
@@ -279,10 +282,10 @@
};
_proto.dispose = function dispose() {
- $.removeData(this._element, DATA_KEY);
+ $__default["default"].removeData(this._element, DATA_KEY$a);
this._element = null;
- }; // Private
-
+ } // Private
+ ;
_proto._getRootElement = function _getRootElement(element) {
var selector = Util.getSelectorFromElement(element);
@@ -293,48 +296,48 @@
}
if (!parent) {
- parent = $(element).closest("." + ClassName.ALERT)[0];
+ parent = $__default["default"](element).closest("." + CLASS_NAME_ALERT)[0];
}
return parent;
};
_proto._triggerCloseEvent = function _triggerCloseEvent(element) {
- var closeEvent = $.Event(Event.CLOSE);
- $(element).trigger(closeEvent);
+ var closeEvent = $__default["default"].Event(EVENT_CLOSE);
+ $__default["default"](element).trigger(closeEvent);
return closeEvent;
};
_proto._removeElement = function _removeElement(element) {
var _this = this;
- $(element).removeClass(ClassName.SHOW);
+ $__default["default"](element).removeClass(CLASS_NAME_SHOW$7);
- if (!$(element).hasClass(ClassName.FADE)) {
+ if (!$__default["default"](element).hasClass(CLASS_NAME_FADE$5)) {
this._destroyElement(element);
return;
}
var transitionDuration = Util.getTransitionDurationFromElement(element);
- $(element).one(Util.TRANSITION_END, function (event) {
+ $__default["default"](element).one(Util.TRANSITION_END, function (event) {
return _this._destroyElement(element, event);
}).emulateTransitionEnd(transitionDuration);
};
_proto._destroyElement = function _destroyElement(element) {
- $(element).detach().trigger(Event.CLOSED).remove();
- }; // Static
-
+ $__default["default"](element).detach().trigger(EVENT_CLOSED).remove();
+ } // Static
+ ;
Alert._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
- var $element = $(this);
- var data = $element.data(DATA_KEY);
+ var $element = $__default["default"](this);
+ var data = $element.data(DATA_KEY$a);
if (!data) {
data = new Alert(this);
- $element.data(DATA_KEY, data);
+ $element.data(DATA_KEY$a, data);
}
if (config === 'close') {
@@ -356,74 +359,61 @@
_createClass(Alert, null, [{
key: "VERSION",
get: function get() {
- return VERSION;
+ return VERSION$a;
}
}]);
return Alert;
}();
/**
- * ------------------------------------------------------------------------
- * Data Api implementation
- * ------------------------------------------------------------------------
+ * Data API implementation
*/
- $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
+ $__default["default"](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));
/**
- * ------------------------------------------------------------------------
* jQuery
- * ------------------------------------------------------------------------
*/
- $.fn[NAME] = Alert._jQueryInterface;
- $.fn[NAME].Constructor = Alert;
+ $__default["default"].fn[NAME$a] = Alert._jQueryInterface;
+ $__default["default"].fn[NAME$a].Constructor = Alert;
- $.fn[NAME].noConflict = function () {
- $.fn[NAME] = JQUERY_NO_CONFLICT;
+ $__default["default"].fn[NAME$a].noConflict = function () {
+ $__default["default"].fn[NAME$a] = JQUERY_NO_CONFLICT$a;
return Alert._jQueryInterface;
};
/**
- * ------------------------------------------------------------------------
* Constants
- * ------------------------------------------------------------------------
*/
- var NAME$1 = 'button';
- var VERSION$1 = '4.2.1';
- var DATA_KEY$1 = 'bs.button';
- var EVENT_KEY$1 = "." + DATA_KEY$1;
- var DATA_API_KEY$1 = '.data-api';
- var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];
- var ClassName$1 = {
- ACTIVE: 'active',
- BUTTON: 'btn',
- FOCUS: 'focus'
- };
- var Selector$1 = {
- DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
- DATA_TOGGLE: '[data-toggle="buttons"]',
- INPUT: 'input:not([type="hidden"])',
- ACTIVE: '.active',
- BUTTON: '.btn'
- };
- var Event$1 = {
- CLICK_DATA_API: "click" + EVENT_KEY$1 + DATA_API_KEY$1,
- FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY$1 + DATA_API_KEY$1 + " " + ("blur" + EVENT_KEY$1 + DATA_API_KEY$1)
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
- };
+ var NAME$9 = 'button';
+ var VERSION$9 = '4.6.1';
+ var DATA_KEY$9 = 'bs.button';
+ var EVENT_KEY$9 = "." + DATA_KEY$9;
+ var DATA_API_KEY$6 = '.data-api';
+ var JQUERY_NO_CONFLICT$9 = $__default["default"].fn[NAME$9];
+ var CLASS_NAME_ACTIVE$3 = 'active';
+ var CLASS_NAME_BUTTON = 'btn';
+ var CLASS_NAME_FOCUS = 'focus';
+ var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$9 + DATA_API_KEY$6;
+ var EVENT_FOCUS_BLUR_DATA_API = "focus" + EVENT_KEY$9 + DATA_API_KEY$6 + " " + ("blur" + EVENT_KEY$9 + DATA_API_KEY$6);
+ var EVENT_LOAD_DATA_API$2 = "load" + EVENT_KEY$9 + DATA_API_KEY$6;
+ var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^="button"]';
+ var SELECTOR_DATA_TOGGLES = '[data-toggle="buttons"]';
+ var SELECTOR_DATA_TOGGLE$4 = '[data-toggle="button"]';
+ var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle="buttons"] .btn';
+ var SELECTOR_INPUT = 'input:not([type="hidden"])';
+ var SELECTOR_ACTIVE$2 = '.active';
+ var SELECTOR_BUTTON = '.btn';
+ /**
+ * Class definition
+ */
- var Button =
- /*#__PURE__*/
- function () {
+ var Button = /*#__PURE__*/function () {
function Button(element) {
this._element = element;
+ this.shouldAvoidTriggerChange = false;
} // Getters
@@ -433,31 +423,33 @@
_proto.toggle = function toggle() {
var triggerChangeEvent = true;
var addAriaPressed = true;
- var rootElement = $(this._element).closest(Selector$1.DATA_TOGGLE)[0];
+ var rootElement = $__default["default"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];
if (rootElement) {
- var input = this._element.querySelector(Selector$1.INPUT);
+ var input = this._element.querySelector(SELECTOR_INPUT);
if (input) {
if (input.type === 'radio') {
- if (input.checked && this._element.classList.contains(ClassName$1.ACTIVE)) {
+ if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE$3)) {
triggerChangeEvent = false;
} else {
- var activeElement = rootElement.querySelector(Selector$1.ACTIVE);
+ var activeElement = rootElement.querySelector(SELECTOR_ACTIVE$2);
if (activeElement) {
- $(activeElement).removeClass(ClassName$1.ACTIVE);
+ $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$3);
}
}
}
if (triggerChangeEvent) {
- if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
- return;
+ // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input
+ if (input.type === 'checkbox' || input.type === 'radio') {
+ input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE$3);
}
- input.checked = !this._element.classList.contains(ClassName$1.ACTIVE);
- $(input).trigger('change');
+ if (!this.shouldAvoidTriggerChange) {
+ $__default["default"](input).trigger('change');
+ }
}
input.focus();
@@ -465,30 +457,35 @@
}
}
- if (addAriaPressed) {
- this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE));
- }
+ if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {
+ if (addAriaPressed) {
+ this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE$3));
+ }
- if (triggerChangeEvent) {
- $(this._element).toggleClass(ClassName$1.ACTIVE);
+ if (triggerChangeEvent) {
+ $__default["default"](this._element).toggleClass(CLASS_NAME_ACTIVE$3);
+ }
}
};
_proto.dispose = function dispose() {
- $.removeData(this._element, DATA_KEY$1);
+ $__default["default"].removeData(this._element, DATA_KEY$9);
this._element = null;
- }; // Static
+ } // Static
+ ;
-
- Button._jQueryInterface = function _jQueryInterface(config) {
+ Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {
return this.each(function () {
- var data = $(this).data(DATA_KEY$1);
+ var $element = $__default["default"](this);
+ var data = $element.data(DATA_KEY$9);
if (!data) {
data = new Button(this);
- $(this).data(DATA_KEY$1, data);
+ $element.data(DATA_KEY$9, data);
}
+ data.shouldAvoidTriggerChange = avoidTriggerChange;
+
if (config === 'toggle') {
data[config]();
}
@@ -498,58 +495,95 @@
_createClass(Button, null, [{
key: "VERSION",
get: function get() {
- return VERSION$1;
+ return VERSION$9;
}
}]);
return Button;
}();
/**
- * ------------------------------------------------------------------------
- * Data Api implementation
- * ------------------------------------------------------------------------
+ * Data API implementation
*/
- $(document).on(Event$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
- event.preventDefault();
+ $__default["default"](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE_CARROT, function (event) {
var button = event.target;
+ var initialButton = button;
+
+ if (!$__default["default"](button).hasClass(CLASS_NAME_BUTTON)) {
+ button = $__default["default"](button).closest(SELECTOR_BUTTON)[0];
+ }
+
+ if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {
+ event.preventDefault(); // work around Firefox bug #1540995
+ } else {
+ var inputBtn = button.querySelector(SELECTOR_INPUT);
+
+ if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {
+ event.preventDefault(); // work around Firefox bug #1540995
- if (!$(button).hasClass(ClassName$1.BUTTON)) {
- button = $(button).closest(Selector$1.BUTTON);
+ return;
+ }
+
+ if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {
+ Button._jQueryInterface.call($__default["default"](button), 'toggle', initialButton.tagName === 'INPUT');
+ }
}
+ }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {
+ var button = $__default["default"](event.target).closest(SELECTOR_BUTTON)[0];
+ $__default["default"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));
+ });
+ $__default["default"](window).on(EVENT_LOAD_DATA_API$2, function () {
+ // ensure correct active class is set to match the controls' actual values/states
+ // find all checkboxes/readio buttons inside data-toggle groups
+ var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));
+
+ for (var i = 0, len = buttons.length; i < len; i++) {
+ var button = buttons[i];
+ var input = button.querySelector(SELECTOR_INPUT);
+
+ if (input.checked || input.hasAttribute('checked')) {
+ button.classList.add(CLASS_NAME_ACTIVE$3);
+ } else {
+ button.classList.remove(CLASS_NAME_ACTIVE$3);
+ }
+ } // find all button toggles
+
+
+ buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$4));
+
+ for (var _i = 0, _len = buttons.length; _i < _len; _i++) {
+ var _button = buttons[_i];
- Button._jQueryInterface.call($(button), 'toggle');
- }).on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
- var button = $(event.target).closest(Selector$1.BUTTON)[0];
- $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type));
+ if (_button.getAttribute('aria-pressed') === 'true') {
+ _button.classList.add(CLASS_NAME_ACTIVE$3);
+ } else {
+ _button.classList.remove(CLASS_NAME_ACTIVE$3);
+ }
+ }
});
/**
- * ------------------------------------------------------------------------
* jQuery
- * ------------------------------------------------------------------------
*/
- $.fn[NAME$1] = Button._jQueryInterface;
- $.fn[NAME$1].Constructor = Button;
+ $__default["default"].fn[NAME$9] = Button._jQueryInterface;
+ $__default["default"].fn[NAME$9].Constructor = Button;
- $.fn[NAME$1].noConflict = function () {
- $.fn[NAME$1] = JQUERY_NO_CONFLICT$1;
+ $__default["default"].fn[NAME$9].noConflict = function () {
+ $__default["default"].fn[NAME$9] = JQUERY_NO_CONFLICT$9;
return Button._jQueryInterface;
};
/**
- * ------------------------------------------------------------------------
* Constants
- * ------------------------------------------------------------------------
*/
- var NAME$2 = 'carousel';
- var VERSION$2 = '4.2.1';
- var DATA_KEY$2 = 'bs.carousel';
- var EVENT_KEY$2 = "." + DATA_KEY$2;
- var DATA_API_KEY$2 = '.data-api';
- var JQUERY_NO_CONFLICT$2 = $.fn[NAME$2];
+ var NAME$8 = 'carousel';
+ var VERSION$8 = '4.6.1';
+ var DATA_KEY$8 = 'bs.carousel';
+ var EVENT_KEY$8 = "." + DATA_KEY$8;
+ var DATA_API_KEY$5 = '.data-api';
+ var JQUERY_NO_CONFLICT$8 = $__default["default"].fn[NAME$8];
var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
@@ -557,7 +591,40 @@
var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
var SWIPE_THRESHOLD = 40;
- var Default = {
+ var CLASS_NAME_CAROUSEL = 'carousel';
+ var CLASS_NAME_ACTIVE$2 = 'active';
+ var CLASS_NAME_SLIDE = 'slide';
+ var CLASS_NAME_RIGHT = 'carousel-item-right';
+ var CLASS_NAME_LEFT = 'carousel-item-left';
+ var CLASS_NAME_NEXT = 'carousel-item-next';
+ var CLASS_NAME_PREV = 'carousel-item-prev';
+ var CLASS_NAME_POINTER_EVENT = 'pointer-event';
+ var DIRECTION_NEXT = 'next';
+ var DIRECTION_PREV = 'prev';
+ var DIRECTION_LEFT = 'left';
+ var DIRECTION_RIGHT = 'right';
+ var EVENT_SLIDE = "slide" + EVENT_KEY$8;
+ var EVENT_SLID = "slid" + EVENT_KEY$8;
+ var EVENT_KEYDOWN = "keydown" + EVENT_KEY$8;
+ var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$8;
+ var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$8;
+ var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$8;
+ var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$8;
+ var EVENT_TOUCHEND = "touchend" + EVENT_KEY$8;
+ var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$8;
+ var EVENT_POINTERUP = "pointerup" + EVENT_KEY$8;
+ var EVENT_DRAG_START = "dragstart" + EVENT_KEY$8;
+ var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$8 + DATA_API_KEY$5;
+ var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$8 + DATA_API_KEY$5;
+ var SELECTOR_ACTIVE$1 = '.active';
+ var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
+ var SELECTOR_ITEM = '.carousel-item';
+ var SELECTOR_ITEM_IMG = '.carousel-item img';
+ var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
+ var SELECTOR_INDICATORS = '.carousel-indicators';
+ var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';
+ var SELECTOR_DATA_RIDE = '[data-ride="carousel"]';
+ var Default$7 = {
interval: 5000,
keyboard: true,
slide: false,
@@ -565,7 +632,7 @@
wrap: true,
touch: true
};
- var DefaultType = {
+ var DefaultType$7 = {
interval: '(number|boolean)',
keyboard: 'boolean',
slide: '(boolean|string)',
@@ -573,62 +640,15 @@
wrap: 'boolean',
touch: 'boolean'
};
- var Direction = {
- NEXT: 'next',
- PREV: 'prev',
- LEFT: 'left',
- RIGHT: 'right'
- };
- var Event$2 = {
- SLIDE: "slide" + EVENT_KEY$2,
- SLID: "slid" + EVENT_KEY$2,
- KEYDOWN: "keydown" + EVENT_KEY$2,
- MOUSEENTER: "mouseenter" + EVENT_KEY$2,
- MOUSELEAVE: "mouseleave" + EVENT_KEY$2,
- TOUCHSTART: "touchstart" + EVENT_KEY$2,
- TOUCHMOVE: "touchmove" + EVENT_KEY$2,
- TOUCHEND: "touchend" + EVENT_KEY$2,
- POINTERDOWN: "pointerdown" + EVENT_KEY$2,
- POINTERUP: "pointerup" + EVENT_KEY$2,
- DRAG_START: "dragstart" + EVENT_KEY$2,
- LOAD_DATA_API: "load" + EVENT_KEY$2 + DATA_API_KEY$2,
- CLICK_DATA_API: "click" + EVENT_KEY$2 + DATA_API_KEY$2
- };
- var ClassName$2 = {
- CAROUSEL: 'carousel',
- ACTIVE: 'active',
- SLIDE: 'slide',
- RIGHT: 'carousel-item-right',
- LEFT: 'carousel-item-left',
- NEXT: 'carousel-item-next',
- PREV: 'carousel-item-prev',
- ITEM: 'carousel-item',
- POINTER_EVENT: 'pointer-event'
- };
- var Selector$2 = {
- ACTIVE: '.active',
- ACTIVE_ITEM: '.active.carousel-item',
- ITEM: '.carousel-item',
- ITEM_IMG: '.carousel-item img',
- NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
- INDICATORS: '.carousel-indicators',
- DATA_SLIDE: '[data-slide], [data-slide-to]',
- DATA_RIDE: '[data-ride="carousel"]'
- };
var PointerType = {
TOUCH: 'touch',
PEN: 'pen'
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
};
+ /**
+ * Class definition
+ */
- var Carousel =
- /*#__PURE__*/
- function () {
+ var Carousel = /*#__PURE__*/function () {
function Carousel(element, config) {
this._items = null;
this._interval = null;
@@ -640,7 +660,7 @@
this.touchDeltaX = 0;
this._config = this._getConfig(config);
this._element = element;
- this._indicatorsElement = this._element.querySelector(Selector$2.INDICATORS);
+ this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);
this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);
@@ -653,21 +673,22 @@
// Public
_proto.next = function next() {
if (!this._isSliding) {
- this._slide(Direction.NEXT);
+ this._slide(DIRECTION_NEXT);
}
};
_proto.nextWhenVisible = function nextWhenVisible() {
- // Don't call next when the page isn't visible
+ var $element = $__default["default"](this._element); // Don't call next when the page isn't visible
// or the carousel or its parent isn't visible
- if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {
+
+ if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {
this.next();
}
};
_proto.prev = function prev() {
if (!this._isSliding) {
- this._slide(Direction.PREV);
+ this._slide(DIRECTION_PREV);
}
};
@@ -676,7 +697,7 @@
this._isPaused = true;
}
- if (this._element.querySelector(Selector$2.NEXT_PREV)) {
+ if (this._element.querySelector(SELECTOR_NEXT_PREV)) {
Util.triggerTransitionEnd(this._element);
this.cycle(true);
}
@@ -696,6 +717,8 @@
}
if (this._config.interval && !this._isPaused) {
+ this._updateInterval();
+
this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
}
};
@@ -703,7 +726,7 @@
_proto.to = function to(index) {
var _this = this;
- this._activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);
+ this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);
var activeIndex = this._getItemIndex(this._activeElement);
@@ -712,7 +735,7 @@
}
if (this._isSliding) {
- $(this._element).one(Event$2.SLID, function () {
+ $__default["default"](this._element).one(EVENT_SLID, function () {
return _this.to(index);
});
return;
@@ -724,14 +747,14 @@
return;
}
- var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
+ var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;
this._slide(direction, this._items[index]);
};
_proto.dispose = function dispose() {
- $(this._element).off(EVENT_KEY$2);
- $.removeData(this._element, DATA_KEY$2);
+ $__default["default"](this._element).off(EVENT_KEY$8);
+ $__default["default"].removeData(this._element, DATA_KEY$8);
this._items = null;
this._config = null;
this._element = null;
@@ -740,12 +763,12 @@
this._isSliding = null;
this._activeElement = null;
this._indicatorsElement = null;
- }; // Private
-
+ } // Private
+ ;
_proto._getConfig = function _getConfig(config) {
- config = _objectSpread({}, Default, config);
- Util.typeCheckConfig(NAME$2, config, DefaultType);
+ config = _extends({}, Default$7, config);
+ Util.typeCheckConfig(NAME$8, config, DefaultType$7);
return config;
};
@@ -756,7 +779,8 @@
return;
}
- var direction = absDeltax / this.touchDeltaX; // swipe left
+ var direction = absDeltax / this.touchDeltaX;
+ this.touchDeltaX = 0; // swipe left
if (direction > 0) {
this.prev();
@@ -772,20 +796,22 @@
var _this2 = this;
if (this._config.keyboard) {
- $(this._element).on(Event$2.KEYDOWN, function (event) {
+ $__default["default"](this._element).on(EVENT_KEYDOWN, function (event) {
return _this2._keydown(event);
});
}
if (this._config.pause === 'hover') {
- $(this._element).on(Event$2.MOUSEENTER, function (event) {
+ $__default["default"](this._element).on(EVENT_MOUSEENTER, function (event) {
return _this2.pause(event);
- }).on(Event$2.MOUSELEAVE, function (event) {
+ }).on(EVENT_MOUSELEAVE, function (event) {
return _this2.cycle(event);
});
}
- this._addTouchEventListeners();
+ if (this._config.touch) {
+ this._addTouchEventListeners();
+ }
};
_proto._addTouchEventListeners = function _addTouchEventListeners() {
@@ -805,11 +831,7 @@
var move = function move(event) {
// ensure swiping with one touch and not pinching
- if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {
- _this3.touchDeltaX = 0;
- } else {
- _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;
- }
+ _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX;
};
var end = function end(event) {
@@ -839,27 +861,27 @@
}
};
- $(this._element.querySelectorAll(Selector$2.ITEM_IMG)).on(Event$2.DRAG_START, function (e) {
+ $__default["default"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {
return e.preventDefault();
});
if (this._pointerEvent) {
- $(this._element).on(Event$2.POINTERDOWN, function (event) {
+ $__default["default"](this._element).on(EVENT_POINTERDOWN, function (event) {
return start(event);
});
- $(this._element).on(Event$2.POINTERUP, function (event) {
+ $__default["default"](this._element).on(EVENT_POINTERUP, function (event) {
return end(event);
});
- this._element.classList.add(ClassName$2.POINTER_EVENT);
+ this._element.classList.add(CLASS_NAME_POINTER_EVENT);
} else {
- $(this._element).on(Event$2.TOUCHSTART, function (event) {
+ $__default["default"](this._element).on(EVENT_TOUCHSTART, function (event) {
return start(event);
});
- $(this._element).on(Event$2.TOUCHMOVE, function (event) {
+ $__default["default"](this._element).on(EVENT_TOUCHMOVE, function (event) {
return move(event);
});
- $(this._element).on(Event$2.TOUCHEND, function (event) {
+ $__default["default"](this._element).on(EVENT_TOUCHEND, function (event) {
return end(event);
});
}
@@ -880,19 +902,17 @@
event.preventDefault();
this.next();
break;
-
- default:
}
};
_proto._getItemIndex = function _getItemIndex(element) {
- this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector$2.ITEM)) : [];
+ this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];
return this._items.indexOf(element);
};
_proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
- var isNextDirection = direction === Direction.NEXT;
- var isPrevDirection = direction === Direction.PREV;
+ var isNextDirection = direction === DIRECTION_NEXT;
+ var isPrevDirection = direction === DIRECTION_PREV;
var activeIndex = this._getItemIndex(activeElement);
@@ -903,7 +923,7 @@
return activeElement;
}
- var delta = direction === Direction.PREV ? -1 : 1;
+ var delta = direction === DIRECTION_PREV ? -1 : 1;
var itemIndex = (activeIndex + delta) % this._items.length;
return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
};
@@ -911,35 +931,52 @@
_proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
var targetIndex = this._getItemIndex(relatedTarget);
- var fromIndex = this._getItemIndex(this._element.querySelector(Selector$2.ACTIVE_ITEM));
+ var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));
- var slideEvent = $.Event(Event$2.SLIDE, {
+ var slideEvent = $__default["default"].Event(EVENT_SLIDE, {
relatedTarget: relatedTarget,
direction: eventDirectionName,
from: fromIndex,
to: targetIndex
});
- $(this._element).trigger(slideEvent);
+ $__default["default"](this._element).trigger(slideEvent);
return slideEvent;
};
_proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
if (this._indicatorsElement) {
- var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector$2.ACTIVE));
- $(indicators).removeClass(ClassName$2.ACTIVE);
+ var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));
+ $__default["default"](indicators).removeClass(CLASS_NAME_ACTIVE$2);
var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
if (nextIndicator) {
- $(nextIndicator).addClass(ClassName$2.ACTIVE);
+ $__default["default"](nextIndicator).addClass(CLASS_NAME_ACTIVE$2);
}
}
};
+ _proto._updateInterval = function _updateInterval() {
+ var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);
+
+ if (!element) {
+ return;
+ }
+
+ var elementInterval = parseInt(element.getAttribute('data-interval'), 10);
+
+ if (elementInterval) {
+ this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
+ this._config.interval = elementInterval;
+ } else {
+ this._config.interval = this._config.defaultInterval || this._config.interval;
+ }
+ };
+
_proto._slide = function _slide(direction, element) {
var _this4 = this;
- var activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);
+ var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);
var activeElementIndex = this._getItemIndex(activeElement);
@@ -952,17 +989,17 @@
var orderClassName;
var eventDirectionName;
- if (direction === Direction.NEXT) {
- directionalClassName = ClassName$2.LEFT;
- orderClassName = ClassName$2.NEXT;
- eventDirectionName = Direction.LEFT;
+ if (direction === DIRECTION_NEXT) {
+ directionalClassName = CLASS_NAME_LEFT;
+ orderClassName = CLASS_NAME_NEXT;
+ eventDirectionName = DIRECTION_LEFT;
} else {
- directionalClassName = ClassName$2.RIGHT;
- orderClassName = ClassName$2.PREV;
- eventDirectionName = Direction.RIGHT;
+ directionalClassName = CLASS_NAME_RIGHT;
+ orderClassName = CLASS_NAME_PREV;
+ eventDirectionName = DIRECTION_RIGHT;
}
- if (nextElement && $(nextElement).hasClass(ClassName$2.ACTIVE)) {
+ if (nextElement && $__default["default"](nextElement).hasClass(CLASS_NAME_ACTIVE$2)) {
this._isSliding = false;
return;
}
@@ -986,64 +1023,56 @@
this._setActiveIndicatorElement(nextElement);
- var slidEvent = $.Event(Event$2.SLID, {
+ this._activeElement = nextElement;
+ var slidEvent = $__default["default"].Event(EVENT_SLID, {
relatedTarget: nextElement,
direction: eventDirectionName,
from: activeElementIndex,
to: nextElementIndex
});
- if ($(this._element).hasClass(ClassName$2.SLIDE)) {
- $(nextElement).addClass(orderClassName);
+ if ($__default["default"](this._element).hasClass(CLASS_NAME_SLIDE)) {
+ $__default["default"](nextElement).addClass(orderClassName);
Util.reflow(nextElement);
- $(activeElement).addClass(directionalClassName);
- $(nextElement).addClass(directionalClassName);
- var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);
-
- if (nextElementInterval) {
- this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
- this._config.interval = nextElementInterval;
- } else {
- this._config.interval = this._config.defaultInterval || this._config.interval;
- }
-
+ $__default["default"](activeElement).addClass(directionalClassName);
+ $__default["default"](nextElement).addClass(directionalClassName);
var transitionDuration = Util.getTransitionDurationFromElement(activeElement);
- $(activeElement).one(Util.TRANSITION_END, function () {
- $(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName$2.ACTIVE);
- $(activeElement).removeClass(ClassName$2.ACTIVE + " " + orderClassName + " " + directionalClassName);
+ $__default["default"](activeElement).one(Util.TRANSITION_END, function () {
+ $__default["default"](nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(CLASS_NAME_ACTIVE$2);
+ $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$2 + " " + orderClassName + " " + directionalClassName);
_this4._isSliding = false;
setTimeout(function () {
- return $(_this4._element).trigger(slidEvent);
+ return $__default["default"](_this4._element).trigger(slidEvent);
}, 0);
}).emulateTransitionEnd(transitionDuration);
} else {
- $(activeElement).removeClass(ClassName$2.ACTIVE);
- $(nextElement).addClass(ClassName$2.ACTIVE);
+ $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$2);
+ $__default["default"](nextElement).addClass(CLASS_NAME_ACTIVE$2);
this._isSliding = false;
- $(this._element).trigger(slidEvent);
+ $__default["default"](this._element).trigger(slidEvent);
}
if (isCycling) {
this.cycle();
}
- }; // Static
-
+ } // Static
+ ;
Carousel._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
- var data = $(this).data(DATA_KEY$2);
+ var data = $__default["default"](this).data(DATA_KEY$8);
- var _config = _objectSpread({}, Default, $(this).data());
+ var _config = _extends({}, Default$7, $__default["default"](this).data());
if (typeof config === 'object') {
- _config = _objectSpread({}, _config, config);
+ _config = _extends({}, _config, config);
}
var action = typeof config === 'string' ? config : _config.slide;
if (!data) {
data = new Carousel(this, _config);
- $(this).data(DATA_KEY$2, data);
+ $__default["default"](this).data(DATA_KEY$8, data);
}
if (typeof config === 'number') {
@@ -1054,7 +1083,7 @@
}
data[action]();
- } else if (_config.interval) {
+ } else if (_config.interval && _config.ride) {
data.pause();
data.cycle();
}
@@ -1068,13 +1097,13 @@
return;
}
- var target = $(selector)[0];
+ var target = $__default["default"](selector)[0];
- if (!target || !$(target).hasClass(ClassName$2.CAROUSEL)) {
+ if (!target || !$__default["default"](target).hasClass(CLASS_NAME_CAROUSEL)) {
return;
}
- var config = _objectSpread({}, $(target).data(), $(this).data());
+ var config = _extends({}, $__default["default"](target).data(), $__default["default"](this).data());
var slideIndex = this.getAttribute('data-slide-to');
@@ -1082,10 +1111,10 @@
config.interval = false;
}
- Carousel._jQueryInterface.call($(target), config);
+ Carousel._jQueryInterface.call($__default["default"](target), config);
if (slideIndex) {
- $(target).data(DATA_KEY$2).to(slideIndex);
+ $__default["default"](target).data(DATA_KEY$8).to(slideIndex);
}
event.preventDefault();
@@ -1094,105 +1123,86 @@
_createClass(Carousel, null, [{
key: "VERSION",
get: function get() {
- return VERSION$2;
+ return VERSION$8;
}
}, {
key: "Default",
get: function get() {
- return Default;
+ return Default$7;
}
}]);
return Carousel;
}();
/**
- * ------------------------------------------------------------------------
- * Data Api implementation
- * ------------------------------------------------------------------------
+ * Data API implementation
*/
- $(document).on(Event$2.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler);
- $(window).on(Event$2.LOAD_DATA_API, function () {
- var carousels = [].slice.call(document.querySelectorAll(Selector$2.DATA_RIDE));
+ $__default["default"](document).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);
+ $__default["default"](window).on(EVENT_LOAD_DATA_API$1, function () {
+ var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));
for (var i = 0, len = carousels.length; i < len; i++) {
- var $carousel = $(carousels[i]);
+ var $carousel = $__default["default"](carousels[i]);
Carousel._jQueryInterface.call($carousel, $carousel.data());
}
});
/**
- * ------------------------------------------------------------------------
* jQuery
- * ------------------------------------------------------------------------
*/
- $.fn[NAME$2] = Carousel._jQueryInterface;
- $.fn[NAME$2].Constructor = Carousel;
+ $__default["default"].fn[NAME$8] = Carousel._jQueryInterface;
+ $__default["default"].fn[NAME$8].Constructor = Carousel;
- $.fn[NAME$2].noConflict = function () {
- $.fn[NAME$2] = JQUERY_NO_CONFLICT$2;
+ $__default["default"].fn[NAME$8].noConflict = function () {
+ $__default["default"].fn[NAME$8] = JQUERY_NO_CONFLICT$8;
return Carousel._jQueryInterface;
};
/**
- * ------------------------------------------------------------------------
* Constants
- * ------------------------------------------------------------------------
*/
- var NAME$3 = 'collapse';
- var VERSION$3 = '4.2.1';
- var DATA_KEY$3 = 'bs.collapse';
- var EVENT_KEY$3 = "." + DATA_KEY$3;
- var DATA_API_KEY$3 = '.data-api';
- var JQUERY_NO_CONFLICT$3 = $.fn[NAME$3];
- var Default$1 = {
+ var NAME$7 = 'collapse';
+ var VERSION$7 = '4.6.1';
+ var DATA_KEY$7 = 'bs.collapse';
+ var EVENT_KEY$7 = "." + DATA_KEY$7;
+ var DATA_API_KEY$4 = '.data-api';
+ var JQUERY_NO_CONFLICT$7 = $__default["default"].fn[NAME$7];
+ var CLASS_NAME_SHOW$6 = 'show';
+ var CLASS_NAME_COLLAPSE = 'collapse';
+ var CLASS_NAME_COLLAPSING = 'collapsing';
+ var CLASS_NAME_COLLAPSED = 'collapsed';
+ var DIMENSION_WIDTH = 'width';
+ var DIMENSION_HEIGHT = 'height';
+ var EVENT_SHOW$4 = "show" + EVENT_KEY$7;
+ var EVENT_SHOWN$4 = "shown" + EVENT_KEY$7;
+ var EVENT_HIDE$4 = "hide" + EVENT_KEY$7;
+ var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$7;
+ var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$7 + DATA_API_KEY$4;
+ var SELECTOR_ACTIVES = '.show, .collapsing';
+ var SELECTOR_DATA_TOGGLE$3 = '[data-toggle="collapse"]';
+ var Default$6 = {
toggle: true,
parent: ''
};
- var DefaultType$1 = {
+ var DefaultType$6 = {
toggle: 'boolean',
parent: '(string|element)'
};
- var Event$3 = {
- SHOW: "show" + EVENT_KEY$3,
- SHOWN: "shown" + EVENT_KEY$3,
- HIDE: "hide" + EVENT_KEY$3,
- HIDDEN: "hidden" + EVENT_KEY$3,
- CLICK_DATA_API: "click" + EVENT_KEY$3 + DATA_API_KEY$3
- };
- var ClassName$3 = {
- SHOW: 'show',
- COLLAPSE: 'collapse',
- COLLAPSING: 'collapsing',
- COLLAPSED: 'collapsed'
- };
- var Dimension = {
- WIDTH: 'width',
- HEIGHT: 'height'
- };
- var Selector$3 = {
- ACTIVES: '.show, .collapsing',
- DATA_TOGGLE: '[data-toggle="collapse"]'
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
- };
+ /**
+ * Class definition
+ */
- var Collapse =
- /*#__PURE__*/
- function () {
+ var Collapse = /*#__PURE__*/function () {
function Collapse(element, config) {
this._isTransitioning = false;
this._element = element;
this._config = this._getConfig(config);
this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
- var toggleList = [].slice.call(document.querySelectorAll(Selector$3.DATA_TOGGLE));
+ var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$3));
for (var i = 0, len = toggleList.length; i < len; i++) {
var elem = toggleList[i];
@@ -1224,7 +1234,7 @@
// Public
_proto.toggle = function toggle() {
- if ($(this._element).hasClass(ClassName$3.SHOW)) {
+ if ($__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) {
this.hide();
} else {
this.show();
@@ -1234,7 +1244,7 @@
_proto.show = function show() {
var _this = this;
- if (this._isTransitioning || $(this._element).hasClass(ClassName$3.SHOW)) {
+ if (this._isTransitioning || $__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) {
return;
}
@@ -1242,12 +1252,12 @@
var activesData;
if (this._parent) {
- actives = [].slice.call(this._parent.querySelectorAll(Selector$3.ACTIVES)).filter(function (elem) {
+ actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {
if (typeof _this._config.parent === 'string') {
return elem.getAttribute('data-parent') === _this._config.parent;
}
- return elem.classList.contains(ClassName$3.COLLAPSE);
+ return elem.classList.contains(CLASS_NAME_COLLAPSE);
});
if (actives.length === 0) {
@@ -1256,64 +1266,64 @@
}
if (actives) {
- activesData = $(actives).not(this._selector).data(DATA_KEY$3);
+ activesData = $__default["default"](actives).not(this._selector).data(DATA_KEY$7);
if (activesData && activesData._isTransitioning) {
return;
}
}
- var startEvent = $.Event(Event$3.SHOW);
- $(this._element).trigger(startEvent);
+ var startEvent = $__default["default"].Event(EVENT_SHOW$4);
+ $__default["default"](this._element).trigger(startEvent);
if (startEvent.isDefaultPrevented()) {
return;
}
if (actives) {
- Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');
+ Collapse._jQueryInterface.call($__default["default"](actives).not(this._selector), 'hide');
if (!activesData) {
- $(actives).data(DATA_KEY$3, null);
+ $__default["default"](actives).data(DATA_KEY$7, null);
}
}
var dimension = this._getDimension();
- $(this._element).removeClass(ClassName$3.COLLAPSE).addClass(ClassName$3.COLLAPSING);
+ $__default["default"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);
this._element.style[dimension] = 0;
if (this._triggerArray.length) {
- $(this._triggerArray).removeClass(ClassName$3.COLLAPSED).attr('aria-expanded', true);
+ $__default["default"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);
}
this.setTransitioning(true);
var complete = function complete() {
- $(_this._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).addClass(ClassName$3.SHOW);
+ $__default["default"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$6);
_this._element.style[dimension] = '';
_this.setTransitioning(false);
- $(_this._element).trigger(Event$3.SHOWN);
+ $__default["default"](_this._element).trigger(EVENT_SHOWN$4);
};
var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
var scrollSize = "scroll" + capitalizedDimension;
var transitionDuration = Util.getTransitionDurationFromElement(this._element);
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
+ $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
this._element.style[dimension] = this._element[scrollSize] + "px";
};
_proto.hide = function hide() {
var _this2 = this;
- if (this._isTransitioning || !$(this._element).hasClass(ClassName$3.SHOW)) {
+ if (this._isTransitioning || !$__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) {
return;
}
- var startEvent = $.Event(Event$3.HIDE);
- $(this._element).trigger(startEvent);
+ var startEvent = $__default["default"].Event(EVENT_HIDE$4);
+ $__default["default"](this._element).trigger(startEvent);
if (startEvent.isDefaultPrevented()) {
return;
@@ -1323,7 +1333,7 @@
this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
Util.reflow(this._element);
- $(this._element).addClass(ClassName$3.COLLAPSING).removeClass(ClassName$3.COLLAPSE).removeClass(ClassName$3.SHOW);
+ $__default["default"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$6);
var triggerArrayLength = this._triggerArray.length;
if (triggerArrayLength > 0) {
@@ -1332,10 +1342,10 @@
var selector = Util.getSelectorFromElement(trigger);
if (selector !== null) {
- var $elem = $([].slice.call(document.querySelectorAll(selector)));
+ var $elem = $__default["default"]([].slice.call(document.querySelectorAll(selector)));
- if (!$elem.hasClass(ClassName$3.SHOW)) {
- $(trigger).addClass(ClassName$3.COLLAPSED).attr('aria-expanded', false);
+ if (!$elem.hasClass(CLASS_NAME_SHOW$6)) {
+ $__default["default"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);
}
}
}
@@ -1346,12 +1356,12 @@
var complete = function complete() {
_this2.setTransitioning(false);
- $(_this2._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).trigger(Event$3.HIDDEN);
+ $__default["default"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN$4);
};
this._element.style[dimension] = '';
var transitionDuration = Util.getTransitionDurationFromElement(this._element);
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
+ $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
};
_proto.setTransitioning = function setTransitioning(isTransitioning) {
@@ -1359,26 +1369,26 @@
};
_proto.dispose = function dispose() {
- $.removeData(this._element, DATA_KEY$3);
+ $__default["default"].removeData(this._element, DATA_KEY$7);
this._config = null;
this._parent = null;
this._element = null;
this._triggerArray = null;
this._isTransitioning = null;
- }; // Private
-
+ } // Private
+ ;
_proto._getConfig = function _getConfig(config) {
- config = _objectSpread({}, Default$1, config);
+ config = _extends({}, Default$6, config);
config.toggle = Boolean(config.toggle); // Coerce string values
- Util.typeCheckConfig(NAME$3, config, DefaultType$1);
+ Util.typeCheckConfig(NAME$7, config, DefaultType$6);
return config;
};
_proto._getDimension = function _getDimension() {
- var hasWidth = $(this._element).hasClass(Dimension.WIDTH);
- return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
+ var hasWidth = $__default["default"](this._element).hasClass(DIMENSION_WIDTH);
+ return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;
};
_proto._getParent = function _getParent() {
@@ -1398,20 +1408,20 @@
var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
var children = [].slice.call(parent.querySelectorAll(selector));
- $(children).each(function (i, element) {
+ $__default["default"](children).each(function (i, element) {
_this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
});
return parent;
};
_proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
- var isOpen = $(element).hasClass(ClassName$3.SHOW);
+ var isOpen = $__default["default"](element).hasClass(CLASS_NAME_SHOW$6);
if (triggerArray.length) {
- $(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
+ $__default["default"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
}
- }; // Static
-
+ } // Static
+ ;
Collapse._getTargetFromElement = function _getTargetFromElement(element) {
var selector = Util.getSelectorFromElement(element);
@@ -1420,18 +1430,18 @@
Collapse._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
- var $this = $(this);
- var data = $this.data(DATA_KEY$3);
+ var $element = $__default["default"](this);
+ var data = $element.data(DATA_KEY$7);
- var _config = _objectSpread({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {});
+ var _config = _extends({}, Default$6, $element.data(), typeof config === 'object' && config ? config : {});
- if (!data && _config.toggle && /show|hide/.test(config)) {
+ if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
_config.toggle = false;
}
if (!data) {
data = new Collapse(this, _config);
- $this.data(DATA_KEY$3, data);
+ $element.data(DATA_KEY$7, data);
}
if (typeof config === 'string') {
@@ -1447,68 +1457,62 @@
_createClass(Collapse, null, [{
key: "VERSION",
get: function get() {
- return VERSION$3;
+ return VERSION$7;
}
}, {
key: "Default",
get: function get() {
- return Default$1;
+ return Default$6;
}
}]);
return Collapse;
}();
/**
- * ------------------------------------------------------------------------
- * Data Api implementation
- * ------------------------------------------------------------------------
+ * Data API implementation
*/
- $(document).on(Event$3.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) {
+ $__default["default"](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {
// preventDefault only for <a> elements (which change the URL) not inside the collapsible element
if (event.currentTarget.tagName === 'A') {
event.preventDefault();
}
- var $trigger = $(this);
+ var $trigger = $__default["default"](this);
var selector = Util.getSelectorFromElement(this);
var selectors = [].slice.call(document.querySelectorAll(selector));
- $(selectors).each(function () {
- var $target = $(this);
- var data = $target.data(DATA_KEY$3);
+ $__default["default"](selectors).each(function () {
+ var $target = $__default["default"](this);
+ var data = $target.data(DATA_KEY$7);
var config = data ? 'toggle' : $trigger.data();
Collapse._jQueryInterface.call($target, config);
});
});
/**
- * ------------------------------------------------------------------------
* jQuery
- * ------------------------------------------------------------------------
*/
- $.fn[NAME$3] = Collapse._jQueryInterface;
- $.fn[NAME$3].Constructor = Collapse;
+ $__default["default"].fn[NAME$7] = Collapse._jQueryInterface;
+ $__default["default"].fn[NAME$7].Constructor = Collapse;
- $.fn[NAME$3].noConflict = function () {
- $.fn[NAME$3] = JQUERY_NO_CONFLICT$3;
+ $__default["default"].fn[NAME$7].noConflict = function () {
+ $__default["default"].fn[NAME$7] = JQUERY_NO_CONFLICT$7;
return Collapse._jQueryInterface;
};
/**
- * ------------------------------------------------------------------------
* Constants
- * ------------------------------------------------------------------------
*/
- var NAME$4 = 'dropdown';
- var VERSION$4 = '4.2.1';
- var DATA_KEY$4 = 'bs.dropdown';
- var EVENT_KEY$4 = "." + DATA_KEY$4;
- var DATA_API_KEY$4 = '.data-api';
- var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4];
- var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
+ var NAME$6 = 'dropdown';
+ var VERSION$6 = '4.6.1';
+ var DATA_KEY$6 = 'bs.dropdown';
+ var EVENT_KEY$6 = "." + DATA_KEY$6;
+ var DATA_API_KEY$3 = '.data-api';
+ var JQUERY_NO_CONFLICT$6 = $__default["default"].fn[NAME$6];
+ var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key
var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
@@ -1520,68 +1524,54 @@
var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
- var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
- var Event$4 = {
- HIDE: "hide" + EVENT_KEY$4,
- HIDDEN: "hidden" + EVENT_KEY$4,
- SHOW: "show" + EVENT_KEY$4,
- SHOWN: "shown" + EVENT_KEY$4,
- CLICK: "click" + EVENT_KEY$4,
- CLICK_DATA_API: "click" + EVENT_KEY$4 + DATA_API_KEY$4,
- KEYDOWN_DATA_API: "keydown" + EVENT_KEY$4 + DATA_API_KEY$4,
- KEYUP_DATA_API: "keyup" + EVENT_KEY$4 + DATA_API_KEY$4
- };
- var ClassName$4 = {
- DISABLED: 'disabled',
- SHOW: 'show',
- DROPUP: 'dropup',
- DROPRIGHT: 'dropright',
- DROPLEFT: 'dropleft',
- MENURIGHT: 'dropdown-menu-right',
- MENULEFT: 'dropdown-menu-left',
- POSITION_STATIC: 'position-static'
- };
- var Selector$4 = {
- DATA_TOGGLE: '[data-toggle="dropdown"]',
- FORM_CHILD: '.dropdown form',
- MENU: '.dropdown-menu',
- NAVBAR_NAV: '.navbar-nav',
- VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'
- };
- var AttachmentMap = {
- TOP: 'top-start',
- TOPEND: 'top-end',
- BOTTOM: 'bottom-start',
- BOTTOMEND: 'bottom-end',
- RIGHT: 'right-start',
- RIGHTEND: 'right-end',
- LEFT: 'left-start',
- LEFTEND: 'left-end'
- };
- var Default$2 = {
+ var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE$1);
+ var CLASS_NAME_DISABLED$1 = 'disabled';
+ var CLASS_NAME_SHOW$5 = 'show';
+ var CLASS_NAME_DROPUP = 'dropup';
+ var CLASS_NAME_DROPRIGHT = 'dropright';
+ var CLASS_NAME_DROPLEFT = 'dropleft';
+ var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';
+ var CLASS_NAME_POSITION_STATIC = 'position-static';
+ var EVENT_HIDE$3 = "hide" + EVENT_KEY$6;
+ var EVENT_HIDDEN$3 = "hidden" + EVENT_KEY$6;
+ var EVENT_SHOW$3 = "show" + EVENT_KEY$6;
+ var EVENT_SHOWN$3 = "shown" + EVENT_KEY$6;
+ var EVENT_CLICK = "click" + EVENT_KEY$6;
+ var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$6 + DATA_API_KEY$3;
+ var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$6 + DATA_API_KEY$3;
+ var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$6 + DATA_API_KEY$3;
+ var SELECTOR_DATA_TOGGLE$2 = '[data-toggle="dropdown"]';
+ var SELECTOR_FORM_CHILD = '.dropdown form';
+ var SELECTOR_MENU = '.dropdown-menu';
+ var SELECTOR_NAVBAR_NAV = '.navbar-nav';
+ var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
+ var PLACEMENT_TOP = 'top-start';
+ var PLACEMENT_TOPEND = 'top-end';
+ var PLACEMENT_BOTTOM = 'bottom-start';
+ var PLACEMENT_BOTTOMEND = 'bottom-end';
+ var PLACEMENT_RIGHT = 'right-start';
+ var PLACEMENT_LEFT = 'left-start';
+ var Default$5 = {
offset: 0,
flip: true,
boundary: 'scrollParent',
reference: 'toggle',
- display: 'dynamic'
+ display: 'dynamic',
+ popperConfig: null
};
- var DefaultType$2 = {
+ var DefaultType$5 = {
offset: '(number|string|function)',
flip: 'boolean',
boundary: '(string|element)',
reference: '(string|element)',
- display: 'string'
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
+ display: 'string',
+ popperConfig: '(null|object)'
};
+ /**
+ * Class definition
+ */
- var Dropdown =
- /*#__PURE__*/
- function () {
+ var Dropdown = /*#__PURE__*/function () {
function Dropdown(element, config) {
this._element = element;
this._popper = null;
@@ -1597,13 +1587,11 @@
// Public
_proto.toggle = function toggle() {
- if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED)) {
+ if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED$1)) {
return;
}
- var parent = Dropdown._getParentFromElement(this._element);
-
- var isActive = $(this._menu).hasClass(ClassName$4.SHOW);
+ var isActive = $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$5);
Dropdown._clearMenus();
@@ -1611,24 +1599,36 @@
return;
}
+ this.show(true);
+ };
+
+ _proto.show = function show(usePopper) {
+ if (usePopper === void 0) {
+ usePopper = false;
+ }
+
+ if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED$1) || $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {
+ return;
+ }
+
var relatedTarget = {
relatedTarget: this._element
};
- var showEvent = $.Event(Event$4.SHOW, relatedTarget);
- $(parent).trigger(showEvent);
+ var showEvent = $__default["default"].Event(EVENT_SHOW$3, relatedTarget);
+
+ var parent = Dropdown._getParentFromElement(this._element);
+
+ $__default["default"](parent).trigger(showEvent);
if (showEvent.isDefaultPrevented()) {
return;
- } // Disable totally Popper.js for Dropdown in Navbar
+ } // Totally disable Popper for Dropdowns in Navbar
- if (!this._inNavbar) {
- /**
- * Check for Popper dependency
- * Popper - https://popper.js.org
- */
- if (typeof Popper === 'undefined') {
- throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org/)');
+ if (!this._inNavbar && usePopper) {
+ // Check for Popper dependency
+ if (typeof Popper__default["default"] === 'undefined') {
+ throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
}
var referenceElement = this._element;
@@ -1647,75 +1647,57 @@
if (this._config.boundary !== 'scrollParent') {
- $(parent).addClass(ClassName$4.POSITION_STATIC);
+ $__default["default"](parent).addClass(CLASS_NAME_POSITION_STATIC);
}
- this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());
+ this._popper = new Popper__default["default"](referenceElement, this._menu, this._getPopperConfig());
} // If this is a touch-enabled device we add extra
// empty mouseover listeners to the body's immediate children;
// only needed because of broken event delegation on iOS
// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
- if ('ontouchstart' in document.documentElement && $(parent).closest(Selector$4.NAVBAR_NAV).length === 0) {
- $(document.body).children().on('mouseover', null, $.noop);
+ if ('ontouchstart' in document.documentElement && $__default["default"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {
+ $__default["default"](document.body).children().on('mouseover', null, $__default["default"].noop);
}
this._element.focus();
this._element.setAttribute('aria-expanded', true);
- $(this._menu).toggleClass(ClassName$4.SHOW);
- $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));
- };
-
- _proto.show = function show() {
- if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) {
- return;
- }
-
- var relatedTarget = {
- relatedTarget: this._element
- };
- var showEvent = $.Event(Event$4.SHOW, relatedTarget);
-
- var parent = Dropdown._getParentFromElement(this._element);
-
- $(parent).trigger(showEvent);
-
- if (showEvent.isDefaultPrevented()) {
- return;
- }
-
- $(this._menu).toggleClass(ClassName$4.SHOW);
- $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));
+ $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW$5);
+ $__default["default"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default["default"].Event(EVENT_SHOWN$3, relatedTarget));
};
_proto.hide = function hide() {
- if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) {
+ if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED$1) || !$__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {
return;
}
var relatedTarget = {
relatedTarget: this._element
};
- var hideEvent = $.Event(Event$4.HIDE, relatedTarget);
+ var hideEvent = $__default["default"].Event(EVENT_HIDE$3, relatedTarget);
var parent = Dropdown._getParentFromElement(this._element);
- $(parent).trigger(hideEvent);
+ $__default["default"](parent).trigger(hideEvent);
if (hideEvent.isDefaultPrevented()) {
return;
}
- $(this._menu).toggleClass(ClassName$4.SHOW);
- $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
+ if (this._popper) {
+ this._popper.destroy();
+ }
+
+ $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW$5);
+ $__default["default"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default["default"].Event(EVENT_HIDDEN$3, relatedTarget));
};
_proto.dispose = function dispose() {
- $.removeData(this._element, DATA_KEY$4);
- $(this._element).off(EVENT_KEY$4);
+ $__default["default"].removeData(this._element, DATA_KEY$6);
+ $__default["default"](this._element).off(EVENT_KEY$6);
this._element = null;
this._menu = null;
@@ -1732,13 +1714,13 @@
if (this._popper !== null) {
this._popper.scheduleUpdate();
}
- }; // Private
-
+ } // Private
+ ;
_proto._addEventListeners = function _addEventListeners() {
var _this = this;
- $(this._element).on(Event$4.CLICK, function (event) {
+ $__default["default"](this._element).on(EVENT_CLICK, function (event) {
event.preventDefault();
event.stopPropagation();
@@ -1747,8 +1729,8 @@
};
_proto._getConfig = function _getConfig(config) {
- config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config);
- Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
+ config = _extends({}, this.constructor.Default, $__default["default"](this._element).data(), config);
+ Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);
return config;
};
@@ -1757,7 +1739,7 @@
var parent = Dropdown._getParentFromElement(this._element);
if (parent) {
- this._menu = parent.querySelector(Selector$4.MENU);
+ this._menu = parent.querySelector(SELECTOR_MENU);
}
}
@@ -1765,57 +1747,56 @@
};
_proto._getPlacement = function _getPlacement() {
- var $parentDropdown = $(this._element.parentNode);
- var placement = AttachmentMap.BOTTOM; // Handle dropup
+ var $parentDropdown = $__default["default"](this._element.parentNode);
+ var placement = PLACEMENT_BOTTOM; // Handle dropup
- if ($parentDropdown.hasClass(ClassName$4.DROPUP)) {
- placement = AttachmentMap.TOP;
-
- if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {
- placement = AttachmentMap.TOPEND;
- }
- } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) {
- placement = AttachmentMap.RIGHT;
- } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) {
- placement = AttachmentMap.LEFT;
- } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {
- placement = AttachmentMap.BOTTOMEND;
+ if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {
+ placement = $__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;
+ } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {
+ placement = PLACEMENT_RIGHT;
+ } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {
+ placement = PLACEMENT_LEFT;
+ } else if ($__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {
+ placement = PLACEMENT_BOTTOMEND;
}
return placement;
};
_proto._detectNavbar = function _detectNavbar() {
- return $(this._element).closest('.navbar').length > 0;
+ return $__default["default"](this._element).closest('.navbar').length > 0;
};
- _proto._getPopperConfig = function _getPopperConfig() {
+ _proto._getOffset = function _getOffset() {
var _this2 = this;
- var offsetConf = {};
+ var offset = {};
if (typeof this._config.offset === 'function') {
- offsetConf.fn = function (data) {
- data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets) || {});
+ offset.fn = function (data) {
+ data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));
return data;
};
} else {
- offsetConf.offset = this._config.offset;
+ offset.offset = this._config.offset;
}
+ return offset;
+ };
+
+ _proto._getPopperConfig = function _getPopperConfig() {
var popperConfig = {
placement: this._getPlacement(),
modifiers: {
- offset: offsetConf,
+ offset: this._getOffset(),
flip: {
enabled: this._config.flip
},
preventOverflow: {
boundariesElement: this._config.boundary
}
- } // Disable Popper.js if we have a static display
-
- };
+ }
+ }; // Disable Popper if we have a static display
if (this._config.display === 'static') {
popperConfig.modifiers.applyStyle = {
@@ -1823,19 +1804,19 @@
};
}
- return popperConfig;
- }; // Static
-
+ return _extends({}, popperConfig, this._config.popperConfig);
+ } // Static
+ ;
Dropdown._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
- var data = $(this).data(DATA_KEY$4);
+ var data = $__default["default"](this).data(DATA_KEY$6);
var _config = typeof config === 'object' ? config : null;
if (!data) {
data = new Dropdown(this, _config);
- $(this).data(DATA_KEY$4, data);
+ $__default["default"](this).data(DATA_KEY$6, data);
}
if (typeof config === 'string') {
@@ -1853,12 +1834,12 @@
return;
}
- var toggles = [].slice.call(document.querySelectorAll(Selector$4.DATA_TOGGLE));
+ var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));
for (var i = 0, len = toggles.length; i < len; i++) {
var parent = Dropdown._getParentFromElement(toggles[i]);
- var context = $(toggles[i]).data(DATA_KEY$4);
+ var context = $__default["default"](toggles[i]).data(DATA_KEY$6);
var relatedTarget = {
relatedTarget: toggles[i]
};
@@ -1873,16 +1854,16 @@
var dropdownMenu = context._menu;
- if (!$(parent).hasClass(ClassName$4.SHOW)) {
+ if (!$__default["default"](parent).hasClass(CLASS_NAME_SHOW$5)) {
continue;
}
- if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {
+ if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default["default"].contains(parent, event.target)) {
continue;
}
- var hideEvent = $.Event(Event$4.HIDE, relatedTarget);
- $(parent).trigger(hideEvent);
+ var hideEvent = $__default["default"].Event(EVENT_HIDE$3, relatedTarget);
+ $__default["default"](parent).trigger(hideEvent);
if (hideEvent.isDefaultPrevented()) {
continue;
@@ -1891,12 +1872,17 @@
if ('ontouchstart' in document.documentElement) {
- $(document.body).children().off('mouseover', null, $.noop);
+ $__default["default"](document.body).children().off('mouseover', null, $__default["default"].noop);
}
toggles[i].setAttribute('aria-expanded', 'false');
- $(dropdownMenu).removeClass(ClassName$4.SHOW);
- $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
+
+ if (context._popper) {
+ context._popper.destroy();
+ }
+
+ $__default["default"](dropdownMenu).removeClass(CLASS_NAME_SHOW$5);
+ $__default["default"](parent).removeClass(CLASS_NAME_SHOW$5).trigger($__default["default"].Event(EVENT_HIDDEN$3, relatedTarget));
}
};
@@ -1909,8 +1895,8 @@
}
return parent || element.parentNode;
- }; // eslint-disable-next-line complexity
-
+ } // eslint-disable-next-line complexity
+ ;
Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
// If not input/textarea:
@@ -1920,32 +1906,37 @@
// - If key is other than escape
// - If key is not up or down => not a dropdown command
// - If trigger inside the menu => not a dropdown command
- if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector$4.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
+ if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE$1 && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default["default"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
return;
}
- event.preventDefault();
- event.stopPropagation();
-
- if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) {
+ if (this.disabled || $__default["default"](this).hasClass(CLASS_NAME_DISABLED$1)) {
return;
}
var parent = Dropdown._getParentFromElement(this);
- var isActive = $(parent).hasClass(ClassName$4.SHOW);
+ var isActive = $__default["default"](parent).hasClass(CLASS_NAME_SHOW$5);
+
+ if (!isActive && event.which === ESCAPE_KEYCODE$1) {
+ return;
+ }
+
+ event.preventDefault();
+ event.stopPropagation();
- if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
- if (event.which === ESCAPE_KEYCODE) {
- var toggle = parent.querySelector(Selector$4.DATA_TOGGLE);
- $(toggle).trigger('focus');
+ if (!isActive || event.which === ESCAPE_KEYCODE$1 || event.which === SPACE_KEYCODE) {
+ if (event.which === ESCAPE_KEYCODE$1) {
+ $__default["default"](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');
}
- $(this).trigger('click');
+ $__default["default"](this).trigger('click');
return;
}
- var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS));
+ var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {
+ return $__default["default"](item).is(':visible');
+ });
if (items.length === 0) {
return;
@@ -1973,118 +1964,105 @@
_createClass(Dropdown, null, [{
key: "VERSION",
get: function get() {
- return VERSION$4;
+ return VERSION$6;
}
}, {
key: "Default",
get: function get() {
- return Default$2;
+ return Default$5;
}
}, {
key: "DefaultType",
get: function get() {
- return DefaultType$2;
+ return DefaultType$5;
}
}]);
return Dropdown;
}();
/**
- * ------------------------------------------------------------------------
- * Data Api implementation
- * ------------------------------------------------------------------------
+ * Data API implementation
*/
- $(document).on(Event$4.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event$4.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler).on(Event$4.CLICK_DATA_API + " " + Event$4.KEYUP_DATA_API, Dropdown._clearMenus).on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {
+ $__default["default"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$2 + " " + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {
event.preventDefault();
event.stopPropagation();
- Dropdown._jQueryInterface.call($(this), 'toggle');
- }).on(Event$4.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) {
+ Dropdown._jQueryInterface.call($__default["default"](this), 'toggle');
+ }).on(EVENT_CLICK_DATA_API$2, SELECTOR_FORM_CHILD, function (e) {
e.stopPropagation();
});
/**
- * ------------------------------------------------------------------------
* jQuery
- * ------------------------------------------------------------------------
*/
- $.fn[NAME$4] = Dropdown._jQueryInterface;
- $.fn[NAME$4].Constructor = Dropdown;
+ $__default["default"].fn[NAME$6] = Dropdown._jQueryInterface;
+ $__default["default"].fn[NAME$6].Constructor = Dropdown;
- $.fn[NAME$4].noConflict = function () {
- $.fn[NAME$4] = JQUERY_NO_CONFLICT$4;
+ $__default["default"].fn[NAME$6].noConflict = function () {
+ $__default["default"].fn[NAME$6] = JQUERY_NO_CONFLICT$6;
return Dropdown._jQueryInterface;
};
/**
- * ------------------------------------------------------------------------
* Constants
- * ------------------------------------------------------------------------
*/
var NAME$5 = 'modal';
- var VERSION$5 = '4.2.1';
+ var VERSION$5 = '4.6.1';
var DATA_KEY$5 = 'bs.modal';
var EVENT_KEY$5 = "." + DATA_KEY$5;
- var DATA_API_KEY$5 = '.data-api';
- var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5];
- var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key
+ var DATA_API_KEY$2 = '.data-api';
+ var JQUERY_NO_CONFLICT$5 = $__default["default"].fn[NAME$5];
+ var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
- var Default$3 = {
+ var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';
+ var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';
+ var CLASS_NAME_BACKDROP = 'modal-backdrop';
+ var CLASS_NAME_OPEN = 'modal-open';
+ var CLASS_NAME_FADE$4 = 'fade';
+ var CLASS_NAME_SHOW$4 = 'show';
+ var CLASS_NAME_STATIC = 'modal-static';
+ var EVENT_HIDE$2 = "hide" + EVENT_KEY$5;
+ var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5;
+ var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5;
+ var EVENT_SHOW$2 = "show" + EVENT_KEY$5;
+ var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5;
+ var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5;
+ var EVENT_RESIZE = "resize" + EVENT_KEY$5;
+ var EVENT_CLICK_DISMISS$1 = "click.dismiss" + EVENT_KEY$5;
+ var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5;
+ var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5;
+ var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5;
+ var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$5 + DATA_API_KEY$2;
+ var SELECTOR_DIALOG = '.modal-dialog';
+ var SELECTOR_MODAL_BODY = '.modal-body';
+ var SELECTOR_DATA_TOGGLE$1 = '[data-toggle="modal"]';
+ var SELECTOR_DATA_DISMISS$1 = '[data-dismiss="modal"]';
+ var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
+ var SELECTOR_STICKY_CONTENT = '.sticky-top';
+ var Default$4 = {
backdrop: true,
keyboard: true,
focus: true,
show: true
};
- var DefaultType$3 = {
+ var DefaultType$4 = {
backdrop: '(boolean|string)',
keyboard: 'boolean',
focus: 'boolean',
show: 'boolean'
};
- var Event$5 = {
- HIDE: "hide" + EVENT_KEY$5,
- HIDDEN: "hidden" + EVENT_KEY$5,
- SHOW: "show" + EVENT_KEY$5,
- SHOWN: "shown" + EVENT_KEY$5,
- FOCUSIN: "focusin" + EVENT_KEY$5,
- RESIZE: "resize" + EVENT_KEY$5,
- CLICK_DISMISS: "click.dismiss" + EVENT_KEY$5,
- KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY$5,
- MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY$5,
- MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY$5,
- CLICK_DATA_API: "click" + EVENT_KEY$5 + DATA_API_KEY$5
- };
- var ClassName$5 = {
- SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
- BACKDROP: 'modal-backdrop',
- OPEN: 'modal-open',
- FADE: 'fade',
- SHOW: 'show'
- };
- var Selector$5 = {
- DIALOG: '.modal-dialog',
- DATA_TOGGLE: '[data-toggle="modal"]',
- DATA_DISMISS: '[data-dismiss="modal"]',
- FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
- STICKY_CONTENT: '.sticky-top'
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
- };
+ /**
+ * Class definition
+ */
- var Modal =
- /*#__PURE__*/
- function () {
+ var Modal = /*#__PURE__*/function () {
function Modal(element, config) {
this._config = this._getConfig(config);
this._element = element;
- this._dialog = element.querySelector(Selector$5.DIALOG);
+ this._dialog = element.querySelector(SELECTOR_DIALOG);
this._backdrop = null;
this._isShown = false;
this._isBodyOverflowing = false;
@@ -2108,23 +2086,23 @@
return;
}
- if ($(this._element).hasClass(ClassName$5.FADE)) {
- this._isTransitioning = true;
- }
-
- var showEvent = $.Event(Event$5.SHOW, {
+ var showEvent = $__default["default"].Event(EVENT_SHOW$2, {
relatedTarget: relatedTarget
});
- $(this._element).trigger(showEvent);
+ $__default["default"](this._element).trigger(showEvent);
- if (this._isShown || showEvent.isDefaultPrevented()) {
+ if (showEvent.isDefaultPrevented()) {
return;
}
this._isShown = true;
- this._checkScrollbar();
-
+ if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE$4)) {
+ this._isTransitioning = true;
+ }
+
+ this._checkScrollbar();
+
this._setScrollbar();
this._adjustDialog();
@@ -2133,12 +2111,12 @@
this._setResizeEvent();
- $(this._element).on(Event$5.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {
+ $__default["default"](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function (event) {
return _this.hide(event);
});
- $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, function () {
- $(_this._element).one(Event$5.MOUSEUP_DISMISS, function (event) {
- if ($(event.target).is(_this._element)) {
+ $__default["default"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {
+ $__default["default"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {
+ if ($__default["default"](event.target).is(_this._element)) {
_this._ignoreBackdropClick = true;
}
});
@@ -2160,15 +2138,15 @@
return;
}
- var hideEvent = $.Event(Event$5.HIDE);
- $(this._element).trigger(hideEvent);
+ var hideEvent = $__default["default"].Event(EVENT_HIDE$2);
+ $__default["default"](this._element).trigger(hideEvent);
if (!this._isShown || hideEvent.isDefaultPrevented()) {
return;
}
this._isShown = false;
- var transition = $(this._element).hasClass(ClassName$5.FADE);
+ var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$4);
if (transition) {
this._isTransitioning = true;
@@ -2178,14 +2156,14 @@
this._setResizeEvent();
- $(document).off(Event$5.FOCUSIN);
- $(this._element).removeClass(ClassName$5.SHOW);
- $(this._element).off(Event$5.CLICK_DISMISS);
- $(this._dialog).off(Event$5.MOUSEDOWN_DISMISS);
+ $__default["default"](document).off(EVENT_FOCUSIN);
+ $__default["default"](this._element).removeClass(CLASS_NAME_SHOW$4);
+ $__default["default"](this._element).off(EVENT_CLICK_DISMISS$1);
+ $__default["default"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);
if (transition) {
var transitionDuration = Util.getTransitionDurationFromElement(this._element);
- $(this._element).one(Util.TRANSITION_END, function (event) {
+ $__default["default"](this._element).one(Util.TRANSITION_END, function (event) {
return _this2._hideModal(event);
}).emulateTransitionEnd(transitionDuration);
} else {
@@ -2195,16 +2173,16 @@
_proto.dispose = function dispose() {
[window, this._element, this._dialog].forEach(function (htmlElement) {
- return $(htmlElement).off(EVENT_KEY$5);
+ return $__default["default"](htmlElement).off(EVENT_KEY$5);
});
/**
- * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`
+ * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
* Do not move `document` in `htmlElements` array
- * It will remove `Event.CLICK_DATA_API` event that should remain
+ * It will remove `EVENT_CLICK_DATA_API` event that should remain
*/
- $(document).off(Event$5.FOCUSIN);
- $.removeData(this._element, DATA_KEY$5);
+ $__default["default"](document).off(EVENT_FOCUSIN);
+ $__default["default"].removeData(this._element, DATA_KEY$5);
this._config = null;
this._element = null;
this._dialog = null;
@@ -2218,19 +2196,53 @@
_proto.handleUpdate = function handleUpdate() {
this._adjustDialog();
- }; // Private
-
+ } // Private
+ ;
_proto._getConfig = function _getConfig(config) {
- config = _objectSpread({}, Default$3, config);
- Util.typeCheckConfig(NAME$5, config, DefaultType$3);
+ config = _extends({}, Default$4, config);
+ Util.typeCheckConfig(NAME$5, config, DefaultType$4);
return config;
};
- _proto._showElement = function _showElement(relatedTarget) {
+ _proto._triggerBackdropTransition = function _triggerBackdropTransition() {
var _this3 = this;
- var transition = $(this._element).hasClass(ClassName$5.FADE);
+ var hideEventPrevented = $__default["default"].Event(EVENT_HIDE_PREVENTED);
+ $__default["default"](this._element).trigger(hideEventPrevented);
+
+ if (hideEventPrevented.isDefaultPrevented()) {
+ return;
+ }
+
+ var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
+
+ if (!isModalOverflowing) {
+ this._element.style.overflowY = 'hidden';
+ }
+
+ this._element.classList.add(CLASS_NAME_STATIC);
+
+ var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);
+ $__default["default"](this._element).off(Util.TRANSITION_END);
+ $__default["default"](this._element).one(Util.TRANSITION_END, function () {
+ _this3._element.classList.remove(CLASS_NAME_STATIC);
+
+ if (!isModalOverflowing) {
+ $__default["default"](_this3._element).one(Util.TRANSITION_END, function () {
+ _this3._element.style.overflowY = '';
+ }).emulateTransitionEnd(_this3._element, modalTransitionDuration);
+ }
+ }).emulateTransitionEnd(modalTransitionDuration);
+
+ this._element.focus();
+ };
+
+ _proto._showElement = function _showElement(relatedTarget) {
+ var _this4 = this;
+
+ var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$4);
+ var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;
if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
// Don't move modal's DOM position
@@ -2243,80 +2255,88 @@
this._element.setAttribute('aria-modal', true);
- this._element.scrollTop = 0;
+ this._element.setAttribute('role', 'dialog');
+
+ if ($__default["default"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {
+ modalBody.scrollTop = 0;
+ } else {
+ this._element.scrollTop = 0;
+ }
if (transition) {
Util.reflow(this._element);
}
- $(this._element).addClass(ClassName$5.SHOW);
+ $__default["default"](this._element).addClass(CLASS_NAME_SHOW$4);
if (this._config.focus) {
this._enforceFocus();
}
- var shownEvent = $.Event(Event$5.SHOWN, {
+ var shownEvent = $__default["default"].Event(EVENT_SHOWN$2, {
relatedTarget: relatedTarget
});
var transitionComplete = function transitionComplete() {
- if (_this3._config.focus) {
- _this3._element.focus();
+ if (_this4._config.focus) {
+ _this4._element.focus();
}
- _this3._isTransitioning = false;
- $(_this3._element).trigger(shownEvent);
+ _this4._isTransitioning = false;
+ $__default["default"](_this4._element).trigger(shownEvent);
};
if (transition) {
var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);
- $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
+ $__default["default"](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
} else {
transitionComplete();
}
};
_proto._enforceFocus = function _enforceFocus() {
- var _this4 = this;
+ var _this5 = this;
- $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop
- .on(Event$5.FOCUSIN, function (event) {
- if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) {
- _this4._element.focus();
+ $__default["default"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop
+ .on(EVENT_FOCUSIN, function (event) {
+ if (document !== event.target && _this5._element !== event.target && $__default["default"](_this5._element).has(event.target).length === 0) {
+ _this5._element.focus();
}
});
};
_proto._setEscapeEvent = function _setEscapeEvent() {
- var _this5 = this;
+ var _this6 = this;
- if (this._isShown && this._config.keyboard) {
- $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) {
- if (event.which === ESCAPE_KEYCODE$1) {
+ if (this._isShown) {
+ $__default["default"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {
+ if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {
event.preventDefault();
- _this5.hide();
+ _this6.hide();
+ } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {
+ _this6._triggerBackdropTransition();
}
});
} else if (!this._isShown) {
- $(this._element).off(Event$5.KEYDOWN_DISMISS);
+ $__default["default"](this._element).off(EVENT_KEYDOWN_DISMISS);
}
};
_proto._setResizeEvent = function _setResizeEvent() {
- var _this6 = this;
+ var _this7 = this;
if (this._isShown) {
- $(window).on(Event$5.RESIZE, function (event) {
- return _this6.handleUpdate(event);
+ $__default["default"](window).on(EVENT_RESIZE, function (event) {
+ return _this7.handleUpdate(event);
});
} else {
- $(window).off(Event$5.RESIZE);
+ $__default["default"](window).off(EVENT_RESIZE);
}
};
_proto._hideModal = function _hideModal() {
- var _this7 = this;
+ var _this8 = this;
this._element.style.display = 'none';
@@ -2324,43 +2344,45 @@
this._element.removeAttribute('aria-modal');
+ this._element.removeAttribute('role');
+
this._isTransitioning = false;
this._showBackdrop(function () {
- $(document.body).removeClass(ClassName$5.OPEN);
+ $__default["default"](document.body).removeClass(CLASS_NAME_OPEN);
- _this7._resetAdjustments();
+ _this8._resetAdjustments();
- _this7._resetScrollbar();
+ _this8._resetScrollbar();
- $(_this7._element).trigger(Event$5.HIDDEN);
+ $__default["default"](_this8._element).trigger(EVENT_HIDDEN$2);
});
};
_proto._removeBackdrop = function _removeBackdrop() {
if (this._backdrop) {
- $(this._backdrop).remove();
+ $__default["default"](this._backdrop).remove();
this._backdrop = null;
}
};
_proto._showBackdrop = function _showBackdrop(callback) {
- var _this8 = this;
+ var _this9 = this;
- var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : '';
+ var animate = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$4) ? CLASS_NAME_FADE$4 : '';
if (this._isShown && this._config.backdrop) {
this._backdrop = document.createElement('div');
- this._backdrop.className = ClassName$5.BACKDROP;
+ this._backdrop.className = CLASS_NAME_BACKDROP;
if (animate) {
this._backdrop.classList.add(animate);
}
- $(this._backdrop).appendTo(document.body);
- $(this._element).on(Event$5.CLICK_DISMISS, function (event) {
- if (_this8._ignoreBackdropClick) {
- _this8._ignoreBackdropClick = false;
+ $__default["default"](this._backdrop).appendTo(document.body);
+ $__default["default"](this._element).on(EVENT_CLICK_DISMISS$1, function (event) {
+ if (_this9._ignoreBackdropClick) {
+ _this9._ignoreBackdropClick = false;
return;
}
@@ -2368,10 +2390,10 @@
return;
}
- if (_this8._config.backdrop === 'static') {
- _this8._element.focus();
+ if (_this9._config.backdrop === 'static') {
+ _this9._triggerBackdropTransition();
} else {
- _this8.hide();
+ _this9.hide();
}
});
@@ -2379,7 +2401,7 @@
Util.reflow(this._backdrop);
}
- $(this._backdrop).addClass(ClassName$5.SHOW);
+ $__default["default"](this._backdrop).addClass(CLASS_NAME_SHOW$4);
if (!callback) {
return;
@@ -2391,33 +2413,33 @@
}
var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
- $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
+ $__default["default"](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
} else if (!this._isShown && this._backdrop) {
- $(this._backdrop).removeClass(ClassName$5.SHOW);
+ $__default["default"](this._backdrop).removeClass(CLASS_NAME_SHOW$4);
var callbackRemove = function callbackRemove() {
- _this8._removeBackdrop();
+ _this9._removeBackdrop();
if (callback) {
callback();
}
};
- if ($(this._element).hasClass(ClassName$5.FADE)) {
+ if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE$4)) {
var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
- $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
+ $__default["default"](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
} else {
callbackRemove();
}
} else if (callback) {
callback();
}
- }; // ----------------------------------------------------------------------
+ } // ----------------------------------------------------------------------
// the following methods are used to handle overflowing modals
// todo (fat): these should probably be refactored out of modal.js
// ----------------------------------------------------------------------
-
+ ;
_proto._adjustDialog = function _adjustDialog() {
var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
@@ -2438,82 +2460,82 @@
_proto._checkScrollbar = function _checkScrollbar() {
var rect = document.body.getBoundingClientRect();
- this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
+ this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
this._scrollbarWidth = this._getScrollbarWidth();
};
_proto._setScrollbar = function _setScrollbar() {
- var _this9 = this;
+ var _this10 = this;
if (this._isBodyOverflowing) {
// Note: DOMNode.style.paddingRight returns the actual value or '' if not set
// while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
- var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));
- var stickyContent = [].slice.call(document.querySelectorAll(Selector$5.STICKY_CONTENT)); // Adjust fixed content padding
+ var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
+ var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding
- $(fixedContent).each(function (index, element) {
+ $__default["default"](fixedContent).each(function (index, element) {
var actualPadding = element.style.paddingRight;
- var calculatedPadding = $(element).css('padding-right');
- $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
+ var calculatedPadding = $__default["default"](element).css('padding-right');
+ $__default["default"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px");
}); // Adjust sticky content margin
- $(stickyContent).each(function (index, element) {
+ $__default["default"](stickyContent).each(function (index, element) {
var actualMargin = element.style.marginRight;
- var calculatedMargin = $(element).css('margin-right');
- $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
+ var calculatedMargin = $__default["default"](element).css('margin-right');
+ $__default["default"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px");
}); // Adjust body padding
var actualPadding = document.body.style.paddingRight;
- var calculatedPadding = $(document.body).css('padding-right');
- $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
+ var calculatedPadding = $__default["default"](document.body).css('padding-right');
+ $__default["default"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
}
- $(document.body).addClass(ClassName$5.OPEN);
+ $__default["default"](document.body).addClass(CLASS_NAME_OPEN);
};
_proto._resetScrollbar = function _resetScrollbar() {
// Restore fixed content padding
- var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));
- $(fixedContent).each(function (index, element) {
- var padding = $(element).data('padding-right');
- $(element).removeData('padding-right');
+ var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
+ $__default["default"](fixedContent).each(function (index, element) {
+ var padding = $__default["default"](element).data('padding-right');
+ $__default["default"](element).removeData('padding-right');
element.style.paddingRight = padding ? padding : '';
}); // Restore sticky content
- var elements = [].slice.call(document.querySelectorAll("" + Selector$5.STICKY_CONTENT));
- $(elements).each(function (index, element) {
- var margin = $(element).data('margin-right');
+ var elements = [].slice.call(document.querySelectorAll("" + SELECTOR_STICKY_CONTENT));
+ $__default["default"](elements).each(function (index, element) {
+ var margin = $__default["default"](element).data('margin-right');
if (typeof margin !== 'undefined') {
- $(element).css('margin-right', margin).removeData('margin-right');
+ $__default["default"](element).css('margin-right', margin).removeData('margin-right');
}
}); // Restore body padding
- var padding = $(document.body).data('padding-right');
- $(document.body).removeData('padding-right');
+ var padding = $__default["default"](document.body).data('padding-right');
+ $__default["default"](document.body).removeData('padding-right');
document.body.style.paddingRight = padding ? padding : '';
};
_proto._getScrollbarWidth = function _getScrollbarWidth() {
// thx d.walsh
var scrollDiv = document.createElement('div');
- scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER;
+ scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;
document.body.appendChild(scrollDiv);
var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
document.body.removeChild(scrollDiv);
return scrollbarWidth;
- }; // Static
-
+ } // Static
+ ;
Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
return this.each(function () {
- var data = $(this).data(DATA_KEY$5);
+ var data = $__default["default"](this).data(DATA_KEY$5);
- var _config = _objectSpread({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {});
+ var _config = _extends({}, Default$4, $__default["default"](this).data(), typeof config === 'object' && config ? config : {});
if (!data) {
data = new Modal(this, _config);
- $(this).data(DATA_KEY$5, data);
+ $__default["default"](this).data(DATA_KEY$5, data);
}
if (typeof config === 'string') {
@@ -2536,21 +2558,19 @@
}, {
key: "Default",
get: function get() {
- return Default$3;
+ return Default$4;
}
}]);
return Modal;
}();
/**
- * ------------------------------------------------------------------------
- * Data Api implementation
- * ------------------------------------------------------------------------
+ * Data API implementation
*/
- $(document).on(Event$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {
- var _this10 = this;
+ $__default["default"](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {
+ var _this11 = this;
var target;
var selector = Util.getSelectorFromElement(this);
@@ -2559,76 +2579,191 @@
target = document.querySelector(selector);
}
- var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data());
+ var config = $__default["default"](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default["default"](target).data(), $__default["default"](this).data());
if (this.tagName === 'A' || this.tagName === 'AREA') {
event.preventDefault();
}
- var $target = $(target).one(Event$5.SHOW, function (showEvent) {
+ var $target = $__default["default"](target).one(EVENT_SHOW$2, function (showEvent) {
if (showEvent.isDefaultPrevented()) {
// Only register focus restorer if modal will actually get shown
return;
}
- $target.one(Event$5.HIDDEN, function () {
- if ($(_this10).is(':visible')) {
- _this10.focus();
+ $target.one(EVENT_HIDDEN$2, function () {
+ if ($__default["default"](_this11).is(':visible')) {
+ _this11.focus();
}
});
});
- Modal._jQueryInterface.call($(target), config, this);
+ Modal._jQueryInterface.call($__default["default"](target), config, this);
});
/**
- * ------------------------------------------------------------------------
* jQuery
- * ------------------------------------------------------------------------
*/
- $.fn[NAME$5] = Modal._jQueryInterface;
- $.fn[NAME$5].Constructor = Modal;
+ $__default["default"].fn[NAME$5] = Modal._jQueryInterface;
+ $__default["default"].fn[NAME$5].Constructor = Modal;
- $.fn[NAME$5].noConflict = function () {
- $.fn[NAME$5] = JQUERY_NO_CONFLICT$5;
+ $__default["default"].fn[NAME$5].noConflict = function () {
+ $__default["default"].fn[NAME$5] = JQUERY_NO_CONFLICT$5;
return Modal._jQueryInterface;
};
/**
- * ------------------------------------------------------------------------
+ * --------------------------------------------------------------------------
+ * Bootstrap (v4.6.1): tools/sanitizer.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];
+ var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
+ var DefaultWhitelist = {
+ // Global attributes allowed on any supplied element below.
+ '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
+ a: ['target', 'href', 'title', 'rel'],
+ area: [],
+ b: [],
+ br: [],
+ col: [],
+ code: [],
+ div: [],
+ em: [],
+ hr: [],
+ h1: [],
+ h2: [],
+ h3: [],
+ h4: [],
+ h5: [],
+ h6: [],
+ i: [],
+ img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
+ li: [],
+ ol: [],
+ p: [],
+ pre: [],
+ s: [],
+ small: [],
+ span: [],
+ sub: [],
+ sup: [],
+ strong: [],
+ u: [],
+ ul: []
+ };
+ /**
+ * A pattern that recognizes a commonly useful subset of URLs that are safe.
+ *
+ * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
+ */
+
+ var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;
+ /**
+ * A pattern that matches safe data URLs. Only matches image, video and audio types.
+ *
+ * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
+ */
+
+ var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
+
+ function allowedAttribute(attr, allowedAttributeList) {
+ var attrName = attr.nodeName.toLowerCase();
+
+ if (allowedAttributeList.indexOf(attrName) !== -1) {
+ if (uriAttrs.indexOf(attrName) !== -1) {
+ return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));
+ }
+
+ return true;
+ }
+
+ var regExp = allowedAttributeList.filter(function (attrRegex) {
+ return attrRegex instanceof RegExp;
+ }); // Check if a regular expression validates the attribute.
+
+ for (var i = 0, len = regExp.length; i < len; i++) {
+ if (regExp[i].test(attrName)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
+ if (unsafeHtml.length === 0) {
+ return unsafeHtml;
+ }
+
+ if (sanitizeFn && typeof sanitizeFn === 'function') {
+ return sanitizeFn(unsafeHtml);
+ }
+
+ var domParser = new window.DOMParser();
+ var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
+ var whitelistKeys = Object.keys(whiteList);
+ var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));
+
+ var _loop = function _loop(i, len) {
+ var el = elements[i];
+ var elName = el.nodeName.toLowerCase();
+
+ if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {
+ el.parentNode.removeChild(el);
+ return "continue";
+ }
+
+ var attributeList = [].slice.call(el.attributes); // eslint-disable-next-line unicorn/prefer-spread
+
+ var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);
+ attributeList.forEach(function (attr) {
+ if (!allowedAttribute(attr, whitelistedAttributes)) {
+ el.removeAttribute(attr.nodeName);
+ }
+ });
+ };
+
+ for (var i = 0, len = elements.length; i < len; i++) {
+ var _ret = _loop(i);
+
+ if (_ret === "continue") continue;
+ }
+
+ return createdDocument.body.innerHTML;
+ }
+
+ /**
* Constants
- * ------------------------------------------------------------------------
*/
- var NAME$6 = 'tooltip';
- var VERSION$6 = '4.2.1';
- var DATA_KEY$6 = 'bs.tooltip';
- var EVENT_KEY$6 = "." + DATA_KEY$6;
- var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];
- var CLASS_PREFIX = 'bs-tooltip';
- var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
- var DefaultType$4 = {
- animation: 'boolean',
- template: 'string',
- title: '(string|element|function)',
- trigger: 'string',
- delay: '(number|object)',
- html: 'boolean',
- selector: '(string|boolean)',
- placement: '(string|function)',
- offset: '(number|string)',
- container: '(string|element|boolean)',
- fallbackPlacement: '(string|array)',
- boundary: '(string|element)'
- };
- var AttachmentMap$1 = {
+ var NAME$4 = 'tooltip';
+ var VERSION$4 = '4.6.1';
+ var DATA_KEY$4 = 'bs.tooltip';
+ var EVENT_KEY$4 = "." + DATA_KEY$4;
+ var JQUERY_NO_CONFLICT$4 = $__default["default"].fn[NAME$4];
+ var CLASS_PREFIX$1 = 'bs-tooltip';
+ var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g');
+ var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];
+ var CLASS_NAME_FADE$3 = 'fade';
+ var CLASS_NAME_SHOW$3 = 'show';
+ var HOVER_STATE_SHOW = 'show';
+ var HOVER_STATE_OUT = 'out';
+ var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
+ var SELECTOR_ARROW = '.arrow';
+ var TRIGGER_HOVER = 'hover';
+ var TRIGGER_FOCUS = 'focus';
+ var TRIGGER_CLICK = 'click';
+ var TRIGGER_MANUAL = 'manual';
+ var AttachmentMap = {
AUTO: 'auto',
TOP: 'top',
RIGHT: 'right',
BOTTOM: 'bottom',
LEFT: 'left'
};
- var Default$4 = {
+ var Default$3 = {
animation: true,
template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>',
trigger: 'hover focus',
@@ -2640,57 +2775,53 @@
offset: 0,
container: false,
fallbackPlacement: 'flip',
- boundary: 'scrollParent'
- };
- var HoverState = {
- SHOW: 'show',
- OUT: 'out'
- };
- var Event$6 = {
- HIDE: "hide" + EVENT_KEY$6,
- HIDDEN: "hidden" + EVENT_KEY$6,
- SHOW: "show" + EVENT_KEY$6,
- SHOWN: "shown" + EVENT_KEY$6,
- INSERTED: "inserted" + EVENT_KEY$6,
- CLICK: "click" + EVENT_KEY$6,
- FOCUSIN: "focusin" + EVENT_KEY$6,
- FOCUSOUT: "focusout" + EVENT_KEY$6,
- MOUSEENTER: "mouseenter" + EVENT_KEY$6,
- MOUSELEAVE: "mouseleave" + EVENT_KEY$6
- };
- var ClassName$6 = {
- FADE: 'fade',
- SHOW: 'show'
+ boundary: 'scrollParent',
+ customClass: '',
+ sanitize: true,
+ sanitizeFn: null,
+ whiteList: DefaultWhitelist,
+ popperConfig: null
};
- var Selector$6 = {
- TOOLTIP: '.tooltip',
- TOOLTIP_INNER: '.tooltip-inner',
- ARROW: '.arrow'
+ var DefaultType$3 = {
+ animation: 'boolean',
+ template: 'string',
+ title: '(string|element|function)',
+ trigger: 'string',
+ delay: '(number|object)',
+ html: 'boolean',
+ selector: '(string|boolean)',
+ placement: '(string|function)',
+ offset: '(number|string|function)',
+ container: '(string|element|boolean)',
+ fallbackPlacement: '(string|array)',
+ boundary: '(string|element)',
+ customClass: '(string|function)',
+ sanitize: 'boolean',
+ sanitizeFn: '(null|function)',
+ whiteList: 'object',
+ popperConfig: '(null|object)'
};
- var Trigger = {
- HOVER: 'hover',
- FOCUS: 'focus',
- CLICK: 'click',
- MANUAL: 'manual'
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
+ var Event$1 = {
+ HIDE: "hide" + EVENT_KEY$4,
+ HIDDEN: "hidden" + EVENT_KEY$4,
+ SHOW: "show" + EVENT_KEY$4,
+ SHOWN: "shown" + EVENT_KEY$4,
+ INSERTED: "inserted" + EVENT_KEY$4,
+ CLICK: "click" + EVENT_KEY$4,
+ FOCUSIN: "focusin" + EVENT_KEY$4,
+ FOCUSOUT: "focusout" + EVENT_KEY$4,
+ MOUSEENTER: "mouseenter" + EVENT_KEY$4,
+ MOUSELEAVE: "mouseleave" + EVENT_KEY$4
};
+ /**
+ * Class definition
+ */
- var Tooltip =
- /*#__PURE__*/
- function () {
+ var Tooltip = /*#__PURE__*/function () {
function Tooltip(element, config) {
- /**
- * Check for Popper dependency
- * Popper - https://popper.js.org
- */
- if (typeof Popper === 'undefined') {
- throw new TypeError('Bootstrap\'s tooltips require Popper.js (https://popper.js.org/)');
- } // private
+ if (typeof Popper__default["default"] === 'undefined') {
+ throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
+ } // Private
this._isEnabled = true;
@@ -2729,11 +2860,11 @@
if (event) {
var dataKey = this.constructor.DATA_KEY;
- var context = $(event.currentTarget).data(dataKey);
+ var context = $__default["default"](event.currentTarget).data(dataKey);
if (!context) {
context = new this.constructor(event.currentTarget, this._getDelegateConfig());
- $(event.currentTarget).data(dataKey, context);
+ $__default["default"](event.currentTarget).data(dataKey, context);
}
context._activeTrigger.click = !context._activeTrigger.click;
@@ -2744,7 +2875,7 @@
context._leave(null, context);
}
} else {
- if ($(this.getTipElement()).hasClass(ClassName$6.SHOW)) {
+ if ($__default["default"](this.getTipElement()).hasClass(CLASS_NAME_SHOW$3)) {
this._leave(null, this);
return;
@@ -2756,12 +2887,12 @@
_proto.dispose = function dispose() {
clearTimeout(this._timeout);
- $.removeData(this.element, this.constructor.DATA_KEY);
- $(this.element).off(this.constructor.EVENT_KEY);
- $(this.element).closest('.modal').off('hide.bs.modal');
+ $__default["default"].removeData(this.element, this.constructor.DATA_KEY);
+ $__default["default"](this.element).off(this.constructor.EVENT_KEY);
+ $__default["default"](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);
if (this.tip) {
- $(this.tip).remove();
+ $__default["default"](this.tip).remove();
}
this._isEnabled = null;
@@ -2769,7 +2900,7 @@
this._hoverState = null;
this._activeTrigger = null;
- if (this._popper !== null) {
+ if (this._popper) {
this._popper.destroy();
}
@@ -2782,16 +2913,16 @@
_proto.show = function show() {
var _this = this;
- if ($(this.element).css('display') === 'none') {
+ if ($__default["default"](this.element).css('display') === 'none') {
throw new Error('Please use show on visible elements');
}
- var showEvent = $.Event(this.constructor.Event.SHOW);
+ var showEvent = $__default["default"].Event(this.constructor.Event.SHOW);
if (this.isWithContent() && this._isEnabled) {
- $(this.element).trigger(showEvent);
+ $__default["default"](this.element).trigger(showEvent);
var shadowRoot = Util.findShadowRoot(this.element);
- var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);
+ var isInTheDom = $__default["default"].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);
if (showEvent.isDefaultPrevented() || !isInTheDom) {
return;
@@ -2804,7 +2935,7 @@
this.setContent();
if (this.config.animation) {
- $(tip).addClass(ClassName$6.FADE);
+ $__default["default"](tip).addClass(CLASS_NAME_FADE$3);
}
var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
@@ -2815,45 +2946,22 @@
var container = this._getContainer();
- $(tip).data(this.constructor.DATA_KEY, this);
+ $__default["default"](tip).data(this.constructor.DATA_KEY, this);
- if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {
- $(tip).appendTo(container);
+ if (!$__default["default"].contains(this.element.ownerDocument.documentElement, this.tip)) {
+ $__default["default"](tip).appendTo(container);
}
- $(this.element).trigger(this.constructor.Event.INSERTED);
- this._popper = new Popper(this.element, tip, {
- placement: attachment,
- modifiers: {
- offset: {
- offset: this.config.offset
- },
- flip: {
- behavior: this.config.fallbackPlacement
- },
- arrow: {
- element: Selector$6.ARROW
- },
- preventOverflow: {
- boundariesElement: this.config.boundary
- }
- },
- onCreate: function onCreate(data) {
- if (data.originalPlacement !== data.placement) {
- _this._handlePopperPlacementChange(data);
- }
- },
- onUpdate: function onUpdate(data) {
- return _this._handlePopperPlacementChange(data);
- }
- });
- $(tip).addClass(ClassName$6.SHOW); // If this is a touch-enabled device we add extra
+ $__default["default"](this.element).trigger(this.constructor.Event.INSERTED);
+ this._popper = new Popper__default["default"](this.element, tip, this._getPopperConfig(attachment));
+ $__default["default"](tip).addClass(CLASS_NAME_SHOW$3);
+ $__default["default"](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra
// empty mouseover listeners to the body's immediate children;
// only needed because of broken event delegation on iOS
// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
if ('ontouchstart' in document.documentElement) {
- $(document.body).children().on('mouseover', null, $.noop);
+ $__default["default"](document.body).children().on('mouseover', null, $__default["default"].noop);
}
var complete = function complete() {
@@ -2863,16 +2971,16 @@
var prevHoverState = _this._hoverState;
_this._hoverState = null;
- $(_this.element).trigger(_this.constructor.Event.SHOWN);
+ $__default["default"](_this.element).trigger(_this.constructor.Event.SHOWN);
- if (prevHoverState === HoverState.OUT) {
+ if (prevHoverState === HOVER_STATE_OUT) {
_this._leave(null, _this);
}
};
- if ($(this.tip).hasClass(ClassName$6.FADE)) {
+ if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE$3)) {
var transitionDuration = Util.getTransitionDurationFromElement(this.tip);
- $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
+ $__default["default"](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
} else {
complete();
}
@@ -2883,10 +2991,10 @@
var _this2 = this;
var tip = this.getTipElement();
- var hideEvent = $.Event(this.constructor.Event.HIDE);
+ var hideEvent = $__default["default"].Event(this.constructor.Event.HIDE);
var complete = function complete() {
- if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
+ if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {
tip.parentNode.removeChild(tip);
}
@@ -2894,7 +3002,7 @@
_this2.element.removeAttribute('aria-describedby');
- $(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
+ $__default["default"](_this2.element).trigger(_this2.constructor.Event.HIDDEN);
if (_this2._popper !== null) {
_this2._popper.destroy();
@@ -2905,26 +3013,26 @@
}
};
- $(this.element).trigger(hideEvent);
+ $__default["default"](this.element).trigger(hideEvent);
if (hideEvent.isDefaultPrevented()) {
return;
}
- $(tip).removeClass(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra
+ $__default["default"](tip).removeClass(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra
// empty mouseover listeners we added for iOS support
if ('ontouchstart' in document.documentElement) {
- $(document.body).children().off('mouseover', null, $.noop);
+ $__default["default"](document.body).children().off('mouseover', null, $__default["default"].noop);
}
- this._activeTrigger[Trigger.CLICK] = false;
- this._activeTrigger[Trigger.FOCUS] = false;
- this._activeTrigger[Trigger.HOVER] = false;
+ this._activeTrigger[TRIGGER_CLICK] = false;
+ this._activeTrigger[TRIGGER_FOCUS] = false;
+ this._activeTrigger[TRIGGER_HOVER] = false;
- if ($(this.tip).hasClass(ClassName$6.FADE)) {
+ if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE$3)) {
var transitionDuration = Util.getTransitionDurationFromElement(tip);
- $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
+ $__default["default"](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
} else {
complete();
}
@@ -2936,42 +3044,50 @@
if (this._popper !== null) {
this._popper.scheduleUpdate();
}
- }; // Protected
-
+ } // Protected
+ ;
_proto.isWithContent = function isWithContent() {
return Boolean(this.getTitle());
};
_proto.addAttachmentClass = function addAttachmentClass(attachment) {
- $(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
+ $__default["default"](this.getTipElement()).addClass(CLASS_PREFIX$1 + "-" + attachment);
};
_proto.getTipElement = function getTipElement() {
- this.tip = this.tip || $(this.config.template)[0];
+ this.tip = this.tip || $__default["default"](this.config.template)[0];
return this.tip;
};
_proto.setContent = function setContent() {
var tip = this.getTipElement();
- this.setElementContent($(tip.querySelectorAll(Selector$6.TOOLTIP_INNER)), this.getTitle());
- $(tip).removeClass(ClassName$6.FADE + " " + ClassName$6.SHOW);
+ this.setElementContent($__default["default"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());
+ $__default["default"](tip).removeClass(CLASS_NAME_FADE$3 + " " + CLASS_NAME_SHOW$3);
};
_proto.setElementContent = function setElementContent($element, content) {
- var html = this.config.html;
-
if (typeof content === 'object' && (content.nodeType || content.jquery)) {
// Content is a DOM node or a jQuery
- if (html) {
- if (!$(content).parent().is($element)) {
+ if (this.config.html) {
+ if (!$__default["default"](content).parent().is($element)) {
$element.empty().append(content);
}
} else {
- $element.text($(content).text());
+ $element.text($__default["default"](content).text());
+ }
+
+ return;
+ }
+
+ if (this.config.html) {
+ if (this.config.sanitize) {
+ content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);
}
+
+ $element.html(content);
} else {
- $element[html ? 'html' : 'text'](content);
+ $element.text(content);
}
};
@@ -2983,8 +3099,54 @@
}
return title;
- }; // Private
+ } // Private
+ ;
+
+ _proto._getPopperConfig = function _getPopperConfig(attachment) {
+ var _this3 = this;
+ var defaultBsConfig = {
+ placement: attachment,
+ modifiers: {
+ offset: this._getOffset(),
+ flip: {
+ behavior: this.config.fallbackPlacement
+ },
+ arrow: {
+ element: SELECTOR_ARROW
+ },
+ preventOverflow: {
+ boundariesElement: this.config.boundary
+ }
+ },
+ onCreate: function onCreate(data) {
+ if (data.originalPlacement !== data.placement) {
+ _this3._handlePopperPlacementChange(data);
+ }
+ },
+ onUpdate: function onUpdate(data) {
+ return _this3._handlePopperPlacementChange(data);
+ }
+ };
+ return _extends({}, defaultBsConfig, this.config.popperConfig);
+ };
+
+ _proto._getOffset = function _getOffset() {
+ var _this4 = this;
+
+ var offset = {};
+
+ if (typeof this.config.offset === 'function') {
+ offset.fn = function (data) {
+ data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element));
+ return data;
+ };
+ } else {
+ offset.offset = this.config.offset;
+ }
+
+ return offset;
+ };
_proto._getContainer = function _getContainer() {
if (this.config.container === false) {
@@ -2992,43 +3154,46 @@
}
if (Util.isElement(this.config.container)) {
- return $(this.config.container);
+ return $__default["default"](this.config.container);
}
- return $(document).find(this.config.container);
+ return $__default["default"](document).find(this.config.container);
};
_proto._getAttachment = function _getAttachment(placement) {
- return AttachmentMap$1[placement.toUpperCase()];
+ return AttachmentMap[placement.toUpperCase()];
};
_proto._setListeners = function _setListeners() {
- var _this3 = this;
+ var _this5 = this;
var triggers = this.config.trigger.split(' ');
triggers.forEach(function (trigger) {
if (trigger === 'click') {
- $(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) {
- return _this3.toggle(event);
+ $__default["default"](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {
+ return _this5.toggle(event);
});
- } else if (trigger !== Trigger.MANUAL) {
- var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN;
- var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT;
- $(_this3.element).on(eventIn, _this3.config.selector, function (event) {
- return _this3._enter(event);
- }).on(eventOut, _this3.config.selector, function (event) {
- return _this3._leave(event);
+ } else if (trigger !== TRIGGER_MANUAL) {
+ var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;
+ var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;
+ $__default["default"](_this5.element).on(eventIn, _this5.config.selector, function (event) {
+ return _this5._enter(event);
+ }).on(eventOut, _this5.config.selector, function (event) {
+ return _this5._leave(event);
});
}
});
- $(this.element).closest('.modal').on('hide.bs.modal', function () {
- if (_this3.element) {
- _this3.hide();
+
+ this._hideModalHandler = function () {
+ if (_this5.element) {
+ _this5.hide();
}
- });
+ };
+
+ $__default["default"](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);
if (this.config.selector) {
- this.config = _objectSpread({}, this.config, {
+ this.config = _extends({}, this.config, {
trigger: 'manual',
selector: ''
});
@@ -3048,24 +3213,24 @@
_proto._enter = function _enter(event, context) {
var dataKey = this.constructor.DATA_KEY;
- context = context || $(event.currentTarget).data(dataKey);
+ context = context || $__default["default"](event.currentTarget).data(dataKey);
if (!context) {
context = new this.constructor(event.currentTarget, this._getDelegateConfig());
- $(event.currentTarget).data(dataKey, context);
+ $__default["default"](event.currentTarget).data(dataKey, context);
}
if (event) {
- context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
+ context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
}
- if ($(context.getTipElement()).hasClass(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) {
- context._hoverState = HoverState.SHOW;
+ if ($__default["default"](context.getTipElement()).hasClass(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {
+ context._hoverState = HOVER_STATE_SHOW;
return;
}
clearTimeout(context._timeout);
- context._hoverState = HoverState.SHOW;
+ context._hoverState = HOVER_STATE_SHOW;
if (!context.config.delay || !context.config.delay.show) {
context.show();
@@ -3073,7 +3238,7 @@
}
context._timeout = setTimeout(function () {
- if (context._hoverState === HoverState.SHOW) {
+ if (context._hoverState === HOVER_STATE_SHOW) {
context.show();
}
}, context.config.delay.show);
@@ -3081,15 +3246,15 @@
_proto._leave = function _leave(event, context) {
var dataKey = this.constructor.DATA_KEY;
- context = context || $(event.currentTarget).data(dataKey);
+ context = context || $__default["default"](event.currentTarget).data(dataKey);
if (!context) {
context = new this.constructor(event.currentTarget, this._getDelegateConfig());
- $(event.currentTarget).data(dataKey, context);
+ $__default["default"](event.currentTarget).data(dataKey, context);
}
if (event) {
- context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
+ context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;
}
if (context._isWithActiveTrigger()) {
@@ -3097,7 +3262,7 @@
}
clearTimeout(context._timeout);
- context._hoverState = HoverState.OUT;
+ context._hoverState = HOVER_STATE_OUT;
if (!context.config.delay || !context.config.delay.hide) {
context.hide();
@@ -3105,7 +3270,7 @@
}
context._timeout = setTimeout(function () {
- if (context._hoverState === HoverState.OUT) {
+ if (context._hoverState === HOVER_STATE_OUT) {
context.hide();
}
}, context.config.delay.hide);
@@ -3122,7 +3287,13 @@
};
_proto._getConfig = function _getConfig(config) {
- config = _objectSpread({}, this.constructor.Default, $(this.element).data(), typeof config === 'object' && config ? config : {});
+ var dataAttributes = $__default["default"](this.element).data();
+ Object.keys(dataAttributes).forEach(function (dataAttr) {
+ if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {
+ delete dataAttributes[dataAttr];
+ }
+ });
+ config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});
if (typeof config.delay === 'number') {
config.delay = {
@@ -3139,7 +3310,12 @@
config.content = config.content.toString();
}
- Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);
+ Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
+
+ if (config.sanitize) {
+ config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);
+ }
+
return config;
};
@@ -3158,8 +3334,8 @@
};
_proto._cleanTipClass = function _cleanTipClass() {
- var $tip = $(this.getTipElement());
- var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
+ var $tip = $__default["default"](this.getTipElement());
+ var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);
if (tabClass !== null && tabClass.length) {
$tip.removeClass(tabClass.join(''));
@@ -3167,8 +3343,7 @@
};
_proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {
- var popperInstance = popperData.instance;
- this.tip = popperInstance.popper;
+ this.tip = popperData.instance.popper;
this._cleanTipClass();
@@ -3183,17 +3358,18 @@
return;
}
- $(tip).removeClass(ClassName$6.FADE);
+ $__default["default"](tip).removeClass(CLASS_NAME_FADE$3);
this.config.animation = false;
this.hide();
this.show();
this.config.animation = initConfigAnimation;
- }; // Static
-
+ } // Static
+ ;
Tooltip._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
- var data = $(this).data(DATA_KEY$6);
+ var $element = $__default["default"](this);
+ var data = $element.data(DATA_KEY$4);
var _config = typeof config === 'object' && config;
@@ -3203,7 +3379,7 @@
if (!data) {
data = new Tooltip(this, _config);
- $(this).data(DATA_KEY$6, data);
+ $element.data(DATA_KEY$4, data);
}
if (typeof config === 'string') {
@@ -3219,112 +3395,99 @@
_createClass(Tooltip, null, [{
key: "VERSION",
get: function get() {
- return VERSION$6;
+ return VERSION$4;
}
}, {
key: "Default",
get: function get() {
- return Default$4;
+ return Default$3;
}
}, {
key: "NAME",
get: function get() {
- return NAME$6;
+ return NAME$4;
}
}, {
key: "DATA_KEY",
get: function get() {
- return DATA_KEY$6;
+ return DATA_KEY$4;
}
}, {
key: "Event",
get: function get() {
- return Event$6;
+ return Event$1;
}
}, {
key: "EVENT_KEY",
get: function get() {
- return EVENT_KEY$6;
+ return EVENT_KEY$4;
}
}, {
key: "DefaultType",
get: function get() {
- return DefaultType$4;
+ return DefaultType$3;
}
}]);
return Tooltip;
}();
/**
- * ------------------------------------------------------------------------
* jQuery
- * ------------------------------------------------------------------------
*/
- $.fn[NAME$6] = Tooltip._jQueryInterface;
- $.fn[NAME$6].Constructor = Tooltip;
+ $__default["default"].fn[NAME$4] = Tooltip._jQueryInterface;
+ $__default["default"].fn[NAME$4].Constructor = Tooltip;
- $.fn[NAME$6].noConflict = function () {
- $.fn[NAME$6] = JQUERY_NO_CONFLICT$6;
+ $__default["default"].fn[NAME$4].noConflict = function () {
+ $__default["default"].fn[NAME$4] = JQUERY_NO_CONFLICT$4;
return Tooltip._jQueryInterface;
};
/**
- * ------------------------------------------------------------------------
* Constants
- * ------------------------------------------------------------------------
*/
- var NAME$7 = 'popover';
- var VERSION$7 = '4.2.1';
- var DATA_KEY$7 = 'bs.popover';
- var EVENT_KEY$7 = "." + DATA_KEY$7;
- var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];
- var CLASS_PREFIX$1 = 'bs-popover';
- var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g');
+ var NAME$3 = 'popover';
+ var VERSION$3 = '4.6.1';
+ var DATA_KEY$3 = 'bs.popover';
+ var EVENT_KEY$3 = "." + DATA_KEY$3;
+ var JQUERY_NO_CONFLICT$3 = $__default["default"].fn[NAME$3];
+ var CLASS_PREFIX = 'bs-popover';
+ var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
+ var CLASS_NAME_FADE$2 = 'fade';
+ var CLASS_NAME_SHOW$2 = 'show';
+ var SELECTOR_TITLE = '.popover-header';
+ var SELECTOR_CONTENT = '.popover-body';
- var Default$5 = _objectSpread({}, Tooltip.Default, {
+ var Default$2 = _extends({}, Tooltip.Default, {
placement: 'right',
trigger: 'click',
content: '',
template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
});
- var DefaultType$5 = _objectSpread({}, Tooltip.DefaultType, {
+ var DefaultType$2 = _extends({}, Tooltip.DefaultType, {
content: '(string|element|function)'
});
- var ClassName$7 = {
- FADE: 'fade',
- SHOW: 'show'
- };
- var Selector$7 = {
- TITLE: '.popover-header',
- CONTENT: '.popover-body'
- };
- var Event$7 = {
- HIDE: "hide" + EVENT_KEY$7,
- HIDDEN: "hidden" + EVENT_KEY$7,
- SHOW: "show" + EVENT_KEY$7,
- SHOWN: "shown" + EVENT_KEY$7,
- INSERTED: "inserted" + EVENT_KEY$7,
- CLICK: "click" + EVENT_KEY$7,
- FOCUSIN: "focusin" + EVENT_KEY$7,
- FOCUSOUT: "focusout" + EVENT_KEY$7,
- MOUSEENTER: "mouseenter" + EVENT_KEY$7,
- MOUSELEAVE: "mouseleave" + EVENT_KEY$7
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
+ var Event = {
+ HIDE: "hide" + EVENT_KEY$3,
+ HIDDEN: "hidden" + EVENT_KEY$3,
+ SHOW: "show" + EVENT_KEY$3,
+ SHOWN: "shown" + EVENT_KEY$3,
+ INSERTED: "inserted" + EVENT_KEY$3,
+ CLICK: "click" + EVENT_KEY$3,
+ FOCUSIN: "focusin" + EVENT_KEY$3,
+ FOCUSOUT: "focusout" + EVENT_KEY$3,
+ MOUSEENTER: "mouseenter" + EVENT_KEY$3,
+ MOUSELEAVE: "mouseleave" + EVENT_KEY$3
};
+ /**
+ * Class definition
+ */
- var Popover =
- /*#__PURE__*/
- function (_Tooltip) {
+ var Popover = /*#__PURE__*/function (_Tooltip) {
_inheritsLoose(Popover, _Tooltip);
function Popover() {
@@ -3339,18 +3502,18 @@
};
_proto.addAttachmentClass = function addAttachmentClass(attachment) {
- $(this.getTipElement()).addClass(CLASS_PREFIX$1 + "-" + attachment);
+ $__default["default"](this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
};
_proto.getTipElement = function getTipElement() {
- this.tip = this.tip || $(this.config.template)[0];
+ this.tip = this.tip || $__default["default"](this.config.template)[0];
return this.tip;
};
_proto.setContent = function setContent() {
- var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events
+ var $tip = $__default["default"](this.getTipElement()); // We use append for html objects to maintain js events
- this.setElementContent($tip.find(Selector$7.TITLE), this.getTitle());
+ this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());
var content = this._getContent();
@@ -3358,28 +3521,28 @@
content = content.call(this.element);
}
- this.setElementContent($tip.find(Selector$7.CONTENT), content);
- $tip.removeClass(ClassName$7.FADE + " " + ClassName$7.SHOW);
- }; // Private
-
+ this.setElementContent($tip.find(SELECTOR_CONTENT), content);
+ $tip.removeClass(CLASS_NAME_FADE$2 + " " + CLASS_NAME_SHOW$2);
+ } // Private
+ ;
_proto._getContent = function _getContent() {
return this.element.getAttribute('data-content') || this.config.content;
};
_proto._cleanTipClass = function _cleanTipClass() {
- var $tip = $(this.getTipElement());
- var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);
+ var $tip = $__default["default"](this.getTipElement());
+ var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
if (tabClass !== null && tabClass.length > 0) {
$tip.removeClass(tabClass.join(''));
}
- }; // Static
-
+ } // Static
+ ;
Popover._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
- var data = $(this).data(DATA_KEY$7);
+ var data = $__default["default"](this).data(DATA_KEY$3);
var _config = typeof config === 'object' ? config : null;
@@ -3389,7 +3552,7 @@
if (!data) {
data = new Popover(this, _config);
- $(this).data(DATA_KEY$7, data);
+ $__default["default"](this).data(DATA_KEY$3, data);
}
if (typeof config === 'string') {
@@ -3404,128 +3567,109 @@
_createClass(Popover, null, [{
key: "VERSION",
- // Getters
- get: function get() {
- return VERSION$7;
+ get: // Getters
+ function get() {
+ return VERSION$3;
}
}, {
key: "Default",
get: function get() {
- return Default$5;
+ return Default$2;
}
}, {
key: "NAME",
get: function get() {
- return NAME$7;
+ return NAME$3;
}
}, {
key: "DATA_KEY",
get: function get() {
- return DATA_KEY$7;
+ return DATA_KEY$3;
}
}, {
key: "Event",
get: function get() {
- return Event$7;
+ return Event;
}
}, {
key: "EVENT_KEY",
get: function get() {
- return EVENT_KEY$7;
+ return EVENT_KEY$3;
}
}, {
key: "DefaultType",
get: function get() {
- return DefaultType$5;
+ return DefaultType$2;
}
}]);
return Popover;
}(Tooltip);
/**
- * ------------------------------------------------------------------------
* jQuery
- * ------------------------------------------------------------------------
*/
- $.fn[NAME$7] = Popover._jQueryInterface;
- $.fn[NAME$7].Constructor = Popover;
+ $__default["default"].fn[NAME$3] = Popover._jQueryInterface;
+ $__default["default"].fn[NAME$3].Constructor = Popover;
- $.fn[NAME$7].noConflict = function () {
- $.fn[NAME$7] = JQUERY_NO_CONFLICT$7;
+ $__default["default"].fn[NAME$3].noConflict = function () {
+ $__default["default"].fn[NAME$3] = JQUERY_NO_CONFLICT$3;
return Popover._jQueryInterface;
};
/**
- * ------------------------------------------------------------------------
* Constants
- * ------------------------------------------------------------------------
*/
- var NAME$8 = 'scrollspy';
- var VERSION$8 = '4.2.1';
- var DATA_KEY$8 = 'bs.scrollspy';
- var EVENT_KEY$8 = "." + DATA_KEY$8;
- var DATA_API_KEY$6 = '.data-api';
- var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8];
- var Default$6 = {
+ var NAME$2 = 'scrollspy';
+ var VERSION$2 = '4.6.1';
+ var DATA_KEY$2 = 'bs.scrollspy';
+ var EVENT_KEY$2 = "." + DATA_KEY$2;
+ var DATA_API_KEY$1 = '.data-api';
+ var JQUERY_NO_CONFLICT$2 = $__default["default"].fn[NAME$2];
+ var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
+ var CLASS_NAME_ACTIVE$1 = 'active';
+ var EVENT_ACTIVATE = "activate" + EVENT_KEY$2;
+ var EVENT_SCROLL = "scroll" + EVENT_KEY$2;
+ var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$2 + DATA_API_KEY$1;
+ var METHOD_OFFSET = 'offset';
+ var METHOD_POSITION = 'position';
+ var SELECTOR_DATA_SPY = '[data-spy="scroll"]';
+ var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';
+ var SELECTOR_NAV_LINKS = '.nav-link';
+ var SELECTOR_NAV_ITEMS = '.nav-item';
+ var SELECTOR_LIST_ITEMS = '.list-group-item';
+ var SELECTOR_DROPDOWN$1 = '.dropdown';
+ var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';
+ var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
+ var Default$1 = {
offset: 10,
method: 'auto',
target: ''
};
- var DefaultType$6 = {
+ var DefaultType$1 = {
offset: 'number',
method: 'string',
target: '(string|element)'
};
- var Event$8 = {
- ACTIVATE: "activate" + EVENT_KEY$8,
- SCROLL: "scroll" + EVENT_KEY$8,
- LOAD_DATA_API: "load" + EVENT_KEY$8 + DATA_API_KEY$6
- };
- var ClassName$8 = {
- DROPDOWN_ITEM: 'dropdown-item',
- DROPDOWN_MENU: 'dropdown-menu',
- ACTIVE: 'active'
- };
- var Selector$8 = {
- DATA_SPY: '[data-spy="scroll"]',
- ACTIVE: '.active',
- NAV_LIST_GROUP: '.nav, .list-group',
- NAV_LINKS: '.nav-link',
- NAV_ITEMS: '.nav-item',
- LIST_ITEMS: '.list-group-item',
- DROPDOWN: '.dropdown',
- DROPDOWN_ITEMS: '.dropdown-item',
- DROPDOWN_TOGGLE: '.dropdown-toggle'
- };
- var OffsetMethod = {
- OFFSET: 'offset',
- POSITION: 'position'
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
- };
+ /**
+ * Class definition
+ */
- var ScrollSpy =
- /*#__PURE__*/
- function () {
+ var ScrollSpy = /*#__PURE__*/function () {
function ScrollSpy(element, config) {
var _this = this;
this._element = element;
this._scrollElement = element.tagName === 'BODY' ? window : element;
this._config = this._getConfig(config);
- this._selector = this._config.target + " " + Selector$8.NAV_LINKS + "," + (this._config.target + " " + Selector$8.LIST_ITEMS + ",") + (this._config.target + " " + Selector$8.DROPDOWN_ITEMS);
+ this._selector = this._config.target + " " + SELECTOR_NAV_LINKS + "," + (this._config.target + " " + SELECTOR_LIST_ITEMS + ",") + (this._config.target + " " + SELECTOR_DROPDOWN_ITEMS);
this._offsets = [];
this._targets = [];
this._activeTarget = null;
this._scrollHeight = 0;
- $(this._scrollElement).on(Event$8.SCROLL, function (event) {
+ $__default["default"](this._scrollElement).on(EVENT_SCROLL, function (event) {
return _this._process(event);
});
this.refresh();
@@ -3540,9 +3684,9 @@
_proto.refresh = function refresh() {
var _this2 = this;
- var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
+ var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;
var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
- var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
+ var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;
this._offsets = [];
this._targets = [];
this._scrollHeight = this._getScrollHeight();
@@ -3560,7 +3704,7 @@
if (targetBCR.width || targetBCR.height) {
// TODO (fat): remove sketch reliance on jQuery position/offset
- return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
+ return [$__default["default"](target)[offsetMethod]().top + offsetBase, targetSelector];
}
}
@@ -3577,8 +3721,8 @@
};
_proto.dispose = function dispose() {
- $.removeData(this._element, DATA_KEY$8);
- $(this._scrollElement).off(EVENT_KEY$8);
+ $__default["default"].removeData(this._element, DATA_KEY$2);
+ $__default["default"](this._scrollElement).off(EVENT_KEY$2);
this._element = null;
this._scrollElement = null;
this._config = null;
@@ -3587,24 +3731,24 @@
this._targets = null;
this._activeTarget = null;
this._scrollHeight = null;
- }; // Private
-
+ } // Private
+ ;
_proto._getConfig = function _getConfig(config) {
- config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {});
+ config = _extends({}, Default$1, typeof config === 'object' && config ? config : {});
- if (typeof config.target !== 'string') {
- var id = $(config.target).attr('id');
+ if (typeof config.target !== 'string' && Util.isElement(config.target)) {
+ var id = $__default["default"](config.target).attr('id');
if (!id) {
- id = Util.getUID(NAME$8);
- $(config.target).attr('id', id);
+ id = Util.getUID(NAME$2);
+ $__default["default"](config.target).attr('id', id);
}
config.target = "#" + id;
}
- Util.typeCheckConfig(NAME$8, config, DefaultType$6);
+ Util.typeCheckConfig(NAME$2, config, DefaultType$1);
return config;
};
@@ -3649,9 +3793,7 @@
return;
}
- var offsetLength = this._offsets.length;
-
- for (var i = offsetLength; i--;) {
+ for (var i = this._offsets.length; i--;) {
var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
if (isActiveTarget) {
@@ -3669,44 +3811,44 @@
return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]";
});
- var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));
+ var $link = $__default["default"]([].slice.call(document.querySelectorAll(queries.join(','))));
- if ($link.hasClass(ClassName$8.DROPDOWN_ITEM)) {
- $link.closest(Selector$8.DROPDOWN).find(Selector$8.DROPDOWN_TOGGLE).addClass(ClassName$8.ACTIVE);
- $link.addClass(ClassName$8.ACTIVE);
+ if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {
+ $link.closest(SELECTOR_DROPDOWN$1).find(SELECTOR_DROPDOWN_TOGGLE$1).addClass(CLASS_NAME_ACTIVE$1);
+ $link.addClass(CLASS_NAME_ACTIVE$1);
} else {
// Set triggered link as active
- $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active
+ $link.addClass(CLASS_NAME_ACTIVE$1); // Set triggered links parents as active
// With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
- $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_LINKS + ", " + Selector$8.LIST_ITEMS).addClass(ClassName$8.ACTIVE); // Handle special case when .nav-link is inside .nav-item
+ $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$1); // Handle special case when .nav-link is inside .nav-item
- $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_ITEMS).children(Selector$8.NAV_LINKS).addClass(ClassName$8.ACTIVE);
+ $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$1);
}
- $(this._scrollElement).trigger(Event$8.ACTIVATE, {
+ $__default["default"](this._scrollElement).trigger(EVENT_ACTIVATE, {
relatedTarget: target
});
};
_proto._clear = function _clear() {
[].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {
- return node.classList.contains(ClassName$8.ACTIVE);
+ return node.classList.contains(CLASS_NAME_ACTIVE$1);
}).forEach(function (node) {
- return node.classList.remove(ClassName$8.ACTIVE);
+ return node.classList.remove(CLASS_NAME_ACTIVE$1);
});
- }; // Static
-
+ } // Static
+ ;
ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
- var data = $(this).data(DATA_KEY$8);
+ var data = $__default["default"](this).data(DATA_KEY$2);
var _config = typeof config === 'object' && config;
if (!data) {
data = new ScrollSpy(this, _config);
- $(this).data(DATA_KEY$8, data);
+ $__default["default"](this).data(DATA_KEY$2, data);
}
if (typeof config === 'string') {
@@ -3722,93 +3864,76 @@
_createClass(ScrollSpy, null, [{
key: "VERSION",
get: function get() {
- return VERSION$8;
+ return VERSION$2;
}
}, {
key: "Default",
get: function get() {
- return Default$6;
+ return Default$1;
}
}]);
return ScrollSpy;
}();
/**
- * ------------------------------------------------------------------------
- * Data Api implementation
- * ------------------------------------------------------------------------
+ * Data API implementation
*/
- $(window).on(Event$8.LOAD_DATA_API, function () {
- var scrollSpys = [].slice.call(document.querySelectorAll(Selector$8.DATA_SPY));
+ $__default["default"](window).on(EVENT_LOAD_DATA_API, function () {
+ var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));
var scrollSpysLength = scrollSpys.length;
for (var i = scrollSpysLength; i--;) {
- var $spy = $(scrollSpys[i]);
+ var $spy = $__default["default"](scrollSpys[i]);
ScrollSpy._jQueryInterface.call($spy, $spy.data());
}
});
/**
- * ------------------------------------------------------------------------
* jQuery
- * ------------------------------------------------------------------------
*/
- $.fn[NAME$8] = ScrollSpy._jQueryInterface;
- $.fn[NAME$8].Constructor = ScrollSpy;
+ $__default["default"].fn[NAME$2] = ScrollSpy._jQueryInterface;
+ $__default["default"].fn[NAME$2].Constructor = ScrollSpy;
- $.fn[NAME$8].noConflict = function () {
- $.fn[NAME$8] = JQUERY_NO_CONFLICT$8;
+ $__default["default"].fn[NAME$2].noConflict = function () {
+ $__default["default"].fn[NAME$2] = JQUERY_NO_CONFLICT$2;
return ScrollSpy._jQueryInterface;
};
/**
- * ------------------------------------------------------------------------
* Constants
- * ------------------------------------------------------------------------
*/
- var NAME$9 = 'tab';
- var VERSION$9 = '4.2.1';
- var DATA_KEY$9 = 'bs.tab';
- var EVENT_KEY$9 = "." + DATA_KEY$9;
- var DATA_API_KEY$7 = '.data-api';
- var JQUERY_NO_CONFLICT$9 = $.fn[NAME$9];
- var Event$9 = {
- HIDE: "hide" + EVENT_KEY$9,
- HIDDEN: "hidden" + EVENT_KEY$9,
- SHOW: "show" + EVENT_KEY$9,
- SHOWN: "shown" + EVENT_KEY$9,
- CLICK_DATA_API: "click" + EVENT_KEY$9 + DATA_API_KEY$7
- };
- var ClassName$9 = {
- DROPDOWN_MENU: 'dropdown-menu',
- ACTIVE: 'active',
- DISABLED: 'disabled',
- FADE: 'fade',
- SHOW: 'show'
- };
- var Selector$9 = {
- DROPDOWN: '.dropdown',
- NAV_LIST_GROUP: '.nav, .list-group',
- ACTIVE: '.active',
- ACTIVE_UL: '> li > .active',
- DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
- DROPDOWN_TOGGLE: '.dropdown-toggle',
- DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
- };
+ var NAME$1 = 'tab';
+ var VERSION$1 = '4.6.1';
+ var DATA_KEY$1 = 'bs.tab';
+ var EVENT_KEY$1 = "." + DATA_KEY$1;
+ var DATA_API_KEY = '.data-api';
+ var JQUERY_NO_CONFLICT$1 = $__default["default"].fn[NAME$1];
+ var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';
+ var CLASS_NAME_ACTIVE = 'active';
+ var CLASS_NAME_DISABLED = 'disabled';
+ var CLASS_NAME_FADE$1 = 'fade';
+ var CLASS_NAME_SHOW$1 = 'show';
+ var EVENT_HIDE$1 = "hide" + EVENT_KEY$1;
+ var EVENT_HIDDEN$1 = "hidden" + EVENT_KEY$1;
+ var EVENT_SHOW$1 = "show" + EVENT_KEY$1;
+ var EVENT_SHOWN$1 = "shown" + EVENT_KEY$1;
+ var EVENT_CLICK_DATA_API = "click" + EVENT_KEY$1 + DATA_API_KEY;
+ var SELECTOR_DROPDOWN = '.dropdown';
+ var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
+ var SELECTOR_ACTIVE = '.active';
+ var SELECTOR_ACTIVE_UL = '> li > .active';
+ var SELECTOR_DATA_TOGGLE = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]';
+ var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
+ var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';
+ /**
+ * Class definition
+ */
- var Tab =
- /*#__PURE__*/
- function () {
+ var Tab = /*#__PURE__*/function () {
function Tab(element) {
this._element = element;
} // Getters
@@ -3820,33 +3945,33 @@
_proto.show = function show() {
var _this = this;
- if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName$9.ACTIVE) || $(this._element).hasClass(ClassName$9.DISABLED)) {
+ if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default["default"](this._element).hasClass(CLASS_NAME_ACTIVE) || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED)) {
return;
}
var target;
var previous;
- var listElement = $(this._element).closest(Selector$9.NAV_LIST_GROUP)[0];
+ var listElement = $__default["default"](this._element).closest(SELECTOR_NAV_LIST_GROUP)[0];
var selector = Util.getSelectorFromElement(this._element);
if (listElement) {
- var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector$9.ACTIVE_UL : Selector$9.ACTIVE;
- previous = $.makeArray($(listElement).find(itemSelector));
+ var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;
+ previous = $__default["default"].makeArray($__default["default"](listElement).find(itemSelector));
previous = previous[previous.length - 1];
}
- var hideEvent = $.Event(Event$9.HIDE, {
+ var hideEvent = $__default["default"].Event(EVENT_HIDE$1, {
relatedTarget: this._element
});
- var showEvent = $.Event(Event$9.SHOW, {
+ var showEvent = $__default["default"].Event(EVENT_SHOW$1, {
relatedTarget: previous
});
if (previous) {
- $(previous).trigger(hideEvent);
+ $__default["default"](previous).trigger(hideEvent);
}
- $(this._element).trigger(showEvent);
+ $__default["default"](this._element).trigger(showEvent);
if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
return;
@@ -3859,14 +3984,14 @@
this._activate(this._element, listElement);
var complete = function complete() {
- var hiddenEvent = $.Event(Event$9.HIDDEN, {
+ var hiddenEvent = $__default["default"].Event(EVENT_HIDDEN$1, {
relatedTarget: _this._element
});
- var shownEvent = $.Event(Event$9.SHOWN, {
+ var shownEvent = $__default["default"].Event(EVENT_SHOWN$1, {
relatedTarget: previous
});
- $(previous).trigger(hiddenEvent);
- $(_this._element).trigger(shownEvent);
+ $__default["default"](previous).trigger(hiddenEvent);
+ $__default["default"](_this._element).trigger(shownEvent);
};
if (target) {
@@ -3877,17 +4002,17 @@
};
_proto.dispose = function dispose() {
- $.removeData(this._element, DATA_KEY$9);
+ $__default["default"].removeData(this._element, DATA_KEY$1);
this._element = null;
- }; // Private
-
+ } // Private
+ ;
_proto._activate = function _activate(element, container, callback) {
var _this2 = this;
- var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(Selector$9.ACTIVE_UL) : $(container).children(Selector$9.ACTIVE);
+ var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default["default"](container).find(SELECTOR_ACTIVE_UL) : $__default["default"](container).children(SELECTOR_ACTIVE);
var active = activeElements[0];
- var isTransitioning = callback && active && $(active).hasClass(ClassName$9.FADE);
+ var isTransitioning = callback && active && $__default["default"](active).hasClass(CLASS_NAME_FADE$1);
var complete = function complete() {
return _this2._transitionComplete(element, active, callback);
@@ -3895,7 +4020,7 @@
if (active && isTransitioning) {
var transitionDuration = Util.getTransitionDurationFromElement(active);
- $(active).removeClass(ClassName$9.SHOW).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
+ $__default["default"](active).removeClass(CLASS_NAME_SHOW$1).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
} else {
complete();
}
@@ -3903,11 +4028,11 @@
_proto._transitionComplete = function _transitionComplete(element, active, callback) {
if (active) {
- $(active).removeClass(ClassName$9.ACTIVE);
- var dropdownChild = $(active.parentNode).find(Selector$9.DROPDOWN_ACTIVE_CHILD)[0];
+ $__default["default"](active).removeClass(CLASS_NAME_ACTIVE);
+ var dropdownChild = $__default["default"](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];
if (dropdownChild) {
- $(dropdownChild).removeClass(ClassName$9.ACTIVE);
+ $__default["default"](dropdownChild).removeClass(CLASS_NAME_ACTIVE);
}
if (active.getAttribute('role') === 'tab') {
@@ -3915,21 +4040,30 @@
}
}
- $(element).addClass(ClassName$9.ACTIVE);
+ $__default["default"](element).addClass(CLASS_NAME_ACTIVE);
if (element.getAttribute('role') === 'tab') {
element.setAttribute('aria-selected', true);
}
Util.reflow(element);
- $(element).addClass(ClassName$9.SHOW);
- if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {
- var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];
+ if (element.classList.contains(CLASS_NAME_FADE$1)) {
+ element.classList.add(CLASS_NAME_SHOW$1);
+ }
+
+ var parent = element.parentNode;
+
+ if (parent && parent.nodeName === 'LI') {
+ parent = parent.parentNode;
+ }
+
+ if (parent && $__default["default"](parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {
+ var dropdownElement = $__default["default"](element).closest(SELECTOR_DROPDOWN)[0];
if (dropdownElement) {
- var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector$9.DROPDOWN_TOGGLE));
- $(dropdownToggleList).addClass(ClassName$9.ACTIVE);
+ var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE));
+ $__default["default"](dropdownToggleList).addClass(CLASS_NAME_ACTIVE);
}
element.setAttribute('aria-expanded', true);
@@ -3938,17 +4072,17 @@
if (callback) {
callback();
}
- }; // Static
-
+ } // Static
+ ;
Tab._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
- var $this = $(this);
- var data = $this.data(DATA_KEY$9);
+ var $this = $__default["default"](this);
+ var data = $this.data(DATA_KEY$1);
if (!data) {
data = new Tab(this);
- $this.data(DATA_KEY$9, data);
+ $this.data(DATA_KEY$1, data);
}
if (typeof config === 'string') {
@@ -3964,85 +4098,68 @@
_createClass(Tab, null, [{
key: "VERSION",
get: function get() {
- return VERSION$9;
+ return VERSION$1;
}
}]);
return Tab;
}();
/**
- * ------------------------------------------------------------------------
- * Data Api implementation
- * ------------------------------------------------------------------------
+ * Data API implementation
*/
- $(document).on(Event$9.CLICK_DATA_API, Selector$9.DATA_TOGGLE, function (event) {
+ $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
event.preventDefault();
- Tab._jQueryInterface.call($(this), 'show');
+ Tab._jQueryInterface.call($__default["default"](this), 'show');
});
/**
- * ------------------------------------------------------------------------
* jQuery
- * ------------------------------------------------------------------------
*/
- $.fn[NAME$9] = Tab._jQueryInterface;
- $.fn[NAME$9].Constructor = Tab;
+ $__default["default"].fn[NAME$1] = Tab._jQueryInterface;
+ $__default["default"].fn[NAME$1].Constructor = Tab;
- $.fn[NAME$9].noConflict = function () {
- $.fn[NAME$9] = JQUERY_NO_CONFLICT$9;
+ $__default["default"].fn[NAME$1].noConflict = function () {
+ $__default["default"].fn[NAME$1] = JQUERY_NO_CONFLICT$1;
return Tab._jQueryInterface;
};
/**
- * ------------------------------------------------------------------------
* Constants
- * ------------------------------------------------------------------------
*/
- var NAME$a = 'toast';
- var VERSION$a = '4.2.1';
- var DATA_KEY$a = 'bs.toast';
- var EVENT_KEY$a = "." + DATA_KEY$a;
- var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];
- var Event$a = {
- CLICK_DISMISS: "click.dismiss" + EVENT_KEY$a,
- HIDE: "hide" + EVENT_KEY$a,
- HIDDEN: "hidden" + EVENT_KEY$a,
- SHOW: "show" + EVENT_KEY$a,
- SHOWN: "shown" + EVENT_KEY$a
- };
- var ClassName$a = {
- FADE: 'fade',
- HIDE: 'hide',
- SHOW: 'show',
- SHOWING: 'showing'
- };
- var DefaultType$7 = {
- animation: 'boolean',
- autohide: 'boolean',
- delay: 'number'
- };
- var Default$7 = {
+ var NAME = 'toast';
+ var VERSION = '4.6.1';
+ var DATA_KEY = 'bs.toast';
+ var EVENT_KEY = "." + DATA_KEY;
+ var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
+ var CLASS_NAME_FADE = 'fade';
+ var CLASS_NAME_HIDE = 'hide';
+ var CLASS_NAME_SHOW = 'show';
+ var CLASS_NAME_SHOWING = 'showing';
+ var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY;
+ var EVENT_HIDE = "hide" + EVENT_KEY;
+ var EVENT_HIDDEN = "hidden" + EVENT_KEY;
+ var EVENT_SHOW = "show" + EVENT_KEY;
+ var EVENT_SHOWN = "shown" + EVENT_KEY;
+ var SELECTOR_DATA_DISMISS = '[data-dismiss="toast"]';
+ var Default = {
animation: true,
autohide: true,
delay: 500
};
- var Selector$a = {
- DATA_DISMISS: '[data-dismiss="toast"]'
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
+ var DefaultType = {
+ animation: 'boolean',
+ autohide: 'boolean',
+ delay: 'number'
};
+ /**
+ * Class definition
+ */
- var Toast =
- /*#__PURE__*/
- function () {
+ var Toast = /*#__PURE__*/function () {
function Toast(element, config) {
this._element = element;
this._config = this._getConfig(config);
@@ -4058,113 +4175,125 @@
_proto.show = function show() {
var _this = this;
- $(this._element).trigger(Event$a.SHOW);
+ var showEvent = $__default["default"].Event(EVENT_SHOW);
+ $__default["default"](this._element).trigger(showEvent);
+
+ if (showEvent.isDefaultPrevented()) {
+ return;
+ }
+
+ this._clearTimeout();
if (this._config.animation) {
- this._element.classList.add(ClassName$a.FADE);
+ this._element.classList.add(CLASS_NAME_FADE);
}
var complete = function complete() {
- _this._element.classList.remove(ClassName$a.SHOWING);
+ _this._element.classList.remove(CLASS_NAME_SHOWING);
- _this._element.classList.add(ClassName$a.SHOW);
+ _this._element.classList.add(CLASS_NAME_SHOW);
- $(_this._element).trigger(Event$a.SHOWN);
+ $__default["default"](_this._element).trigger(EVENT_SHOWN);
if (_this._config.autohide) {
- _this.hide();
+ _this._timeout = setTimeout(function () {
+ _this.hide();
+ }, _this._config.delay);
}
};
- this._element.classList.remove(ClassName$a.HIDE);
+ this._element.classList.remove(CLASS_NAME_HIDE);
+
+ Util.reflow(this._element);
- this._element.classList.add(ClassName$a.SHOWING);
+ this._element.classList.add(CLASS_NAME_SHOWING);
if (this._config.animation) {
var transitionDuration = Util.getTransitionDurationFromElement(this._element);
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
+ $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
} else {
complete();
}
};
- _proto.hide = function hide(withoutTimeout) {
- var _this2 = this;
-
- if (!this._element.classList.contains(ClassName$a.SHOW)) {
+ _proto.hide = function hide() {
+ if (!this._element.classList.contains(CLASS_NAME_SHOW)) {
return;
}
- $(this._element).trigger(Event$a.HIDE);
+ var hideEvent = $__default["default"].Event(EVENT_HIDE);
+ $__default["default"](this._element).trigger(hideEvent);
- if (withoutTimeout) {
- this._close();
- } else {
- this._timeout = setTimeout(function () {
- _this2._close();
- }, this._config.delay);
+ if (hideEvent.isDefaultPrevented()) {
+ return;
}
+
+ this._close();
};
_proto.dispose = function dispose() {
- clearTimeout(this._timeout);
- this._timeout = null;
+ this._clearTimeout();
- if (this._element.classList.contains(ClassName$a.SHOW)) {
- this._element.classList.remove(ClassName$a.SHOW);
+ if (this._element.classList.contains(CLASS_NAME_SHOW)) {
+ this._element.classList.remove(CLASS_NAME_SHOW);
}
- $(this._element).off(Event$a.CLICK_DISMISS);
- $.removeData(this._element, DATA_KEY$a);
+ $__default["default"](this._element).off(EVENT_CLICK_DISMISS);
+ $__default["default"].removeData(this._element, DATA_KEY);
this._element = null;
this._config = null;
- }; // Private
-
+ } // Private
+ ;
_proto._getConfig = function _getConfig(config) {
- config = _objectSpread({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});
- Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);
+ config = _extends({}, Default, $__default["default"](this._element).data(), typeof config === 'object' && config ? config : {});
+ Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
return config;
};
_proto._setListeners = function _setListeners() {
- var _this3 = this;
+ var _this2 = this;
- $(this._element).on(Event$a.CLICK_DISMISS, Selector$a.DATA_DISMISS, function () {
- return _this3.hide(true);
+ $__default["default"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function () {
+ return _this2.hide();
});
};
_proto._close = function _close() {
- var _this4 = this;
+ var _this3 = this;
var complete = function complete() {
- _this4._element.classList.add(ClassName$a.HIDE);
+ _this3._element.classList.add(CLASS_NAME_HIDE);
- $(_this4._element).trigger(Event$a.HIDDEN);
+ $__default["default"](_this3._element).trigger(EVENT_HIDDEN);
};
- this._element.classList.remove(ClassName$a.SHOW);
+ this._element.classList.remove(CLASS_NAME_SHOW);
if (this._config.animation) {
var transitionDuration = Util.getTransitionDurationFromElement(this._element);
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
+ $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
} else {
complete();
}
- }; // Static
+ };
+ _proto._clearTimeout = function _clearTimeout() {
+ clearTimeout(this._timeout);
+ this._timeout = null;
+ } // Static
+ ;
Toast._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
- var $element = $(this);
- var data = $element.data(DATA_KEY$a);
+ var $element = $__default["default"](this);
+ var data = $element.data(DATA_KEY);
var _config = typeof config === 'object' && config;
if (!data) {
data = new Toast(this, _config);
- $element.data(DATA_KEY$a, data);
+ $element.data(DATA_KEY, data);
}
if (typeof config === 'string') {
@@ -4180,57 +4309,35 @@
_createClass(Toast, null, [{
key: "VERSION",
get: function get() {
- return VERSION$a;
+ return VERSION;
}
}, {
key: "DefaultType",
get: function get() {
- return DefaultType$7;
+ return DefaultType;
+ }
+ }, {
+ key: "Default",
+ get: function get() {
+ return Default;
}
}]);
return Toast;
}();
/**
- * ------------------------------------------------------------------------
* jQuery
- * ------------------------------------------------------------------------
*/
- $.fn[NAME$a] = Toast._jQueryInterface;
- $.fn[NAME$a].Constructor = Toast;
+ $__default["default"].fn[NAME] = Toast._jQueryInterface;
+ $__default["default"].fn[NAME].Constructor = Toast;
- $.fn[NAME$a].noConflict = function () {
- $.fn[NAME$a] = JQUERY_NO_CONFLICT$a;
+ $__default["default"].fn[NAME].noConflict = function () {
+ $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
return Toast._jQueryInterface;
};
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v4.2.1): index.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- (function () {
- if (typeof $ === 'undefined') {
- throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
- }
-
- var version = $.fn.jquery.split(' ')[0].split('.');
- var minMajor = 1;
- var ltMajor = 2;
- var minMinor = 9;
- var minPatch = 1;
- var maxMajor = 4;
-
- if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
- throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
- }
- })();
-
- exports.Util = Util;
exports.Alert = Alert;
exports.Button = Button;
exports.Carousel = Carousel;
@@ -4242,8 +4349,9 @@
exports.Tab = Tab;
exports.Toast = Toast;
exports.Tooltip = Tooltip;
+ exports.Util = Util;
Object.defineProperty(exports, '__esModule', { value: true });
-})));
+}));
//# sourceMappingURL=bootstrap.js.map
diff --git a/devel/third-party/bootstrap-4.2.1/postcss.config.js b/devel/third-party/bootstrap-4.6.1/postcss.config.js
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/postcss.config.js
rename to devel/third-party/bootstrap-4.6.1/postcss.config.js
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_alert.scss b/devel/third-party/bootstrap-4.6.1/scss/_alert.scss
similarity index 98%
rename from devel/third-party/bootstrap-4.2.1/scss/_alert.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_alert.scss
index da2a98af94..4aa1fc2039 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_alert.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_alert.scss
@@ -34,6 +34,7 @@
position: absolute;
top: 0;
right: 0;
+ z-index: 2;
padding: $alert-padding-y $alert-padding-x;
color: inherit;
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_badge.scss b/devel/third-party/bootstrap-4.6.1/scss/_badge.scss
similarity index 90%
rename from devel/third-party/bootstrap-4.2.1/scss/_badge.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_badge.scss
index bdbe4b9cc8..42c5d08d74 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_badge.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_badge.scss
@@ -6,16 +6,17 @@
.badge {
display: inline-block;
padding: $badge-padding-y $badge-padding-x;
- font-size: $badge-font-size;
+ @include font-size($badge-font-size);
font-weight: $badge-font-weight;
line-height: 1;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
@include border-radius($badge-border-radius);
+ @include transition($badge-transition);
@at-root a#{&} {
- @include hover-focus {
+ @include hover-focus() {
text-decoration: none;
}
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_breadcrumb.scss b/devel/third-party/bootstrap-4.6.1/scss/_breadcrumb.scss
similarity index 86%
rename from devel/third-party/bootstrap-4.2.1/scss/_breadcrumb.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_breadcrumb.scss
index be30950690..9c204c7d55 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_breadcrumb.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_breadcrumb.scss
@@ -3,6 +3,7 @@
flex-wrap: wrap;
padding: $breadcrumb-padding-y $breadcrumb-padding-x;
margin-bottom: $breadcrumb-margin-bottom;
+ @include font-size($breadcrumb-font-size);
list-style: none;
background-color: $breadcrumb-bg;
@include border-radius($breadcrumb-border-radius);
@@ -14,10 +15,10 @@
padding-left: $breadcrumb-item-padding;
&::before {
- display: inline-block; // Suppress underlining of the separator in modern browsers
+ float: left; // Suppress inline spacings and underlining of the separator
padding-right: $breadcrumb-item-padding;
color: $breadcrumb-divider-color;
- content: $breadcrumb-divider;
+ content: escape-svg($breadcrumb-divider);
}
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_button-group.scss b/devel/third-party/bootstrap-4.6.1/scss/_button-group.scss
similarity index 99%
rename from devel/third-party/bootstrap-4.2.1/scss/_button-group.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_button-group.scss
index d7220029ad..da02d7931b 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_button-group.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_button-group.scss
@@ -13,7 +13,7 @@
// Bring the hover, focused, and "active" buttons to the front to overlay
// the borders properly
- @include hover {
+ @include hover() {
z-index: 1;
}
&:focus,
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_buttons.scss b/devel/third-party/bootstrap-4.6.1/scss/_buttons.scss
similarity index 83%
rename from devel/third-party/bootstrap-4.2.1/scss/_buttons.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_buttons.scss
index 7c45534e00..6ee24ba1fc 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_buttons.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_buttons.scss
@@ -6,9 +6,12 @@
.btn {
display: inline-block;
+ font-family: $btn-font-family;
font-weight: $btn-font-weight;
color: $body-color;
text-align: center;
+ text-decoration: if($link-decoration == none, null, none);
+ white-space: $btn-white-space;
vertical-align: middle;
user-select: none;
background-color: transparent;
@@ -16,7 +19,7 @@
@include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-line-height, $btn-border-radius);
@include transition($btn-transition);
- @include hover {
+ @include hover() {
color: $body-color;
text-decoration: none;
}
@@ -34,17 +37,16 @@
@include box-shadow(none);
}
- // Opinionated: add "hand" cursor to non-disabled .btn elements
&:not(:disabled):not(.disabled) {
- cursor: pointer;
- }
+ cursor: if($enable-pointer-cursor-for-buttons, pointer, null);
- &:not(:disabled):not(.disabled):active,
- &:not(:disabled):not(.disabled).active {
- @include box-shadow($btn-active-box-shadow);
+ &:active,
+ &.active {
+ @include box-shadow($btn-active-box-shadow);
- &:focus {
- @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);
+ &:focus {
+ @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);
+ }
}
}
}
@@ -81,8 +83,9 @@ fieldset:disabled a.btn {
.btn-link {
font-weight: $font-weight-normal;
color: $link-color;
+ text-decoration: $link-decoration;
- @include hover {
+ @include hover() {
color: $link-hover-color;
text-decoration: $link-hover-decoration;
}
@@ -90,7 +93,6 @@ fieldset:disabled a.btn {
&:focus,
&.focus {
text-decoration: $link-hover-decoration;
- box-shadow: none;
}
&:disabled,
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_card.scss b/devel/third-party/bootstrap-4.6.1/scss/_card.scss
similarity index 68%
rename from devel/third-party/bootstrap-4.2.1/scss/_card.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_card.scss
index 377bec0f1a..a974163f82 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_card.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_card.scss
@@ -6,7 +6,8 @@
position: relative;
display: flex;
flex-direction: column;
- min-width: 0;
+ min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106
+ height: $card-height;
word-wrap: break-word;
background-color: $card-bg;
background-clip: border-box;
@@ -18,24 +19,38 @@
margin-left: 0;
}
- > .list-group:first-child {
- .list-group-item:first-child {
- @include border-top-radius($card-border-radius);
+ > .list-group {
+ border-top: inherit;
+ border-bottom: inherit;
+
+ &:first-child {
+ border-top-width: 0;
+ @include border-top-radius($card-inner-border-radius);
}
- }
- > .list-group:last-child {
- .list-group-item:last-child {
- @include border-bottom-radius($card-border-radius);
+ &:last-child {
+ border-bottom-width: 0;
+ @include border-bottom-radius($card-inner-border-radius);
}
}
+
+ // Due to specificity of the above selector (`.card > .list-group`), we must
+ // use a child selector here to prevent double borders.
+ > .card-header + .list-group,
+ > .list-group + .card-footer {
+ border-top: 0;
+ }
}
.card-body {
// Enable `flex-grow: 1` for decks and groups so that card blocks take up
// as much space as possible, ensuring footers are aligned to the bottom.
flex: 1 1 auto;
+ // Workaround for the image size bug in IE
+ // See: https://github.com/twbs/bootstrap/pull/28855
+ min-height: 1px;
padding: $card-spacer-x;
+ color: $card-color;
}
.card-title {
@@ -43,7 +58,7 @@
}
.card-subtitle {
- margin-top: -$card-spacer-y / 2;
+ margin-top: -$card-spacer-y * .5;
margin-bottom: 0;
}
@@ -52,7 +67,7 @@
}
.card-link {
- @include hover {
+ @include hover() {
text-decoration: none;
}
@@ -75,16 +90,11 @@
&:first-child {
@include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);
}
-
- + .list-group {
- .list-group-item:first-child {
- border-top: 0;
- }
- }
}
.card-footer {
padding: $card-spacer-y $card-spacer-x;
+ color: $card-cap-color;
background-color: $card-cap-bg;
border-top: $card-border-width solid $card-border-color;
@@ -99,15 +109,15 @@
//
.card-header-tabs {
- margin-right: -$card-spacer-x / 2;
+ margin-right: -$card-spacer-x * .5;
margin-bottom: -$card-spacer-y;
- margin-left: -$card-spacer-x / 2;
+ margin-left: -$card-spacer-x * .5;
border-bottom: 0;
}
.card-header-pills {
- margin-right: -$card-spacer-x / 2;
- margin-left: -$card-spacer-x / 2;
+ margin-right: -$card-spacer-x * .5;
+ margin-left: -$card-spacer-x * .5;
}
// Card image
@@ -118,21 +128,23 @@
bottom: 0;
left: 0;
padding: $card-img-overlay-padding;
+ @include border-radius($card-inner-border-radius);
}
-.card-img {
+.card-img,
+.card-img-top,
+.card-img-bottom {
+ flex-shrink: 0; // For IE: https://github.com/twbs/bootstrap/issues/29396
width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
- @include border-radius($card-inner-border-radius);
}
-// Card image caps
+.card-img,
.card-img-top {
- width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
@include border-top-radius($card-inner-border-radius);
}
+.card-img,
.card-img-bottom {
- width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
@include border-bottom-radius($card-inner-border-radius);
}
@@ -140,23 +152,19 @@
// Card deck
.card-deck {
- display: flex;
- flex-direction: column;
-
.card {
margin-bottom: $card-deck-margin;
}
@include media-breakpoint-up(sm) {
+ display: flex;
flex-flow: row wrap;
margin-right: -$card-deck-margin;
margin-left: -$card-deck-margin;
.card {
- display: flex;
// Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
flex: 1 0 0%;
- flex-direction: column;
margin-right: $card-deck-margin;
margin-bottom: 0; // Override the default
margin-left: $card-deck-margin;
@@ -170,9 +178,6 @@
//
.card-group {
- display: flex;
- flex-direction: column;
-
// The child selector allows nested `.card` within `.card-group`
// to display properly.
> .card {
@@ -180,6 +185,7 @@
}
@include media-breakpoint-up(sm) {
+ display: flex;
flex-flow: row wrap;
// The child selector allows nested `.card` within `.card-group`
// to display properly.
@@ -195,55 +201,35 @@
// Handle rounded corners
@if $enable-rounded {
- &:first-child {
+ &:not(:last-child) {
@include border-right-radius(0);
.card-img-top,
.card-header {
+ // stylelint-disable-next-line property-disallowed-list
border-top-right-radius: 0;
}
.card-img-bottom,
.card-footer {
+ // stylelint-disable-next-line property-disallowed-list
border-bottom-right-radius: 0;
}
}
- &:last-child {
+ &:not(:first-child) {
@include border-left-radius(0);
.card-img-top,
.card-header {
+ // stylelint-disable-next-line property-disallowed-list
border-top-left-radius: 0;
}
.card-img-bottom,
.card-footer {
+ // stylelint-disable-next-line property-disallowed-list
border-bottom-left-radius: 0;
}
}
-
- &:only-child {
- @include border-radius($card-border-radius);
-
- .card-img-top,
- .card-header {
- @include border-top-radius($card-border-radius);
- }
- .card-img-bottom,
- .card-footer {
- @include border-bottom-radius($card-border-radius);
- }
- }
-
- &:not(:first-child):not(:last-child):not(:only-child) {
- @include border-radius(0);
-
- .card-img-top,
- .card-img-bottom,
- .card-header,
- .card-footer {
- @include border-radius(0);
- }
- }
}
}
}
@@ -278,32 +264,22 @@
//
.accordion {
- .card {
- overflow: hidden;
-
- &:not(:first-of-type) {
- .card-header:first-child {
- border-radius: 0;
- }
+ overflow-anchor: none;
- &:not(:last-of-type) {
- border-bottom: 0;
- border-radius: 0;
- }
- }
+ > .card {
+ overflow: hidden;
- &:first-of-type {
+ &:not(:last-of-type) {
border-bottom: 0;
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0;
+ @include border-bottom-radius(0);
}
- &:last-of-type {
- border-top-left-radius: 0;
- border-top-right-radius: 0;
+ &:not(:first-of-type) {
+ @include border-top-radius(0);
}
- .card-header {
+ > .card-header {
+ @include border-radius(0);
margin-bottom: -$card-border-width;
}
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_carousel.scss b/devel/third-party/bootstrap-4.6.1/scss/_carousel.scss
similarity index 88%
rename from devel/third-party/bootstrap-4.2.1/scss/_carousel.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_carousel.scss
index 8e6639ac07..25aaf5873f 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_carousel.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_carousel.scss
@@ -75,7 +75,7 @@
.active.carousel-item-right {
z-index: 0;
opacity: 0;
- @include transition(0s $carousel-transition-duration opacity);
+ @include transition(opacity 0s $carousel-transition-duration);
}
}
@@ -95,13 +95,16 @@
align-items: center; // 2. vertically center contents
justify-content: center; // 3. horizontally center contents
width: $carousel-control-width;
+ padding: 0;
color: $carousel-control-color;
text-align: center;
+ background: none;
+ border: 0;
opacity: $carousel-control-opacity;
@include transition($carousel-control-transition);
// Hover/focus state
- @include hover-focus {
+ @include hover-focus() {
color: $carousel-control-color;
text-decoration: none;
outline: 0;
@@ -111,13 +114,13 @@
.carousel-control-prev {
left: 0;
@if $enable-gradients {
- background: linear-gradient(90deg, rgba($black, .25), rgba($black, .001));
+ background-image: linear-gradient(90deg, rgba($black, .25), rgba($black, .001));
}
}
.carousel-control-next {
right: 0;
@if $enable-gradients {
- background: linear-gradient(270deg, rgba($black, .25), rgba($black, .001));
+ background-image: linear-gradient(270deg, rgba($black, .25), rgba($black, .001));
}
}
@@ -127,14 +130,13 @@
display: inline-block;
width: $carousel-control-icon-width;
height: $carousel-control-icon-width;
- background: transparent no-repeat center center;
- background-size: 100% 100%;
+ background: 50% / 100% 100% no-repeat;
}
.carousel-control-prev-icon {
- background-image: $carousel-control-prev-icon-bg;
+ background-image: escape-svg($carousel-control-prev-icon-bg);
}
.carousel-control-next-icon {
- background-image: $carousel-control-next-icon-bg;
+ background-image: escape-svg($carousel-control-next-icon-bg);
}
@@ -187,9 +189,9 @@
.carousel-caption {
position: absolute;
- right: (100% - $carousel-caption-width) / 2;
+ right: (100% - $carousel-caption-width) * .5;
bottom: 20px;
- left: (100% - $carousel-caption-width) / 2;
+ left: (100% - $carousel-caption-width) * .5;
z-index: 10;
padding-top: 20px;
padding-bottom: 20px;
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_close.scss b/devel/third-party/bootstrap-4.6.1/scss/_close.scss
similarity index 81%
rename from devel/third-party/bootstrap-4.2.1/scss/_close.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_close.scss
index 821922f4c4..82e9593ef1 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_close.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_close.scss
@@ -1,6 +1,6 @@
.close {
float: right;
- font-size: $close-font-size;
+ @include font-size($close-font-size);
font-weight: $close-font-weight;
line-height: 1;
color: $close-color;
@@ -8,18 +8,15 @@
opacity: .5;
// Override <a>'s hover style
- @include hover {
+ @include hover() {
color: $close-color;
text-decoration: none;
}
&:not(:disabled):not(.disabled) {
- @include hover-focus {
+ @include hover-focus() {
opacity: .75;
}
-
- // Opinionated: add "hand" cursor to non-disabled .close elements
- cursor: pointer;
}
}
@@ -33,7 +30,6 @@ button.close {
padding: 0;
background-color: transparent;
border: 0;
- appearance: none;
}
// Future-proof disabling of clicks on `<a>` elements
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_code.scss b/devel/third-party/bootstrap-4.6.1/scss/_code.scss
similarity index 79%
rename from devel/third-party/bootstrap-4.2.1/scss/_code.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_code.scss
index 9b2e027f40..4bc117a96d 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_code.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_code.scss
@@ -1,8 +1,8 @@
// Inline code
code {
- font-size: $code-font-size;
+ @include font-size($code-font-size);
color: $code-color;
- word-break: break-word;
+ word-wrap: break-word;
// Streamline the style when inside anchors to avoid broken underline and more
a > & {
@@ -13,7 +13,7 @@ code {
// User input typically entered via keyboard
kbd {
padding: $kbd-padding-y $kbd-padding-x;
- font-size: $kbd-font-size;
+ @include font-size($kbd-font-size);
color: $kbd-color;
background-color: $kbd-bg;
@include border-radius($border-radius-sm);
@@ -21,7 +21,7 @@ kbd {
kbd {
padding: 0;
- font-size: 100%;
+ @include font-size(100%);
font-weight: $nested-kbd-font-weight;
@include box-shadow(none);
}
@@ -30,12 +30,12 @@ kbd {
// Blocks of code
pre {
display: block;
- font-size: $code-font-size;
+ @include font-size($code-font-size);
color: $pre-color;
// Account for some code outputs that place code tags in pre tags
code {
- font-size: inherit;
+ @include font-size(inherit);
color: inherit;
word-break: normal;
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_custom-forms.scss b/devel/third-party/bootstrap-4.6.1/scss/_custom-forms.scss
similarity index 83%
rename from devel/third-party/bootstrap-4.2.1/scss/_custom-forms.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_custom-forms.scss
index e6bf7ad6f5..b3db8c48fa 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_custom-forms.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_custom-forms.scss
@@ -9,9 +9,11 @@
.custom-control {
position: relative;
+ z-index: 1;
display: block;
min-height: $font-size-base * $line-height-base;
padding-left: $custom-control-gutter + $custom-control-indicator-size;
+ color-adjust: exact; // Keep themed appearance for print
}
.custom-control-inline {
@@ -21,7 +23,10 @@
.custom-control-input {
position: absolute;
+ left: 0;
z-index: -1; // Put the input behind the label so it doesn't overlay text
+ width: $custom-control-indicator-size;
+ height: ($font-size-base * $line-height-base + $custom-control-indicator-size) * .5;
opacity: 0;
&:checked ~ .custom-control-label::before {
@@ -34,7 +39,7 @@
&:focus ~ .custom-control-label::before {
// the mixin is not used here to make sure there is feedback
@if $enable-shadows {
- box-shadow: $input-box-shadow, $input-focus-box-shadow;
+ box-shadow: $input-box-shadow, $custom-control-indicator-focus-box-shadow;
} @else {
box-shadow: $custom-control-indicator-focus-box-shadow;
}
@@ -51,6 +56,8 @@
@include box-shadow($custom-control-indicator-active-box-shadow);
}
+ // Use [disabled] and :disabled to work around https://github.com/twbs/bootstrap/issues/28247
+ &[disabled],
&:disabled {
~ .custom-control-label {
color: $custom-control-label-disabled-color;
@@ -69,12 +76,14 @@
.custom-control-label {
position: relative;
margin-bottom: 0;
+ color: $custom-control-label-color;
vertical-align: top;
+ cursor: $custom-control-cursor;
// Background-color and (when enabled) gradient
&::before {
position: absolute;
- top: ($font-size-base * $line-height-base - $custom-control-indicator-size) / 2;
+ top: ($font-size-base * $line-height-base - $custom-control-indicator-size) * .5;
left: -($custom-control-gutter + $custom-control-indicator-size);
display: block;
width: $custom-control-indicator-size;
@@ -89,15 +98,13 @@
// Foreground (icon)
&::after {
position: absolute;
- top: ($font-size-base * $line-height-base - $custom-control-indicator-size) / 2;
+ top: ($font-size-base * $line-height-base - $custom-control-indicator-size) * .5;
left: -($custom-control-gutter + $custom-control-indicator-size);
display: block;
width: $custom-control-indicator-size;
height: $custom-control-indicator-size;
content: "";
- background-repeat: no-repeat;
- background-position: center center;
- background-size: $custom-control-indicator-bg-size;
+ background: 50% / #{$custom-control-indicator-bg-size} no-repeat;
}
}
@@ -113,7 +120,7 @@
.custom-control-input:checked ~ .custom-control-label {
&::after {
- background-image: $custom-checkbox-indicator-icon-checked;
+ background-image: escape-svg($custom-checkbox-indicator-icon-checked);
}
}
@@ -124,16 +131,16 @@
@include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);
}
&::after {
- background-image: $custom-checkbox-indicator-icon-indeterminate;
+ background-image: escape-svg($custom-checkbox-indicator-icon-indeterminate);
}
}
.custom-control-input:disabled {
&:checked ~ .custom-control-label::before {
- background-color: $custom-control-indicator-checked-disabled-bg;
+ @include gradient-bg($custom-control-indicator-checked-disabled-bg);
}
&:indeterminate ~ .custom-control-label::before {
- background-color: $custom-control-indicator-checked-disabled-bg;
+ @include gradient-bg($custom-control-indicator-checked-disabled-bg);
}
}
}
@@ -144,18 +151,19 @@
.custom-radio {
.custom-control-label::before {
+ // stylelint-disable-next-line property-disallowed-list
border-radius: $custom-radio-indicator-border-radius;
}
.custom-control-input:checked ~ .custom-control-label {
&::after {
- background-image: $custom-radio-indicator-icon-checked;
+ background-image: escape-svg($custom-radio-indicator-icon-checked);
}
}
.custom-control-input:disabled {
&:checked ~ .custom-control-label::before {
- background-color: $custom-control-indicator-checked-disabled-bg;
+ @include gradient-bg($custom-control-indicator-checked-disabled-bg);
}
}
}
@@ -173,15 +181,17 @@
left: -($custom-switch-width + $custom-control-gutter);
width: $custom-switch-width;
pointer-events: all;
+ // stylelint-disable-next-line property-disallowed-list
border-radius: $custom-switch-indicator-border-radius;
}
&::after {
- top: calc(#{(($font-size-base * $line-height-base - $custom-control-indicator-size) / 2)} + #{$custom-control-indicator-border-width * 2});
- left: calc(#{-($custom-switch-width + $custom-control-gutter)} + #{$custom-control-indicator-border-width * 2});
+ top: add(($font-size-base * $line-height-base - $custom-control-indicator-size) * .5, $custom-control-indicator-border-width * 2);
+ left: add(-($custom-switch-width + $custom-control-gutter), $custom-control-indicator-border-width * 2);
width: $custom-switch-indicator-size;
height: $custom-switch-indicator-size;
background-color: $custom-control-indicator-border-color;
+ // stylelint-disable-next-line property-disallowed-list
border-radius: $custom-switch-indicator-border-radius;
@include transition(transform .15s ease-in-out, $custom-forms-transition);
}
@@ -196,7 +206,7 @@
.custom-control-input:disabled {
&:checked ~ .custom-control-label::before {
- background-color: $custom-control-indicator-checked-disabled-bg;
+ @include gradient-bg($custom-control-indicator-checked-disabled-bg);
}
}
}
@@ -213,18 +223,15 @@
width: 100%;
height: $custom-select-height;
padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x;
+ font-family: $custom-select-font-family;
+ @include font-size($custom-select-font-size);
font-weight: $custom-select-font-weight;
line-height: $custom-select-line-height;
color: $custom-select-color;
vertical-align: middle;
- background: $custom-select-background;
- background-color: $custom-select-bg;
+ background: $custom-select-bg $custom-select-background;
border: $custom-select-border-width solid $custom-select-border-color;
- @if $enable-rounded {
- border-radius: $custom-select-border-radius;
- } @else {
- border-radius: 0;
- }
+ @include border-radius($custom-select-border-radius, 0);
@include box-shadow($custom-select-box-shadow);
appearance: none;
@@ -232,8 +239,9 @@
border-color: $custom-select-focus-border-color;
outline: 0;
@if $enable-shadows {
- box-shadow: $custom-select-box-shadow, $custom-select-focus-box-shadow;
+ @include box-shadow($custom-select-box-shadow, $custom-select-focus-box-shadow);
} @else {
+ // Avoid using mixin so we can pass custom focus shadow properly
box-shadow: $custom-select-focus-box-shadow;
}
@@ -262,7 +270,13 @@
// Hides the default caret in IE11
&::-ms-expand {
- opacity: 0;
+ display: none;
+ }
+
+ // Remove outline from select box in FF
+ &:-moz-focusring {
+ color: transparent;
+ text-shadow: 0 0 0 $custom-select-color;
}
}
@@ -271,7 +285,7 @@
padding-top: $custom-select-padding-y-sm;
padding-bottom: $custom-select-padding-y-sm;
padding-left: $custom-select-padding-x-sm;
- font-size: $custom-select-font-size-sm;
+ @include font-size($custom-select-font-size-sm);
}
.custom-select-lg {
@@ -279,7 +293,7 @@
padding-top: $custom-select-padding-y-lg;
padding-bottom: $custom-select-padding-y-lg;
padding-left: $custom-select-padding-x-lg;
- font-size: $custom-select-font-size-lg;
+ @include font-size($custom-select-font-size-lg);
}
@@ -301,6 +315,7 @@
width: 100%;
height: $custom-file-height;
margin: 0;
+ overflow: hidden;
opacity: 0;
&:focus ~ .custom-file-label {
@@ -308,6 +323,8 @@
box-shadow: $custom-file-focus-box-shadow;
}
+ // Use [disabled] and :disabled to work around https://github.com/twbs/bootstrap/issues/28247
+ &[disabled] ~ .custom-file-label,
&:disabled ~ .custom-file-label {
background-color: $custom-file-disabled-bg;
}
@@ -331,6 +348,8 @@
z-index: 1;
height: $custom-file-height;
padding: $custom-file-padding-y $custom-file-padding-x;
+ overflow: hidden;
+ font-family: $custom-file-font-family;
font-weight: $custom-file-font-weight;
line-height: $custom-file-line-height;
color: $custom-file-color;
@@ -365,13 +384,13 @@
.custom-range {
width: 100%;
- height: calc(#{$custom-range-thumb-height} + #{$custom-range-thumb-focus-box-shadow-width * 2});
+ height: add($custom-range-thumb-height, $custom-range-thumb-focus-box-shadow-width * 2);
padding: 0; // Need to reset padding
background-color: transparent;
appearance: none;
&:focus {
- outline: none;
+ outline: 0;
// Pseudo-elements must be split across multiple rulesets to have an effect.
// No box-shadow() mixin for focus accessibility.
@@ -387,7 +406,7 @@
&::-webkit-slider-thumb {
width: $custom-range-thumb-width;
height: $custom-range-thumb-height;
- margin-top: ($custom-range-track-height - $custom-range-thumb-height) / 2; // Webkit specific
+ margin-top: ($custom-range-track-height - $custom-range-thumb-height) * .5; // Webkit specific
@include gradient-bg($custom-range-thumb-bg);
border: $custom-range-thumb-border;
@include border-radius($custom-range-thumb-border-radius);
@@ -462,7 +481,7 @@
cursor: $custom-range-track-cursor;
background-color: transparent;
border-color: transparent;
- border-width: $custom-range-thumb-height / 2;
+ border-width: $custom-range-thumb-height * .5;
@include box-shadow($custom-range-track-box-shadow);
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_dropdown.scss b/devel/third-party/bootstrap-4.6.1/scss/_dropdown.scss
similarity index 82%
rename from devel/third-party/bootstrap-4.2.1/scss/_dropdown.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_dropdown.scss
index 93c1d78e95..f39de11857 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_dropdown.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_dropdown.scss
@@ -7,8 +7,10 @@
}
.dropdown-toggle {
+ white-space: nowrap;
+
// Generate the caret automatically
- @include caret;
+ @include caret();
}
// The dropdown menu
@@ -20,10 +22,10 @@
display: none; // none by default, but block on "open" of the menu
float: left;
min-width: $dropdown-min-width;
- padding: $dropdown-padding-y 0;
+ padding: $dropdown-padding-y $dropdown-padding-x;
margin: $dropdown-spacer 0 0; // override default ul
- font-size: $font-size-base; // Redeclare because nesting can cause inheritance issues
- color: $body-color;
+ @include font-size($dropdown-font-size);
+ color: $dropdown-color;
text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
list-style: none;
background-color: $dropdown-bg;
@@ -33,17 +35,6 @@
@include box-shadow($dropdown-box-shadow);
}
- at each $breakpoint in map-keys($grid-breakpoints) {
- @include media-breakpoint-up($breakpoint) {
- $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
-
- .dropdown-menu#{$infix}-right {
- right: 0;
- left: auto;
- }
- }
-}
-
@each $breakpoint in map-keys($grid-breakpoints) {
@include media-breakpoint-up($breakpoint) {
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
@@ -52,6 +43,11 @@
right: auto;
left: 0;
}
+
+ .dropdown-menu#{$infix}-right {
+ right: 0;
+ left: auto;
+ }
}
}
@@ -104,7 +100,7 @@
}
}
-// When enabled Popper.js, reset basic dropdown position
+// When Popper is enabled, reset the basic dropdown position
// stylelint-disable-next-line no-duplicate-selectors
.dropdown-menu {
&[x-placement^="top"],
@@ -118,7 +114,7 @@
// Dividers (basically an `<hr>`) within the dropdown
.dropdown-divider {
- @include nav-divider($dropdown-divider-bg);
+ @include nav-divider($dropdown-divider-bg, $dropdown-divider-margin-y, true);
}
// Links, buttons, and more within the dropdown menu
@@ -132,19 +128,24 @@
font-weight: $font-weight-normal;
color: $dropdown-link-color;
text-align: inherit; // For `<button>`s
+ text-decoration: if($link-decoration == none, null, none);
white-space: nowrap; // prevent links from randomly breaking onto new lines
background-color: transparent; // For `<button>`s
border: 0; // For `<button>`s
- &:first-child {
- @include border-top-radius($dropdown-inner-border-radius);
- }
+ // Prevent dropdown overflow if there's no padding
+ // See https://github.com/twbs/bootstrap/pull/27703
+ @if $dropdown-padding-y == 0 {
+ &:first-child {
+ @include border-top-radius($dropdown-inner-border-radius);
+ }
- &:last-child {
- @include border-bottom-radius($dropdown-inner-border-radius);
+ &:last-child {
+ @include border-bottom-radius($dropdown-inner-border-radius);
+ }
}
- @include hover-focus {
+ @include hover-focus() {
color: $dropdown-link-hover-color;
text-decoration: none;
@include gradient-bg($dropdown-link-hover-bg);
@@ -176,9 +177,9 @@
// Dropdown section headers
.dropdown-header {
display: block;
- padding: $dropdown-padding-y $dropdown-item-padding-x;
+ padding: $dropdown-header-padding;
margin-bottom: 0; // for use with heading elements
- font-size: $font-size-sm;
+ @include font-size($font-size-sm);
color: $dropdown-header-color;
white-space: nowrap; // as with > li > a
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_forms.scss b/devel/third-party/bootstrap-4.6.1/scss/_forms.scss
similarity index 82%
rename from devel/third-party/bootstrap-4.2.1/scss/_forms.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_forms.scss
index 3622db4c40..cde466327b 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_forms.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_forms.scss
@@ -9,7 +9,8 @@
width: 100%;
height: $input-height;
padding: $input-padding-y $input-padding-x;
- font-size: $input-font-size;
+ font-family: $input-font-family;
+ @include font-size($input-font-size);
font-weight: $input-font-weight;
line-height: $input-line-height;
color: $input-color;
@@ -18,13 +19,7 @@
border: $input-border-width solid $input-border-color;
// Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.
- @if $enable-rounded {
- // Manually use the if/else instead of the mixin to account for iOS override
- border-radius: $input-border-radius;
- } @else {
- // Otherwise undo the iOS default
- border-radius: 0;
- }
+ @include border-radius($input-border-radius, 0);
@include box-shadow($input-box-shadow);
@include transition($input-transition);
@@ -36,7 +31,7 @@
}
// Customize the `:focus` state to imitate native WebKit styles.
- @include form-control-focus();
+ @include form-control-focus($ignore-warning: true);
// Placeholder
&::placeholder {
@@ -58,7 +53,22 @@
}
}
+input[type="date"],
+input[type="time"],
+input[type="datetime-local"],
+input[type="month"] {
+ &.form-control {
+ appearance: none; // Fix appearance for date inputs in Safari
+ }
+}
+
select.form-control {
+ // Remove select outline from select box in FF
+ &:-moz-focusring {
+ color: transparent;
+ text-shadow: 0 0 0 $input-color;
+ }
+
&:focus::-ms-value {
// Suppress the nested default white text on blue background highlight given to
// the selected option text when the (still closed) <select> receives focus
@@ -85,24 +95,24 @@ select.form-control {
// For use with horizontal and inline forms, when you need the label (or legend)
// text to align with the form controls.
.col-form-label {
- padding-top: calc(#{$input-padding-y} + #{$input-border-width});
- padding-bottom: calc(#{$input-padding-y} + #{$input-border-width});
+ padding-top: add($input-padding-y, $input-border-width);
+ padding-bottom: add($input-padding-y, $input-border-width);
margin-bottom: 0; // Override the `<label>/<legend>` default
- font-size: inherit; // Override the `<legend>` default
+ @include font-size(inherit); // Override the `<legend>` default
line-height: $input-line-height;
}
.col-form-label-lg {
- padding-top: calc(#{$input-padding-y-lg} + #{$input-border-width});
- padding-bottom: calc(#{$input-padding-y-lg} + #{$input-border-width});
- font-size: $input-font-size-lg;
+ padding-top: add($input-padding-y-lg, $input-border-width);
+ padding-bottom: add($input-padding-y-lg, $input-border-width);
+ @include font-size($input-font-size-lg);
line-height: $input-line-height-lg;
}
.col-form-label-sm {
- padding-top: calc(#{$input-padding-y-sm} + #{$input-border-width});
- padding-bottom: calc(#{$input-padding-y-sm} + #{$input-border-width});
- font-size: $input-font-size-sm;
+ padding-top: add($input-padding-y-sm, $input-border-width);
+ padding-bottom: add($input-padding-y-sm, $input-border-width);
+ @include font-size($input-font-size-sm);
line-height: $input-line-height-sm;
}
@@ -115,9 +125,9 @@ select.form-control {
.form-control-plaintext {
display: block;
width: 100%;
- padding-top: $input-padding-y;
- padding-bottom: $input-padding-y;
+ padding: $input-padding-y 0;
margin-bottom: 0; // match inputs if this class comes on inputs with default margins
+ @include font-size($input-font-size);
line-height: $input-line-height;
color: $input-plaintext-color;
background-color: transparent;
@@ -142,7 +152,7 @@ select.form-control {
.form-control-sm {
height: $input-height-sm;
padding: $input-padding-y-sm $input-padding-x-sm;
- font-size: $input-font-size-sm;
+ @include font-size($input-font-size-sm);
line-height: $input-line-height-sm;
@include border-radius($input-border-radius-sm);
}
@@ -150,7 +160,7 @@ select.form-control {
.form-control-lg {
height: $input-height-lg;
padding: $input-padding-y-lg $input-padding-x-lg;
- font-size: $input-font-size-lg;
+ @include font-size($input-font-size-lg);
line-height: $input-line-height-lg;
@include border-radius($input-border-radius-lg);
}
@@ -163,7 +173,6 @@ select.form-control {
}
}
-// stylelint-disable-next-line no-duplicate-selectors
textarea.form-control {
height: auto;
}
@@ -190,13 +199,13 @@ textarea.form-control {
.form-row {
display: flex;
flex-wrap: wrap;
- margin-right: -$form-grid-gutter-width / 2;
- margin-left: -$form-grid-gutter-width / 2;
+ margin-right: -$form-grid-gutter-width * .5;
+ margin-left: -$form-grid-gutter-width * .5;
> .col,
> [class*="col-"] {
- padding-right: $form-grid-gutter-width / 2;
- padding-left: $form-grid-gutter-width / 2;
+ padding-right: $form-grid-gutter-width * .5;
+ padding-left: $form-grid-gutter-width * .5;
}
}
@@ -216,6 +225,8 @@ textarea.form-control {
margin-top: $form-check-input-margin-y;
margin-left: -$form-check-input-gutter;
+ // Use [disabled] and :disabled for workaround https://github.com/twbs/bootstrap/issues/28247
+ &[disabled] ~ .form-check-label,
&:disabled ~ .form-check-label {
color: $text-muted;
}
@@ -248,8 +259,9 @@ textarea.form-control {
// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for
// server side validation.
- at include form-validation-state("valid", $form-feedback-valid-color);
- at include form-validation-state("invalid", $form-feedback-invalid-color);
+ at each $state, $data in $form-validation-states {
+ @include form-validation-state($state, map-get($data, color), map-get($data, icon));
+}
// Inline forms
//
@@ -318,6 +330,7 @@ textarea.form-control {
}
.form-check-input {
position: relative;
+ flex-shrink: 0;
margin-top: 0;
margin-right: $form-check-input-margin-x;
margin-left: 0;
diff --git a/devel/third-party/bootstrap-4.6.1/scss/_functions.scss b/devel/third-party/bootstrap-4.6.1/scss/_functions.scss
new file mode 100644
index 0000000000..13d9de0c1f
--- /dev/null
+++ b/devel/third-party/bootstrap-4.6.1/scss/_functions.scss
@@ -0,0 +1,190 @@
+// Bootstrap functions
+//
+// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.
+
+// Ascending
+// Used to evaluate Sass maps like our grid breakpoints.
+ at mixin _assert-ascending($map, $map-name) {
+ $prev-key: null;
+ $prev-num: null;
+ @each $key, $num in $map {
+ @if $prev-num == null or unit($num) == "%" or unit($prev-num) == "%" {
+ // Do nothing
+ } @else if not comparable($prev-num, $num) {
+ @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
+ } @else if $prev-num >= $num {
+ @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
+ }
+ $prev-key: $key;
+ $prev-num: $num;
+ }
+}
+
+// Starts at zero
+// Used to ensure the min-width of the lowest breakpoint starts at 0.
+ at mixin _assert-starts-at-zero($map, $map-name: "$grid-breakpoints") {
+ @if length($map) > 0 {
+ $values: map-values($map);
+ $first-value: nth($values, 1);
+ @if $first-value != 0 {
+ @warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.";
+ }
+ }
+}
+
+// Replace `$search` with `$replace` in `$string`
+// Used on our SVG icon backgrounds for custom forms.
+//
+// @author Hugo Giraudel
+// @param {String} $string - Initial string
+// @param {String} $search - Substring to replace
+// @param {String} $replace ('') - New value
+// @return {String} - Updated string
+ at function str-replace($string, $search, $replace: "") {
+ $index: str-index($string, $search);
+
+ @if $index {
+ @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
+ }
+
+ @return $string;
+}
+
+// See https://codepen.io/kevinweber/pen/dXWoRw
+//
+// Requires the use of quotes around data URIs.
+
+ at function escape-svg($string) {
+ @if str-index($string, "data:image/svg+xml") {
+ @each $char, $encoded in $escaped-characters {
+ // Do not escape the url brackets
+ @if str-index($string, "url(") == 1 {
+ $string: url("#{str-replace(str-slice($string, 6, -3), $char, $encoded)}");
+ } @else {
+ $string: str-replace($string, $char, $encoded);
+ }
+ }
+ }
+
+ @return $string;
+}
+
+// Color contrast
+ at function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {
+ $r: red($color);
+ $g: green($color);
+ $b: blue($color);
+
+ $yiq: (($r * 299) + ($g * 587) + ($b * 114)) * .001;
+
+ @if ($yiq >= $yiq-contrasted-threshold) {
+ @return $dark;
+ } @else {
+ @return $light;
+ }
+}
+
+// Retrieve color Sass maps
+ at function color($key: "blue") {
+ @return map-get($colors, $key);
+}
+
+ at function theme-color($key: "primary") {
+ @return map-get($theme-colors, $key);
+}
+
+ at function gray($key: "100") {
+ @return map-get($grays, $key);
+}
+
+// Request a theme color level
+ at function theme-color-level($color-name: "primary", $level: 0) {
+ $color: theme-color($color-name);
+ $color-base: if($level > 0, $black, $white);
+ $level: abs($level);
+
+ @return mix($color-base, $color, $level * $theme-color-interval);
+}
+
+// Return valid calc
+ at function add($value1, $value2, $return-calc: true) {
+ @if $value1 == null {
+ @return $value2;
+ }
+
+ @if $value2 == null {
+ @return $value1;
+ }
+
+ @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
+ @return $value1 + $value2;
+ }
+
+ @return if($return-calc == true, calc(#{$value1} + #{$value2}), $value1 + unquote(" + ") + $value2);
+}
+
+ at function subtract($value1, $value2, $return-calc: true) {
+ @if $value1 == null and $value2 == null {
+ @return null;
+ }
+
+ @if $value1 == null {
+ @return -$value2;
+ }
+
+ @if $value2 == null {
+ @return $value1;
+ }
+
+ @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
+ @return $value1 - $value2;
+ }
+
+ @if type-of($value2) != number {
+ $value2: unquote("(") + $value2 + unquote(")");
+ }
+
+ @return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + unquote(" - ") + $value2);
+}
+
+ at function divide($dividend, $divisor, $precision: 10) {
+ $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
+ $dividend: abs($dividend);
+ $divisor: abs($divisor);
+ @if $dividend == 0 {
+ @return 0;
+ }
+ @if $divisor == 0 {
+ @error "Cannot divide by 0";
+ }
+ $remainder: $dividend;
+ $result: 0;
+ $factor: 10;
+ @while ($remainder > 0 and $precision >= 0) {
+ $quotient: 0;
+ @while ($remainder >= $divisor) {
+ $remainder: $remainder - $divisor;
+ $quotient: $quotient + 1;
+ }
+ $result: $result * 10 + $quotient;
+ $factor: $factor * .1;
+ $remainder: $remainder * 10;
+ $precision: $precision - 1;
+ @if ($precision < 0 and $remainder >= $divisor * 5) {
+ $result: $result + 1;
+ }
+ }
+ $result: $result * $factor * $sign;
+ $dividend-unit: unit($dividend);
+ $divisor-unit: unit($divisor);
+ $unit-map: (
+ "px": 1px,
+ "rem": 1rem,
+ "em": 1em,
+ "%": 1%
+ );
+ @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
+ $result: $result * map-get($unit-map, $dividend-unit);
+ }
+ @return $result;
+}
diff --git a/devel/third-party/bootstrap-4.6.1/scss/_grid.scss b/devel/third-party/bootstrap-4.6.1/scss/_grid.scss
new file mode 100644
index 0000000000..0bfe5303b9
--- /dev/null
+++ b/devel/third-party/bootstrap-4.6.1/scss/_grid.scss
@@ -0,0 +1,73 @@
+// Container widths
+//
+// Set the container width, and override it for fixed navbars in media queries.
+
+ at if $enable-grid-classes {
+ // Single container class with breakpoint max-widths
+ .container,
+ // 100% wide container at all breakpoints
+ .container-fluid {
+ @include make-container();
+ }
+
+ // Responsive containers that are 100% wide until a breakpoint
+ @each $breakpoint, $container-max-width in $container-max-widths {
+ .container-#{$breakpoint} {
+ @extend .container-fluid;
+ }
+
+ @include media-breakpoint-up($breakpoint, $grid-breakpoints) {
+ %responsive-container-#{$breakpoint} {
+ max-width: $container-max-width;
+ }
+
+ // Extend each breakpoint which is smaller or equal to the current breakpoint
+ $extend-breakpoint: true;
+
+ @each $name, $width in $grid-breakpoints {
+ @if ($extend-breakpoint) {
+ .container#{breakpoint-infix($name, $grid-breakpoints)} {
+ @extend %responsive-container-#{$breakpoint};
+ }
+
+ // Once the current breakpoint is reached, stop extending
+ @if ($breakpoint == $name) {
+ $extend-breakpoint: false;
+ }
+ }
+ }
+ }
+ }
+}
+
+
+// Row
+//
+// Rows contain your columns.
+
+ at if $enable-grid-classes {
+ .row {
+ @include make-row();
+ }
+
+ // Remove the negative margin from default .row, then the horizontal padding
+ // from all immediate children columns (to prevent runaway style inheritance).
+ .no-gutters {
+ margin-right: 0;
+ margin-left: 0;
+
+ > .col,
+ > [class*="col-"] {
+ padding-right: 0;
+ padding-left: 0;
+ }
+ }
+}
+
+// Columns
+//
+// Common styles for small and large grid columns
+
+ at if $enable-grid-classes {
+ @include make-grid-columns();
+}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_images.scss b/devel/third-party/bootstrap-4.6.1/scss/_images.scss
similarity index 88%
rename from devel/third-party/bootstrap-4.2.1/scss/_images.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_images.scss
index 8e69b772f8..3d6a1014c4 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_images.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_images.scss
@@ -6,7 +6,7 @@
// which weren't expecting the images within themselves to be involuntarily resized.
// See also https://github.com/twbs/bootstrap/issues/18178
.img-fluid {
- @include img-fluid;
+ @include img-fluid();
}
@@ -19,7 +19,7 @@
@include box-shadow($thumbnail-box-shadow);
// Keep them at most 100% wide
- @include img-fluid;
+ @include img-fluid();
}
//
@@ -32,11 +32,11 @@
}
.figure-img {
- margin-bottom: $spacer / 2;
+ margin-bottom: $spacer * .5;
line-height: 1;
}
.figure-caption {
- font-size: $figure-caption-font-size;
+ @include font-size($figure-caption-font-size);
color: $figure-caption-color;
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_input-group.scss b/devel/third-party/bootstrap-4.6.1/scss/_input-group.scss
similarity index 82%
rename from devel/third-party/bootstrap-4.2.1/scss/_input-group.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_input-group.scss
index 81b33077a6..5acedd696e 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_input-group.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_input-group.scss
@@ -17,9 +17,8 @@
> .custom-file {
position: relative; // For focus state's z-index
flex: 1 1 auto;
- // Add width 1% and flex-basis auto to ensure that button will not wrap out
- // the column. Applies to IE Edge+ and Firefox. Chrome does not require this.
width: 1%;
+ min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size
margin-bottom: 0;
+ .form-control,
@@ -43,7 +42,6 @@
> .form-control,
> .custom-select {
- &:not(:last-child) { @include border-right-radius(0); }
&:not(:first-child) { @include border-left-radius(0); }
}
@@ -57,6 +55,24 @@
&:not(:last-child) .custom-file-label::after { @include border-right-radius(0); }
&:not(:first-child) .custom-file-label { @include border-left-radius(0); }
}
+
+ &:not(.has-validation) {
+ > .form-control:not(:last-child),
+ > .custom-select:not(:last-child),
+ > .custom-file:not(:last-child) .custom-file-label,
+ > .custom-file:not(:last-child) .custom-file-label::after {
+ @include border-right-radius(0);
+ }
+ }
+
+ &.has-validation {
+ > .form-control:nth-last-child(n + 3),
+ > .custom-select:nth-last-child(n + 3),
+ > .custom-file:nth-last-child(n + 3) .custom-file-label,
+ > .custom-file:nth-last-child(n + 3) .custom-file-label::after {
+ @include border-right-radius(0);
+ }
+ }
}
@@ -104,7 +120,7 @@
align-items: center;
padding: $input-padding-y $input-padding-x;
margin-bottom: 0; // Allow use of <label> elements by overriding our default margin-bottom
- font-size: $font-size-base; // Match inputs
+ @include font-size($input-font-size); // Match inputs
font-weight: $font-weight-normal;
line-height: $input-line-height;
color: $input-group-addon-color;
@@ -139,7 +155,7 @@
.input-group-lg > .input-group-prepend > .btn,
.input-group-lg > .input-group-append > .btn {
padding: $input-padding-y-lg $input-padding-x-lg;
- font-size: $input-font-size-lg;
+ @include font-size($input-font-size-lg);
line-height: $input-line-height-lg;
@include border-radius($input-border-radius-lg);
}
@@ -156,7 +172,7 @@
.input-group-sm > .input-group-prepend > .btn,
.input-group-sm > .input-group-append > .btn {
padding: $input-padding-y-sm $input-padding-x-sm;
- font-size: $input-font-size-sm;
+ @include font-size($input-font-size-sm);
line-height: $input-line-height-sm;
@include border-radius($input-border-radius-sm);
}
@@ -176,8 +192,10 @@
.input-group > .input-group-prepend > .btn,
.input-group > .input-group-prepend > .input-group-text,
-.input-group > .input-group-append:not(:last-child) > .btn,
-.input-group > .input-group-append:not(:last-child) > .input-group-text,
+.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .btn,
+.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .input-group-text,
+.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .btn,
+.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .input-group-text,
.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
@include border-right-radius(0);
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_jumbotron.scss b/devel/third-party/bootstrap-4.6.1/scss/_jumbotron.scss
similarity index 79%
rename from devel/third-party/bootstrap-4.2.1/scss/_jumbotron.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_jumbotron.scss
index 7966bba1e2..2c617edb59 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_jumbotron.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_jumbotron.scss
@@ -1,6 +1,7 @@
.jumbotron {
- padding: $jumbotron-padding ($jumbotron-padding / 2);
+ padding: $jumbotron-padding ($jumbotron-padding * .5);
margin-bottom: $jumbotron-padding;
+ color: $jumbotron-color;
background-color: $jumbotron-bg;
@include border-radius($border-radius-lg);
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_list-group.scss b/devel/third-party/bootstrap-4.6.1/scss/_list-group.scss
similarity index 58%
rename from devel/third-party/bootstrap-4.2.1/scss/_list-group.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_list-group.scss
index 796cc461f4..ec25ba8a1f 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_list-group.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_list-group.scss
@@ -9,6 +9,7 @@
// No need to set list-style: none; since .list-group-item is block level
padding-left: 0; // reset padding because ul and ol
margin-bottom: 0;
+ @include border-radius($list-group-border-radius);
}
@@ -23,7 +24,8 @@
text-align: inherit; // For `<button>`s (anchors inherit)
// Hover state
- @include hover-focus {
+ @include hover-focus() {
+ z-index: 1; // Place hover/focus items above their siblings for proper border styling
color: $list-group-action-hover-color;
text-decoration: none;
background-color: $list-group-hover-bg;
@@ -44,23 +46,17 @@
position: relative;
display: block;
padding: $list-group-item-padding-y $list-group-item-padding-x;
- // Place the border on the list items and negative margin up for better styling
- margin-bottom: -$list-group-border-width;
+ color: $list-group-color;
+ text-decoration: if($link-decoration == none, null, none);
background-color: $list-group-bg;
border: $list-group-border-width solid $list-group-border-color;
&:first-child {
- @include border-top-radius($list-group-border-radius);
+ @include border-top-radius(inherit);
}
&:last-child {
- margin-bottom: 0;
- @include border-bottom-radius($list-group-border-radius);
- }
-
- @include hover-focus {
- z-index: 1; // Place hover/active items above their siblings for proper border styling
- text-decoration: none;
+ @include border-bottom-radius(inherit);
}
&.disabled,
@@ -77,6 +73,56 @@
background-color: $list-group-active-bg;
border-color: $list-group-active-border-color;
}
+
+ & + & {
+ border-top-width: 0;
+
+ &.active {
+ margin-top: -$list-group-border-width;
+ border-top-width: $list-group-border-width;
+ }
+ }
+}
+
+
+// Horizontal
+//
+// Change the layout of list group items from vertical (default) to horizontal.
+
+ at each $breakpoint in map-keys($grid-breakpoints) {
+ @include media-breakpoint-up($breakpoint) {
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+ .list-group-horizontal#{$infix} {
+ flex-direction: row;
+
+ > .list-group-item {
+ &:first-child {
+ @include border-bottom-left-radius($list-group-border-radius);
+ @include border-top-right-radius(0);
+ }
+
+ &:last-child {
+ @include border-top-right-radius($list-group-border-radius);
+ @include border-bottom-left-radius(0);
+ }
+
+ &.active {
+ margin-top: 0;
+ }
+
+ + .list-group-item {
+ border-top-width: $list-group-border-width;
+ border-left-width: 0;
+
+ &.active {
+ margin-left: -$list-group-border-width;
+ border-left-width: $list-group-border-width;
+ }
+ }
+ }
+ }
+ }
}
@@ -86,26 +132,13 @@
// useful within other components (e.g., cards).
.list-group-flush {
- .list-group-item {
- border-right: 0;
- border-left: 0;
- @include border-radius(0);
+ @include border-radius(0);
- &:last-child {
- margin-bottom: -$list-group-border-width;
- }
- }
+ > .list-group-item {
+ border-width: 0 0 $list-group-border-width;
- &:first-child {
- .list-group-item:first-child {
- border-top: 0;
- }
- }
-
- &:last-child {
- .list-group-item:last-child {
- margin-bottom: 0;
- border-bottom: 0;
+ &:last-child {
+ border-bottom-width: 0;
}
}
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_media.scss b/devel/third-party/bootstrap-4.6.1/scss/_media.scss
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/scss/_media.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_media.scss
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_mixins.scss b/devel/third-party/bootstrap-4.6.1/scss/_mixins.scss
similarity index 89%
rename from devel/third-party/bootstrap-4.2.1/scss/_mixins.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_mixins.scss
index 8710166660..7e7a23d254 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_mixins.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_mixins.scss
@@ -2,6 +2,12 @@
//
// Used in conjunction with global variables to enable certain theme features.
+// Vendor
+ at import "vendor/rfs";
+
+// Deprecate
+ at import "mixins/deprecate";
+
// Utilities
@import "mixins/breakpoints";
@import "mixins/hover";
@@ -16,7 +22,7 @@
@import "mixins/text-truncate";
@import "mixins/visibility";
-// // Components
+// Components
@import "mixins/alert";
@import "mixins/buttons";
@import "mixins/caret";
@@ -27,14 +33,14 @@
@import "mixins/forms";
@import "mixins/table-row";
-// // Skins
+// Skins
@import "mixins/background-variant";
@import "mixins/border-radius";
@import "mixins/box-shadow";
@import "mixins/gradients";
@import "mixins/transition";
-// // Layout
+// Layout
@import "mixins/clearfix";
@import "mixins/grid-framework";
@import "mixins/grid";
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_modal.scss b/devel/third-party/bootstrap-4.6.1/scss/_modal.scss
similarity index 71%
rename from devel/third-party/bootstrap-4.2.1/scss/_modal.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_modal.scss
index 65b61d90c2..4d01788d70 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_modal.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_modal.scss
@@ -48,19 +48,59 @@
.modal.show & {
transform: $modal-show-transform;
}
+
+ // When trying to close, animate focus to scale
+ .modal.modal-static & {
+ transform: $modal-scale-transform;
+ }
+}
+
+.modal-dialog-scrollable {
+ display: flex; // IE10/11
+ max-height: subtract(100%, $modal-dialog-margin * 2);
+
+ .modal-content {
+ max-height: subtract(100vh, $modal-dialog-margin * 2); // IE10/11
+ overflow: hidden;
+ }
+
+ .modal-header,
+ .modal-footer {
+ flex-shrink: 0;
+ }
+
+ .modal-body {
+ overflow-y: auto;
+ }
}
.modal-dialog-centered {
display: flex;
align-items: center;
- min-height: calc(100% - (#{$modal-dialog-margin} * 2));
+ min-height: subtract(100%, $modal-dialog-margin * 2);
// Ensure `modal-dialog-centered` extends the full height of the view (IE10/11)
&::before {
display: block; // IE10
- height: calc(100vh - (#{$modal-dialog-margin} * 2));
+ height: subtract(100vh, $modal-dialog-margin * 2);
+ height: min-content; // Reset height to 0 except on IE
content: "";
}
+
+ // Ensure `.modal-body` shows scrollbar (IE10/11)
+ &.modal-dialog-scrollable {
+ flex-direction: column;
+ justify-content: center;
+ height: 100%;
+
+ .modal-content {
+ max-height: none;
+ }
+
+ &::before {
+ content: none;
+ }
+ }
}
// Actual modal
@@ -70,6 +110,7 @@
flex-direction: column;
width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`
// counteract the pointer-events: none; in the .modal-dialog
+ color: $modal-content-color;
pointer-events: auto;
background-color: $modal-content-bg;
background-clip: padding-box;
@@ -103,7 +144,7 @@
justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends
padding: $modal-header-padding;
border-bottom: $modal-header-border-width solid $modal-header-border-color;
- @include border-top-radius($modal-content-border-radius);
+ @include border-top-radius($modal-content-inner-border-radius);
.close {
padding: $modal-header-padding;
@@ -123,7 +164,7 @@
.modal-body {
position: relative;
// Enable `flex-grow: 1` so that the body take up as much space as possible
- // when should there be a fixed height on `.modal-dialog`.
+ // when there should be a fixed height on `.modal-dialog`.
flex: 1 1 auto;
padding: $modal-inner-padding;
}
@@ -131,15 +172,19 @@
// Footer (for actions)
.modal-footer {
display: flex;
+ flex-wrap: wrap;
align-items: center; // vertically center
justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items
- padding: $modal-inner-padding;
+ padding: $modal-inner-padding - $modal-footer-margin-between * .5;
border-top: $modal-footer-border-width solid $modal-footer-border-color;
- @include border-bottom-radius($modal-content-border-radius);
+ @include border-bottom-radius($modal-content-inner-border-radius);
- // Easily place margin between footer elements
- > :not(:first-child) { margin-left: .25rem; }
- > :not(:last-child) { margin-right: .25rem; }
+ // Place margin between footer elements
+ // This solution is far from ideal because of the universal selector usage,
+ // but is needed to fix https://github.com/twbs/bootstrap/issues/24800
+ > * {
+ margin: $modal-footer-margin-between * .5;
+ }
}
// Measure scrollbar width for padding body during modal show/hide
@@ -159,11 +204,20 @@
margin: $modal-dialog-margin-y-sm-up auto;
}
+ .modal-dialog-scrollable {
+ max-height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);
+
+ .modal-content {
+ max-height: subtract(100vh, $modal-dialog-margin-y-sm-up * 2);
+ }
+ }
+
.modal-dialog-centered {
- min-height: calc(100% - (#{$modal-dialog-margin-y-sm-up} * 2));
+ min-height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);
&::before {
- height: calc(100vh - (#{$modal-dialog-margin-y-sm-up} * 2));
+ height: subtract(100vh, $modal-dialog-margin-y-sm-up * 2);
+ height: min-content;
}
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_nav.scss b/devel/third-party/bootstrap-4.6.1/scss/_nav.scss
similarity index 91%
rename from devel/third-party/bootstrap-4.2.1/scss/_nav.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_nav.scss
index e5519b3a4d..fad684e57b 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_nav.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_nav.scss
@@ -1,7 +1,7 @@
// Base class
//
// Kickstart any navigation component with a set of style resets. Works with
-// `<nav>`s or `<ul>`s.
+// `<nav>`s, `<ul>`s or `<ol>`s.
.nav {
display: flex;
@@ -14,8 +14,9 @@
.nav-link {
display: block;
padding: $nav-link-padding-y $nav-link-padding-x;
+ text-decoration: if($link-decoration == none, null, none);
- @include hover-focus {
+ @include hover-focus() {
text-decoration: none;
}
@@ -34,15 +35,12 @@
.nav-tabs {
border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;
- .nav-item {
- margin-bottom: -$nav-tabs-border-width;
- }
-
.nav-link {
+ margin-bottom: -$nav-tabs-border-width;
border: $nav-tabs-border-width solid transparent;
@include border-top-radius($nav-tabs-border-radius);
- @include hover-focus {
+ @include hover-focus() {
border-color: $nav-tabs-link-hover-border-color;
}
@@ -91,6 +89,7 @@
//
.nav-fill {
+ > .nav-link,
.nav-item {
flex: 1 1 auto;
text-align: center;
@@ -98,6 +97,7 @@
}
.nav-justified {
+ > .nav-link,
.nav-item {
flex-basis: 0;
flex-grow: 1;
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_navbar.scss b/devel/third-party/bootstrap-4.6.1/scss/_navbar.scss
similarity index 77%
rename from devel/third-party/bootstrap-4.2.1/scss/_navbar.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_navbar.scss
index b5bc5a9748..cf5b667908 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_navbar.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_navbar.scss
@@ -25,13 +25,23 @@
// Because flex properties aren't inherited, we need to redeclare these first
// few properties so that content nested within behave properly.
- > .container,
- > .container-fluid {
+ %container-flex-properties {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
}
+
+ .container,
+ .container-fluid {
+ @extend %container-flex-properties;
+ }
+
+ @each $breakpoint, $container-max-width in $container-max-widths {
+ > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {
+ @extend %container-flex-properties;
+ }
+ }
}
@@ -44,11 +54,11 @@
padding-top: $navbar-brand-padding-y;
padding-bottom: $navbar-brand-padding-y;
margin-right: $navbar-padding-x;
- font-size: $navbar-brand-font-size;
+ @include font-size($navbar-brand-font-size);
line-height: inherit;
white-space: nowrap;
- @include hover-focus {
+ @include hover-focus() {
text-decoration: none;
}
}
@@ -107,20 +117,15 @@
// Button for toggling the navbar when in its collapsed state
.navbar-toggler {
padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;
- font-size: $navbar-toggler-font-size;
+ @include font-size($navbar-toggler-font-size);
line-height: 1;
background-color: transparent; // remove default button style
border: $border-width solid transparent; // remove default button style
@include border-radius($navbar-toggler-border-radius);
- @include hover-focus {
+ @include hover-focus() {
text-decoration: none;
}
-
- // Opinionated: add "hand" cursor to non-disabled .navbar-toggler elements
- &:not(:disabled):not(.disabled) {
- cursor: pointer;
- }
}
// Keep as a separate element so folks can easily override it with another icon
@@ -131,8 +136,12 @@
height: 1.5em;
vertical-align: middle;
content: "";
- background: no-repeat center center;
- background-size: 100% 100%;
+ background: 50% / 100% 100% no-repeat;
+}
+
+.navbar-nav-scroll {
+ max-height: $navbar-nav-scroll-max-height;
+ overflow-y: auto;
}
// Generate series of `.navbar-expand-*` responsive classes for configuring
@@ -144,11 +153,21 @@
&#{$infix} {
@include media-breakpoint-down($breakpoint) {
- > .container,
- > .container-fluid {
+ %container-navbar-expand-#{$breakpoint} {
padding-right: 0;
padding-left: 0;
}
+
+ > .container,
+ > .container-fluid {
+ @extend %container-navbar-expand-#{$breakpoint};
+ }
+
+ @each $size, $container-max-width in $container-max-widths {
+ > .container#{breakpoint-infix($size, $container-max-widths)} {
+ @extend %container-navbar-expand-#{$breakpoint};
+ }
+ }
}
@include media-breakpoint-up($next) {
@@ -169,13 +188,27 @@
}
// For nesting containers, have to redeclare for alignment purposes
+ %container-nesting-#{$breakpoint} {
+ flex-wrap: nowrap;
+ }
+
> .container,
> .container-fluid {
- flex-wrap: nowrap;
+ @extend %container-nesting-#{$breakpoint};
+ }
+
+ @each $size, $container-max-width in $container-max-widths {
+ > .container#{breakpoint-infix($size, $container-max-widths)} {
+ @extend %container-nesting-#{$breakpoint};
+ }
+ }
+
+ .navbar-nav-scroll {
+ overflow: visible;
}
.navbar-collapse {
- display: flex !important; // stylelint-disable-line declaration-no-important
+ display: flex !important; // stylelint-disable-line declaration-no-important
// Changes flex-bases to auto because of an IE10 bug
flex-basis: auto;
@@ -199,7 +232,7 @@
.navbar-brand {
color: $navbar-light-brand-color;
- @include hover-focus {
+ @include hover-focus() {
color: $navbar-light-brand-hover-color;
}
}
@@ -208,7 +241,7 @@
.nav-link {
color: $navbar-light-color;
- @include hover-focus {
+ @include hover-focus() {
color: $navbar-light-hover-color;
}
@@ -231,7 +264,7 @@
}
.navbar-toggler-icon {
- background-image: $navbar-light-toggler-icon-bg;
+ background-image: escape-svg($navbar-light-toggler-icon-bg);
}
.navbar-text {
@@ -239,7 +272,7 @@
a {
color: $navbar-light-active-color;
- @include hover-focus {
+ @include hover-focus() {
color: $navbar-light-active-color;
}
}
@@ -251,7 +284,7 @@
.navbar-brand {
color: $navbar-dark-brand-color;
- @include hover-focus {
+ @include hover-focus() {
color: $navbar-dark-brand-hover-color;
}
}
@@ -260,7 +293,7 @@
.nav-link {
color: $navbar-dark-color;
- @include hover-focus {
+ @include hover-focus() {
color: $navbar-dark-hover-color;
}
@@ -283,7 +316,7 @@
}
.navbar-toggler-icon {
- background-image: $navbar-dark-toggler-icon-bg;
+ background-image: escape-svg($navbar-dark-toggler-icon-bg);
}
.navbar-text {
@@ -291,7 +324,7 @@
a {
color: $navbar-dark-active-color;
- @include hover-focus {
+ @include hover-focus() {
color: $navbar-dark-active-color;
}
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_pagination.scss b/devel/third-party/bootstrap-4.6.1/scss/_pagination.scss
similarity index 83%
rename from devel/third-party/bootstrap-4.2.1/scss/_pagination.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_pagination.scss
index 9349f3f900..9313cc5475 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_pagination.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_pagination.scss
@@ -11,6 +11,7 @@
margin-left: -$pagination-border-width;
line-height: $pagination-line-height;
color: $pagination-color;
+ text-decoration: if($link-decoration == none, null, none);
background-color: $pagination-bg;
border: $pagination-border-width solid $pagination-border-color;
@@ -23,15 +24,10 @@
}
&:focus {
- z-index: 2;
+ z-index: 3;
outline: $pagination-focus-outline;
box-shadow: $pagination-focus-box-shadow;
}
-
- // Opinionated: add "hand" cursor to non-disabled .page-link elements
- &:not(:disabled):not(.disabled) {
- cursor: pointer;
- }
}
.page-item {
@@ -48,7 +44,7 @@
}
&.active .page-link {
- z-index: 1;
+ z-index: 3;
color: $pagination-active-color;
background-color: $pagination-active-bg;
border-color: $pagination-active-border-color;
@@ -70,9 +66,9 @@
//
.pagination-lg {
- @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $border-radius-lg);
+ @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $pagination-border-radius-lg);
}
.pagination-sm {
- @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $border-radius-sm);
+ @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $pagination-border-radius-sm);
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_popover.scss b/devel/third-party/bootstrap-4.6.1/scss/_popover.scss
similarity index 51%
rename from devel/third-party/bootstrap-4.2.1/scss/_popover.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_popover.scss
index 4a79fb7517..c7106a809d 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_popover.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_popover.scss
@@ -8,7 +8,7 @@
// Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
// So reset our font and text properties to avoid inheriting weird values.
@include reset-text();
- font-size: $popover-font-size;
+ @include font-size($popover-font-size);
// Allow breaking very long words so they don't overflow the popover's bounds
word-wrap: break-word;
background-color: $popover-bg;
@@ -22,7 +22,7 @@
display: block;
width: $popover-arrow-width;
height: $popover-arrow-height;
- margin: 0 $border-radius-lg;
+ margin: 0 $popover-border-radius;
&::before,
&::after {
@@ -38,72 +38,63 @@
.bs-popover-top {
margin-bottom: $popover-arrow-height;
- .arrow {
- bottom: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
- }
+ > .arrow {
+ bottom: subtract(-$popover-arrow-height, $popover-border-width);
- .arrow::before,
- .arrow::after {
- border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;
- }
-
- .arrow::before {
- bottom: 0;
- border-top-color: $popover-arrow-outer-color;
- }
+ &::before {
+ bottom: 0;
+ border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;
+ border-top-color: $popover-arrow-outer-color;
+ }
- .arrow::after {
- bottom: $popover-border-width;
- border-top-color: $popover-arrow-color;
+ &::after {
+ bottom: $popover-border-width;
+ border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;
+ border-top-color: $popover-arrow-color;
+ }
}
}
.bs-popover-right {
margin-left: $popover-arrow-height;
- .arrow {
- left: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
+ > .arrow {
+ left: subtract(-$popover-arrow-height, $popover-border-width);
width: $popover-arrow-height;
height: $popover-arrow-width;
- margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners
- }
-
- .arrow::before,
- .arrow::after {
- border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;
- }
+ margin: $popover-border-radius 0; // make sure the arrow does not touch the popover's rounded corners
- .arrow::before {
- left: 0;
- border-right-color: $popover-arrow-outer-color;
- }
+ &::before {
+ left: 0;
+ border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;
+ border-right-color: $popover-arrow-outer-color;
+ }
- .arrow::after {
- left: $popover-border-width;
- border-right-color: $popover-arrow-color;
+ &::after {
+ left: $popover-border-width;
+ border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;
+ border-right-color: $popover-arrow-color;
+ }
}
}
.bs-popover-bottom {
margin-top: $popover-arrow-height;
- .arrow {
- top: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
- }
-
- .arrow::before,
- .arrow::after {
- border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);
- }
+ > .arrow {
+ top: subtract(-$popover-arrow-height, $popover-border-width);
- .arrow::before {
- top: 0;
- border-bottom-color: $popover-arrow-outer-color;
- }
+ &::before {
+ top: 0;
+ border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);
+ border-bottom-color: $popover-arrow-outer-color;
+ }
- .arrow::after {
- top: $popover-border-width;
- border-bottom-color: $popover-arrow-color;
+ &::after {
+ top: $popover-border-width;
+ border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);
+ border-bottom-color: $popover-arrow-color;
+ }
}
// This will remove the popover-header's border just below the arrow
@@ -113,7 +104,7 @@
left: 50%;
display: block;
width: $popover-arrow-width;
- margin-left: -$popover-arrow-width / 2;
+ margin-left: -$popover-arrow-width * .5;
content: "";
border-bottom: $popover-border-width solid $popover-header-bg;
}
@@ -122,26 +113,23 @@
.bs-popover-left {
margin-right: $popover-arrow-height;
- .arrow {
- right: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
+ > .arrow {
+ right: subtract(-$popover-arrow-height, $popover-border-width);
width: $popover-arrow-height;
height: $popover-arrow-width;
- margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners
- }
-
- .arrow::before,
- .arrow::after {
- border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;
- }
+ margin: $popover-border-radius 0; // make sure the arrow does not touch the popover's rounded corners
- .arrow::before {
- right: 0;
- border-left-color: $popover-arrow-outer-color;
- }
+ &::before {
+ right: 0;
+ border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;
+ border-left-color: $popover-arrow-outer-color;
+ }
- .arrow::after {
- right: $popover-border-width;
- border-left-color: $popover-arrow-color;
+ &::after {
+ right: $popover-border-width;
+ border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;
+ border-left-color: $popover-arrow-color;
+ }
}
}
@@ -165,12 +153,11 @@
.popover-header {
padding: $popover-header-padding-y $popover-header-padding-x;
margin-bottom: 0; // Reset the default from Reboot
- font-size: $font-size-base;
+ @include font-size($font-size-base);
color: $popover-header-color;
background-color: $popover-header-bg;
border-bottom: $popover-border-width solid darken($popover-header-bg, 5%);
- $offset-border-width: calc(#{$border-radius-lg} - #{$popover-border-width});
- @include border-top-radius($offset-border-width);
+ @include border-top-radius($popover-inner-border-radius);
&:empty {
display: none;
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_print.scss b/devel/third-party/bootstrap-4.6.1/scss/_print.scss
similarity index 88%
rename from devel/third-party/bootstrap-4.2.1/scss/_print.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_print.scss
index 1df9487358..915298aaae 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_print.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_print.scss
@@ -1,6 +1,6 @@
// stylelint-disable declaration-no-important, selector-no-qualifying-type
-// Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css
+// Source: https://github.com/h5bp/main.css/blob/master/src/_print.css
// ==========================================================================
// Print styles.
@@ -51,19 +51,10 @@
}
pre,
blockquote {
- border: $border-width solid $gray-500; // Bootstrap custom code; using `$border-width` instead of 1px
+ border: $border-width solid $gray-500; // Bootstrap custom code; using `$border-width` instead of 1px
page-break-inside: avoid;
}
- //
- // Printing Tables:
- // http://css-discuss.incutio.com/wiki/Printing_Tables
- //
-
- thead {
- display: table-header-group;
- }
-
tr,
img {
page-break-inside: avoid;
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_progress.scss b/devel/third-party/bootstrap-4.6.1/scss/_progress.scss
similarity index 52%
rename from devel/third-party/bootstrap-4.2.1/scss/_progress.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_progress.scss
index 0ac3e0c93f..e206474a83 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_progress.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_progress.scss
@@ -1,13 +1,17 @@
- at keyframes progress-bar-stripes {
- from { background-position: $progress-height 0; }
- to { background-position: 0 0; }
+// Disable animation if transitions are disabled
+ at if $enable-transitions {
+ @keyframes progress-bar-stripes {
+ from { background-position: $progress-height 0; }
+ to { background-position: 0 0; }
+ }
}
.progress {
display: flex;
height: $progress-height;
overflow: hidden; // force rounded corners by cropping it
- font-size: $progress-font-size;
+ line-height: 0;
+ @include font-size($progress-font-size);
background-color: $progress-bg;
@include border-radius($progress-border-radius);
@include box-shadow($progress-box-shadow);
@@ -17,6 +21,7 @@
display: flex;
flex-direction: column;
justify-content: center;
+ overflow: hidden;
color: $progress-bar-color;
text-align: center;
white-space: nowrap;
@@ -29,6 +34,14 @@
background-size: $progress-height $progress-height;
}
-.progress-bar-animated {
- animation: progress-bar-stripes $progress-bar-animation-timing;
+ at if $enable-transitions {
+ .progress-bar-animated {
+ animation: $progress-bar-animation-timing progress-bar-stripes;
+
+ @if $enable-prefers-reduced-motion-media-query {
+ @media (prefers-reduced-motion: reduce) {
+ animation: none;
+ }
+ }
+ }
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_reboot.scss b/devel/third-party/bootstrap-4.6.1/scss/_reboot.scss
similarity index 77%
rename from devel/third-party/bootstrap-4.2.1/scss/_reboot.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_reboot.scss
index d4167cc8ec..cd93bfe240 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_reboot.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_reboot.scss
@@ -1,4 +1,4 @@
-// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix
+// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix
// Reboot
//
@@ -46,7 +46,7 @@ article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
body {
margin: 0; // 1
font-family: $font-family-base;
- font-size: $font-size-base;
+ @include font-size($font-size-base);
font-weight: $font-weight-base;
line-height: $line-height-base;
color: $body-color;
@@ -54,12 +54,16 @@ body {
background-color: $body-bg; // 2
}
-// Suppress the focus outline on elements that cannot be accessed via keyboard.
-// This prevents an unwanted focus outline from appearing around elements that
-// might still respond to pointer events.
+// Future-proof rule: in browsers that support :focus-visible, suppress the focus outline
+// on elements that programmatically receive focus but wouldn't normally show a visible
+// focus outline. In general, this would mean that the outline is only applied if the
+// interaction that led to the element receiving programmatic focus was a keyboard interaction,
+// or the browser has somehow determined that the user is primarily a keyboard user and/or
+// wants focus outlines to always be presented.
//
-// Credit: https://github.com/suitcss/base
-[tabindex="-1"]:focus {
+// See https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible
+// and https://developer.paciellogroup.com/blog/2018/03/focus-visible-and-backwards-compatibility/
+[tabindex="-1"]:focus:not(:focus-visible) {
outline: 0 !important;
}
@@ -155,7 +159,7 @@ strong {
}
small {
- font-size: 80%; // Add the correct font size in all browsers
+ @include font-size(80%); // Add the correct font size in all browsers
}
//
@@ -166,7 +170,7 @@ small {
sub,
sup {
position: relative;
- font-size: 75%;
+ @include font-size(75%);
line-height: 0;
vertical-align: baseline;
}
@@ -184,30 +188,25 @@ a {
text-decoration: $link-decoration;
background-color: transparent; // Remove the gray background on active links in IE 10.
- @include hover {
+ @include hover() {
color: $link-hover-color;
text-decoration: $link-hover-decoration;
}
}
-// And undo these styles for placeholder links/named anchors (without href)
-// which have not been made explicitly keyboard-focusable (without tabindex).
+// And undo these styles for placeholder links/named anchors (without href).
// It would be more straightforward to just use a[href] in previous block, but that
// causes specificity issues in many other styles that are too complex to fix.
// See https://github.com/twbs/bootstrap/issues/19402
-a:not([href]):not([tabindex]) {
+a:not([href]):not([class]) {
color: inherit;
text-decoration: none;
- @include hover-focus {
+ @include hover() {
color: inherit;
text-decoration: none;
}
-
- &:focus {
- outline: 0;
- }
}
@@ -220,7 +219,7 @@ code,
kbd,
samp {
font-family: $font-family-monospace;
- font-size: 1em; // Correct the odd `em` font sizing in all browsers.
+ @include font-size(1em); // Correct the odd `em` font sizing in all browsers.
}
pre {
@@ -230,6 +229,9 @@ pre {
margin-bottom: 1rem;
// Don't allow content to break outside
overflow: auto;
+ // Disable auto-hiding scrollbar in IE & legacy Edge to avoid overlap,
+ // making it impossible to interact with the content
+ -ms-overflow-style: scrollbar;
}
@@ -276,10 +278,14 @@ caption {
caption-side: bottom;
}
+// 1. Removes font-weight bold by inheriting
+// 2. Matches default `<td>` alignment by inheriting `text-align`.
+// 3. Fix alignment for Safari
+
th {
- // Matches default `<td>` alignment by inheriting from the `<body>`, or the
- // closest parent with a set `text-align`.
- text-align: inherit;
+ font-weight: $table-th-font-weight; // 1
+ text-align: inherit; // 2
+ text-align: -webkit-match-parent; // 3
}
@@ -297,16 +303,17 @@ label {
//
// Details at https://github.com/twbs/bootstrap/issues/24093
button {
+ // stylelint-disable-next-line property-disallowed-list
border-radius: 0;
}
-// Work around a Firefox/IE bug where the transparent `button` background
-// results in a loss of the default `button` focus styles.
-//
-// Credit: https://github.com/suitcss/base/
-button:focus {
- outline: 1px dotted;
- outline: 5px auto -webkit-focus-ring-color;
+// Explicitly remove focus outline in Chromium when it shouldn't be
+// visible (e.g. as result of mouse click or touch tap). It already
+// should be doing this automatically, but seems to currently be
+// confused and applies its very visible two-tone outline anyway.
+
+button:focus:not(:focus-visible) {
+ outline: 0;
}
input,
@@ -316,7 +323,7 @@ optgroup,
textarea {
margin: 0; // Remove the margin in Firefox and Safari
font-family: inherit;
- font-size: inherit;
+ @include font-size(inherit);
line-height: inherit;
}
@@ -330,6 +337,21 @@ select {
text-transform: none; // Remove the inheritance of text transform in Firefox
}
+// Set the cursor for non-`<button>` buttons
+//
+// Details at https://github.com/twbs/bootstrap/pull/30562
+[role="button"] {
+ cursor: pointer;
+}
+
+// Remove the inheritance of word-wrap in Safari.
+//
+// Details at https://github.com/twbs/bootstrap/issues/24990
+select {
+ word-wrap: normal;
+}
+
+
// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
// controls in Android 4.
// 2. Correct the inability to style clickable types in iOS and Safari.
@@ -340,6 +362,18 @@ button,
-webkit-appearance: button; // 2
}
+// Opinionated: add "hand" cursor to non-disabled button elements.
+ at if $enable-pointer-cursor-for-buttons {
+ button,
+ [type="button"],
+ [type="reset"],
+ [type="submit"] {
+ &:not(:disabled) {
+ cursor: pointer;
+ }
+ }
+}
+
// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
@@ -356,18 +390,6 @@ input[type="checkbox"] {
}
-input[type="date"],
-input[type="time"],
-input[type="datetime-local"],
-input[type="month"] {
- // Remove the default appearance of temporal inputs to avoid a Mobile Safari
- // bug where setting a custom line-height prevents text from being vertically
- // centered within the input.
- // See https://bugs.webkit.org/show_bug.cgi?id=139848
- // and https://github.com/twbs/bootstrap/issues/11266
- -webkit-appearance: listbox;
-}
-
textarea {
overflow: auto; // Remove the default vertical scrollbar in IE.
// Textareas should really only resize vertically so they don't break their (horizontal) containers.
@@ -395,7 +417,7 @@ legend {
max-width: 100%; // 1
padding: 0;
margin-bottom: .5rem;
- font-size: 1.5rem;
+ @include font-size(1.5rem);
line-height: inherit;
color: inherit; // 2
white-space: normal; // 1
@@ -421,7 +443,7 @@ progress {
}
//
-// Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
+// Remove the inner padding in Chrome and Safari on macOS.
//
[type="search"]::-webkit-search-decoration {
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_root.scss b/devel/third-party/bootstrap-4.6.1/scss/_root.scss
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/scss/_root.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_root.scss
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_spinners.scss b/devel/third-party/bootstrap-4.6.1/scss/_spinners.scss
similarity index 61%
rename from devel/third-party/bootstrap-4.2.1/scss/_spinners.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_spinners.scss
index ed7e2bc650..98c0108e39 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_spinners.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_spinners.scss
@@ -10,11 +10,12 @@
display: inline-block;
width: $spinner-width;
height: $spinner-height;
- vertical-align: text-bottom;
+ vertical-align: $spinner-vertical-align;
border: $spinner-border-width solid currentColor;
border-right-color: transparent;
+ // stylelint-disable-next-line property-disallowed-list
border-radius: 50%;
- animation: spinner-border .75s linear infinite;
+ animation: .75s linear infinite spinner-border;
}
.spinner-border-sm {
@@ -33,6 +34,7 @@
}
50% {
opacity: 1;
+ transform: none;
}
}
@@ -40,14 +42,24 @@
display: inline-block;
width: $spinner-width;
height: $spinner-height;
- vertical-align: text-bottom;
+ vertical-align: $spinner-vertical-align;
background-color: currentColor;
+ // stylelint-disable-next-line property-disallowed-list
border-radius: 50%;
opacity: 0;
- animation: spinner-grow .75s linear infinite;
+ animation: .75s linear infinite spinner-grow;
}
.spinner-grow-sm {
width: $spinner-width-sm;
height: $spinner-height-sm;
}
+
+ at if $enable-prefers-reduced-motion-media-query {
+ @media (prefers-reduced-motion: reduce) {
+ .spinner-border,
+ .spinner-grow {
+ animation-duration: 1.5s;
+ }
+ }
+}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_tables.scss b/devel/third-party/bootstrap-4.6.1/scss/_tables.scss
similarity index 93%
rename from devel/third-party/bootstrap-4.2.1/scss/_tables.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_tables.scss
index a1150420f1..5fd77a4eb0 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_tables.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_tables.scss
@@ -5,6 +5,7 @@
.table {
width: 100%;
margin-bottom: $spacer;
+ color: $table-color;
background-color: $table-bg; // Reset for nesting within parents with `background-color`.
th,
@@ -22,10 +23,6 @@
tbody + tbody {
border-top: (2 * $table-border-width) solid $table-border-color;
}
-
- .table {
- background-color: $body-bg;
- }
}
@@ -87,7 +84,8 @@
.table-hover {
tbody tr {
- @include hover {
+ @include hover() {
+ color: $table-hover-color;
background-color: $table-hover-bg;
}
}
@@ -144,14 +142,15 @@
}
&.table-striped {
- tbody tr:nth-of-type(odd) {
+ tbody tr:nth-of-type(#{$table-striped-order}) {
background-color: $table-dark-accent-bg;
}
}
&.table-hover {
tbody tr {
- @include hover {
+ @include hover() {
+ color: $table-dark-hover-color;
background-color: $table-dark-hover-bg;
}
}
@@ -175,7 +174,6 @@
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
- -ms-overflow-style: -ms-autohiding-scrollbar; // See https://github.com/twbs/bootstrap/pull/10057
// Prevent double border on horizontal scroll due to use of `display: block;`
> .table-bordered {
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_toasts.scss b/devel/third-party/bootstrap-4.6.1/scss/_toasts.scss
similarity index 69%
rename from devel/third-party/bootstrap-4.2.1/scss/_toasts.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_toasts.scss
index 5babc3e4f8..f9ca8d91cd 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_toasts.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_toasts.scss
@@ -1,14 +1,16 @@
.toast {
+ // Prevents from shrinking in IE11, when in a flex container
+ // See https://github.com/twbs/bootstrap/issues/28341
+ flex-basis: $toast-max-width;
max-width: $toast-max-width;
- overflow: hidden; // cheap rounded corners on nested items
- font-size: $toast-font-size; // knock it down to 14px
+ @include font-size($toast-font-size);
+ color: $toast-color;
background-color: $toast-background-color;
background-clip: padding-box;
border: $toast-border-width solid $toast-border-color;
- border-radius: $toast-border-radius;
box-shadow: $toast-box-shadow;
- backdrop-filter: blur(10px);
opacity: 0;
+ @include border-radius($toast-border-radius);
&:not(:last-child) {
margin-bottom: $toast-padding-x;
@@ -36,6 +38,7 @@
background-color: $toast-header-background-color;
background-clip: padding-box;
border-bottom: $toast-border-width solid $toast-header-border-color;
+ @include border-top-radius(subtract($toast-border-radius, $toast-border-width));
}
.toast-body {
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_tooltip.scss b/devel/third-party/bootstrap-4.6.1/scss/_tooltip.scss
similarity index 87%
rename from devel/third-party/bootstrap-4.2.1/scss/_tooltip.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_tooltip.scss
index 1286ebfcf9..6771b4eb4f 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_tooltip.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_tooltip.scss
@@ -7,7 +7,7 @@
// Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
// So reset our font and text properties to avoid inheriting weird values.
@include reset-text();
- font-size: $tooltip-font-size;
+ @include font-size($tooltip-font-size);
// Allow breaking very long words so they don't overflow the tooltip's bounds
word-wrap: break-word;
opacity: 0;
@@ -37,7 +37,7 @@
&::before {
top: 0;
- border-width: $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;
+ border-width: $tooltip-arrow-height ($tooltip-arrow-width * .5) 0;
border-top-color: $tooltip-arrow-color;
}
}
@@ -53,7 +53,7 @@
&::before {
right: 0;
- border-width: ($tooltip-arrow-width / 2) $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;
+ border-width: ($tooltip-arrow-width * .5) $tooltip-arrow-height ($tooltip-arrow-width * .5) 0;
border-right-color: $tooltip-arrow-color;
}
}
@@ -67,7 +67,7 @@
&::before {
bottom: 0;
- border-width: 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;
+ border-width: 0 ($tooltip-arrow-width * .5) $tooltip-arrow-height;
border-bottom-color: $tooltip-arrow-color;
}
}
@@ -83,7 +83,7 @@
&::before {
left: 0;
- border-width: ($tooltip-arrow-width / 2) 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;
+ border-width: ($tooltip-arrow-width * .5) 0 ($tooltip-arrow-width * .5) $tooltip-arrow-height;
border-left-color: $tooltip-arrow-color;
}
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_transitions.scss b/devel/third-party/bootstrap-4.6.1/scss/_transitions.scss
similarity index 83%
rename from devel/third-party/bootstrap-4.2.1/scss/_transitions.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_transitions.scss
index c8d91e2717..40be4d918a 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_transitions.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_transitions.scss
@@ -1,5 +1,3 @@
-// stylelint-disable selector-no-qualifying-type
-
.fade {
@include transition($transition-fade);
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_type.scss b/devel/third-party/bootstrap-4.6.1/scss/_type.scss
similarity index 66%
rename from devel/third-party/bootstrap-4.2.1/scss/_type.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_type.scss
index 37dd967328..3112a734bb 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_type.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_type.scss
@@ -1,4 +1,4 @@
-// stylelint-disable declaration-no-important, selector-list-comma-newline-after
+// stylelint-disable selector-list-comma-newline-after
//
// Headings
@@ -13,36 +13,36 @@ h1, h2, h3, h4, h5, h6,
color: $headings-color;
}
-h1, .h1 { font-size: $h1-font-size; }
-h2, .h2 { font-size: $h2-font-size; }
-h3, .h3 { font-size: $h3-font-size; }
-h4, .h4 { font-size: $h4-font-size; }
-h5, .h5 { font-size: $h5-font-size; }
-h6, .h6 { font-size: $h6-font-size; }
+h1, .h1 { @include font-size($h1-font-size); }
+h2, .h2 { @include font-size($h2-font-size); }
+h3, .h3 { @include font-size($h3-font-size); }
+h4, .h4 { @include font-size($h4-font-size); }
+h5, .h5 { @include font-size($h5-font-size); }
+h6, .h6 { @include font-size($h6-font-size); }
.lead {
- font-size: $lead-font-size;
+ @include font-size($lead-font-size);
font-weight: $lead-font-weight;
}
// Type display classes
.display-1 {
- font-size: $display1-size;
+ @include font-size($display1-size);
font-weight: $display1-weight;
line-height: $display-line-height;
}
.display-2 {
- font-size: $display2-size;
+ @include font-size($display2-size);
font-weight: $display2-weight;
line-height: $display-line-height;
}
.display-3 {
- font-size: $display3-size;
+ @include font-size($display3-size);
font-weight: $display3-weight;
line-height: $display-line-height;
}
.display-4 {
- font-size: $display4-size;
+ @include font-size($display4-size);
font-weight: $display4-weight;
line-height: $display-line-height;
}
@@ -66,7 +66,7 @@ hr {
small,
.small {
- font-size: $small-font-size;
+ @include font-size($small-font-size);
font-weight: $font-weight-normal;
}
@@ -82,12 +82,12 @@ mark,
//
.list-unstyled {
- @include list-unstyled;
+ @include list-unstyled();
}
// Inline turns list items into inline-block
.list-inline {
- @include list-unstyled;
+ @include list-unstyled();
}
.list-inline-item {
display: inline-block;
@@ -104,19 +104,19 @@ mark,
// Builds on `abbr`
.initialism {
- font-size: 90%;
+ @include font-size(90%);
text-transform: uppercase;
}
// Blockquotes
.blockquote {
margin-bottom: $spacer;
- font-size: $blockquote-font-size;
+ @include font-size($blockquote-font-size);
}
.blockquote-footer {
display: block;
- font-size: $blockquote-small-font-size;
+ @include font-size($blockquote-small-font-size);
color: $blockquote-small-color;
&::before {
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_utilities.scss b/devel/third-party/bootstrap-4.6.1/scss/_utilities.scss
similarity index 86%
rename from devel/third-party/bootstrap-4.2.1/scss/_utilities.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_utilities.scss
index 913fb852d5..10e31dd7e9 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_utilities.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_utilities.scss
@@ -6,11 +6,13 @@
@import "utilities/embed";
@import "utilities/flex";
@import "utilities/float";
+ at import "utilities/interactions";
@import "utilities/overflow";
@import "utilities/position";
@import "utilities/screenreaders";
@import "utilities/shadows";
@import "utilities/sizing";
@import "utilities/spacing";
+ at import "utilities/stretched-link";
@import "utilities/text";
@import "utilities/visibility";
diff --git a/devel/third-party/bootstrap-4.2.1/scss/_variables.scss b/devel/third-party/bootstrap-4.6.1/scss/_variables.scss
similarity index 78%
rename from devel/third-party/bootstrap-4.2.1/scss/_variables.scss
rename to devel/third-party/bootstrap-4.6.1/scss/_variables.scss
index 25e26843e0..7d8fb3b3bf 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/_variables.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/_variables.scss
@@ -18,7 +18,6 @@ $gray-900: #212529 !default;
$black: #000 !default;
$grays: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
$grays: map-merge(
(
"100": $gray-100,
@@ -46,7 +45,6 @@ $teal: #20c997 !default;
$cyan: #17a2b8 !default;
$colors: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
$colors: map-merge(
(
"blue": $blue,
@@ -76,7 +74,6 @@ $light: $gray-100 !default;
$dark: $gray-800 !default;
$theme-colors: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
$theme-colors: map-merge(
(
"primary": $primary,
@@ -101,6 +98,15 @@ $yiq-contrasted-threshold: 150 !default;
$yiq-text-dark: $gray-900 !default;
$yiq-text-light: $white !default;
+// Characters which are escaped by the escape-svg function
+$escaped-characters: (
+ ("<", "%3c"),
+ (">", "%3e"),
+ ("#", "%23"),
+ ("(", "%28"),
+ (")", "%29"),
+) !default;
+
// Options
//
@@ -114,8 +120,11 @@ $enable-transitions: true !default;
$enable-prefers-reduced-motion-media-query: true !default;
$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS
$enable-grid-classes: true !default;
+$enable-pointer-cursor-for-buttons: true !default;
$enable-print-styles: true !default;
+$enable-responsive-font-sizes: false !default;
$enable-validation-icons: true !default;
+$enable-deprecation-messages: true !default;
// Spacing
@@ -126,7 +135,6 @@ $enable-validation-icons: true !default;
$spacer: 1rem !default;
$spacers: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
$spacers: map-merge(
(
0: 0,
@@ -141,7 +149,6 @@ $spacers: map-merge(
// This variable affects the `.h-*` and `.w-*` classes.
$sizes: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
$sizes: map-merge(
(
25: 25%,
@@ -185,38 +192,28 @@ $paragraph-margin-bottom: 1rem !default;
// Define the minimum dimensions at which your layout will change,
// adapting to different screen sizes, for use in media queries.
-$grid-breakpoints: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
-$grid-breakpoints: map-merge(
- (
- xs: 0,
- sm: 576px,
- md: 768px,
- lg: 992px,
- xl: 1200px
- ),
- $grid-breakpoints
-);
+$grid-breakpoints: (
+ xs: 0,
+ sm: 576px,
+ md: 768px,
+ lg: 992px,
+ xl: 1200px
+) !default;
@include _assert-ascending($grid-breakpoints, "$grid-breakpoints");
- at include _assert-starts-at-zero($grid-breakpoints);
+ at include _assert-starts-at-zero($grid-breakpoints, "$grid-breakpoints");
// Grid containers
//
// Define the maximum width of `.container` for different screen sizes.
-$container-max-widths: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
-$container-max-widths: map-merge(
- (
- sm: 540px,
- md: 720px,
- lg: 960px,
- xl: 1140px
- ),
- $container-max-widths
-);
+$container-max-widths: (
+ sm: 540px,
+ md: 720px,
+ lg: 960px,
+ xl: 1140px
+) !default;
@include _assert-ascending($container-max-widths, "$container-max-widths");
@@ -227,6 +224,7 @@ $container-max-widths: map-merge(
$grid-columns: 12 !default;
$grid-gutter-width: 30px !default;
+$grid-row-columns: 6 !default;
// Components
@@ -253,36 +251,37 @@ $component-active-color: $white !default;
$component-active-bg: theme-color("primary") !default;
$caret-width: .3em !default;
+$caret-vertical-align: $caret-width * .85 !default;
+$caret-spacing: $caret-width * .85 !default;
$transition-base: all .2s ease-in-out !default;
$transition-fade: opacity .15s linear !default;
$transition-collapse: height .35s ease !default;
$embed-responsive-aspect-ratios: () !default;
-// stylelint-disable-next-line scss/dollar-variable-default
$embed-responsive-aspect-ratios: join(
(
(21 9),
(16 9),
- (3 4),
+ (4 3),
(1 1),
),
$embed-responsive-aspect-ratios
);
-// Fonts
+// Typography
//
// Font, line-height, and color for body text, headings, and more.
// stylelint-disable value-keyword-case
-$font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
+$font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
$font-family-base: $font-family-sans-serif !default;
// stylelint-enable value-keyword-case
$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`
-$font-size-lg: ($font-size-base * 1.25) !default;
-$font-size-sm: ($font-size-base * .875) !default;
+$font-size-lg: $font-size-base * 1.25 !default;
+$font-size-sm: $font-size-base * .875 !default;
$font-weight-lighter: lighter !default;
$font-weight-light: 300 !default;
@@ -300,11 +299,11 @@ $h4-font-size: $font-size-base * 1.5 !default;
$h5-font-size: $font-size-base * 1.25 !default;
$h6-font-size: $font-size-base !default;
-$headings-margin-bottom: $spacer / 2 !default;
-$headings-font-family: inherit !default;
+$headings-margin-bottom: $spacer * .5 !default;
+$headings-font-family: null !default;
$headings-font-weight: 500 !default;
$headings-line-height: 1.2 !default;
-$headings-color: inherit !default;
+$headings-color: null !default;
$display1-size: 6rem !default;
$display2-size: 5.5rem !default;
@@ -317,7 +316,7 @@ $display3-weight: 300 !default;
$display4-weight: 300 !default;
$display-line-height: $headings-line-height !default;
-$lead-font-size: ($font-size-base * 1.25) !default;
+$lead-font-size: $font-size-base * 1.25 !default;
$lead-font-weight: 300 !default;
$small-font-size: 80% !default;
@@ -326,7 +325,7 @@ $text-muted: $gray-600 !default;
$blockquote-small-color: $gray-600 !default;
$blockquote-small-font-size: $small-font-size !default;
-$blockquote-font-size: ($font-size-base * 1.25) !default;
+$blockquote-font-size: $font-size-base * 1.25 !default;
$hr-border-color: rgba($black, .1) !default;
$hr-border-width: $border-width !default;
@@ -352,22 +351,26 @@ $hr-margin-y: $spacer !default;
$table-cell-padding: .75rem !default;
$table-cell-padding-sm: .3rem !default;
-$table-bg: transparent !default;
+$table-color: $body-color !default;
+$table-bg: null !default;
$table-accent-bg: rgba($black, .05) !default;
+$table-hover-color: $table-color !default;
$table-hover-bg: rgba($black, .075) !default;
$table-active-bg: $table-hover-bg !default;
$table-border-width: $border-width !default;
-$table-border-color: $gray-300 !default;
+$table-border-color: $border-color !default;
$table-head-bg: $gray-200 !default;
$table-head-color: $gray-700 !default;
+$table-th-font-weight: null !default;
-$table-dark-bg: $gray-900 !default;
+$table-dark-color: $white !default;
+$table-dark-bg: $gray-800 !default;
$table-dark-accent-bg: rgba($white, .05) !default;
+$table-dark-hover-color: $table-dark-color !default;
$table-dark-hover-bg: rgba($white, .075) !default;
-$table-dark-border-color: lighten($gray-900, 7.5%) !default;
-$table-dark-color: $white !default;
+$table-dark-border-color: lighten($table-dark-bg, 7.5%) !default;
$table-striped-order: odd !default;
@@ -383,6 +386,7 @@ $table-border-level: -6 !default;
$input-btn-padding-y: .375rem !default;
$input-btn-padding-x: .75rem !default;
+$input-btn-font-family: null !default;
$input-btn-font-size: $font-size-base !default;
$input-btn-line-height: $line-height-base !default;
@@ -409,8 +413,10 @@ $input-btn-border-width: $border-width !default;
$btn-padding-y: $input-btn-padding-y !default;
$btn-padding-x: $input-btn-padding-x !default;
+$btn-font-family: $input-btn-font-family !default;
$btn-font-size: $input-btn-font-size !default;
$btn-line-height: $input-btn-line-height !default;
+$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping
$btn-padding-y-sm: $input-btn-padding-y-sm !default;
$btn-padding-x-sm: $input-btn-padding-x-sm !default;
@@ -449,6 +455,7 @@ $label-margin-bottom: .5rem !default;
$input-padding-y: $input-btn-padding-y !default;
$input-padding-x: $input-btn-padding-x !default;
+$input-font-family: $input-btn-font-family !default;
$input-font-size: $input-btn-font-size !default;
$input-font-weight: $font-weight-base !default;
$input-line-height: $input-btn-line-height !default;
@@ -486,14 +493,13 @@ $input-plaintext-color: $body-color !default;
$input-height-border: $input-border-width * 2 !default;
-$input-height-inner: ($input-btn-font-size * $input-btn-line-height) + ($input-btn-padding-y * 2) !default;
-$input-height: calc(#{$input-height-inner} + #{$input-height-border}) !default;
-
-$input-height-inner-sm: ($input-btn-font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default;
-$input-height-sm: calc(#{$input-height-inner-sm} + #{$input-height-border}) !default;
+$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;
+$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;
+$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;
-$input-height-inner-lg: ($input-btn-font-size-lg * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default;
-$input-height-lg: calc(#{$input-height-inner-lg} + #{$input-height-border}) !default;
+$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;
+$input-height-sm: add($input-line-height-sm * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;
+$input-height-lg: add($input-line-height-lg * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;
$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
@@ -517,6 +523,7 @@ $custom-forms-transition: background-color .15s ease-in-out, borde
$custom-control-gutter: .5rem !default;
$custom-control-spacer-x: 1rem !default;
+$custom-control-cursor: null !default;
$custom-control-indicator-size: 1rem !default;
$custom-control-indicator-bg: $input-bg !default;
@@ -526,41 +533,45 @@ $custom-control-indicator-box-shadow: $input-box-shadow !default;
$custom-control-indicator-border-color: $gray-500 !default;
$custom-control-indicator-border-width: $input-border-width !default;
+$custom-control-label-color: null !default;
+
$custom-control-indicator-disabled-bg: $input-disabled-bg !default;
$custom-control-label-disabled-color: $gray-600 !default;
$custom-control-indicator-checked-color: $component-active-color !default;
$custom-control-indicator-checked-bg: $component-active-bg !default;
$custom-control-indicator-checked-disabled-bg: rgba(theme-color("primary"), .5) !default;
-$custom-control-indicator-checked-box-shadow: none !default;
+$custom-control-indicator-checked-box-shadow: null !default;
$custom-control-indicator-checked-border-color: $custom-control-indicator-checked-bg !default;
-$custom-control-indicator-focus-box-shadow: $input-btn-focus-box-shadow !default;
+$custom-control-indicator-focus-box-shadow: $input-focus-box-shadow !default;
$custom-control-indicator-focus-border-color: $input-focus-border-color !default;
$custom-control-indicator-active-color: $component-active-color !default;
$custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;
-$custom-control-indicator-active-box-shadow: none !default;
+$custom-control-indicator-active-box-shadow: null !default;
$custom-control-indicator-active-border-color: $custom-control-indicator-active-bg !default;
$custom-checkbox-indicator-border-radius: $border-radius !default;
-$custom-checkbox-indicator-icon-checked: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"), "#", "%23") !default;
+$custom-checkbox-indicator-icon-checked: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'><path fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/></svg>") !default;
$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;
$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;
-$custom-checkbox-indicator-icon-indeterminate: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3e%3c/svg%3e"), "#", "%23") !default;
-$custom-checkbox-indicator-indeterminate-box-shadow: none !default;
+$custom-checkbox-indicator-icon-indeterminate: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'><path stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/></svg>") !default;
+$custom-checkbox-indicator-indeterminate-box-shadow: null !default;
$custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicator-indeterminate-bg !default;
$custom-radio-indicator-border-radius: 50% !default;
-$custom-radio-indicator-icon-checked: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3e%3c/svg%3e"), "#", "%23") !default;
+$custom-radio-indicator-icon-checked: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'><circle r='3' fill='#{$custom-control-indicator-checked-color}'/></svg>") !default;
$custom-switch-width: $custom-control-indicator-size * 1.75 !default;
-$custom-switch-indicator-border-radius: $custom-control-indicator-size / 2 !default;
-$custom-switch-indicator-size: calc(#{$custom-control-indicator-size} - #{$custom-control-indicator-border-width * 4}) !default;
+$custom-switch-indicator-border-radius: $custom-control-indicator-size * .5 !default;
+$custom-switch-indicator-size: subtract($custom-control-indicator-size, $custom-control-indicator-border-width * 4) !default;
-$custom-select-padding-y: $input-btn-padding-y !default;
-$custom-select-padding-x: $input-btn-padding-x !default;
+$custom-select-padding-y: $input-padding-y !default;
+$custom-select-padding-x: $input-padding-x !default;
+$custom-select-font-family: $input-font-family !default;
+$custom-select-font-size: $input-font-size !default;
$custom-select-height: $input-height !default;
$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator
$custom-select-font-weight: $input-font-weight !default;
@@ -571,12 +582,12 @@ $custom-select-bg: $input-bg !default;
$custom-select-disabled-bg: $gray-200 !default;
$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions
$custom-select-indicator-color: $gray-800 !default;
-$custom-select-indicator: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e"), "#", "%23") !default;
-$custom-select-background: $custom-select-indicator no-repeat right $custom-select-padding-x center / $custom-select-bg-size !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)
+$custom-select-indicator: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'><path fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/></svg>") !default;
+$custom-select-background: escape-svg($custom-select-indicator) right $custom-select-padding-x center / $custom-select-bg-size no-repeat !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)
-$custom-select-feedback-icon-padding-right: $input-height-inner * 3 / 4 + $custom-select-padding-x + $custom-select-indicator-padding !default;
+$custom-select-feedback-icon-padding-right: add(1em * .75, (2 * $custom-select-padding-y * .75) + $custom-select-padding-x + $custom-select-indicator-padding) !default;
$custom-select-feedback-icon-position: center right ($custom-select-padding-x + $custom-select-indicator-padding) !default;
-$custom-select-feedback-icon-size: ($input-height-inner / 2) ($input-height-inner / 2) !default;
+$custom-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;
$custom-select-border-width: $input-border-width !default;
$custom-select-border-color: $input-border-color !default;
@@ -585,16 +596,16 @@ $custom-select-box-shadow: inset 0 1px 2px rgba($black, .075) !default;
$custom-select-focus-border-color: $input-focus-border-color !default;
$custom-select-focus-width: $input-focus-width !default;
-$custom-select-focus-box-shadow: 0 0 0 $custom-select-focus-width rgba($custom-select-focus-border-color, .5) !default;
+$custom-select-focus-box-shadow: 0 0 0 $custom-select-focus-width $input-btn-focus-color !default;
$custom-select-padding-y-sm: $input-padding-y-sm !default;
$custom-select-padding-x-sm: $input-padding-x-sm !default;
-$custom-select-font-size-sm: $input-btn-font-size-sm !default;
+$custom-select-font-size-sm: $input-font-size-sm !default;
$custom-select-height-sm: $input-height-sm !default;
$custom-select-padding-y-lg: $input-padding-y-lg !default;
$custom-select-padding-x-lg: $input-padding-x-lg !default;
-$custom-select-font-size-lg: $input-btn-font-size-lg !default;
+$custom-select-font-size-lg: $input-font-size-lg !default;
$custom-select-height-lg: $input-height-lg !default;
$custom-range-track-width: 100% !default;
@@ -624,6 +635,7 @@ $custom-file-disabled-bg: $input-disabled-bg !default;
$custom-file-padding-y: $input-padding-y !default;
$custom-file-padding-x: $input-padding-x !default;
$custom-file-line-height: $input-line-height !default;
+$custom-file-font-family: $input-font-family !default;
$custom-file-font-weight: $input-font-weight !default;
$custom-file-color: $input-color !default;
$custom-file-bg: $input-bg !default;
@@ -646,40 +658,24 @@ $form-feedback-valid-color: theme-color("success") !default;
$form-feedback-invalid-color: theme-color("danger") !default;
$form-feedback-icon-valid-color: $form-feedback-valid-color !default;
-$form-feedback-icon-valid: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"), "#", "%23") !default;
+$form-feedback-icon-valid: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>") !default;
$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;
-$form-feedback-icon-invalid: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$form-feedback-icon-invalid-color}' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"), "#", "%23") !default;
-
-
-// Dropdowns
-//
-// Dropdown menu container and contents.
-
-$dropdown-min-width: 10rem !default;
-$dropdown-padding-y: .5rem !default;
-$dropdown-spacer: .125rem !default;
-$dropdown-bg: $white !default;
-$dropdown-border-color: rgba($black, .15) !default;
-$dropdown-border-radius: $border-radius !default;
-$dropdown-border-width: $border-width !default;
-$dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default;
-$dropdown-divider-bg: $gray-200 !default;
-$dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;
-
-$dropdown-link-color: $gray-900 !default;
-$dropdown-link-hover-color: darken($gray-900, 5%) !default;
-$dropdown-link-hover-bg: $gray-100 !default;
-
-$dropdown-link-active-color: $component-active-color !default;
-$dropdown-link-active-bg: $component-active-bg !default;
-
-$dropdown-link-disabled-color: $gray-600 !default;
-
-$dropdown-item-padding-y: .25rem !default;
-$dropdown-item-padding-x: 1.5rem !default;
-
-$dropdown-header-color: $gray-600 !default;
+$form-feedback-icon-invalid: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}' viewBox='0 0 12 12'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>") !default;
+$form-validation-states: () !default;
+$form-validation-states: map-merge(
+ (
+ "valid": (
+ "color": $form-feedback-valid-color,
+ "icon": $form-feedback-icon-valid
+ ),
+ "invalid": (
+ "color": $form-feedback-invalid-color,
+ "icon": $form-feedback-icon-invalid
+ ),
+ ),
+ $form-validation-states
+);
// Z-index master list
//
@@ -714,12 +710,12 @@ $nav-pills-link-active-color: $component-active-color !default;
$nav-pills-link-active-bg: $component-active-bg !default;
$nav-divider-color: $gray-200 !default;
-$nav-divider-margin-y: $spacer / 2 !default;
+$nav-divider-margin-y: $spacer * .5 !default;
// Navbar
-$navbar-padding-y: $spacer / 2 !default;
+$navbar-padding-y: $spacer * .5 !default;
$navbar-padding-x: $spacer !default;
$navbar-nav-link-padding-x: .5rem !default;
@@ -728,25 +724,27 @@ $navbar-brand-font-size: $font-size-lg !default;
// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link
$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;
$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;
-$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;
+$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;
$navbar-toggler-padding-y: .25rem !default;
$navbar-toggler-padding-x: .75rem !default;
$navbar-toggler-font-size: $font-size-lg !default;
$navbar-toggler-border-radius: $btn-border-radius !default;
+$navbar-nav-scroll-max-height: 75vh !default;
+
$navbar-dark-color: rgba($white, .5) !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: str-replace(url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"), "#", "%23") !default;
+$navbar-dark-toggler-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>") !default;
$navbar-dark-toggler-border-color: rgba($white, .1) !default;
$navbar-light-color: rgba($black, .5) !default;
$navbar-light-hover-color: rgba($black, .7) !default;
$navbar-light-active-color: rgba($black, .9) !default;
$navbar-light-disabled-color: rgba($black, .3) !default;
-$navbar-light-toggler-icon-bg: str-replace(url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"), "#", "%23") !default;
+$navbar-light-toggler-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>") !default;
$navbar-light-toggler-border-color: rgba($black, .1) !default;
$navbar-light-brand-color: $navbar-light-active-color !default;
@@ -755,6 +753,41 @@ $navbar-dark-brand-color: $navbar-dark-active-color !default;
$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;
+// Dropdowns
+//
+// Dropdown menu container and contents.
+
+$dropdown-min-width: 10rem !default;
+$dropdown-padding-x: 0 !default;
+$dropdown-padding-y: .5rem !default;
+$dropdown-spacer: .125rem !default;
+$dropdown-font-size: $font-size-base !default;
+$dropdown-color: $body-color !default;
+$dropdown-bg: $white !default;
+$dropdown-border-color: rgba($black, .15) !default;
+$dropdown-border-radius: $border-radius !default;
+$dropdown-border-width: $border-width !default;
+$dropdown-inner-border-radius: subtract($dropdown-border-radius, $dropdown-border-width) !default;
+$dropdown-divider-bg: $gray-200 !default;
+$dropdown-divider-margin-y: $nav-divider-margin-y !default;
+$dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;
+
+$dropdown-link-color: $gray-900 !default;
+$dropdown-link-hover-color: darken($gray-900, 5%) !default;
+$dropdown-link-hover-bg: $gray-200 !default;
+
+$dropdown-link-active-color: $component-active-color !default;
+$dropdown-link-active-bg: $component-active-bg !default;
+
+$dropdown-link-disabled-color: $gray-500 !default;
+
+$dropdown-item-padding-y: .25rem !default;
+$dropdown-item-padding-x: 1.5rem !default;
+
+$dropdown-header-color: $gray-600 !default;
+$dropdown-header-padding: $dropdown-padding-y $dropdown-item-padding-x !default;
+
+
// Pagination
$pagination-padding-y: .5rem !default;
@@ -785,10 +818,14 @@ $pagination-disabled-color: $gray-600 !default;
$pagination-disabled-bg: $white !default;
$pagination-disabled-border-color: $gray-300 !default;
+$pagination-border-radius-sm: $border-radius-sm !default;
+$pagination-border-radius-lg: $border-radius-lg !default;
+
// Jumbotron
$jumbotron-padding: 2rem !default;
+$jumbotron-color: null !default;
$jumbotron-bg: $gray-200 !default;
@@ -799,14 +836,16 @@ $card-spacer-x: 1.25rem !default;
$card-border-width: $border-width !default;
$card-border-radius: $border-radius !default;
$card-border-color: rgba($black, .125) !default;
-$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;
+$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;
$card-cap-bg: rgba($black, .03) !default;
-$card-cap-color: inherit !default;
+$card-cap-color: null !default;
+$card-height: null !default;
+$card-color: null !default;
$card-bg: $white !default;
$card-img-overlay-padding: 1.25rem !default;
-$card-group-margin: $grid-gutter-width / 2 !default;
+$card-group-margin: $grid-gutter-width * .5 !default;
$card-deck-margin: $card-group-margin !default;
$card-columns-count: 3 !default;
@@ -847,6 +886,7 @@ $popover-max-width: 276px !default;
$popover-border-width: $border-width !default;
$popover-border-color: rgba($black, .2) !default;
$popover-border-radius: $border-radius-lg !default;
+$popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width) !default;
$popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;
$popover-header-bg: darken($popover-bg, 3%) !default;
@@ -866,19 +906,21 @@ $popover-arrow-outer-color: fade-in($popover-border-color, .05) !default
// Toasts
-$toast-max-width: 350px !default;
-$toast-padding-x: .75rem !default;
-$toast-padding-y: .25rem !default;
-$toast-font-size: .875rem !default;
-$toast-background-color: rgba($white, .85) !default;
-$toast-border-width: 1px !default;
-$toast-border-color: rgba(0, 0, 0, .1) !default;
-$toast-border-radius: .25rem !default;
-$toast-box-shadow: 0 .25rem .75rem rgba($black, .1) !default;
-$toast-header-color: $gray-600 !default;
-$toast-header-background-color: rgba($white, .85) !default;
-$toast-header-border-color: rgba(0, 0, 0, .05) !default;
+$toast-max-width: 350px !default;
+$toast-padding-x: .75rem !default;
+$toast-padding-y: .25rem !default;
+$toast-font-size: .875rem !default;
+$toast-color: null !default;
+$toast-background-color: rgba($white, .85) !default;
+$toast-border-width: 1px !default;
+$toast-border-color: rgba(0, 0, 0, .1) !default;
+$toast-border-radius: .25rem !default;
+$toast-box-shadow: 0 .25rem .75rem rgba($black, .1) !default;
+
+$toast-header-color: $gray-600 !default;
+$toast-header-background-color: rgba($white, .85) !default;
+$toast-header-border-color: rgba(0, 0, 0, .05) !default;
// Badges
@@ -889,6 +931,9 @@ $badge-padding-y: .25em !default;
$badge-padding-x: .4em !default;
$badge-border-radius: $border-radius !default;
+$badge-transition: $btn-transition !default;
+$badge-focus-width: $input-btn-focus-width !default;
+
$badge-pill-padding-x: .6em !default;
// Use a higher than normal value to ensure completely rounded edges when
// customizing padding or font-size on labels.
@@ -900,21 +945,26 @@ $badge-pill-border-radius: 10rem !default;
// Padding applied to the modal body
$modal-inner-padding: 1rem !default;
+// Margin between elements in footer, must be lower than or equal to 2 * $modal-inner-padding
+$modal-footer-margin-between: .5rem !default;
+
$modal-dialog-margin: .5rem !default;
$modal-dialog-margin-y-sm-up: 1.75rem !default;
$modal-title-line-height: $line-height-base !default;
+$modal-content-color: null !default;
$modal-content-bg: $white !default;
$modal-content-border-color: rgba($black, .2) !default;
$modal-content-border-width: $border-width !default;
$modal-content-border-radius: $border-radius-lg !default;
+$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;
$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;
$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;
$modal-backdrop-bg: $black !default;
$modal-backdrop-opacity: .5 !default;
-$modal-header-border-color: $gray-200 !default;
+$modal-header-border-color: $border-color !default;
$modal-footer-border-color: $modal-header-border-color !default;
$modal-header-border-width: $modal-content-border-width !default;
$modal-footer-border-width: $modal-header-border-width !default;
@@ -930,6 +980,7 @@ $modal-sm: 300px !default;
$modal-fade-transform: translate(0, -50px) !default;
$modal-show-transform: none !default;
$modal-transition: transform .3s ease-out !default;
+$modal-scale-transform: scale(1.02) !default;
// Alerts
@@ -951,7 +1002,7 @@ $alert-color-level: 6 !default;
// Progress bars
$progress-height: 1rem !default;
-$progress-font-size: ($font-size-base * .75) !default;
+$progress-font-size: $font-size-base * .75 !default;
$progress-bg: $gray-200 !default;
$progress-border-radius: $border-radius !default;
$progress-box-shadow: inset 0 .1rem .1rem rgba($black, .1) !default;
@@ -963,6 +1014,7 @@ $progress-bar-transition: width .6s ease !default;
// List group
+$list-group-color: null !default;
$list-group-bg: $white !default;
$list-group-border-color: rgba($black, .125) !default;
$list-group-border-width: $border-width !default;
@@ -1004,6 +1056,8 @@ $figure-caption-color: $gray-600 !default;
// Breadcrumbs
+$breadcrumb-font-size: null !default;
+
$breadcrumb-padding-y: .75rem !default;
$breadcrumb-padding-x: 1rem !default;
$breadcrumb-item-padding: .5rem !default;
@@ -1038,8 +1092,8 @@ $carousel-caption-color: $white !default;
$carousel-control-icon-width: 20px !default;
-$carousel-control-prev-icon-bg: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"), "#", "%23") !default;
-$carousel-control-next-icon-bg: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"), "#", "%23") !default;
+$carousel-control-prev-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' width='8' height='8' viewBox='0 0 8 8'><path d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/></svg>") !default;
+$carousel-control-next-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' width='8' height='8' viewBox='0 0 8 8'><path d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/></svg>") !default;
$carousel-transition-duration: .6s !default;
$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
@@ -1047,9 +1101,10 @@ $carousel-transition: transform $carousel-transition-duration eas
// Spinners
-$spinner-width: 2rem !default;
-$spinner-height: $spinner-width !default;
-$spinner-border-width: .25em !default;
+$spinner-width: 2rem !default;
+$spinner-height: $spinner-width !default;
+$spinner-vertical-align: -.125em !default;
+$spinner-border-width: .25em !default;
$spinner-width-sm: 1rem !default;
$spinner-height-sm: $spinner-width-sm !default;
@@ -1081,8 +1136,10 @@ $pre-scrollable-max-height: 340px !default;
// Utilities
+$displays: none, inline, inline-block, block, table, table-row, table-cell, flex, inline-flex !default;
$overflows: auto, hidden !default;
$positions: static, relative, absolute, fixed, sticky !default;
+$user-selects: all, auto, none !default;
// Printing
diff --git a/devel/third-party/bootstrap-4.2.1/scss/bootstrap-grid.scss b/devel/third-party/bootstrap-4.6.1/scss/bootstrap-grid.scss
similarity index 70%
rename from devel/third-party/bootstrap-4.2.1/scss/bootstrap-grid.scss
rename to devel/third-party/bootstrap-4.6.1/scss/bootstrap-grid.scss
index 9b3e77cb47..0de912bff7 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/bootstrap-grid.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/bootstrap-grid.scss
@@ -1,8 +1,8 @@
/*!
- * Bootstrap Grid v4.2.1 (https://getbootstrap.com/)
- * Copyright 2011-2018 The Bootstrap Authors
- * Copyright 2011-2018 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * Bootstrap Grid v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
html {
@@ -19,6 +19,7 @@ html {
@import "functions";
@import "variables";
+ at import "mixins/deprecate";
@import "mixins/breakpoints";
@import "mixins/grid-framework";
@import "mixins/grid";
diff --git a/devel/third-party/bootstrap-4.2.1/scss/bootstrap-reboot.scss b/devel/third-party/bootstrap-4.6.1/scss/bootstrap-reboot.scss
similarity index 63%
rename from devel/third-party/bootstrap-4.2.1/scss/bootstrap-reboot.scss
rename to devel/third-party/bootstrap-4.6.1/scss/bootstrap-reboot.scss
index 717417810c..aed4e378cc 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/bootstrap-reboot.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/bootstrap-reboot.scss
@@ -1,8 +1,8 @@
/*!
- * Bootstrap Reboot v4.2.1 (https://getbootstrap.com/)
- * Copyright 2011-2018 The Bootstrap Authors
- * Copyright 2011-2018 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * Bootstrap Reboot v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
diff --git a/devel/third-party/bootstrap-4.2.1/scss/bootstrap.scss b/devel/third-party/bootstrap-4.6.1/scss/bootstrap.scss
similarity index 84%
rename from devel/third-party/bootstrap-4.2.1/scss/bootstrap.scss
rename to devel/third-party/bootstrap-4.6.1/scss/bootstrap.scss
index 44b04b2931..60bb836f04 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/bootstrap.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/bootstrap.scss
@@ -1,8 +1,8 @@
/*!
- * Bootstrap v4.2.1 (https://getbootstrap.com/)
- * Copyright 2011-2018 The Bootstrap Authors
- * Copyright 2011-2018 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * Bootstrap v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
@import "functions";
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_alert.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_alert.scss
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_alert.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_alert.scss
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_background-variant.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_background-variant.scss
similarity index 52%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_background-variant.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_background-variant.scss
index 494439d2b4..80580189ad 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_background-variant.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_background-variant.scss
@@ -2,20 +2,22 @@
// Contextual backgrounds
- at mixin bg-variant($parent, $color) {
+ at mixin bg-variant($parent, $color, $ignore-warning: false) {
#{$parent} {
background-color: $color !important;
}
a#{$parent},
button#{$parent} {
- @include hover-focus {
+ @include hover-focus() {
background-color: darken($color, 10%) !important;
}
}
+ @include deprecate("The `bg-variant` mixin", "v4.4.0", "v5", $ignore-warning);
}
- at mixin bg-gradient-variant($parent, $color) {
+ at mixin bg-gradient-variant($parent, $color, $ignore-warning: false) {
#{$parent} {
background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;
}
+ @include deprecate("The `bg-gradient-variant` mixin", "v4.5.0", "v5", $ignore-warning);
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_badge.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_badge.scss
similarity index 56%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_badge.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_badge.scss
index cf99b3537a..f1c499141a 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_badge.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_badge.scss
@@ -3,9 +3,15 @@
background-color: $bg;
@at-root a#{&} {
- @include hover-focus {
+ @include hover-focus() {
color: color-yiq($bg);
background-color: darken($bg, 10%);
}
+
+ &:focus,
+ &.focus {
+ outline: 0;
+ box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5);
+ }
}
}
diff --git a/devel/third-party/bootstrap-4.6.1/scss/mixins/_border-radius.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_border-radius.scss
new file mode 100644
index 0000000000..4fad91d676
--- /dev/null
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_border-radius.scss
@@ -0,0 +1,76 @@
+// stylelint-disable property-disallowed-list
+// Single side border-radius
+
+// Helper function to replace negative values with 0
+ at function valid-radius($radius) {
+ $return: ();
+ @each $value in $radius {
+ @if type-of($value) == number {
+ $return: append($return, max($value, 0));
+ } @else {
+ $return: append($return, $value);
+ }
+ }
+ @return $return;
+}
+
+ at mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {
+ @if $enable-rounded {
+ border-radius: valid-radius($radius);
+ }
+ @else if $fallback-border-radius != false {
+ border-radius: $fallback-border-radius;
+ }
+}
+
+ at mixin border-top-radius($radius) {
+ @if $enable-rounded {
+ border-top-left-radius: valid-radius($radius);
+ border-top-right-radius: valid-radius($radius);
+ }
+}
+
+ at mixin border-right-radius($radius) {
+ @if $enable-rounded {
+ border-top-right-radius: valid-radius($radius);
+ border-bottom-right-radius: valid-radius($radius);
+ }
+}
+
+ at mixin border-bottom-radius($radius) {
+ @if $enable-rounded {
+ border-bottom-right-radius: valid-radius($radius);
+ border-bottom-left-radius: valid-radius($radius);
+ }
+}
+
+ at mixin border-left-radius($radius) {
+ @if $enable-rounded {
+ border-top-left-radius: valid-radius($radius);
+ border-bottom-left-radius: valid-radius($radius);
+ }
+}
+
+ at mixin border-top-left-radius($radius) {
+ @if $enable-rounded {
+ border-top-left-radius: valid-radius($radius);
+ }
+}
+
+ at mixin border-top-right-radius($radius) {
+ @if $enable-rounded {
+ border-top-right-radius: valid-radius($radius);
+ }
+}
+
+ at mixin border-bottom-right-radius($radius) {
+ @if $enable-rounded {
+ border-bottom-right-radius: valid-radius($radius);
+ }
+}
+
+ at mixin border-bottom-left-radius($radius) {
+ @if $enable-rounded {
+ border-bottom-left-radius: valid-radius($radius);
+ }
+}
diff --git a/devel/third-party/bootstrap-4.6.1/scss/mixins/_box-shadow.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_box-shadow.scss
new file mode 100644
index 0000000000..0726d4359a
--- /dev/null
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_box-shadow.scss
@@ -0,0 +1,20 @@
+ at mixin box-shadow($shadow...) {
+ @if $enable-shadows {
+ $result: ();
+
+ @if (length($shadow) == 1) {
+ // We can pass `@include box-shadow(none);`
+ $result: $shadow;
+ } @else {
+ // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;`
+ @for $i from 1 through length($shadow) {
+ @if nth($shadow, $i) != "none" {
+ $result: append($result, nth($shadow, $i), "comma");
+ }
+ }
+ }
+ @if (length($result) > 0) {
+ box-shadow: $result;
+ }
+ }
+}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_breakpoints.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_breakpoints.scss
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_breakpoints.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_breakpoints.scss
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_buttons.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_buttons.scss
similarity index 77%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_buttons.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_buttons.scss
index 3e1e2c09d0..d6235aa27c 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_buttons.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_buttons.scss
@@ -9,7 +9,7 @@
border-color: $border;
@include box-shadow($btn-box-shadow);
- @include hover {
+ @include hover() {
color: color-yiq($hover-background);
@include gradient-bg($hover-background);
border-color: $hover-border;
@@ -17,10 +17,13 @@
&:focus,
&.focus {
- // Avoid using mixin so we can pass custom focus shadow properly
+ color: color-yiq($hover-background);
+ @include gradient-bg($hover-background);
+ border-color: $hover-border;
@if $enable-shadows {
- box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
+ @include box-shadow($btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5));
} @else {
+ // Avoid using mixin so we can pass custom focus shadow properly
box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
}
}
@@ -48,10 +51,10 @@
border-color: $active-border;
&:focus {
- // Avoid using mixin so we can pass custom focus shadow properly
- @if $enable-shadows {
- box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
+ @if $enable-shadows and $btn-active-box-shadow != none {
+ @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5));
} @else {
+ // Avoid using mixin so we can pass custom focus shadow properly
box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
}
}
@@ -62,7 +65,7 @@
color: $color;
border-color: $color;
- @include hover {
+ @include hover() {
color: $color-hover;
background-color: $active-background;
border-color: $active-border;
@@ -87,10 +90,10 @@
border-color: $active-border;
&:focus {
- // Avoid using mixin so we can pass custom focus shadow properly
@if $enable-shadows and $btn-active-box-shadow != none {
- box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);
+ @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5));
} @else {
+ // Avoid using mixin so we can pass custom focus shadow properly
box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
}
}
@@ -100,12 +103,8 @@
// Button sizes
@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {
padding: $padding-y $padding-x;
- font-size: $font-size;
+ @include font-size($font-size);
line-height: $line-height;
// Manually declare to provide an override to the browser default
- @if $enable-rounded {
- border-radius: $border-radius;
- } @else {
- border-radius: 0;
- }
+ @include border-radius($border-radius, 0);
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_caret.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_caret.scss
similarity index 73%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_caret.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_caret.scss
index 982522c54b..27466495b2 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_caret.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_caret.scss
@@ -1,25 +1,25 @@
- at mixin caret-down {
+ at mixin caret-down() {
border-top: $caret-width solid;
border-right: $caret-width solid transparent;
border-bottom: 0;
border-left: $caret-width solid transparent;
}
- at mixin caret-up {
+ at mixin caret-up() {
border-top: 0;
border-right: $caret-width solid transparent;
border-bottom: $caret-width solid;
border-left: $caret-width solid transparent;
}
- at mixin caret-right {
+ at mixin caret-right() {
border-top: $caret-width solid transparent;
border-right: 0;
border-bottom: $caret-width solid transparent;
border-left: $caret-width solid;
}
- at mixin caret-left {
+ at mixin caret-left() {
border-top: $caret-width solid transparent;
border-right: $caret-width solid;
border-bottom: $caret-width solid transparent;
@@ -29,15 +29,15 @@
@if $enable-caret {
&::after {
display: inline-block;
- margin-left: $caret-width * .85;
- vertical-align: $caret-width * .85;
+ margin-left: $caret-spacing;
+ vertical-align: $caret-vertical-align;
content: "";
@if $direction == down {
- @include caret-down;
+ @include caret-down();
} @else if $direction == up {
- @include caret-up;
+ @include caret-up();
} @else if $direction == right {
- @include caret-right;
+ @include caret-right();
}
}
@@ -48,10 +48,10 @@
&::before {
display: inline-block;
- margin-right: $caret-width * .85;
- vertical-align: $caret-width * .85;
+ margin-right: $caret-spacing;
+ vertical-align: $caret-vertical-align;
content: "";
- @include caret-left;
+ @include caret-left();
}
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_clearfix.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_clearfix.scss
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_clearfix.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_clearfix.scss
diff --git a/devel/third-party/bootstrap-4.6.1/scss/mixins/_deprecate.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_deprecate.scss
new file mode 100644
index 0000000000..df070bc596
--- /dev/null
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_deprecate.scss
@@ -0,0 +1,10 @@
+// Deprecate mixin
+//
+// This mixin can be used to deprecate mixins or functions.
+// `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to
+// some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap)
+ at mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) {
+ @if ($enable-deprecation-messages != false and $ignore-warning != true) {
+ @warn "#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}.";
+ }
+}
diff --git a/devel/third-party/bootstrap-4.6.1/scss/mixins/_float.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_float.scss
new file mode 100644
index 0000000000..6b376a2580
--- /dev/null
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_float.scss
@@ -0,0 +1,14 @@
+// stylelint-disable declaration-no-important
+
+ at mixin float-left() {
+ float: left !important;
+ @include deprecate("The `float-left` mixin", "v4.3.0", "v5");
+}
+ at mixin float-right() {
+ float: right !important;
+ @include deprecate("The `float-right` mixin", "v4.3.0", "v5");
+}
+ at mixin float-none() {
+ float: none !important;
+ @include deprecate("The `float-none` mixin", "v4.3.0", "v5");
+}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_forms.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_forms.scss
similarity index 56%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_forms.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_forms.scss
index b8eb59d836..b8847cc80d 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_forms.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_forms.scss
@@ -10,124 +10,133 @@
//
// Example usage: change the default blue border and shadow to white for better
// contrast against a dark gray background.
- at mixin form-control-focus() {
+ at mixin form-control-focus($ignore-warning: false) {
&:focus {
color: $input-focus-color;
background-color: $input-focus-bg;
border-color: $input-focus-border-color;
outline: 0;
- // Avoid using mixin so we can pass custom focus shadow properly
@if $enable-shadows {
- box-shadow: $input-box-shadow, $input-focus-box-shadow;
+ @include box-shadow($input-box-shadow, $input-focus-box-shadow);
} @else {
+ // Avoid using mixin so we can pass custom focus shadow properly
box-shadow: $input-focus-box-shadow;
}
}
+ @include deprecate("The `form-control-focus()` mixin", "v4.4.0", "v5", $ignore-warning);
}
+// 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
+ at mixin form-validation-state-selector($state) {
+ @if ($state == "valid" or $state == "invalid") {
+ .was-validated #{if(&, "&", "")}:#{$state},
+ #{if(&, "&", "")}.is-#{$state} {
+ @content;
+ }
+ } @else {
+ #{if(&, "&", "")}.is-#{$state} {
+ @content;
+ }
+ }
+}
- at mixin form-validation-state($state, $color) {
+ at mixin form-validation-state($state, $color, $icon) {
.#{$state}-feedback {
display: none;
width: 100%;
margin-top: $form-feedback-margin-top;
- font-size: $form-feedback-font-size;
+ @include font-size($form-feedback-font-size);
color: $color;
}
.#{$state}-tooltip {
position: absolute;
top: 100%;
+ left: 0;
z-index: 5;
display: none;
max-width: 100%; // Contain to parent when possible
padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;
margin-top: .1rem;
- font-size: $form-feedback-tooltip-font-size;
+ @include font-size($form-feedback-tooltip-font-size);
line-height: $form-feedback-tooltip-line-height;
color: color-yiq($color);
background-color: rgba($color, $form-feedback-tooltip-opacity);
@include border-radius($form-feedback-tooltip-border-radius);
+
+ // See https://github.com/twbs/bootstrap/pull/31557
+ // Align tooltip to form elements
+ .form-row > .col > &,
+ .form-row > [class*="col-"] > & {
+ left: $form-grid-gutter-width * .5;
+ }
+ }
+
+ @include form-validation-state-selector($state) {
+ ~ .#{$state}-feedback,
+ ~ .#{$state}-tooltip {
+ display: block;
+ }
}
.form-control {
- .was-validated &:#{$state},
- &.is-#{$state} {
+ @include form-validation-state-selector($state) {
border-color: $color;
@if $enable-validation-icons {
- padding-right: $input-height-inner;
+ padding-right: $input-height-inner !important; // stylelint-disable-line declaration-no-important
+ background-image: escape-svg($icon);
background-repeat: no-repeat;
- background-position: center right calc(#{$input-height-inner} / 4);
- background-size: calc(#{$input-height-inner} / 2) calc(#{$input-height-inner} / 2);
-
- @if $state == "valid" {
- background-image: $form-feedback-icon-valid;
- } @else {
- background-image: $form-feedback-icon-invalid;
- }
+ background-position: right $input-height-inner-quarter center;
+ background-size: $input-height-inner-half $input-height-inner-half;
}
&:focus {
border-color: $color;
box-shadow: 0 0 0 $input-focus-width rgba($color, .25);
}
+ }
+ }
- ~ .#{$state}-feedback,
- ~ .#{$state}-tooltip {
- display: block;
+ // stylelint-disable-next-line selector-no-qualifying-type
+ select.form-control {
+ @include form-validation-state-selector($state) {
+ @if $enable-validation-icons {
+ padding-right: $input-padding-x * 4 !important; // stylelint-disable-line declaration-no-important
+ background-position: right $input-padding-x * 2 center;
}
}
}
// stylelint-disable-next-line selector-no-qualifying-type
textarea.form-control {
- .was-validated &:#{$state},
- &.is-#{$state} {
+ @include form-validation-state-selector($state) {
@if $enable-validation-icons {
padding-right: $input-height-inner;
- background-position: top calc(#{$input-height-inner} / 4) right calc(#{$input-height-inner} / 4);
+ background-position: top $input-height-inner-quarter right $input-height-inner-quarter;
}
}
}
.custom-select {
- .was-validated &:#{$state},
- &.is-#{$state} {
+ @include form-validation-state-selector($state) {
border-color: $color;
@if $enable-validation-icons {
- $form-feedback-icon: if($state == "valid", $form-feedback-icon-valid, $form-feedback-icon-invalid);
- padding-right: $custom-select-feedback-icon-padding-right;
- background: $custom-select-background, $form-feedback-icon no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size;
+ padding-right: $custom-select-feedback-icon-padding-right !important; // stylelint-disable-line declaration-no-important
+ background: $custom-select-background, $custom-select-bg escape-svg($icon) $custom-select-feedback-icon-position / $custom-select-feedback-icon-size no-repeat;
}
&:focus {
border-color: $color;
box-shadow: 0 0 0 $input-focus-width rgba($color, .25);
}
-
- ~ .#{$state}-feedback,
- ~ .#{$state}-tooltip {
- display: block;
- }
- }
- }
-
-
- .form-control-file {
- .was-validated &:#{$state},
- &.is-#{$state} {
- ~ .#{$state}-feedback,
- ~ .#{$state}-tooltip {
- display: block;
- }
}
}
.form-check-input {
- .was-validated &:#{$state},
- &.is-#{$state} {
+ @include form-validation-state-selector($state) {
~ .form-check-label {
color: $color;
}
@@ -140,8 +149,7 @@
}
.custom-control-input {
- .was-validated &:#{$state},
- &.is-#{$state} {
+ @include form-validation-state-selector($state) {
~ .custom-control-label {
color: $color;
@@ -150,11 +158,6 @@
}
}
- ~ .#{$state}-feedback,
- ~ .#{$state}-tooltip {
- display: block;
- }
-
&:checked {
~ .custom-control-label::before {
border-color: lighten($color, 10%);
@@ -176,17 +179,11 @@
// custom file
.custom-file-input {
- .was-validated &:#{$state},
- &.is-#{$state} {
+ @include form-validation-state-selector($state) {
~ .custom-file-label {
border-color: $color;
}
- ~ .#{$state}-feedback,
- ~ .#{$state}-tooltip {
- display: block;
- }
-
&:focus {
~ .custom-file-label {
border-color: $color;
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_gradients.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_gradients.scss
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_gradients.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_gradients.scss
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_grid-framework.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_grid-framework.scss
similarity index 55%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_grid-framework.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_grid-framework.scss
index 649c28bf77..ef32917530 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_grid-framework.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_grid-framework.scss
@@ -8,19 +8,22 @@
%grid-column {
position: relative;
width: 100%;
- padding-right: $gutter / 2;
- padding-left: $gutter / 2;
+ padding-right: $gutter * .5;
+ padding-left: $gutter * .5;
}
@each $breakpoint in map-keys($breakpoints) {
$infix: breakpoint-infix($breakpoint, $breakpoints);
- // Allow columns to stretch full width below their breakpoints
- @for $i from 1 through $columns {
- .col#{$infix}-#{$i} {
- @extend %grid-column;
+ @if $columns > 0 {
+ // Allow columns to stretch full width below their breakpoints
+ @for $i from 1 through $columns {
+ .col#{$infix}-#{$i} {
+ @extend %grid-column;
+ }
}
}
+
.col#{$infix},
.col#{$infix}-auto {
@extend %grid-column;
@@ -33,15 +36,24 @@
flex-grow: 1;
max-width: 100%;
}
+
+ @if $grid-row-columns > 0 {
+ @for $i from 1 through $grid-row-columns {
+ .row-cols#{$infix}-#{$i} {
+ @include row-cols($i);
+ }
+ }
+ }
+
.col#{$infix}-auto {
- flex: 0 0 auto;
- width: auto;
- max-width: 100%; // Reset earlier grid tiers
+ @include make-col-auto();
}
- @for $i from 1 through $columns {
- .col#{$infix}-#{$i} {
- @include make-col($i, $columns);
+ @if $columns > 0 {
+ @for $i from 1 through $columns {
+ .col#{$infix}-#{$i} {
+ @include make-col($i, $columns);
+ }
}
}
@@ -53,11 +65,13 @@
.order#{$infix}-#{$i} { order: $i; }
}
- // `$columns - 1` because offsetting by the width of an entire row isn't possible
- @for $i from 0 through ($columns - 1) {
- @if not ($infix == "" and $i == 0) { // Avoid emitting useless .offset-0
- .offset#{$infix}-#{$i} {
- @include make-col-offset($i, $columns);
+ @if $columns > 0 {
+ // `$columns - 1` because offsetting by the width of an entire row isn't possible
+ @for $i from 0 through ($columns - 1) {
+ @if not ($infix == "" and $i == 0) { // Avoid emitting useless .offset-0
+ .offset#{$infix}-#{$i} {
+ @include make-col-offset($i, $columns);
+ }
}
}
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_grid.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_grid.scss
similarity index 61%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_grid.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_grid.scss
index 924eb0cfc0..0eb09910d1 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_grid.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_grid.scss
@@ -4,12 +4,18 @@
@mixin make-container($gutter: $grid-gutter-width) {
width: 100%;
- padding-right: $gutter / 2;
- padding-left: $gutter / 2;
+ padding-right: $gutter * .5;
+ padding-left: $gutter * .5;
margin-right: auto;
margin-left: auto;
}
+ at mixin make-row($gutter: $grid-gutter-width) {
+ display: flex;
+ flex-wrap: wrap;
+ margin-right: -$gutter * .5;
+ margin-left: -$gutter * .5;
+}
// For each breakpoint, define the maximum width of the container in a media query
@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {
@@ -18,13 +24,7 @@
max-width: $container-max-width;
}
}
-}
-
- at mixin make-row($gutter: $grid-gutter-width) {
- display: flex;
- flex-wrap: wrap;
- margin-right: -$gutter / 2;
- margin-left: -$gutter / 2;
+ @include deprecate("The `make-container-max-widths` mixin", "v4.5.2", "v5");
}
@mixin make-col-ready($gutter: $grid-gutter-width) {
@@ -33,19 +33,37 @@
// always setting `width: 100%;`. This works because we use `flex` values
// later on to override this initial width.
width: 100%;
- padding-right: $gutter / 2;
- padding-left: $gutter / 2;
+ padding-right: $gutter * .5;
+ padding-left: $gutter * .5;
}
@mixin make-col($size, $columns: $grid-columns) {
- flex: 0 0 percentage($size / $columns);
+ flex: 0 0 percentage(divide($size, $columns));
// Add a `max-width` to ensure content within each column does not blow out
// the width of the column. Applies to IE10+ and Firefox. Chrome and Safari
// do not appear to require this.
- max-width: percentage($size / $columns);
+ max-width: percentage(divide($size, $columns));
+}
+
+ at mixin make-col-auto() {
+ flex: 0 0 auto;
+ width: auto;
+ max-width: 100%; // Reset earlier grid tiers
}
@mixin make-col-offset($size, $columns: $grid-columns) {
- $num: $size / $columns;
+ $num: divide($size, $columns);
margin-left: if($num == 0, 0, percentage($num));
}
+
+// Row columns
+//
+// Specify on a parent element(e.g., .row) to force immediate children into NN
+// numberof columns. Supports wrapping to new lines, but does not do a Masonry
+// style grid.
+ at mixin row-cols($count) {
+ > * {
+ flex: 0 0 divide(100%, $count);
+ max-width: divide(100%, $count);
+ }
+}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_hover.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_hover.scss
similarity index 86%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_hover.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_hover.scss
index 192f847e17..409f8244e1 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_hover.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_hover.scss
@@ -9,18 +9,18 @@
//
// Issue: https://github.com/twbs/bootstrap/issues/25195
- at mixin hover {
+ at mixin hover() {
&:hover { @content; }
}
- at mixin hover-focus {
+ at mixin hover-focus() {
&:hover,
&:focus {
@content;
}
}
- at mixin plain-hover-focus {
+ at mixin plain-hover-focus() {
&,
&:hover,
&:focus {
@@ -28,7 +28,7 @@
}
}
- at mixin hover-focus-active {
+ at mixin hover-focus-active() {
&:hover,
&:focus,
&:active {
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_image.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_image.scss
similarity index 81%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_image.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_image.scss
index 0544f0d2a3..3aaa0d7046 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_image.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_image.scss
@@ -7,7 +7,7 @@
//
// Keep images from scaling beyond the width of their parents.
- at mixin img-fluid {
+ at mixin img-fluid() {
// Part 1: Set a maximum relative to the parent
max-width: 100%;
// Part 2: Override the height to auto, otherwise images will be stretched
@@ -20,17 +20,17 @@
//
// Short retina mixin for setting background-image and -size.
-// stylelint-disable indentation, media-query-list-comma-newline-after
@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {
background-image: url($file-1x);
// Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,
// but doesn't convert dppx=>dpi.
// There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.
- // Compatibility info: https://caniuse.com/#feat=css-media-resolution
+ // Compatibility info: https://caniuse.com/css-media-resolution
@media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx
- only screen and (min-resolution: 2dppx) { // Standardized
+ only screen and (min-resolution: 2dppx) { // Standardized
background-image: url($file-2x);
background-size: $width-1x $height-1x;
}
+ @include deprecate("`img-retina()`", "v4.3.0", "v5");
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_list-group.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_list-group.scss
similarity index 92%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_list-group.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_list-group.scss
index cd47a4e9fa..0da3531561 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_list-group.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_list-group.scss
@@ -6,7 +6,7 @@
background-color: $background;
&.list-group-item-action {
- @include hover-focus {
+ @include hover-focus() {
color: $color;
background-color: darken($background, 5%);
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_lists.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_lists.scss
similarity index 85%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_lists.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_lists.scss
index 2518562669..251cb07331 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_lists.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_lists.scss
@@ -1,7 +1,7 @@
// Lists
// Unstyled keeps list items block level, just removes default browser padding and list-style
- at mixin list-unstyled {
+ at mixin list-unstyled() {
padding-left: 0;
list-style: none;
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_nav-divider.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_nav-divider.scss
similarity index 65%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_nav-divider.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_nav-divider.scss
index 4fb37b6224..3e0cceafef 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_nav-divider.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_nav-divider.scss
@@ -2,9 +2,10 @@
//
// Dividers (basically an hr) within dropdowns and nav lists
- at mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y) {
+ at mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y, $ignore-warning: false) {
height: 0;
margin: $margin-y 0;
overflow: hidden;
border-top: 1px solid $color;
+ @include deprecate("The `nav-divider()` mixin", "v4.4.0", "v5", $ignore-warning);
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_pagination.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_pagination.scss
similarity index 92%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_pagination.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_pagination.scss
index ff36eb6b40..af8e16d6a9 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_pagination.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_pagination.scss
@@ -3,7 +3,7 @@
@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {
.page-link {
padding: $padding-y $padding-x;
- font-size: $font-size;
+ @include font-size($font-size);
line-height: $line-height;
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_reset-text.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_reset-text.scss
similarity index 80%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_reset-text.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_reset-text.scss
index 71edb0061a..15b4407a0a 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_reset-text.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_reset-text.scss
@@ -1,11 +1,11 @@
- at mixin reset-text {
+ at mixin reset-text() {
font-family: $font-family-base;
// We deliberately do NOT reset font-size or word-wrap.
font-style: normal;
font-weight: $font-weight-normal;
line-height: $line-height-base;
text-align: left; // Fallback for where `start` is not supported
- text-align: start; // stylelint-disable-line declaration-block-no-duplicate-properties
+ text-align: start;
text-decoration: none;
text-shadow: none;
text-transform: none;
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_resize.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_resize.scss
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_resize.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_resize.scss
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_screen-reader.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_screen-reader.scss
similarity index 68%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_screen-reader.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_screen-reader.scss
index 812591bc5e..70b677e3f4 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_screen-reader.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_screen-reader.scss
@@ -1,13 +1,14 @@
// Only display content to screen readers
//
-// See: https://a11yproject.com/posts/how-to-hide-content/
-// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/
+// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/
+// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/
- at mixin sr-only {
+ at mixin sr-only() {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
+ margin: -1px; // Fix for https://github.com/twbs/bootstrap/issues/25686
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
@@ -20,7 +21,7 @@
//
// Credit: HTML5 Boilerplate
- at mixin sr-only-focusable {
+ at mixin sr-only-focusable() {
&:active,
&:focus {
position: static;
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_size.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_size.scss
similarity index 66%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_size.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_size.scss
index b9dd48e8df..69e056d2c1 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_size.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_size.scss
@@ -3,4 +3,5 @@
@mixin size($width, $height: $width) {
width: $width;
height: $height;
+ @include deprecate("`size()`", "v4.3.0", "v5");
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_table-row.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_table-row.scss
similarity index 96%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_table-row.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_table-row.scss
index f8d61869a4..1ccde6b6c5 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_table-row.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_table-row.scss
@@ -26,7 +26,7 @@
$hover-background: darken($background, 5%);
.table-#{$state} {
- @include hover {
+ @include hover() {
background-color: $hover-background;
> td,
diff --git a/devel/third-party/bootstrap-4.6.1/scss/mixins/_text-emphasis.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_text-emphasis.scss
new file mode 100644
index 0000000000..5eb8a55154
--- /dev/null
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_text-emphasis.scss
@@ -0,0 +1,17 @@
+// stylelint-disable declaration-no-important
+
+// Typography
+
+ at mixin text-emphasis-variant($parent, $color, $ignore-warning: false) {
+ #{$parent} {
+ color: $color !important;
+ }
+ @if $emphasized-link-hover-darken-percentage != 0 {
+ a#{$parent} {
+ @include hover-focus() {
+ color: darken($color, $emphasized-link-hover-darken-percentage) !important;
+ }
+ }
+ }
+ @include deprecate("`text-emphasis-variant()`", "v4.4.0", "v5", $ignore-warning);
+}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_text-hide.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_text-hide.scss
similarity index 63%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_text-hide.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_text-hide.scss
index 9ffab169f3..3a923011ec 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_text-hide.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_text-hide.scss
@@ -7,7 +7,5 @@
background-color: transparent;
border: 0;
- @if ($ignore-warning != true) {
- @warn "The `text-hide()` mixin has been deprecated as of v4.1.0. It will be removed entirely in v5.";
- }
+ @include deprecate("`text-hide()`", "v4.1.0", "v5", $ignore-warning);
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_text-truncate.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_text-truncate.scss
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_text-truncate.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_text-truncate.scss
diff --git a/devel/third-party/bootstrap-4.6.1/scss/mixins/_transition.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_transition.scss
new file mode 100644
index 0000000000..54870bf6a8
--- /dev/null
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_transition.scss
@@ -0,0 +1,26 @@
+// stylelint-disable property-disallowed-list
+ at mixin transition($transition...) {
+ @if length($transition) == 0 {
+ $transition: $transition-base;
+ }
+
+ @if length($transition) > 1 {
+ @each $value in $transition {
+ @if $value == null or $value == none {
+ @warn "The keyword 'none' or 'null' must be used as a single argument.";
+ }
+ }
+ }
+
+ @if $enable-transitions {
+ @if nth($transition, 1) != null {
+ transition: $transition;
+ }
+
+ @if $enable-prefers-reduced-motion-media-query and nth($transition, 1) != null and nth($transition, 1) != none {
+ @media (prefers-reduced-motion: reduce) {
+ transition: none;
+ }
+ }
+ }
+}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/mixins/_visibility.scss b/devel/third-party/bootstrap-4.6.1/scss/mixins/_visibility.scss
similarity index 70%
rename from devel/third-party/bootstrap-4.2.1/scss/mixins/_visibility.scss
rename to devel/third-party/bootstrap-4.6.1/scss/mixins/_visibility.scss
index fe523d0ee3..f174673117 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/mixins/_visibility.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/mixins/_visibility.scss
@@ -4,4 +4,5 @@
@mixin invisible($visibility) {
visibility: $visibility !important;
+ @include deprecate("`invisible()`", "v4.3.0", "v5");
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/utilities/_align.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_align.scss
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/scss/utilities/_align.scss
rename to devel/third-party/bootstrap-4.6.1/scss/utilities/_align.scss
diff --git a/devel/third-party/bootstrap-4.2.1/scss/utilities/_background.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_background.scss
similarity index 84%
rename from devel/third-party/bootstrap-4.2.1/scss/utilities/_background.scss
rename to devel/third-party/bootstrap-4.6.1/scss/utilities/_background.scss
index 1f18b2f3f3..3accbc4fd4 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/utilities/_background.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/utilities/_background.scss
@@ -1,12 +1,12 @@
// stylelint-disable declaration-no-important
@each $color, $value in $theme-colors {
- @include bg-variant(".bg-#{$color}", $value);
+ @include bg-variant(".bg-#{$color}", $value, true);
}
@if $enable-gradients {
@each $color, $value in $theme-colors {
- @include bg-gradient-variant(".bg-gradient-#{$color}", $value);
+ @include bg-gradient-variant(".bg-gradient-#{$color}", $value, true);
}
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/utilities/_borders.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_borders.scss
similarity index 88%
rename from devel/third-party/bootstrap-4.2.1/scss/utilities/_borders.scss
rename to devel/third-party/bootstrap-4.6.1/scss/utilities/_borders.scss
index fb759c9ba0..205f3fc24e 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/utilities/_borders.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/utilities/_borders.scss
@@ -1,4 +1,4 @@
-// stylelint-disable declaration-no-important
+// stylelint-disable property-disallowed-list, declaration-no-important
//
// Border
@@ -30,26 +30,38 @@
// Border-radius
//
+.rounded-sm {
+ border-radius: $border-radius-sm !important;
+}
+
.rounded {
border-radius: $border-radius !important;
}
+
.rounded-top {
border-top-left-radius: $border-radius !important;
border-top-right-radius: $border-radius !important;
}
+
.rounded-right {
border-top-right-radius: $border-radius !important;
border-bottom-right-radius: $border-radius !important;
}
+
.rounded-bottom {
border-bottom-right-radius: $border-radius !important;
border-bottom-left-radius: $border-radius !important;
}
+
.rounded-left {
border-top-left-radius: $border-radius !important;
border-bottom-left-radius: $border-radius !important;
}
+.rounded-lg {
+ border-radius: $border-radius-lg !important;
+}
+
.rounded-circle {
border-radius: 50% !important;
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/utilities/_clearfix.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_clearfix.scss
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/scss/utilities/_clearfix.scss
rename to devel/third-party/bootstrap-4.6.1/scss/utilities/_clearfix.scss
diff --git a/devel/third-party/bootstrap-4.6.1/scss/utilities/_display.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_display.scss
new file mode 100644
index 0000000000..130367998f
--- /dev/null
+++ b/devel/third-party/bootstrap-4.6.1/scss/utilities/_display.scss
@@ -0,0 +1,26 @@
+// stylelint-disable declaration-no-important
+
+//
+// Utilities for common `display` values
+//
+
+ at each $breakpoint in map-keys($grid-breakpoints) {
+ @include media-breakpoint-up($breakpoint) {
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+ @each $value in $displays {
+ .d#{$infix}-#{$value} { display: $value !important; }
+ }
+ }
+}
+
+
+//
+// Utilities for toggling `display` in print
+//
+
+ at media print {
+ @each $value in $displays {
+ .d-print-#{$value} { display: $value !important; }
+ }
+}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/utilities/_embed.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_embed.scss
similarity index 87%
rename from devel/third-party/bootstrap-4.2.1/scss/utilities/_embed.scss
rename to devel/third-party/bootstrap-4.6.1/scss/utilities/_embed.scss
index 4497ac0400..e37465e408 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/utilities/_embed.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/utilities/_embed.scss
@@ -33,7 +33,7 @@
.embed-responsive-#{$embed-responsive-aspect-ratio-x}by#{$embed-responsive-aspect-ratio-y} {
&::before {
- padding-top: percentage($embed-responsive-aspect-ratio-y / $embed-responsive-aspect-ratio-x);
+ padding-top: percentage(divide($embed-responsive-aspect-ratio-y, $embed-responsive-aspect-ratio-x));
}
}
}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/utilities/_flex.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_flex.scss
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/scss/utilities/_flex.scss
rename to devel/third-party/bootstrap-4.6.1/scss/utilities/_flex.scss
diff --git a/devel/third-party/bootstrap-4.6.1/scss/utilities/_float.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_float.scss
new file mode 100644
index 0000000000..54250844ff
--- /dev/null
+++ b/devel/third-party/bootstrap-4.6.1/scss/utilities/_float.scss
@@ -0,0 +1,11 @@
+// stylelint-disable declaration-no-important
+
+ at each $breakpoint in map-keys($grid-breakpoints) {
+ @include media-breakpoint-up($breakpoint) {
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+ .float#{$infix}-left { float: left !important; }
+ .float#{$infix}-right { float: right !important; }
+ .float#{$infix}-none { float: none !important; }
+ }
+}
diff --git a/devel/third-party/bootstrap-4.6.1/scss/utilities/_interactions.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_interactions.scss
new file mode 100644
index 0000000000..cc75fc21b7
--- /dev/null
+++ b/devel/third-party/bootstrap-4.6.1/scss/utilities/_interactions.scss
@@ -0,0 +1,5 @@
+// stylelint-disable declaration-no-important
+
+ at each $value in $user-selects {
+ .user-select-#{$value} { user-select: $value !important; }
+}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/utilities/_overflow.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_overflow.scss
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/scss/utilities/_overflow.scss
rename to devel/third-party/bootstrap-4.6.1/scss/utilities/_overflow.scss
diff --git a/devel/third-party/bootstrap-4.2.1/scss/utilities/_position.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_position.scss
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/scss/utilities/_position.scss
rename to devel/third-party/bootstrap-4.6.1/scss/utilities/_position.scss
diff --git a/devel/third-party/bootstrap-4.2.1/scss/utilities/_screenreaders.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_screenreaders.scss
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/scss/utilities/_screenreaders.scss
rename to devel/third-party/bootstrap-4.6.1/scss/utilities/_screenreaders.scss
diff --git a/devel/third-party/bootstrap-4.2.1/scss/utilities/_shadows.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_shadows.scss
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/scss/utilities/_shadows.scss
rename to devel/third-party/bootstrap-4.6.1/scss/utilities/_shadows.scss
diff --git a/devel/third-party/bootstrap-4.2.1/scss/utilities/_sizing.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_sizing.scss
similarity index 100%
rename from devel/third-party/bootstrap-4.2.1/scss/utilities/_sizing.scss
rename to devel/third-party/bootstrap-4.6.1/scss/utilities/_sizing.scss
diff --git a/devel/third-party/bootstrap-4.2.1/scss/utilities/_spacing.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_spacing.scss
similarity index 98%
rename from devel/third-party/bootstrap-4.2.1/scss/utilities/_spacing.scss
rename to devel/third-party/bootstrap-4.6.1/scss/utilities/_spacing.scss
index 351136790a..3e98581a94 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/utilities/_spacing.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/utilities/_spacing.scss
@@ -30,7 +30,7 @@
// Negative margins (e.g., where `.mb-n1` is negative version of `.mb-1`)
@each $size, $length in $spacers {
- @if $size != 0 {
+ @if "#{$size}" != "0" {
.m#{$infix}-n#{$size} { margin: -$length !important; }
.mt#{$infix}-n#{$size},
.my#{$infix}-n#{$size} {
diff --git a/devel/third-party/bootstrap-4.6.1/scss/utilities/_stretched-link.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_stretched-link.scss
new file mode 100644
index 0000000000..fb5066bf55
--- /dev/null
+++ b/devel/third-party/bootstrap-4.6.1/scss/utilities/_stretched-link.scss
@@ -0,0 +1,19 @@
+//
+// Stretched link
+//
+
+.stretched-link {
+ &::after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1;
+ // Just in case `pointer-events: none` is set on a parent
+ pointer-events: auto;
+ content: "";
+ // IE10 bugfix, see https://stackoverflow.com/questions/16947967/ie10-hover-pseudo-class-doesnt-work-without-background-color
+ background-color: rgba(0, 0, 0, 0);
+ }
+}
diff --git a/devel/third-party/bootstrap-4.2.1/scss/utilities/_text.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_text.scss
similarity index 82%
rename from devel/third-party/bootstrap-4.2.1/scss/utilities/_text.scss
rename to devel/third-party/bootstrap-4.6.1/scss/utilities/_text.scss
index 0edb8e58ba..3a9f83edf0 100644
--- a/devel/third-party/bootstrap-4.2.1/scss/utilities/_text.scss
+++ b/devel/third-party/bootstrap-4.6.1/scss/utilities/_text.scss
@@ -4,14 +4,14 @@
// Text
//
-.text-monospace { font-family: $font-family-monospace; }
+.text-monospace { font-family: $font-family-monospace !important; }
// Alignment
.text-justify { text-align: justify !important; }
.text-wrap { white-space: normal !important; }
.text-nowrap { white-space: nowrap !important; }
-.text-truncate { @include text-truncate; }
+.text-truncate { @include text-truncate(); }
// Responsive alignment
@@ -45,7 +45,7 @@
.text-white { color: $white !important; }
@each $color, $value in $theme-colors {
- @include text-emphasis-variant(".text-#{$color}", $value);
+ @include text-emphasis-variant(".text-#{$color}", $value, true);
}
.text-body { color: $body-color !important; }
@@ -62,6 +62,11 @@
.text-decoration-none { text-decoration: none !important; }
+.text-break {
+ word-break: break-word !important; // Deprecated, but avoids issues with flex containers
+ word-wrap: break-word !important; // Used instead of `overflow-wrap` for IE & Edge Legacy
+}
+
// Reset
.text-reset { color: inherit !important; }
diff --git a/devel/third-party/bootstrap-4.6.1/scss/utilities/_visibility.scss b/devel/third-party/bootstrap-4.6.1/scss/utilities/_visibility.scss
new file mode 100644
index 0000000000..7756c3bfac
--- /dev/null
+++ b/devel/third-party/bootstrap-4.6.1/scss/utilities/_visibility.scss
@@ -0,0 +1,13 @@
+// stylelint-disable declaration-no-important
+
+//
+// Visibility utilities
+//
+
+.visible {
+ visibility: visible !important;
+}
+
+.invisible {
+ visibility: hidden !important;
+}
diff --git a/devel/third-party/bootstrap-4.6.1/scss/vendor/_rfs.scss b/devel/third-party/bootstrap-4.6.1/scss/vendor/_rfs.scss
new file mode 100644
index 0000000000..e453f441ee
--- /dev/null
+++ b/devel/third-party/bootstrap-4.6.1/scss/vendor/_rfs.scss
@@ -0,0 +1,228 @@
+// stylelint-disable property-blacklist, scss/dollar-variable-default
+
+// SCSS RFS mixin
+//
+// Automated responsive font sizes
+//
+// Licensed under MIT (https://github.com/twbs/rfs/blob/v8.x/LICENSE)
+
+// Configuration
+
+// Base font size
+$rfs-base-font-size: 1.25rem !default;
+$rfs-font-size-unit: rem !default;
+
+ at if $rfs-font-size-unit != rem and $rfs-font-size-unit != px {
+ @error "`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.";
+}
+
+// Breakpoint at where font-size starts decreasing if screen width is smaller
+$rfs-breakpoint: 1200px !default;
+$rfs-breakpoint-unit: px !default;
+
+ at if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {
+ @error "`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.";
+}
+
+// Resize font size based on screen height and width
+$rfs-two-dimensional: false !default;
+
+// Factor of decrease
+$rfs-factor: 10 !default;
+
+ at if type-of($rfs-factor) != "number" or $rfs-factor <= 1 {
+ @error "`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.";
+}
+
+// Generate enable or disable classes. Possibilities: false, "enable" or "disable"
+$rfs-class: false !default;
+
+// 1 rem = $rfs-rem-value px
+$rfs-rem-value: 16 !default;
+
+// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14
+$rfs-safari-iframe-resize-bug-fix: false !default;
+
+// Disable RFS by setting $enable-responsive-font-sizes to false
+$enable-responsive-font-sizes: true !default;
+
+// Cache $rfs-base-font-size unit
+$rfs-base-font-size-unit: unit($rfs-base-font-size);
+
+ at function divide($dividend, $divisor, $precision: 10) {
+ $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
+ $dividend: abs($dividend);
+ $divisor: abs($divisor);
+ @if $dividend == 0 {
+ @return 0;
+ }
+ @if $divisor == 0 {
+ @error "Cannot divide by 0";
+ }
+ $remainder: $dividend;
+ $result: 0;
+ $factor: 10;
+ @while ($remainder > 0 and $precision >= 0) {
+ $quotient: 0;
+ @while ($remainder >= $divisor) {
+ $remainder: $remainder - $divisor;
+ $quotient: $quotient + 1;
+ }
+ $result: $result * 10 + $quotient;
+ $factor: $factor * .1;
+ $remainder: $remainder * 10;
+ $precision: $precision - 1;
+ @if ($precision < 0 and $remainder >= $divisor * 5) {
+ $result: $result + 1;
+ }
+ }
+ $result: $result * $factor * $sign;
+ $dividend-unit: unit($dividend);
+ $divisor-unit: unit($divisor);
+ $unit-map: (
+ "px": 1px,
+ "rem": 1rem,
+ "em": 1em,
+ "%": 1%
+ );
+ @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
+ $result: $result * map-get($unit-map, $dividend-unit);
+ }
+ @return $result;
+}
+
+// Remove px-unit from $rfs-base-font-size for calculations
+ at if $rfs-base-font-size-unit == "px" {
+ $rfs-base-font-size: divide($rfs-base-font-size, $rfs-base-font-size * 0 + 1);
+}
+ at else if $rfs-base-font-size-unit == "rem" {
+ $rfs-base-font-size: divide($rfs-base-font-size, divide($rfs-base-font-size * 0 + 1, $rfs-rem-value));
+}
+
+// Cache $rfs-breakpoint unit to prevent multiple calls
+$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);
+
+// Remove unit from $rfs-breakpoint for calculations
+ at if $rfs-breakpoint-unit-cache == "px" {
+ $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);
+}
+ at else if $rfs-breakpoint-unit-cache == "rem" or $rfs-breakpoint-unit-cache == "em" {
+ $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));
+}
+
+// Internal mixin that adds disable classes to the selector if needed.
+ at mixin _rfs-disable-class {
+ @if $rfs-class == "disable" {
+ // Adding an extra class increases specificity, which prevents the media query to override the font size
+ &,
+ .disable-responsive-font-size &,
+ &.disable-responsive-font-size {
+ @content;
+ }
+ }
+ @else {
+ @content;
+ }
+}
+
+// Internal mixin that adds enable classes to the selector if needed.
+ at mixin _rfs-enable-class {
+ @if $rfs-class == "enable" {
+ .enable-responsive-font-size &,
+ &.enable-responsive-font-size {
+ @content;
+ }
+ }
+ @else {
+ @content;
+ }
+}
+
+// Internal mixin used to determine which media query needs to be used
+ at mixin _rfs-media-query($mq-value) {
+ @if $rfs-two-dimensional {
+ @media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {
+ @content;
+ }
+ }
+ @else {
+ @media (max-width: #{$mq-value}) {
+ @content;
+ }
+ }
+}
+
+// Responsive font size mixin
+ at mixin rfs($fs, $important: false) {
+ // Cache $fs unit
+ $fs-unit: if(type-of($fs) == "number", unit($fs), false);
+
+ // Add !important suffix if needed
+ $rfs-suffix: if($important, " !important", "");
+
+ // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value
+ @if not $fs-unit or $fs-unit != "" and $fs-unit != "px" and $fs-unit != "rem" or $fs == 0 {
+ font-size: #{$fs}#{$rfs-suffix};
+ }
+ @else {
+ // Remove unit from $fs for calculations
+ @if $fs-unit == "px" {
+ $fs: divide($fs, $fs * 0 + 1);
+ }
+ @else if $fs-unit == "rem" {
+ $fs: divide($fs, divide($fs * 0 + 1, $rfs-rem-value));
+ }
+
+ // Set default font size
+ $rfs-static: if($rfs-font-size-unit == rem, #{divide($fs, $rfs-rem-value)}rem, #{$fs}px);
+
+ // Only add the media query if the font size is bigger than the minimum font size
+ @if $fs <= $rfs-base-font-size or not $enable-responsive-font-sizes {
+ font-size: #{$rfs-static}#{$rfs-suffix};
+ }
+ @else {
+ // Calculate the minimum font size for $fs
+ $fs-min: $rfs-base-font-size + divide($fs - $rfs-base-font-size, $rfs-factor);
+
+ // Calculate difference between $fs and the minimum font size
+ $fs-diff: $fs - $fs-min;
+
+ // Base font-size formatting
+ $min-width: if($rfs-font-size-unit == rem, #{divide($fs-min, $rfs-rem-value)}rem, #{$fs-min}px);
+
+ // Use `vmin` if two-dimensional is enabled
+ $variable-unit: if($rfs-two-dimensional, vmin, vw);
+
+ // Calculate the variable width between 0 and $rfs-breakpoint
+ $variable-width: #{divide($fs-diff * 100, $rfs-breakpoint)}#{$variable-unit};
+
+ // Set the calculated font-size
+ $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};
+
+ // Breakpoint formatting
+ $mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});
+
+ @include _rfs-disable-class {
+ font-size: #{$rfs-static}#{$rfs-suffix};
+ }
+
+ @include _rfs-media-query($mq-value) {
+ @include _rfs-enable-class {
+ font-size: $rfs-fluid;
+ }
+
+ // Include safari iframe resize fix if needed
+ min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);
+ }
+ }
+ }
+}
+
+// The font-size & responsive-font-size mixins use RFS to rescale the font size
+ at mixin font-size($fs, $important: false) {
+ @include rfs($fs, $important);
+}
+
+ at mixin responsive-font-size($fs, $important: false) {
+ @include rfs($fs, $important);
+}
diff --git a/docs/customizing/styling_rt.pod b/docs/customizing/styling_rt.pod
index 590019d030..ac8eb5dd5a 100644
--- a/docs/customizing/styling_rt.pod
+++ b/docs/customizing/styling_rt.pod
@@ -109,7 +109,7 @@ create your own version of bootstrap.css
brew install node
npm install -g node-sass postcss postcss-cli
- cd devel/third-party/bootstrap-4.2.1
+ cd devel/third-party/bootstrap-4.6.1
npm install autoprefixer
=item Create bootstrap_customized.scss
diff --git a/share/static/css/elevator-light/bootstrap.css b/share/static/css/elevator-light/bootstrap.css
index 0a155d6615..1b5cf1e362 100644
--- a/share/static/css/elevator-light/bootstrap.css
+++ b/share/static/css/elevator-light/bootstrap.css
@@ -1,8 +1,11 @@
+/* use rem to be more consistent with bootstrap core, also to get rid of scss compilation errors:
+ Incompatible units: 'px' and 'rem' */
+/* 6px */
/*!
- * Bootstrap v4.2.1 (https://getbootstrap.com/)
- * Copyright 2011-2018 The Bootstrap Authors
- * Copyright 2011-2018 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * Bootstrap v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root {
--blue: #007bff;
@@ -63,7 +66,7 @@ body {
background-color: #fff;
}
-[tabindex="-1"]:focus {
+[tabindex="-1"]:focus:not(:focus-visible) {
outline: 0 !important;
}
@@ -163,20 +166,16 @@ a:hover {
text-decoration: underline;
}
-a:not([href]):not([tabindex]) {
+a:not([href]):not([class]) {
color: inherit;
text-decoration: none;
}
-a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {
+a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
-a:not([href]):not([tabindex]):focus {
- outline: 0;
-}
-
pre,
code,
kbd,
@@ -189,6 +188,7 @@ pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
+ -ms-overflow-style: scrollbar;
}
figure {
@@ -219,6 +219,7 @@ caption {
th {
text-align: inherit;
+ text-align: -webkit-match-parent;
}
label {
@@ -230,9 +231,8 @@ button {
border-radius: 0;
}
-button:focus {
- outline: 1px dotted;
- outline: 5px auto -webkit-focus-ring-color;
+button:focus:not(:focus-visible) {
+ outline: 0;
}
input,
@@ -256,6 +256,14 @@ select {
text-transform: none;
}
+[role="button"] {
+ cursor: pointer;
+}
+
+select {
+ word-wrap: normal;
+}
+
button,
[type="button"],
[type="reset"],
@@ -263,6 +271,13 @@ button,
-webkit-appearance: button;
}
+button:not(:disabled),
+[type="button"]:not(:disabled),
+[type="reset"]:not(:disabled),
+[type="submit"]:not(:disabled) {
+ cursor: pointer;
+}
+
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
@@ -277,13 +292,6 @@ input[type="checkbox"] {
padding: 0;
}
-input[type="date"],
-input[type="time"],
-input[type="datetime-local"],
-input[type="month"] {
- -webkit-appearance: listbox;
-}
-
textarea {
overflow: auto;
resize: vertical;
@@ -351,10 +359,8 @@ template {
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
margin-bottom: 0.5rem;
- font-family: inherit;
font-weight: 500;
line-height: 1.2;
- color: inherit;
}
h1, .h1 {
@@ -498,7 +504,7 @@ mark,
code {
font-size: 87.5%;
color: #e83e8c;
- word-break: break-word;
+ word-wrap: break-word;
}
a > code {
@@ -536,7 +542,12 @@ pre code {
overflow-y: scroll;
}
-.container {
+.container,
+.container-fluid,
+.container-sm,
+.container-md,
+.container-lg,
+.container-xl {
width: 100%;
padding-right: 15px;
padding-left: 15px;
@@ -545,37 +556,29 @@ pre code {
}
@media (min-width: 576px) {
- .container {
+ .container, .container-sm {
max-width: 540px;
}
}
@media (min-width: 768px) {
- .container {
+ .container, .container-sm, .container-md {
max-width: 720px;
}
}
@media (min-width: 992px) {
- .container {
+ .container, .container-sm, .container-md, .container-lg {
max-width: 960px;
}
}
@media (min-width: 1200px) {
- .container {
+ .container, .container-sm, .container-md, .container-lg, .container-xl {
max-width: 1140px;
}
}
-.container-fluid {
- width: 100%;
- padding-right: 15px;
- padding-left: 15px;
- margin-right: auto;
- margin-left: auto;
-}
-
.row {
display: -ms-flexbox;
display: flex;
@@ -616,6 +619,42 @@ pre code {
max-width: 100%;
}
+.row-cols-1 > * {
+ -ms-flex: 0 0 100%;
+ flex: 0 0 100%;
+ max-width: 100%;
+}
+
+.row-cols-2 > * {
+ -ms-flex: 0 0 50%;
+ flex: 0 0 50%;
+ max-width: 50%;
+}
+
+.row-cols-3 > * {
+ -ms-flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
+ max-width: 33.333333%;
+}
+
+.row-cols-4 > * {
+ -ms-flex: 0 0 25%;
+ flex: 0 0 25%;
+ max-width: 25%;
+}
+
+.row-cols-5 > * {
+ -ms-flex: 0 0 20%;
+ flex: 0 0 20%;
+ max-width: 20%;
+}
+
+.row-cols-6 > * {
+ -ms-flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
+ max-width: 16.666667%;
+}
+
.col-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
@@ -822,6 +861,36 @@ pre code {
flex-grow: 1;
max-width: 100%;
}
+ .row-cols-sm-1 > * {
+ -ms-flex: 0 0 100%;
+ flex: 0 0 100%;
+ max-width: 100%;
+ }
+ .row-cols-sm-2 > * {
+ -ms-flex: 0 0 50%;
+ flex: 0 0 50%;
+ max-width: 50%;
+ }
+ .row-cols-sm-3 > * {
+ -ms-flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
+ max-width: 33.333333%;
+ }
+ .row-cols-sm-4 > * {
+ -ms-flex: 0 0 25%;
+ flex: 0 0 25%;
+ max-width: 25%;
+ }
+ .row-cols-sm-5 > * {
+ -ms-flex: 0 0 20%;
+ flex: 0 0 20%;
+ max-width: 20%;
+ }
+ .row-cols-sm-6 > * {
+ -ms-flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
+ max-width: 16.666667%;
+ }
.col-sm-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
@@ -994,6 +1063,36 @@ pre code {
flex-grow: 1;
max-width: 100%;
}
+ .row-cols-md-1 > * {
+ -ms-flex: 0 0 100%;
+ flex: 0 0 100%;
+ max-width: 100%;
+ }
+ .row-cols-md-2 > * {
+ -ms-flex: 0 0 50%;
+ flex: 0 0 50%;
+ max-width: 50%;
+ }
+ .row-cols-md-3 > * {
+ -ms-flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
+ max-width: 33.333333%;
+ }
+ .row-cols-md-4 > * {
+ -ms-flex: 0 0 25%;
+ flex: 0 0 25%;
+ max-width: 25%;
+ }
+ .row-cols-md-5 > * {
+ -ms-flex: 0 0 20%;
+ flex: 0 0 20%;
+ max-width: 20%;
+ }
+ .row-cols-md-6 > * {
+ -ms-flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
+ max-width: 16.666667%;
+ }
.col-md-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
@@ -1166,6 +1265,36 @@ pre code {
flex-grow: 1;
max-width: 100%;
}
+ .row-cols-lg-1 > * {
+ -ms-flex: 0 0 100%;
+ flex: 0 0 100%;
+ max-width: 100%;
+ }
+ .row-cols-lg-2 > * {
+ -ms-flex: 0 0 50%;
+ flex: 0 0 50%;
+ max-width: 50%;
+ }
+ .row-cols-lg-3 > * {
+ -ms-flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
+ max-width: 33.333333%;
+ }
+ .row-cols-lg-4 > * {
+ -ms-flex: 0 0 25%;
+ flex: 0 0 25%;
+ max-width: 25%;
+ }
+ .row-cols-lg-5 > * {
+ -ms-flex: 0 0 20%;
+ flex: 0 0 20%;
+ max-width: 20%;
+ }
+ .row-cols-lg-6 > * {
+ -ms-flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
+ max-width: 16.666667%;
+ }
.col-lg-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
@@ -1338,6 +1467,36 @@ pre code {
flex-grow: 1;
max-width: 100%;
}
+ .row-cols-xl-1 > * {
+ -ms-flex: 0 0 100%;
+ flex: 0 0 100%;
+ max-width: 100%;
+ }
+ .row-cols-xl-2 > * {
+ -ms-flex: 0 0 50%;
+ flex: 0 0 50%;
+ max-width: 50%;
+ }
+ .row-cols-xl-3 > * {
+ -ms-flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
+ max-width: 33.333333%;
+ }
+ .row-cols-xl-4 > * {
+ -ms-flex: 0 0 25%;
+ flex: 0 0 25%;
+ max-width: 25%;
+ }
+ .row-cols-xl-5 > * {
+ -ms-flex: 0 0 20%;
+ flex: 0 0 20%;
+ max-width: 20%;
+ }
+ .row-cols-xl-6 > * {
+ -ms-flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
+ max-width: 16.666667%;
+ }
.col-xl-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
@@ -1505,7 +1664,7 @@ pre code {
.table {
width: 100%;
margin-bottom: 1rem;
- background-color: transparent;
+ color: #212529;
}
.table th,
@@ -1524,10 +1683,6 @@ pre code {
border-top: 2px solid #dee2e6;
}
-.table .table {
- background-color: #fff;
-}
-
.table-sm th,
.table-sm td {
padding: 0.3rem;
@@ -1559,6 +1714,7 @@ pre code {
}
.table-hover tbody tr:hover {
+ color: #212529;
background-color: rgba(0, 0, 0, 0.075);
}
@@ -1755,8 +1911,8 @@ pre code {
.table .thead-dark th {
color: #fff;
- background-color: #212529;
- border-color: #32383e;
+ background-color: #343a40;
+ border-color: #454d55;
}
.table .thead-light th {
@@ -1767,13 +1923,13 @@ pre code {
.table-dark {
color: #fff;
- background-color: #212529;
+ background-color: #343a40;
}
.table-dark th,
.table-dark td,
.table-dark thead th {
- border-color: #32383e;
+ border-color: #454d55;
}
.table-dark.table-bordered {
@@ -1785,6 +1941,7 @@ pre code {
}
.table-dark.table-hover tbody tr:hover {
+ color: #fff;
background-color: rgba(255, 255, 255, 0.075);
}
@@ -1794,7 +1951,6 @@ pre code {
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
- -ms-overflow-style: -ms-autohiding-scrollbar;
}
.table-responsive-sm > .table-bordered {
border: 0;
@@ -1807,7 +1963,6 @@ pre code {
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
- -ms-overflow-style: -ms-autohiding-scrollbar;
}
.table-responsive-md > .table-bordered {
border: 0;
@@ -1820,7 +1975,6 @@ pre code {
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
- -ms-overflow-style: -ms-autohiding-scrollbar;
}
.table-responsive-lg > .table-bordered {
border: 0;
@@ -1833,7 +1987,6 @@ pre code {
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
- -ms-overflow-style: -ms-autohiding-scrollbar;
}
.table-responsive-xl > .table-bordered {
border: 0;
@@ -1845,7 +1998,6 @@ pre code {
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
- -ms-overflow-style: -ms-autohiding-scrollbar;
}
.table-responsive > .table-bordered {
@@ -1855,8 +2007,8 @@ pre code {
.form-control {
display: block;
width: 100%;
- height: calc(2.13465rem + 2px);
- padding: 6px 6px;
+ height: calc(1.5em + 0.75rem + 2px);
+ padding: 0.375rem 0.4615rem;
font-size: 0.9231rem;
font-weight: 400;
line-height: 1.5;
@@ -1868,7 +2020,7 @@ pre code {
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.form-control {
transition: none;
}
@@ -1917,6 +2069,20 @@ pre code {
opacity: 1;
}
+input[type="date"].form-control,
+input[type="time"].form-control,
+input[type="datetime-local"].form-control,
+input[type="month"].form-control {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+}
+
+select.form-control:-moz-focusring {
+ color: transparent;
+ text-shadow: 0 0 0 #495057;
+}
+
select.form-control:focus::-ms-value {
color: #495057;
background-color: #fff;
@@ -1929,8 +2095,8 @@ select.form-control:focus::-ms-value {
}
.col-form-label {
- padding-top: calc(6px + 1px);
- padding-bottom: calc(6px + 1px);
+ padding-top: calc(0.375rem + 1px);
+ padding-bottom: calc(0.375rem + 1px);
margin-bottom: 0;
font-size: inherit;
line-height: 1.5;
@@ -1953,9 +2119,9 @@ select.form-control:focus::-ms-value {
.form-control-plaintext {
display: block;
width: 100%;
- padding-top: 6px;
- padding-bottom: 6px;
+ padding: 0.375rem 0;
margin-bottom: 0;
+ font-size: 0.9231rem;
line-height: 1.5;
color: #212529;
background-color: transparent;
@@ -1969,7 +2135,7 @@ select.form-control:focus::-ms-value {
}
.form-control-sm {
- height: calc(1.8125rem + 2px);
+ height: calc(1.5em + 0.5rem + 2px);
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
line-height: 1.5;
@@ -1977,7 +2143,7 @@ select.form-control:focus::-ms-value {
}
.form-control-lg {
- height: calc(2.875rem + 2px);
+ height: calc(1.5em + 1rem + 2px);
padding: 0.5rem 1rem;
font-size: 1.25rem;
line-height: 1.5;
@@ -2028,6 +2194,7 @@ textarea.form-control {
margin-left: -1.25rem;
}
+.form-check-input[disabled] ~ .form-check-label,
.form-check-input:disabled ~ .form-check-label {
color: #6c757d;
}
@@ -2063,6 +2230,7 @@ textarea.form-control {
.valid-tooltip {
position: absolute;
top: 100%;
+ left: 0;
z-index: 5;
display: none;
max-width: 100%;
@@ -2075,13 +2243,25 @@ textarea.form-control {
border-radius: 0.25rem;
}
+.form-row > .col > .valid-tooltip,
+.form-row > [class*="col-"] > .valid-tooltip {
+ left: 5px;
+}
+
+.was-validated :valid ~ .valid-feedback,
+.was-validated :valid ~ .valid-tooltip,
+.is-valid ~ .valid-feedback,
+.is-valid ~ .valid-tooltip {
+ display: block;
+}
+
.was-validated .form-control:valid, .form-control.is-valid {
border-color: #28a745;
- padding-right: 2.13465rem;
+ padding-right: calc(1.5em + 0.75rem) !important;
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
background-repeat: no-repeat;
- background-position: center right calc(2.13465rem / 4);
- background-size: calc(2.13465rem / 2) calc(2.13465rem / 2);
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
+ background-position: right calc(0.375em + 0.1875rem) center;
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.was-validated .form-control:valid:focus, .form-control.is-valid:focus {
@@ -2089,21 +2269,20 @@ textarea.form-control {
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}
-.was-validated .form-control:valid ~ .valid-feedback,
-.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,
-.form-control.is-valid ~ .valid-tooltip {
- display: block;
+.was-validated select.form-control:valid, select.form-control.is-valid {
+ padding-right: 1.846rem !important;
+ background-position: right 0.923rem center;
}
.was-validated textarea.form-control:valid, textarea.form-control.is-valid {
- padding-right: 2.13465rem;
- background-position: top calc(2.13465rem / 4) right calc(2.13465rem / 4);
+ padding-right: calc(1.5em + 0.75rem);
+ background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
}
.was-validated .custom-select:valid, .custom-select.is-valid {
border-color: #28a745;
- padding-right: 3.350988rem;
- background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") no-repeat center right 1.75rem/1.067325rem 1.067325rem;
+ padding-right: calc(0.75em + 2.024rem) !important;
+ background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.4615rem center/8px 10px no-repeat, #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.4615rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) no-repeat;
}
.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {
@@ -2111,18 +2290,6 @@ textarea.form-control {
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}
-.was-validated .custom-select:valid ~ .valid-feedback,
-.was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback,
-.custom-select.is-valid ~ .valid-tooltip {
- display: block;
-}
-
-.was-validated .form-control-file:valid ~ .valid-feedback,
-.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback,
-.form-control-file.is-valid ~ .valid-tooltip {
- display: block;
-}
-
.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {
color: #28a745;
}
@@ -2141,12 +2308,6 @@ textarea.form-control {
border-color: #28a745;
}
-.was-validated .custom-control-input:valid ~ .valid-feedback,
-.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,
-.custom-control-input.is-valid ~ .valid-tooltip {
- display: block;
-}
-
.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {
border-color: #34ce57;
background-color: #34ce57;
@@ -2164,12 +2325,6 @@ textarea.form-control {
border-color: #28a745;
}
-.was-validated .custom-file-input:valid ~ .valid-feedback,
-.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,
-.custom-file-input.is-valid ~ .valid-tooltip {
- display: block;
-}
-
.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {
border-color: #28a745;
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
@@ -2186,6 +2341,7 @@ textarea.form-control {
.invalid-tooltip {
position: absolute;
top: 100%;
+ left: 0;
z-index: 5;
display: none;
max-width: 100%;
@@ -2198,13 +2354,25 @@ textarea.form-control {
border-radius: 0.25rem;
}
+.form-row > .col > .invalid-tooltip,
+.form-row > [class*="col-"] > .invalid-tooltip {
+ left: 5px;
+}
+
+.was-validated :invalid ~ .invalid-feedback,
+.was-validated :invalid ~ .invalid-tooltip,
+.is-invalid ~ .invalid-feedback,
+.is-invalid ~ .invalid-tooltip {
+ display: block;
+}
+
.was-validated .form-control:invalid, .form-control.is-invalid {
border-color: #dc3545;
- padding-right: 2.13465rem;
+ padding-right: calc(1.5em + 0.75rem) !important;
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
background-repeat: no-repeat;
- background-position: center right calc(2.13465rem / 4);
- background-size: calc(2.13465rem / 2) calc(2.13465rem / 2);
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");
+ background-position: right calc(0.375em + 0.1875rem) center;
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {
@@ -2212,21 +2380,20 @@ textarea.form-control {
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
-.was-validated .form-control:invalid ~ .invalid-feedback,
-.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,
-.form-control.is-invalid ~ .invalid-tooltip {
- display: block;
+.was-validated select.form-control:invalid, select.form-control.is-invalid {
+ padding-right: 1.846rem !important;
+ background-position: right 0.923rem center;
}
.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {
- padding-right: 2.13465rem;
- background-position: top calc(2.13465rem / 4) right calc(2.13465rem / 4);
+ padding-right: calc(1.5em + 0.75rem);
+ background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
}
.was-validated .custom-select:invalid, .custom-select.is-invalid {
border-color: #dc3545;
- padding-right: 3.350988rem;
- background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") no-repeat center right 1.75rem/1.067325rem 1.067325rem;
+ padding-right: calc(0.75em + 2.024rem) !important;
+ background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.4615rem center/8px 10px no-repeat, #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.4615rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) no-repeat;
}
.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {
@@ -2234,18 +2401,6 @@ textarea.form-control {
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
-.was-validated .custom-select:invalid ~ .invalid-feedback,
-.was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback,
-.custom-select.is-invalid ~ .invalid-tooltip {
- display: block;
-}
-
-.was-validated .form-control-file:invalid ~ .invalid-feedback,
-.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback,
-.form-control-file.is-invalid ~ .invalid-tooltip {
- display: block;
-}
-
.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {
color: #dc3545;
}
@@ -2264,12 +2419,6 @@ textarea.form-control {
border-color: #dc3545;
}
-.was-validated .custom-control-input:invalid ~ .invalid-feedback,
-.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,
-.custom-control-input.is-invalid ~ .invalid-tooltip {
- display: block;
-}
-
.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {
border-color: #e4606d;
background-color: #e4606d;
@@ -2287,12 +2436,6 @@ textarea.form-control {
border-color: #dc3545;
}
-.was-validated .custom-file-input:invalid ~ .invalid-feedback,
-.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,
-.custom-file-input.is-invalid ~ .invalid-tooltip {
- display: block;
-}
-
.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {
border-color: #dc3545;
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
@@ -2356,6 +2499,8 @@ textarea.form-control {
}
.form-inline .form-check-input {
position: relative;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
margin-top: 0;
margin-right: 0.25rem;
margin-left: 0;
@@ -2390,7 +2535,7 @@ textarea.form-control {
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.btn {
transition: none;
}
@@ -2432,6 +2577,9 @@ fieldset:disabled a.btn {
}
.btn-primary:focus, .btn-primary.focus {
+ color: #fff;
+ background-color: #0069d9;
+ border-color: #0062cc;
box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
}
@@ -2466,6 +2614,9 @@ fieldset:disabled a.btn {
}
.btn-secondary:focus, .btn-secondary.focus {
+ color: #fff;
+ background-color: #5a6268;
+ border-color: #545b62;
box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);
}
@@ -2500,6 +2651,9 @@ fieldset:disabled a.btn {
}
.btn-success:focus, .btn-success.focus {
+ color: #fff;
+ background-color: #218838;
+ border-color: #1e7e34;
box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);
}
@@ -2534,6 +2688,9 @@ fieldset:disabled a.btn {
}
.btn-info:focus, .btn-info.focus {
+ color: #fff;
+ background-color: #138496;
+ border-color: #117a8b;
box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);
}
@@ -2568,6 +2725,9 @@ fieldset:disabled a.btn {
}
.btn-warning:focus, .btn-warning.focus {
+ color: #212529;
+ background-color: #e0a800;
+ border-color: #d39e00;
box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);
}
@@ -2602,6 +2762,9 @@ fieldset:disabled a.btn {
}
.btn-danger:focus, .btn-danger.focus {
+ color: #fff;
+ background-color: #c82333;
+ border-color: #bd2130;
box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);
}
@@ -2636,6 +2799,9 @@ fieldset:disabled a.btn {
}
.btn-light:focus, .btn-light.focus {
+ color: #212529;
+ background-color: #e2e6ea;
+ border-color: #dae0e5;
box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);
}
@@ -2670,6 +2836,9 @@ fieldset:disabled a.btn {
}
.btn-dark:focus, .btn-dark.focus {
+ color: #fff;
+ background-color: #23272b;
+ border-color: #1d2124;
box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);
}
@@ -2950,6 +3119,7 @@ fieldset:disabled a.btn {
.btn-link {
font-weight: 400;
color: #007bff;
+ text-decoration: none;
}
.btn-link:hover {
@@ -2959,7 +3129,6 @@ fieldset:disabled a.btn {
.btn-link:focus, .btn-link.focus {
text-decoration: underline;
- box-shadow: none;
}
.btn-link:disabled, .btn-link.disabled {
@@ -3000,7 +3169,7 @@ input[type="button"].btn-block {
transition: opacity 0.15s linear;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.fade {
transition: none;
}
@@ -3021,7 +3190,7 @@ input[type="button"].btn-block {
transition: height 0.35s ease;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.collapsing {
transition: none;
}
@@ -3034,6 +3203,10 @@ input[type="button"].btn-block {
position: relative;
}
+.dropdown-toggle {
+ white-space: nowrap;
+}
+
.dropdown-toggle::after {
display: inline-block;
margin-left: 0.255em;
@@ -3069,49 +3242,25 @@ input[type="button"].btn-block {
border-radius: 0.25rem;
}
-.dropdown-menu-right {
- right: 0;
- left: auto;
-}
-
- at media (min-width: 576px) {
- .dropdown-menu-sm-right {
- right: 0;
- left: auto;
- }
-}
-
- at media (min-width: 768px) {
- .dropdown-menu-md-right {
- right: 0;
- left: auto;
- }
-}
-
- at media (min-width: 992px) {
- .dropdown-menu-lg-right {
- right: 0;
- left: auto;
- }
-}
-
- at media (min-width: 1200px) {
- .dropdown-menu-xl-right {
- right: 0;
- left: auto;
- }
-}
-
.dropdown-menu-left {
right: auto;
left: 0;
}
+.dropdown-menu-right {
+ right: 0;
+ left: auto;
+}
+
@media (min-width: 576px) {
.dropdown-menu-sm-left {
right: auto;
left: 0;
}
+ .dropdown-menu-sm-right {
+ right: 0;
+ left: auto;
+ }
}
@media (min-width: 768px) {
@@ -3119,6 +3268,10 @@ input[type="button"].btn-block {
right: auto;
left: 0;
}
+ .dropdown-menu-md-right {
+ right: 0;
+ left: auto;
+ }
}
@media (min-width: 992px) {
@@ -3126,6 +3279,10 @@ input[type="button"].btn-block {
right: auto;
left: 0;
}
+ .dropdown-menu-lg-right {
+ right: 0;
+ left: auto;
+ }
}
@media (min-width: 1200px) {
@@ -3133,6 +3290,10 @@ input[type="button"].btn-block {
right: auto;
left: 0;
}
+ .dropdown-menu-xl-right {
+ right: 0;
+ left: auto;
+ }
}
.dropup .dropdown-menu {
@@ -3246,16 +3407,6 @@ input[type="button"].btn-block {
border: 0;
}
-.dropdown-item:first-child {
- border-top-left-radius: calc(0.25rem - 1px);
- border-top-right-radius: calc(0.25rem - 1px);
-}
-
-.dropdown-item:last-child {
- border-bottom-right-radius: calc(0.25rem - 1px);
- border-bottom-left-radius: calc(0.25rem - 1px);
-}
-
.dropdown-item:hover, .dropdown-item:focus {
color: #16181b;
text-decoration: none;
@@ -3269,7 +3420,7 @@ input[type="button"].btn-block {
}
.dropdown-item.disabled, .dropdown-item:disabled {
- color: #6c757d;
+ color: #adb5bd;
pointer-events: none;
background-color: transparent;
}
@@ -3439,6 +3590,7 @@ input[type="button"].btn-block {
-ms-flex: 1 1 auto;
flex: 1 1 auto;
width: 1%;
+ min-width: 0;
margin-bottom: 0;
}
@@ -3467,12 +3619,6 @@ input[type="button"].btn-block {
z-index: 4;
}
-.input-group > .form-control:not(:last-child),
-.input-group > .custom-select:not(:last-child) {
- border-top-right-radius: 0;
- border-bottom-right-radius: 0;
-}
-
.input-group > .form-control:not(:first-child),
.input-group > .custom-select:not(:first-child) {
border-top-left-radius: 0;
@@ -3497,6 +3643,22 @@ input[type="button"].btn-block {
border-bottom-left-radius: 0;
}
+.input-group:not(.has-validation) > .form-control:not(:last-child),
+.input-group:not(.has-validation) > .custom-select:not(:last-child),
+.input-group:not(.has-validation) > .custom-file:not(:last-child) .custom-file-label,
+.input-group:not(.has-validation) > .custom-file:not(:last-child) .custom-file-label::after {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.input-group.has-validation > .form-control:nth-last-child(n + 3),
+.input-group.has-validation > .custom-select:nth-last-child(n + 3),
+.input-group.has-validation > .custom-file:nth-last-child(n + 3) .custom-file-label,
+.input-group.has-validation > .custom-file:nth-last-child(n + 3) .custom-file-label::after {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
.input-group-prepend,
.input-group-append {
display: -ms-flexbox;
@@ -3538,9 +3700,9 @@ input[type="button"].btn-block {
display: flex;
-ms-flex-align: center;
align-items: center;
- padding: 6px 6px;
+ padding: 0.375rem 0.4615rem;
margin-bottom: 0;
- font-size: 1rem;
+ font-size: 0.9231rem;
font-weight: 400;
line-height: 1.5;
color: #495057;
@@ -3558,7 +3720,7 @@ input[type="button"].btn-block {
.input-group-lg > .form-control:not(textarea),
.input-group-lg > .custom-select {
- height: calc(2.875rem + 2px);
+ height: calc(1.5em + 1rem + 2px);
}
.input-group-lg > .form-control,
@@ -3575,7 +3737,7 @@ input[type="button"].btn-block {
.input-group-sm > .form-control:not(textarea),
.input-group-sm > .custom-select {
- height: calc(1.8125rem + 2px);
+ height: calc(1.5em + 0.5rem + 2px);
}
.input-group-sm > .form-control,
@@ -3592,13 +3754,15 @@ input[type="button"].btn-block {
.input-group-lg > .custom-select,
.input-group-sm > .custom-select {
- padding-right: 1.75rem;
+ padding-right: 1.4615rem;
}
.input-group > .input-group-prepend > .btn,
.input-group > .input-group-prepend > .input-group-text,
-.input-group > .input-group-append:not(:last-child) > .btn,
-.input-group > .input-group-append:not(:last-child) > .input-group-text,
+.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .btn,
+.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .input-group-text,
+.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .btn,
+.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .input-group-text,
.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
border-top-right-radius: 0;
@@ -3617,9 +3781,12 @@ input[type="button"].btn-block {
.custom-control {
position: relative;
+ z-index: 1;
display: block;
min-height: 1.5rem;
padding-left: 1.5rem;
+ -webkit-print-color-adjust: exact;
+ color-adjust: exact;
}
.custom-control-inline {
@@ -3630,7 +3797,10 @@ input[type="button"].btn-block {
.custom-control-input {
position: absolute;
+ left: 0;
z-index: -1;
+ width: 1rem;
+ height: 1.25rem;
opacity: 0;
}
@@ -3654,11 +3824,11 @@ input[type="button"].btn-block {
border-color: #b3d7ff;
}
-.custom-control-input:disabled ~ .custom-control-label {
+.custom-control-input[disabled] ~ .custom-control-label, .custom-control-input:disabled ~ .custom-control-label {
color: #6c757d;
}
-.custom-control-input:disabled ~ .custom-control-label::before {
+.custom-control-input[disabled] ~ .custom-control-label::before, .custom-control-input:disabled ~ .custom-control-label::before {
background-color: #e9ecef;
}
@@ -3689,9 +3859,7 @@ input[type="button"].btn-block {
width: 1rem;
height: 1rem;
content: "";
- background-repeat: no-repeat;
- background-position: center center;
- background-size: 50% 50%;
+ background: 50% / 50% 50% no-repeat;
}
.custom-checkbox .custom-control-label::before {
@@ -3699,7 +3867,7 @@ input[type="button"].btn-block {
}
.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e");
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e");
}
.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {
@@ -3708,7 +3876,7 @@ input[type="button"].btn-block {
}
.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e");
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e");
}
.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {
@@ -3724,7 +3892,7 @@ input[type="button"].btn-block {
}
.custom-radio .custom-control-input:checked ~ .custom-control-label::after {
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
}
.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {
@@ -3754,7 +3922,7 @@ input[type="button"].btn-block {
transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.custom-switch .custom-control-label::after {
transition: none;
}
@@ -3773,14 +3941,14 @@ input[type="button"].btn-block {
.custom-select {
display: inline-block;
width: 100%;
- height: calc(2.13465rem + 2px);
- padding: 0.375rem 1.75rem 0.375rem 0.75rem;
+ height: calc(1.5em + 0.75rem + 2px);
+ padding: 0.375rem 1.4615rem 0.375rem 0.4615rem;
+ font-size: 0.9231rem;
font-weight: 400;
line-height: 1.5;
color: #495057;
vertical-align: middle;
- background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px;
- background-color: #fff;
+ background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.4615rem center/8px 10px no-repeat;
border: 1px solid #c0c7d1;
border-radius: 0.25rem;
-webkit-appearance: none;
@@ -3791,7 +3959,7 @@ input[type="button"].btn-block {
.custom-select:focus {
border-color: #5c6273;
outline: 0;
- box-shadow: 0 0 0 0.2rem rgba(92, 98, 115, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.custom-select:focus::-ms-value {
@@ -3801,7 +3969,7 @@ input[type="button"].btn-block {
.custom-select[multiple], .custom-select[size]:not([size="1"]) {
height: auto;
- padding-right: 0.75rem;
+ padding-right: 0.4615rem;
background-image: none;
}
@@ -3811,11 +3979,16 @@ input[type="button"].btn-block {
}
.custom-select::-ms-expand {
- opacity: 0;
+ display: none;
+}
+
+.custom-select:-moz-focusring {
+ color: transparent;
+ text-shadow: 0 0 0 #495057;
}
.custom-select-sm {
- height: calc(1.8125rem + 2px);
+ height: calc(1.5em + 0.5rem + 2px);
padding-top: 0.25rem;
padding-bottom: 0.25rem;
padding-left: 0.5rem;
@@ -3823,7 +3996,7 @@ input[type="button"].btn-block {
}
.custom-select-lg {
- height: calc(2.875rem + 2px);
+ height: calc(1.5em + 1rem + 2px);
padding-top: 0.5rem;
padding-bottom: 0.5rem;
padding-left: 1rem;
@@ -3834,7 +4007,7 @@ input[type="button"].btn-block {
position: relative;
display: inline-block;
width: 100%;
- height: calc(2.13465rem + 2px);
+ height: calc(1.5em + 0.75rem + 2px);
margin-bottom: 0;
}
@@ -3842,8 +4015,9 @@ input[type="button"].btn-block {
position: relative;
z-index: 2;
width: 100%;
- height: calc(2.13465rem + 2px);
+ height: calc(1.5em + 0.75rem + 2px);
margin: 0;
+ overflow: hidden;
opacity: 0;
}
@@ -3852,6 +4026,7 @@ input[type="button"].btn-block {
box-shadow: none;
}
+.custom-file-input[disabled] ~ .custom-file-label,
.custom-file-input:disabled ~ .custom-file-label {
background-color: #e9ecef;
}
@@ -3870,8 +4045,9 @@ input[type="button"].btn-block {
right: 0;
left: 0;
z-index: 1;
- height: calc(2.13465rem + 2px);
- padding: 6px 6px;
+ height: calc(1.5em + 0.75rem + 2px);
+ padding: 0.375rem 0.4615rem;
+ overflow: hidden;
font-weight: 400;
line-height: 1.5;
color: #495057;
@@ -3887,8 +4063,8 @@ input[type="button"].btn-block {
bottom: 0;
z-index: 3;
display: block;
- height: 2.13465rem;
- padding: 6px 6px;
+ height: calc(1.5em + 0.75rem);
+ padding: 0.375rem 0.4615rem;
line-height: 1.5;
color: #495057;
content: "Browse";
@@ -3899,7 +4075,7 @@ input[type="button"].btn-block {
.custom-range {
width: 100%;
- height: calc(1rem + 0.4rem);
+ height: 1.4rem;
padding: 0;
background-color: transparent;
-webkit-appearance: none;
@@ -3908,7 +4084,7 @@ input[type="button"].btn-block {
}
.custom-range:focus {
- outline: none;
+ outline: 0;
}
.custom-range:focus::-webkit-slider-thumb {
@@ -3934,13 +4110,15 @@ input[type="button"].btn-block {
background-color: #007bff;
border: 0;
border-radius: 1rem;
+ -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
-webkit-appearance: none;
appearance: none;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.custom-range::-webkit-slider-thumb {
+ -webkit-transition: none;
transition: none;
}
}
@@ -3965,13 +4143,15 @@ input[type="button"].btn-block {
background-color: #007bff;
border: 0;
border-radius: 1rem;
+ -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
-moz-appearance: none;
appearance: none;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.custom-range::-moz-range-thumb {
+ -moz-transition: none;
transition: none;
}
}
@@ -3999,12 +4179,14 @@ input[type="button"].btn-block {
background-color: #007bff;
border: 0;
border-radius: 1rem;
+ -ms-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
appearance: none;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.custom-range::-ms-thumb {
+ -ms-transition: none;
transition: none;
}
}
@@ -4060,7 +4242,7 @@ input[type="button"].btn-block {
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.custom-control-label::before,
.custom-file-label,
.custom-select {
@@ -4097,11 +4279,8 @@ input[type="button"].btn-block {
border-bottom: 1px solid #dee2e6;
}
-.nav-tabs .nav-item {
- margin-bottom: -1px;
-}
-
.nav-tabs .nav-link {
+ margin-bottom: -1px;
border: 1px solid transparent;
border-top-left-radius: 0.25rem;
border-top-right-radius: 0.25rem;
@@ -4140,12 +4319,14 @@ input[type="button"].btn-block {
background-color: #4868b3;
}
+.nav-fill > .nav-link,
.nav-fill .nav-item {
-ms-flex: 1 1 auto;
flex: 1 1 auto;
text-align: center;
}
+.nav-justified > .nav-link,
.nav-justified .nav-item {
-ms-flex-preferred-size: 0;
flex-basis: 0;
@@ -4175,8 +4356,8 @@ input[type="button"].btn-block {
padding: 0.5rem 1rem;
}
-.navbar > .container,
-.navbar > .container-fluid {
+.navbar .container,
+.navbar .container-fluid, .navbar .container-sm, .navbar .container-md, .navbar .container-lg, .navbar .container-xl {
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
@@ -4249,23 +4430,23 @@ input[type="button"].btn-block {
text-decoration: none;
}
-.navbar-toggler:not(:disabled):not(.disabled) {
- cursor: pointer;
-}
-
.navbar-toggler-icon {
display: inline-block;
width: 1.5em;
height: 1.5em;
vertical-align: middle;
content: "";
- background: no-repeat center center;
- background-size: 100% 100%;
+ background: 50% / 100% 100% no-repeat;
+}
+
+.navbar-nav-scroll {
+ max-height: 75vh;
+ overflow-y: auto;
}
@media (max-width: 575.98px) {
.navbar-expand-sm > .container,
- .navbar-expand-sm > .container-fluid {
+ .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {
padding-right: 0;
padding-left: 0;
}
@@ -4290,10 +4471,13 @@ input[type="button"].btn-block {
padding-left: 0.5rem;
}
.navbar-expand-sm > .container,
- .navbar-expand-sm > .container-fluid {
+ .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
+ .navbar-expand-sm .navbar-nav-scroll {
+ overflow: visible;
+ }
.navbar-expand-sm .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
@@ -4307,7 +4491,7 @@ input[type="button"].btn-block {
@media (max-width: 767.98px) {
.navbar-expand-md > .container,
- .navbar-expand-md > .container-fluid {
+ .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {
padding-right: 0;
padding-left: 0;
}
@@ -4332,10 +4516,13 @@ input[type="button"].btn-block {
padding-left: 0.5rem;
}
.navbar-expand-md > .container,
- .navbar-expand-md > .container-fluid {
+ .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
+ .navbar-expand-md .navbar-nav-scroll {
+ overflow: visible;
+ }
.navbar-expand-md .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
@@ -4349,7 +4536,7 @@ input[type="button"].btn-block {
@media (max-width: 991.98px) {
.navbar-expand-lg > .container,
- .navbar-expand-lg > .container-fluid {
+ .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {
padding-right: 0;
padding-left: 0;
}
@@ -4374,10 +4561,13 @@ input[type="button"].btn-block {
padding-left: 0.5rem;
}
.navbar-expand-lg > .container,
- .navbar-expand-lg > .container-fluid {
+ .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
+ .navbar-expand-lg .navbar-nav-scroll {
+ overflow: visible;
+ }
.navbar-expand-lg .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
@@ -4391,7 +4581,7 @@ input[type="button"].btn-block {
@media (max-width: 1199.98px) {
.navbar-expand-xl > .container,
- .navbar-expand-xl > .container-fluid {
+ .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {
padding-right: 0;
padding-left: 0;
}
@@ -4416,10 +4606,13 @@ input[type="button"].btn-block {
padding-left: 0.5rem;
}
.navbar-expand-xl > .container,
- .navbar-expand-xl > .container-fluid {
+ .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
+ .navbar-expand-xl .navbar-nav-scroll {
+ overflow: visible;
+ }
.navbar-expand-xl .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
@@ -4439,7 +4632,7 @@ input[type="button"].btn-block {
}
.navbar-expand > .container,
-.navbar-expand > .container-fluid {
+.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {
padding-right: 0;
padding-left: 0;
}
@@ -4459,11 +4652,15 @@ input[type="button"].btn-block {
}
.navbar-expand > .container,
-.navbar-expand > .container-fluid {
+.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
+.navbar-expand .navbar-nav-scroll {
+ overflow: visible;
+}
+
.navbar-expand .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
@@ -4508,7 +4705,7 @@ input[type="button"].btn-block {
}
.navbar-light .navbar-toggler-icon {
- background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.navbar-light .navbar-text {
@@ -4556,7 +4753,7 @@ input[type="button"].btn-block {
}
.navbar-dark .navbar-toggler-icon {
- background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.navbar-dark .navbar-text {
@@ -4590,19 +4787,32 @@ input[type="button"].btn-block {
margin-left: 0;
}
-.card > .list-group:first-child .list-group-item:first-child {
- border-top-left-radius: 0.25rem;
- border-top-right-radius: 0.25rem;
+.card > .list-group {
+ border-top: inherit;
+ border-bottom: inherit;
}
-.card > .list-group:last-child .list-group-item:last-child {
- border-bottom-right-radius: 0.25rem;
- border-bottom-left-radius: 0.25rem;
+.card > .list-group:first-child {
+ border-top-width: 0;
+ border-top-left-radius: calc(0.25rem - 1px);
+ border-top-right-radius: calc(0.25rem - 1px);
+}
+
+.card > .list-group:last-child {
+ border-bottom-width: 0;
+ border-bottom-right-radius: calc(0.25rem - 1px);
+ border-bottom-left-radius: calc(0.25rem - 1px);
+}
+
+.card > .card-header + .list-group,
+.card > .list-group + .card-footer {
+ border-top: 0;
}
.card-body {
-ms-flex: 1 1 auto;
flex: 1 1 auto;
+ min-height: 1px;
padding: 1.25rem;
}
@@ -4630,7 +4840,6 @@ input[type="button"].btn-block {
.card-header {
padding: 0.75rem 1.25rem;
margin-bottom: 0;
- color: inherit;
background-color: rgba(0, 0, 0, 0.03);
border-bottom: 1px solid #dde4eb;
}
@@ -4639,10 +4848,6 @@ input[type="button"].btn-block {
border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;
}
-.card-header + .list-group .list-group-item:first-child {
- border-top: 0;
-}
-
.card-footer {
padding: 0.75rem 1.25rem;
background-color: rgba(0, 0, 0, 0.03);
@@ -4672,69 +4877,59 @@ input[type="button"].btn-block {
bottom: 0;
left: 0;
padding: 1.25rem;
+ border-radius: calc(0.25rem - 1px);
}
-.card-img {
+.card-img,
+.card-img-top,
+.card-img-bottom {
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
width: 100%;
- border-radius: calc(0.25rem - 1px);
}
+.card-img,
.card-img-top {
- width: 100%;
border-top-left-radius: calc(0.25rem - 1px);
border-top-right-radius: calc(0.25rem - 1px);
}
+.card-img,
.card-img-bottom {
- width: 100%;
border-bottom-right-radius: calc(0.25rem - 1px);
border-bottom-left-radius: calc(0.25rem - 1px);
}
-.card-deck {
- display: -ms-flexbox;
- display: flex;
- -ms-flex-direction: column;
- flex-direction: column;
-}
-
.card-deck .card {
margin-bottom: 15px;
}
@media (min-width: 576px) {
.card-deck {
+ display: -ms-flexbox;
+ display: flex;
-ms-flex-flow: row wrap;
flex-flow: row wrap;
margin-right: -15px;
margin-left: -15px;
}
.card-deck .card {
- display: -ms-flexbox;
- display: flex;
-ms-flex: 1 0 0%;
flex: 1 0 0%;
- -ms-flex-direction: column;
- flex-direction: column;
margin-right: 15px;
margin-bottom: 0;
margin-left: 15px;
}
}
-.card-group {
- display: -ms-flexbox;
- display: flex;
- -ms-flex-direction: column;
- flex-direction: column;
-}
-
.card-group > .card {
margin-bottom: 15px;
}
@media (min-width: 576px) {
.card-group {
+ display: -ms-flexbox;
+ display: flex;
-ms-flex-flow: row wrap;
flex-flow: row wrap;
}
@@ -4747,52 +4942,30 @@ input[type="button"].btn-block {
margin-left: 0;
border-left: 0;
}
- .card-group > .card:first-child {
+ .card-group > .card:not(:last-child) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
- .card-group > .card:first-child .card-img-top,
- .card-group > .card:first-child .card-header {
+ .card-group > .card:not(:last-child) .card-img-top,
+ .card-group > .card:not(:last-child) .card-header {
border-top-right-radius: 0;
}
- .card-group > .card:first-child .card-img-bottom,
- .card-group > .card:first-child .card-footer {
+ .card-group > .card:not(:last-child) .card-img-bottom,
+ .card-group > .card:not(:last-child) .card-footer {
border-bottom-right-radius: 0;
}
- .card-group > .card:last-child {
+ .card-group > .card:not(:first-child) {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
- .card-group > .card:last-child .card-img-top,
- .card-group > .card:last-child .card-header {
+ .card-group > .card:not(:first-child) .card-img-top,
+ .card-group > .card:not(:first-child) .card-header {
border-top-left-radius: 0;
}
- .card-group > .card:last-child .card-img-bottom,
- .card-group > .card:last-child .card-footer {
+ .card-group > .card:not(:first-child) .card-img-bottom,
+ .card-group > .card:not(:first-child) .card-footer {
border-bottom-left-radius: 0;
}
- .card-group > .card:only-child {
- border-radius: 0.25rem;
- }
- .card-group > .card:only-child .card-img-top,
- .card-group > .card:only-child .card-header {
- border-top-left-radius: 0.25rem;
- border-top-right-radius: 0.25rem;
- }
- .card-group > .card:only-child .card-img-bottom,
- .card-group > .card:only-child .card-footer {
- border-bottom-right-radius: 0.25rem;
- border-bottom-left-radius: 0.25rem;
- }
- .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {
- border-radius: 0;
- }
- .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,
- .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,
- .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,
- .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {
- border-radius: 0;
- }
}
.card-columns .card {
@@ -4816,31 +4989,27 @@ input[type="button"].btn-block {
}
}
-.accordion .card {
- overflow: hidden;
-}
-
-.accordion .card:not(:first-of-type) .card-header:first-child {
- border-radius: 0;
+.accordion {
+ overflow-anchor: none;
}
-.accordion .card:not(:first-of-type):not(:last-of-type) {
- border-bottom: 0;
- border-radius: 0;
+.accordion > .card {
+ overflow: hidden;
}
-.accordion .card:first-of-type {
+.accordion > .card:not(:last-of-type) {
border-bottom: 0;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
-.accordion .card:last-of-type {
+.accordion > .card:not(:first-of-type) {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
-.accordion .card .card-header {
+.accordion > .card > .card-header {
+ border-radius: 0;
margin-bottom: -1px;
}
@@ -4861,7 +5030,7 @@ input[type="button"].btn-block {
}
.breadcrumb-item + .breadcrumb-item::before {
- display: inline-block;
+ float: left;
padding-right: 0.5rem;
color: #6c757d;
content: "/";
@@ -4907,15 +5076,11 @@ input[type="button"].btn-block {
}
.page-link:focus {
- z-index: 2;
+ z-index: 3;
outline: 0;
box-shadow: none;
}
-.page-link:not(:disabled):not(.disabled) {
- cursor: pointer;
-}
-
.page-item:first-child .page-link {
margin-left: 0;
border-top-left-radius: 0.25rem;
@@ -4928,7 +5093,7 @@ input[type="button"].btn-block {
}
.page-item.active .page-link {
- z-index: 1;
+ z-index: 3;
color: #fff;
background-color: #007bff;
border-color: #007bff;
@@ -4984,6 +5149,13 @@ input[type="button"].btn-block {
white-space: nowrap;
vertical-align: baseline;
border-radius: 0.25rem;
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+
+ at media (prefers-reduced-motion: reduce) {
+ .badge {
+ transition: none;
+ }
}
a.badge:hover, a.badge:focus {
@@ -5015,6 +5187,11 @@ a.badge-primary:hover, a.badge-primary:focus {
background-color: #0062cc;
}
+a.badge-primary:focus, a.badge-primary.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
+}
+
.badge-secondary {
color: #fff;
background-color: #6c757d;
@@ -5025,6 +5202,11 @@ a.badge-secondary:hover, a.badge-secondary:focus {
background-color: #545b62;
}
+a.badge-secondary:focus, a.badge-secondary.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
+}
+
.badge-success {
color: #fff;
background-color: #28a745;
@@ -5035,6 +5217,11 @@ a.badge-success:hover, a.badge-success:focus {
background-color: #1e7e34;
}
+a.badge-success:focus, a.badge-success.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
+}
+
.badge-info {
color: #fff;
background-color: #17a2b8;
@@ -5045,6 +5232,11 @@ a.badge-info:hover, a.badge-info:focus {
background-color: #117a8b;
}
+a.badge-info:focus, a.badge-info.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
+}
+
.badge-warning {
color: #212529;
background-color: #ffc107;
@@ -5055,6 +5247,11 @@ a.badge-warning:hover, a.badge-warning:focus {
background-color: #d39e00;
}
+a.badge-warning:focus, a.badge-warning.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
+}
+
.badge-danger {
color: #fff;
background-color: #dc3545;
@@ -5065,6 +5262,11 @@ a.badge-danger:hover, a.badge-danger:focus {
background-color: #bd2130;
}
+a.badge-danger:focus, a.badge-danger.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
+}
+
.badge-light {
color: #212529;
background-color: #f8f9fa;
@@ -5075,6 +5277,11 @@ a.badge-light:hover, a.badge-light:focus {
background-color: #dae0e5;
}
+a.badge-light:focus, a.badge-light.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
+}
+
.badge-dark {
color: #fff;
background-color: #343a40;
@@ -5085,6 +5292,11 @@ a.badge-dark:hover, a.badge-dark:focus {
background-color: #1d2124;
}
+a.badge-dark:focus, a.badge-dark.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
+}
+
.jumbotron {
padding: 2rem 1rem;
margin-bottom: 2rem;
@@ -5128,6 +5340,7 @@ a.badge-dark:hover, a.badge-dark:focus {
position: absolute;
top: 0;
right: 0;
+ z-index: 2;
padding: 0.75rem 1.25rem;
color: inherit;
}
@@ -5267,6 +5480,7 @@ a.badge-dark:hover, a.badge-dark:focus {
display: flex;
height: 1rem;
overflow: hidden;
+ line-height: 0;
font-size: 0.75rem;
background-color: #e9ecef;
border-radius: 0.25rem;
@@ -5279,6 +5493,7 @@ a.badge-dark:hover, a.badge-dark:focus {
flex-direction: column;
-ms-flex-pack: center;
justify-content: center;
+ overflow: hidden;
color: #fff;
text-align: center;
white-space: nowrap;
@@ -5286,7 +5501,7 @@ a.badge-dark:hover, a.badge-dark:focus {
transition: width 0.6s ease;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.progress-bar {
transition: none;
}
@@ -5298,8 +5513,15 @@ a.badge-dark:hover, a.badge-dark:focus {
}
.progress-bar-animated {
- -webkit-animation: progress-bar-stripes 1s linear infinite;
- animation: progress-bar-stripes 1s linear infinite;
+ -webkit-animation: 1s linear infinite progress-bar-stripes;
+ animation: 1s linear infinite progress-bar-stripes;
+}
+
+ at media (prefers-reduced-motion: reduce) {
+ .progress-bar-animated {
+ -webkit-animation: none;
+ animation: none;
+ }
}
.media {
@@ -5321,6 +5543,7 @@ a.badge-dark:hover, a.badge-dark:focus {
flex-direction: column;
padding-left: 0;
margin-bottom: 0;
+ border-radius: 0.25rem;
}
.list-group-item-action {
@@ -5330,6 +5553,7 @@ a.badge-dark:hover, a.badge-dark:focus {
}
.list-group-item-action:hover, .list-group-item-action:focus {
+ z-index: 1;
color: #495057;
text-decoration: none;
background-color: #f8f9fa;
@@ -5344,25 +5568,18 @@ a.badge-dark:hover, a.badge-dark:focus {
position: relative;
display: block;
padding: 0.75rem 1.25rem;
- margin-bottom: -1px;
background-color: #fff;
border: 1px solid rgba(0, 0, 0, 0.125);
}
.list-group-item:first-child {
- border-top-left-radius: 0.25rem;
- border-top-right-radius: 0.25rem;
+ border-top-left-radius: inherit;
+ border-top-right-radius: inherit;
}
.list-group-item:last-child {
- margin-bottom: 0;
- border-bottom-right-radius: 0.25rem;
- border-bottom-left-radius: 0.25rem;
-}
-
-.list-group-item:hover, .list-group-item:focus {
- z-index: 1;
- text-decoration: none;
+ border-bottom-right-radius: inherit;
+ border-bottom-left-radius: inherit;
}
.list-group-item.disabled, .list-group-item:disabled {
@@ -5378,23 +5595,158 @@ a.badge-dark:hover, a.badge-dark:focus {
border-color: #007bff;
}
-.list-group-flush .list-group-item {
- border-right: 0;
- border-left: 0;
- border-radius: 0;
+.list-group-item + .list-group-item {
+ border-top-width: 0;
}
-.list-group-flush .list-group-item:last-child {
- margin-bottom: -1px;
+.list-group-item + .list-group-item.active {
+ margin-top: -1px;
+ border-top-width: 1px;
}
-.list-group-flush:first-child .list-group-item:first-child {
- border-top: 0;
+.list-group-horizontal {
+ -ms-flex-direction: row;
+ flex-direction: row;
}
-.list-group-flush:last-child .list-group-item:last-child {
- margin-bottom: 0;
- border-bottom: 0;
+.list-group-horizontal > .list-group-item:first-child {
+ border-bottom-left-radius: 0.25rem;
+ border-top-right-radius: 0;
+}
+
+.list-group-horizontal > .list-group-item:last-child {
+ border-top-right-radius: 0.25rem;
+ border-bottom-left-radius: 0;
+}
+
+.list-group-horizontal > .list-group-item.active {
+ margin-top: 0;
+}
+
+.list-group-horizontal > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0;
+}
+
+.list-group-horizontal > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px;
+}
+
+ at media (min-width: 576px) {
+ .list-group-horizontal-sm {
+ -ms-flex-direction: row;
+ flex-direction: row;
+ }
+ .list-group-horizontal-sm > .list-group-item:first-child {
+ border-bottom-left-radius: 0.25rem;
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item:last-child {
+ border-top-right-radius: 0.25rem;
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px;
+ }
+}
+
+ at media (min-width: 768px) {
+ .list-group-horizontal-md {
+ -ms-flex-direction: row;
+ flex-direction: row;
+ }
+ .list-group-horizontal-md > .list-group-item:first-child {
+ border-bottom-left-radius: 0.25rem;
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-md > .list-group-item:last-child {
+ border-top-right-radius: 0.25rem;
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-md > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-md > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0;
+ }
+ .list-group-horizontal-md > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px;
+ }
+}
+
+ at media (min-width: 992px) {
+ .list-group-horizontal-lg {
+ -ms-flex-direction: row;
+ flex-direction: row;
+ }
+ .list-group-horizontal-lg > .list-group-item:first-child {
+ border-bottom-left-radius: 0.25rem;
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item:last-child {
+ border-top-right-radius: 0.25rem;
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px;
+ }
+}
+
+ at media (min-width: 1200px) {
+ .list-group-horizontal-xl {
+ -ms-flex-direction: row;
+ flex-direction: row;
+ }
+ .list-group-horizontal-xl > .list-group-item:first-child {
+ border-bottom-left-radius: 0.25rem;
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item:last-child {
+ border-top-right-radius: 0.25rem;
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px;
+ }
+}
+
+.list-group-flush {
+ border-radius: 0;
+}
+
+.list-group-flush > .list-group-item {
+ border-width: 0 0 1px;
+}
+
+.list-group-flush > .list-group-item:last-child {
+ border-bottom-width: 0;
}
.list-group-item-primary {
@@ -5540,10 +5892,6 @@ a.badge-dark:hover, a.badge-dark:focus {
text-decoration: none;
}
-.close:not(:disabled):not(.disabled) {
- cursor: pointer;
-}
-
.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {
opacity: .75;
}
@@ -5552,9 +5900,6 @@ button.close {
padding: 0;
background-color: transparent;
border: 0;
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
}
a.close.disabled {
@@ -5562,17 +5907,16 @@ a.close.disabled {
}
.toast {
+ -ms-flex-preferred-size: 350px;
+ flex-basis: 350px;
max-width: 350px;
- overflow: hidden;
font-size: 0.875rem;
background-color: rgba(255, 255, 255, 0.85);
background-clip: padding-box;
border: 1px solid rgba(0, 0, 0, 0.1);
- border-radius: 0.25rem;
box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);
- -webkit-backdrop-filter: blur(10px);
- backdrop-filter: blur(10px);
opacity: 0;
+ border-radius: 0.25rem;
}
.toast:not(:last-child) {
@@ -5602,6 +5946,8 @@ a.close.disabled {
background-color: rgba(255, 255, 255, 0.85);
background-clip: padding-box;
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
+ border-top-left-radius: calc(0.25rem - 1px);
+ border-top-right-radius: calc(0.25rem - 1px);
}
.toast-body {
@@ -5644,7 +5990,7 @@ a.close.disabled {
transform: translate(0, -50px);
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.modal.fade .modal-dialog {
transition: none;
}
@@ -5655,20 +6001,65 @@ a.close.disabled {
transform: none;
}
+.modal.modal-static .modal-dialog {
+ -webkit-transform: scale(1.02);
+ transform: scale(1.02);
+}
+
+.modal-dialog-scrollable {
+ display: -ms-flexbox;
+ display: flex;
+ max-height: calc(100% - 1rem);
+}
+
+.modal-dialog-scrollable .modal-content {
+ max-height: calc(100vh - 1rem);
+ overflow: hidden;
+}
+
+.modal-dialog-scrollable .modal-header,
+.modal-dialog-scrollable .modal-footer {
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.modal-dialog-scrollable .modal-body {
+ overflow-y: auto;
+}
+
.modal-dialog-centered {
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
- min-height: calc(100% - (0.5rem * 2));
+ min-height: calc(100% - 1rem);
}
.modal-dialog-centered::before {
display: block;
- height: calc(100vh - (0.5rem * 2));
+ height: calc(100vh - 1rem);
+ height: -webkit-min-content;
+ height: -moz-min-content;
+ height: min-content;
content: "";
}
+.modal-dialog-centered.modal-dialog-scrollable {
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -ms-flex-pack: center;
+ justify-content: center;
+ height: 100%;
+}
+
+.modal-dialog-centered.modal-dialog-scrollable .modal-content {
+ max-height: none;
+}
+
+.modal-dialog-centered.modal-dialog-scrollable::before {
+ content: none;
+}
+
.modal-content {
position: relative;
display: -ms-flexbox;
@@ -5710,9 +6101,9 @@ a.close.disabled {
-ms-flex-pack: justify;
justify-content: space-between;
padding: 1rem 1rem;
- border-bottom: 1px solid #e9ecef;
- border-top-left-radius: 0.3rem;
- border-top-right-radius: 0.3rem;
+ border-bottom: 1px solid #dee2e6;
+ border-top-left-radius: calc(0.3rem - 1px);
+ border-top-right-radius: calc(0.3rem - 1px);
}
.modal-header .close {
@@ -5735,22 +6126,20 @@ a.close.disabled {
.modal-footer {
display: -ms-flexbox;
display: flex;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
-ms-flex-align: center;
align-items: center;
-ms-flex-pack: end;
justify-content: flex-end;
- padding: 1rem;
- border-top: 1px solid #e9ecef;
- border-bottom-right-radius: 0.3rem;
- border-bottom-left-radius: 0.3rem;
-}
-
-.modal-footer > :not(:first-child) {
- margin-left: .25rem;
+ padding: 0.75rem;
+ border-top: 1px solid #dee2e6;
+ border-bottom-right-radius: calc(0.3rem - 1px);
+ border-bottom-left-radius: calc(0.3rem - 1px);
}
-.modal-footer > :not(:last-child) {
- margin-right: .25rem;
+.modal-footer > * {
+ margin: 0.25rem;
}
.modal-scrollbar-measure {
@@ -5766,11 +6155,20 @@ a.close.disabled {
max-width: 500px;
margin: 1.75rem auto;
}
+ .modal-dialog-scrollable {
+ max-height: calc(100% - 3.5rem);
+ }
+ .modal-dialog-scrollable .modal-content {
+ max-height: calc(100vh - 3.5rem);
+ }
.modal-dialog-centered {
- min-height: calc(100% - (1.75rem * 2));
+ min-height: calc(100% - 3.5rem);
}
.modal-dialog-centered::before {
- height: calc(100vh - (1.75rem * 2));
+ height: calc(100vh - 3.5rem);
+ height: -webkit-min-content;
+ height: -moz-min-content;
+ height: min-content;
}
.modal-sm {
max-width: 300px;
@@ -5950,25 +6348,19 @@ a.close.disabled {
margin-bottom: 0.5rem;
}
-.bs-popover-top .arrow, .bs-popover-auto[x-placement^="top"] .arrow {
- bottom: calc((0.5rem + 1px) * -1);
-}
-
-.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before,
-.bs-popover-top .arrow::after,
-.bs-popover-auto[x-placement^="top"] .arrow::after {
- border-width: 0.5rem 0.5rem 0;
+.bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow {
+ bottom: calc(-0.5rem - 1px);
}
-.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before {
+.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before {
bottom: 0;
+ border-width: 0.5rem 0.5rem 0;
border-top-color: rgba(0, 0, 0, 0.25);
}
-
-.bs-popover-top .arrow::after,
-.bs-popover-auto[x-placement^="top"] .arrow::after {
+.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after {
bottom: 1px;
+ border-width: 0.5rem 0.5rem 0;
border-top-color: #fff;
}
@@ -5976,28 +6368,22 @@ a.close.disabled {
margin-left: 0.5rem;
}
-.bs-popover-right .arrow, .bs-popover-auto[x-placement^="right"] .arrow {
- left: calc((0.5rem + 1px) * -1);
+.bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow {
+ left: calc(-0.5rem - 1px);
width: 0.5rem;
height: 1rem;
margin: 0.3rem 0;
}
-.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before,
-.bs-popover-right .arrow::after,
-.bs-popover-auto[x-placement^="right"] .arrow::after {
- border-width: 0.5rem 0.5rem 0.5rem 0;
-}
-
-.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before {
+.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before {
left: 0;
+ border-width: 0.5rem 0.5rem 0.5rem 0;
border-right-color: rgba(0, 0, 0, 0.25);
}
-
-.bs-popover-right .arrow::after,
-.bs-popover-auto[x-placement^="right"] .arrow::after {
+.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after {
left: 1px;
+ border-width: 0.5rem 0.5rem 0.5rem 0;
border-right-color: #fff;
}
@@ -6005,25 +6391,19 @@ a.close.disabled {
margin-top: 0.5rem;
}
-.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^="bottom"] .arrow {
- top: calc((0.5rem + 1px) * -1);
-}
-
-.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before,
-.bs-popover-bottom .arrow::after,
-.bs-popover-auto[x-placement^="bottom"] .arrow::after {
- border-width: 0 0.5rem 0.5rem 0.5rem;
+.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow {
+ top: calc(-0.5rem - 1px);
}
-.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before {
+.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before {
top: 0;
+ border-width: 0 0.5rem 0.5rem 0.5rem;
border-bottom-color: rgba(0, 0, 0, 0.25);
}
-
-.bs-popover-bottom .arrow::after,
-.bs-popover-auto[x-placement^="bottom"] .arrow::after {
+.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after {
top: 1px;
+ border-width: 0 0.5rem 0.5rem 0.5rem;
border-bottom-color: #fff;
}
@@ -6042,28 +6422,22 @@ a.close.disabled {
margin-right: 0.5rem;
}
-.bs-popover-left .arrow, .bs-popover-auto[x-placement^="left"] .arrow {
- right: calc((0.5rem + 1px) * -1);
+.bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow {
+ right: calc(-0.5rem - 1px);
width: 0.5rem;
height: 1rem;
margin: 0.3rem 0;
}
-.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before,
-.bs-popover-left .arrow::after,
-.bs-popover-auto[x-placement^="left"] .arrow::after {
- border-width: 0.5rem 0 0.5rem 0.5rem;
-}
-
-.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before {
+.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before {
right: 0;
+ border-width: 0.5rem 0 0.5rem 0.5rem;
border-left-color: rgba(0, 0, 0, 0.25);
}
-
-.bs-popover-left .arrow::after,
-.bs-popover-auto[x-placement^="left"] .arrow::after {
+.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after {
right: 1px;
+ border-width: 0.5rem 0 0.5rem 0.5rem;
border-left-color: #fff;
}
@@ -6071,7 +6445,6 @@ a.close.disabled {
padding: 0.5rem 0.75rem;
margin-bottom: 0;
font-size: 1rem;
- color: inherit;
background-color: #f7f7f7;
border-bottom: 1px solid #ebebeb;
border-top-left-radius: calc(0.3rem - 1px);
@@ -6121,7 +6494,7 @@ a.close.disabled {
transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.carousel-item {
transition: none;
}
@@ -6163,10 +6536,10 @@ a.close.disabled {
.carousel-fade .active.carousel-item-right {
z-index: 0;
opacity: 0;
- transition: 0s 0.6s opacity;
+ transition: opacity 0s 0.6s;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.carousel-fade .active.carousel-item-left,
.carousel-fade .active.carousel-item-right {
transition: none;
@@ -6186,13 +6559,16 @@ a.close.disabled {
-ms-flex-pack: center;
justify-content: center;
width: 15%;
+ padding: 0;
color: #fff;
text-align: center;
+ background: none;
+ border: 0;
opacity: 0.5;
transition: opacity 0.15s ease;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.carousel-control-prev,
.carousel-control-next {
transition: none;
@@ -6221,16 +6597,15 @@ a.close.disabled {
display: inline-block;
width: 20px;
height: 20px;
- background: transparent no-repeat center center;
- background-size: 100% 100%;
+ background: 50% / 100% 100% no-repeat;
}
.carousel-control-prev-icon {
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e");
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e");
}
.carousel-control-next-icon {
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e");
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e");
}
.carousel-indicators {
@@ -6267,7 +6642,7 @@ a.close.disabled {
transition: opacity 0.6s ease;
}
- at media screen and (prefers-reduced-motion: reduce) {
+ at media (prefers-reduced-motion: reduce) {
.carousel-indicators li {
transition: none;
}
@@ -6307,12 +6682,12 @@ a.close.disabled {
display: inline-block;
width: 2rem;
height: 2rem;
- vertical-align: text-bottom;
+ vertical-align: -0.125em;
border: 0.25em solid currentColor;
border-right-color: transparent;
border-radius: 50%;
- -webkit-animation: spinner-border .75s linear infinite;
- animation: spinner-border .75s linear infinite;
+ -webkit-animation: .75s linear infinite spinner-border;
+ animation: .75s linear infinite spinner-border;
}
.spinner-border-sm {
@@ -6328,6 +6703,8 @@ a.close.disabled {
}
50% {
opacity: 1;
+ -webkit-transform: none;
+ transform: none;
}
}
@@ -6338,6 +6715,8 @@ a.close.disabled {
}
50% {
opacity: 1;
+ -webkit-transform: none;
+ transform: none;
}
}
@@ -6345,12 +6724,12 @@ a.close.disabled {
display: inline-block;
width: 2rem;
height: 2rem;
- vertical-align: text-bottom;
+ vertical-align: -0.125em;
background-color: currentColor;
border-radius: 50%;
opacity: 0;
- -webkit-animation: spinner-grow .75s linear infinite;
- animation: spinner-grow .75s linear infinite;
+ -webkit-animation: .75s linear infinite spinner-grow;
+ animation: .75s linear infinite spinner-grow;
}
.spinner-grow-sm {
@@ -6358,6 +6737,14 @@ a.close.disabled {
height: 1rem;
}
+ at media (prefers-reduced-motion: reduce) {
+ .spinner-border,
+ .spinner-grow {
+ -webkit-animation-duration: 1.5s;
+ animation-duration: 1.5s;
+ }
+}
+
.align-baseline {
vertical-align: baseline !important;
}
@@ -6546,6 +6933,10 @@ button.bg-dark:focus {
border-color: #fff !important;
}
+.rounded-sm {
+ border-radius: 0.2rem !important;
+}
+
.rounded {
border-radius: 0.25rem !important;
}
@@ -6570,6 +6961,10 @@ button.bg-dark:focus {
border-bottom-left-radius: 0.25rem !important;
}
+.rounded-lg {
+ border-radius: 0.3rem !important;
+}
+
.rounded-circle {
border-radius: 50% !important;
}
@@ -6821,8 +7216,8 @@ button.bg-dark:focus {
padding-top: 56.25%;
}
-.embed-responsive-3by4::before {
- padding-top: 133.333333%;
+.embed-responsive-4by3::before {
+ padding-top: 75%;
}
.embed-responsive-1by1::before {
@@ -7615,6 +8010,26 @@ button.bg-dark:focus {
}
}
+.user-select-all {
+ -webkit-user-select: all !important;
+ -moz-user-select: all !important;
+ user-select: all !important;
+}
+
+.user-select-auto {
+ -webkit-user-select: auto !important;
+ -moz-user-select: auto !important;
+ -ms-user-select: auto !important;
+ user-select: auto !important;
+}
+
+.user-select-none {
+ -webkit-user-select: none !important;
+ -moz-user-select: none !important;
+ -ms-user-select: none !important;
+ user-select: none !important;
+}
+
.overflow-auto {
overflow: auto !important;
}
@@ -7674,6 +8089,7 @@ button.bg-dark:focus {
width: 1px;
height: 1px;
padding: 0;
+ margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
@@ -9581,8 +9997,20 @@ button.bg-dark:focus {
}
}
+.stretched-link::after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1;
+ pointer-events: auto;
+ content: "";
+ background-color: rgba(0, 0, 0, 0);
+}
+
.text-monospace {
- font-family: "Inter", monospace;
+ font-family: "Inter", monospace !important;
}
.text-justify {
@@ -9795,6 +10223,11 @@ a.text-dark:hover, a.text-dark:focus {
text-decoration: none !important;
}
+.text-break {
+ word-break: break-word !important;
+ word-wrap: break-word !important;
+}
+
.text-reset {
color: inherit !important;
}
@@ -9828,9 +10261,6 @@ a.text-dark:hover, a.text-dark:focus {
border: 1px solid #adb5bd;
page-break-inside: avoid;
}
- thead {
- display: table-header-group;
- }
tr,
img {
page-break-inside: avoid;
diff --git a/share/static/js/bootstrap.min.js b/share/static/js/bootstrap.min.js
index d33c9cc1c1..4e07ef4c99 100644
--- a/share/static/js/bootstrap.min.js
+++ b/share/static/js/bootstrap.min.js
@@ -1,6 +1,6 @@
/*!
- * Bootstrap v4.2.1 (https://getbootstrap.com/)
- * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * Bootstrap v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("popper.js"),require("jquery")):"function"==typeof define&&define.amd?define(["exports","popper.js","jquery"],e):e(t.bootstrap={},t.Popper,t.jQuery)}(this,function(t,u,g){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function l(o){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},e=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.forEach(function(t){var e,n,i;e=o,i=r[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i})}return o}u=u&&u.hasOwnProperty("default")?u.default:u,g=g&&g.hasOwnProperty("default"
)?g.default:g;var e="transitionend";function n(t){var e=this,n=!1;return g(this).one(_.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||_.triggerTransitionEnd(e)},t),this}var _={TRANSITION_END:"bsTransitionEnd",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");if(!e||"#"===e){var n=t.getAttribute("href");e=n&&"#"!==n?n.trim():""}return e&&document.querySelector(e)?e:null},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=g(t).css("transition-duration"),n=g(t).css("transition-delay"),i=parseFloat(e),o=parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){g(t).trigger(e)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototy
pe.hasOwnProperty.call(n,i)){var o=n[i],r=e[i],s=r&&_.isElement(r)?"element":(a=r,{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(s))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+o+'".')}var a},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"!=typeof t.getRootNode)return t instanceof ShadowRoot?t:t.parentNode?_.findShadowRoot(t.parentNode):null;var e=t.getRootNode();return e instanceof ShadowRoot?e:null}};g.fn.emulateTransitionEnd=n,g.event.special[_.TRANSITION_END]={bindType:e,delegateType:e,handle:function(t){if(g(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var o="alert",r="bs.alert",a="."+r,c=g.fn[o],h={CLOSE:"close"+a,CLOSED:"closed"+a,CLICK_DATA_API:"click"+a+".data-api"},f="alert",d="fade",m="show",p=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){var e=this._element;t&&(e=this._getRootEle
ment(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){g.removeData(this._element,r),this._element=null},t._getRootElement=function(t){var e=_.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=g(t).closest("."+f)[0]),n},t._triggerCloseEvent=function(t){var e=g.Event(h.CLOSE);return g(t).trigger(e),e},t._removeElement=function(e){var n=this;if(g(e).removeClass(m),g(e).hasClass(d)){var t=_.getTransitionDurationFromElement(e);g(e).one(_.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(t)}else this._destroyElement(e)},t._destroyElement=function(t){g(t).detach().trigger(h.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(r);e||(e=new i(this),t.data(r,e)),"close"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},s(i,null,[{key:"VERSION",get:function(){return"4.2.1"}}]),i}();g(docum
ent).on(h.CLICK_DATA_API,'[data-dismiss="alert"]',p._handleDismiss(new p)),g.fn[o]=p._jQueryInterface,g.fn[o].Constructor=p,g.fn[o].noConflict=function(){return g.fn[o]=c,p._jQueryInterface};var v="button",E="bs.button",y="."+E,C=".data-api",T=g.fn[v],S="active",b="btn",I="focus",D='[data-toggle^="button"]',w='[data-toggle="buttons"]',A='input:not([type="hidden"])',N=".active",O=".btn",k={CLICK_DATA_API:"click"+y+C,FOCUS_BLUR_DATA_API:"focus"+y+C+" blur"+y+C},P=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t=!0,e=!0,n=g(this._element).closest(w)[0];if(n){var i=this._element.querySelector(A);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(S))t=!1;else{var o=n.querySelector(N);o&&g(o).removeClass(S)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!this._element.classList.contains(S),g(i).trigger("change")}i.focus(),e=
!1}}e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(S)),t&&g(this._element).toggleClass(S)},t.dispose=function(){g.removeData(this._element,E),this._element=null},n._jQueryInterface=function(e){return this.each(function(){var t=g(this).data(E);t||(t=new n(this),g(this).data(E,t)),"toggle"===e&&t[e]()})},s(n,null,[{key:"VERSION",get:function(){return"4.2.1"}}]),n}();g(document).on(k.CLICK_DATA_API,D,function(t){t.preventDefault();var e=t.target;g(e).hasClass(b)||(e=g(e).closest(O)),P._jQueryInterface.call(g(e),"toggle")}).on(k.FOCUS_BLUR_DATA_API,D,function(t){var e=g(t.target).closest(O)[0];g(e).toggleClass(I,/^focus(in)?$/.test(t.type))}),g.fn[v]=P._jQueryInterface,g.fn[v].Constructor=P,g.fn[v].noConflict=function(){return g.fn[v]=T,P._jQueryInterface};var L="carousel",j="bs.carousel",H="."+j,R=".data-api",U=g.fn[L],W={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},x={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|st
ring)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},F="next",q="prev",M="left",K="right",Q={SLIDE:"slide"+H,SLID:"slid"+H,KEYDOWN:"keydown"+H,MOUSEENTER:"mouseenter"+H,MOUSELEAVE:"mouseleave"+H,TOUCHSTART:"touchstart"+H,TOUCHMOVE:"touchmove"+H,TOUCHEND:"touchend"+H,POINTERDOWN:"pointerdown"+H,POINTERUP:"pointerup"+H,DRAG_START:"dragstart"+H,LOAD_DATA_API:"load"+H+R,CLICK_DATA_API:"click"+H+R},B="carousel",V="active",Y="slide",X="carousel-item-right",z="carousel-item-left",G="carousel-item-next",J="carousel-item-prev",Z="pointer-event",$=".active",tt=".active.carousel-item",et=".carousel-item",nt=".carousel-item img",it=".carousel-item-next, .carousel-item-prev",ot=".carousel-indicators",rt="[data-slide], [data-slide-to]",st='[data-ride="carousel"]',at={TOUCH:"touch",PEN:"pen"},lt=function(){function r(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._c
onfig=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(ot),this._touchSupported="ontouchstart"in document.documentElement||0<navigator.maxTouchPoints,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var t=r.prototype;return t.next=function(){this._isSliding||this._slide(F)},t.nextWhenVisible=function(){!document.hidden&&g(this._element).is(":visible")&&"hidden"!==g(this._element).css("visibility")&&this.next()},t.prev=function(){this._isSliding||this._slide(q)},t.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(it)&&(_.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},t.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.in
terval))},t.to=function(t){var e=this;this._activeElement=this._element.querySelector(tt);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)g(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n<t?F:q;this._slide(i,this._items[t])}},t.dispose=function(){g(this._element).off(H),g.removeData(this._element,j),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},t._getConfig=function(t){return t=l({},W,t),_.typeCheckConfig(L,t,x),t},t._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;0<e&&this.prev(),e<0&&this.next()}},t._addEventListeners=function(){var e=this;this._config.keyboard&&g(this._element).on(Q.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&g(this._element).on(Q.MOUSEENTER,function(t
){return e.pause(t)}).on(Q.MOUSELEAVE,function(t){return e.cycle(t)}),this._addTouchEventListeners()},t._addTouchEventListeners=function(){var n=this;if(this._touchSupported){var e=function(t){n._pointerEvent&&at[t.originalEvent.pointerType.toUpperCase()]?n.touchStartX=t.originalEvent.clientX:n._pointerEvent||(n.touchStartX=t.originalEvent.touches[0].clientX)},i=function(t){n._pointerEvent&&at[t.originalEvent.pointerType.toUpperCase()]&&(n.touchDeltaX=t.originalEvent.clientX-n.touchStartX),n._handleSwipe(),"hover"===n._config.pause&&(n.pause(),n.touchTimeout&&clearTimeout(n.touchTimeout),n.touchTimeout=setTimeout(function(t){return n.cycle(t)},500+n._config.interval))};g(this._element.querySelectorAll(nt)).on(Q.DRAG_START,function(t){return t.preventDefault()}),this._pointerEvent?(g(this._element).on(Q.POINTERDOWN,function(t){return e(t)}),g(this._element).on(Q.POINTERUP,function(t){return i(t)}),this._element.classList.add(Z)):(g(this._element).on(Q.TOUCHSTART,function(t){return e(
t)}),g(this._element).on(Q.TOUCHMOVE,function(t){var e;(e=t).originalEvent.touches&&1<e.originalEvent.touches.length?n.touchDeltaX=0:n.touchDeltaX=e.originalEvent.touches[0].clientX-n.touchStartX}),g(this._element).on(Q.TOUCHEND,function(t){return i(t)}))}},t._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},t._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(et)):[],this._items.indexOf(t)},t._getItemByDirection=function(t,e){var n=t===F,i=t===q,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var s=(o+(t===q?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},t._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(tt)),o=g.Event(Q.SLIDE,{relatedTarget:t,direction:e,from:
i,to:n});return g(this._element).trigger(o),o},t._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll($));g(e).removeClass(V);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&g(n).addClass(V)}},t._slide=function(t,e){var n,i,o,r=this,s=this._element.querySelector(tt),a=this._getItemIndex(s),l=e||s&&this._getItemByDirection(t,s),c=this._getItemIndex(l),h=Boolean(this._interval);if(o=t===F?(n=z,i=G,M):(n=X,i=J,K),l&&g(l).hasClass(V))this._isSliding=!1;else if(!this._triggerSlideEvent(l,o).isDefaultPrevented()&&s&&l){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(l);var u=g.Event(Q.SLID,{relatedTarget:l,direction:o,from:a,to:c});if(g(this._element).hasClass(Y)){g(l).addClass(i),_.reflow(l),g(s).addClass(n),g(l).addClass(n);var f=parseInt(l.getAttribute("data-interval"),10);this._config.interval=f?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval
,f):this._config.defaultInterval||this._config.interval;var d=_.getTransitionDurationFromElement(s);g(s).one(_.TRANSITION_END,function(){g(l).removeClass(n+" "+i).addClass(V),g(s).removeClass(V+" "+i+" "+n),r._isSliding=!1,setTimeout(function(){return g(r._element).trigger(u)},0)}).emulateTransitionEnd(d)}else g(s).removeClass(V),g(l).addClass(V),this._isSliding=!1,g(this._element).trigger(u);h&&this.cycle()}},r._jQueryInterface=function(i){return this.each(function(){var t=g(this).data(j),e=l({},W,g(this).data());"object"==typeof i&&(e=l({},e,i));var n="string"==typeof i?i:e.slide;if(t||(t=new r(this,e),g(this).data(j,t)),"number"==typeof i)t.to(i);else if("string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}else e.interval&&(t.pause(),t.cycle())})},r._dataApiClickHandler=function(t){var e=_.getSelectorFromElement(this);if(e){var n=g(e)[0];if(n&&g(n).hasClass(B)){var i=l({},g(n).data(),g(this).data()),o=this.getAttribute("data-slide-
to");o&&(i.interval=!1),r._jQueryInterface.call(g(n),i),o&&g(n).data(j).to(o),t.preventDefault()}}},s(r,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return W}}]),r}();g(document).on(Q.CLICK_DATA_API,rt,lt._dataApiClickHandler),g(window).on(Q.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(st)),e=0,n=t.length;e<n;e++){var i=g(t[e]);lt._jQueryInterface.call(i,i.data())}}),g.fn[L]=lt._jQueryInterface,g.fn[L].Constructor=lt,g.fn[L].noConflict=function(){return g.fn[L]=U,lt._jQueryInterface};var ct="collapse",ht="bs.collapse",ut="."+ht,ft=g.fn[ct],dt={toggle:!0,parent:""},gt={toggle:"boolean",parent:"(string|element)"},_t={SHOW:"show"+ut,SHOWN:"shown"+ut,HIDE:"hide"+ut,HIDDEN:"hidden"+ut,CLICK_DATA_API:"click"+ut+".data-api"},mt="show",pt="collapse",vt="collapsing",Et="collapsed",yt="width",Ct="height",Tt=".show, .collapsing",St='[data-toggle="collapse"]',bt=function(){function a(e,t){this._isTransitioning=!1,this._element=e
,this._config=this._getConfig(t),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(St)),i=0,o=n.length;i<o;i++){var r=n[i],s=_.getSelectorFromElement(r),a=[].slice.call(document.querySelectorAll(s)).filter(function(t){return t===e});null!==s&&0<a.length&&(this._selector=s,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var t=a.prototype;return t.toggle=function(){g(this._element).hasClass(mt)?this.hide():this.show()},t.show=function(){var t,e,n=this;if(!this._isTransitioning&&!g(this._element).hasClass(mt)&&(this._parent&&0===(t=[].slice.call(this._parent.querySelectorAll(Tt)).filter(function(t){return"string"==typeof n._config.parent?t.getAttribute("data-parent")===n._config
.parent:t.classList.contains(pt)})).length&&(t=null),!(t&&(e=g(t).not(this._selector).data(ht))&&e._isTransitioning))){var i=g.Event(_t.SHOW);if(g(this._element).trigger(i),!i.isDefaultPrevented()){t&&(a._jQueryInterface.call(g(t).not(this._selector),"hide"),e||g(t).data(ht,null));var o=this._getDimension();g(this._element).removeClass(pt).addClass(vt),this._element.style[o]=0,this._triggerArray.length&&g(this._triggerArray).removeClass(Et).attr("aria-expanded",!0),this.setTransitioning(!0);var r="scroll"+(o[0].toUpperCase()+o.slice(1)),s=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(){g(n._element).removeClass(vt).addClass(pt).addClass(mt),n._element.style[o]="",n.setTransitioning(!1),g(n._element).trigger(_t.SHOWN)}).emulateTransitionEnd(s),this._element.style[o]=this._element[r]+"px"}}},t.hide=function(){var t=this;if(!this._isTransitioning&&g(this._element).hasClass(mt)){var e=g.Event(_t.HIDE);if(g(this._element).trigger(e),!e.i
sDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",_.reflow(this._element),g(this._element).addClass(vt).removeClass(pt).removeClass(mt);var i=this._triggerArray.length;if(0<i)for(var o=0;o<i;o++){var r=this._triggerArray[o],s=_.getSelectorFromElement(r);if(null!==s)g([].slice.call(document.querySelectorAll(s))).hasClass(mt)||g(r).addClass(Et).attr("aria-expanded",!1)}this.setTransitioning(!0);this._element.style[n]="";var a=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(){t.setTransitioning(!1),g(t._element).removeClass(vt).addClass(pt).trigger(_t.HIDDEN)}).emulateTransitionEnd(a)}}},t.setTransitioning=function(t){this._isTransitioning=t},t.dispose=function(){g.removeData(this._element,ht),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},t._getConfig=function(t){return(t=l({},dt,t)).toggle=Boolean(t.toggle),_.t
ypeCheckConfig(ct,t,gt),t},t._getDimension=function(){return g(this._element).hasClass(yt)?yt:Ct},t._getParent=function(){var t,n=this;_.isElement(this._config.parent)?(t=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(t=this._config.parent[0])):t=document.querySelector(this._config.parent);var e='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',i=[].slice.call(t.querySelectorAll(e));return g(i).each(function(t,e){n._addAriaAndCollapsedClass(a._getTargetFromElement(e),[e])}),t},t._addAriaAndCollapsedClass=function(t,e){var n=g(t).hasClass(mt);e.length&&g(e).toggleClass(Et,!n).attr("aria-expanded",n)},a._getTargetFromElement=function(t){var e=_.getSelectorFromElement(t);return e?document.querySelector(e):null},a._jQueryInterface=function(i){return this.each(function(){var t=g(this),e=t.data(ht),n=l({},dt,t.data(),"object"==typeof i&&i?i:{});if(!e&&n.toggle&&/show|hide/.test(i)&&(n.toggle=!1),e||(e=new a(this,n),t.data(ht,e)),"string"==typeof i){if
("undefined"==typeof e[i])throw new TypeError('No method named "'+i+'"');e[i]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return dt}}]),a}();g(document).on(_t.CLICK_DATA_API,St,function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var n=g(this),e=_.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(e));g(i).each(function(){var t=g(this),e=t.data(ht)?"toggle":n.data();bt._jQueryInterface.call(t,e)})}),g.fn[ct]=bt._jQueryInterface,g.fn[ct].Constructor=bt,g.fn[ct].noConflict=function(){return g.fn[ct]=ft,bt._jQueryInterface};var It="dropdown",Dt="bs.dropdown",wt="."+Dt,At=".data-api",Nt=g.fn[It],Ot=new RegExp("38|40|27"),kt={HIDE:"hide"+wt,HIDDEN:"hidden"+wt,SHOW:"show"+wt,SHOWN:"shown"+wt,CLICK:"click"+wt,CLICK_DATA_API:"click"+wt+At,KEYDOWN_DATA_API:"keydown"+wt+At,KEYUP_DATA_API:"keyup"+wt+At},Pt="disabled",Lt="show",jt="dropup",Ht="dropright",Rt="dropleft",Ut="dropdown-menu-right",Wt="position-static",xt='[
data-toggle="dropdown"]',Ft=".dropdown form",qt=".dropdown-menu",Mt=".navbar-nav",Kt=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Qt="top-start",Bt="top-end",Vt="bottom-start",Yt="bottom-end",Xt="right-start",zt="left-start",Gt={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic"},Jt={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string"},Zt=function(){function c(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var t=c.prototype;return t.toggle=function(){if(!this._element.disabled&&!g(this._element).hasClass(Pt)){var t=c._getParentFromElement(this._element),e=g(this._menu).hasClass(Lt);if(c._clearMenus(),!e){var n={relatedTarget:this._element},i=g.Event(kt.SHOW,n);if(g(t).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof u)thro
w new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");var o=this._element;"parent"===this._config.reference?o=t:_.isElement(this._config.reference)&&(o=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(o=this._config.reference[0])),"scrollParent"!==this._config.boundary&&g(t).addClass(Wt),this._popper=new u(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===g(t).closest(Mt).length&&g(document.body).children().on("mouseover",null,g.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),g(this._menu).toggleClass(Lt),g(t).toggleClass(Lt).trigger(g.Event(kt.SHOWN,n))}}}},t.show=function(){if(!(this._element.disabled||g(this._element).hasClass(Pt)||g(this._menu).hasClass(Lt))){var t={relatedTarget:this._element},e=g.Event(kt.SHOW,t),n=c._getParentFromElement(this._element);g(n).trigger(e),e.isDefaultPrevented()||(g(this._menu).toggleClass(Lt),g(n).toggleClass(Lt).trigger(g.Event(k
t.SHOWN,t)))}},t.hide=function(){if(!this._element.disabled&&!g(this._element).hasClass(Pt)&&g(this._menu).hasClass(Lt)){var t={relatedTarget:this._element},e=g.Event(kt.HIDE,t),n=c._getParentFromElement(this._element);g(n).trigger(e),e.isDefaultPrevented()||(g(this._menu).toggleClass(Lt),g(n).toggleClass(Lt).trigger(g.Event(kt.HIDDEN,t)))}},t.dispose=function(){g.removeData(this._element,Dt),g(this._element).off(wt),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},t.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},t._addEventListeners=function(){var e=this;g(this._element).on(kt.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},t._getConfig=function(t){return t=l({},this.constructor.Default,g(this._element).data(),t),_.typeCheckConfig(It,t,this.constructor.DefaultType),t},t._getMenuElement=function(){if(!this._menu){var t=c._getParentFromElement(this._elemen
t);t&&(this._menu=t.querySelector(qt))}return this._menu},t._getPlacement=function(){var t=g(this._element.parentNode),e=Vt;return t.hasClass(jt)?(e=Qt,g(this._menu).hasClass(Ut)&&(e=Bt)):t.hasClass(Ht)?e=Xt:t.hasClass(Rt)?e=zt:g(this._menu).hasClass(Ut)&&(e=Yt),e},t._detectNavbar=function(){return 0<g(this._element).closest(".navbar").length},t._getPopperConfig=function(){var e=this,t={};"function"==typeof this._config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e._config.offset(t.offsets)||{}),t}:t.offset=this._config.offset;var n={placement:this._getPlacement(),modifiers:{offset:t,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(n.modifiers.applyStyle={enabled:!1}),n},c._jQueryInterface=function(e){return this.each(function(){var t=g(this).data(Dt);if(t||(t=new c(this,"object"==typeof e?e:null),g(this).data(Dt,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No
method named "'+e+'"');t[e]()}})},c._clearMenus=function(t){if(!t||3!==t.which&&("keyup"!==t.type||9===t.which))for(var e=[].slice.call(document.querySelectorAll(xt)),n=0,i=e.length;n<i;n++){var o=c._getParentFromElement(e[n]),r=g(e[n]).data(Dt),s={relatedTarget:e[n]};if(t&&"click"===t.type&&(s.clickEvent=t),r){var a=r._menu;if(g(o).hasClass(Lt)&&!(t&&("click"===t.type&&/input|textarea/i.test(t.target.tagName)||"keyup"===t.type&&9===t.which)&&g.contains(o,t.target))){var l=g.Event(kt.HIDE,s);g(o).trigger(l),l.isDefaultPrevented()||("ontouchstart"in document.documentElement&&g(document.body).children().off("mouseover",null,g.noop),e[n].setAttribute("aria-expanded","false"),g(a).removeClass(Lt),g(o).removeClass(Lt).trigger(g.Event(kt.HIDDEN,s)))}}}},c._getParentFromElement=function(t){var e,n=_.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},c._dataApiKeydownHandler=function(t){if((/input|textarea/i.test(t.target.tagName)?!(32===t.which||27!==t.which
&&(40!==t.which&&38!==t.which||g(t.target).closest(qt).length)):Ot.test(t.which))&&(t.preventDefault(),t.stopPropagation(),!this.disabled&&!g(this).hasClass(Pt))){var e=c._getParentFromElement(this),n=g(e).hasClass(Lt);if(n&&(!n||27!==t.which&&32!==t.which)){var i=[].slice.call(e.querySelectorAll(Kt));if(0!==i.length){var o=i.indexOf(t.target);38===t.which&&0<o&&o--,40===t.which&&o<i.length-1&&o++,o<0&&(o=0),i[o].focus()}}else{if(27===t.which){var r=e.querySelector(xt);g(r).trigger("focus")}g(this).trigger("click")}}},s(c,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return Gt}},{key:"DefaultType",get:function(){return Jt}}]),c}();g(document).on(kt.KEYDOWN_DATA_API,xt,Zt._dataApiKeydownHandler).on(kt.KEYDOWN_DATA_API,qt,Zt._dataApiKeydownHandler).on(kt.CLICK_DATA_API+" "+kt.KEYUP_DATA_API,Zt._clearMenus).on(kt.CLICK_DATA_API,xt,function(t){t.preventDefault(),t.stopPropagation(),Zt._jQueryInterface.call(g(this),"toggle")}).on(kt.CLICK_DATA_API,Ft,f
unction(t){t.stopPropagation()}),g.fn[It]=Zt._jQueryInterface,g.fn[It].Constructor=Zt,g.fn[It].noConflict=function(){return g.fn[It]=Nt,Zt._jQueryInterface};var $t="modal",te="bs.modal",ee="."+te,ne=g.fn[$t],ie={backdrop:!0,keyboard:!0,focus:!0,show:!0},oe={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},re={HIDE:"hide"+ee,HIDDEN:"hidden"+ee,SHOW:"show"+ee,SHOWN:"shown"+ee,FOCUSIN:"focusin"+ee,RESIZE:"resize"+ee,CLICK_DISMISS:"click.dismiss"+ee,KEYDOWN_DISMISS:"keydown.dismiss"+ee,MOUSEUP_DISMISS:"mouseup.dismiss"+ee,MOUSEDOWN_DISMISS:"mousedown.dismiss"+ee,CLICK_DATA_API:"click"+ee+".data-api"},se="modal-scrollbar-measure",ae="modal-backdrop",le="modal-open",ce="fade",he="show",ue=".modal-dialog",fe='[data-toggle="modal"]',de='[data-dismiss="modal"]',ge=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",_e=".sticky-top",me=function(){function o(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(ue),this._backdrop=null,t
his._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var t=o.prototype;return t.toggle=function(t){return this._isShown?this.hide():this.show(t)},t.show=function(t){var e=this;if(!this._isShown&&!this._isTransitioning){g(this._element).hasClass(ce)&&(this._isTransitioning=!0);var n=g.Event(re.SHOW,{relatedTarget:t});g(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),g(this._element).on(re.CLICK_DISMISS,de,function(t){return e.hide(t)}),g(this._dialog).on(re.MOUSEDOWN_DISMISS,function(){g(e._element).one(re.MOUSEUP_DISMISS,function(t){g(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return e._showElement(t)}))}},t.hide=function(t){var e=this;if(t&&t.preventDefault(),this._isShown&&!this._isTransitioning){var n=g.Event(re.HIDE);if(g(thi
s._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=g(this._element).hasClass(ce);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),g(document).off(re.FOCUSIN),g(this._element).removeClass(he),g(this._element).off(re.CLICK_DISMISS),g(this._dialog).off(re.MOUSEDOWN_DISMISS),i){var o=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(t){return e._hideModal(t)}).emulateTransitionEnd(o)}else this._hideModal()}}},t.dispose=function(){[window,this._element,this._dialog].forEach(function(t){return g(t).off(ee)}),g(document).off(re.FOCUSIN),g.removeData(this._element,te),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},t.handleUpdate=function(){this._adjustDialog()},t._getConfig=function(t){return t=l({},ie,t),_.typeCheckConfig
($t,t,oe),t},t._showElement=function(t){var e=this,n=g(this._element).hasClass(ce);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.scrollTop=0,n&&_.reflow(this._element),g(this._element).addClass(he),this._config.focus&&this._enforceFocus();var i=g.Event(re.SHOWN,{relatedTarget:t}),o=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,g(e._element).trigger(i)};if(n){var r=_.getTransitionDurationFromElement(this._dialog);g(this._dialog).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o()},t._enforceFocus=function(){var e=this;g(document).off(re.FOCUSIN).on(re.FOCUSIN,function(t){document!==t.target&&e._element!==t.target&&0===g(e._element).has(t.target).length&&e._element.focus()})},t._setEscapeEvent=function(){var e=this;this._isShown&&this._config.key
board?g(this._element).on(re.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||g(this._element).off(re.KEYDOWN_DISMISS)},t._setResizeEvent=function(){var e=this;this._isShown?g(window).on(re.RESIZE,function(t){return e.handleUpdate(t)}):g(window).off(re.RESIZE)},t._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._isTransitioning=!1,this._showBackdrop(function(){g(document.body).removeClass(le),t._resetAdjustments(),t._resetScrollbar(),g(t._element).trigger(re.HIDDEN)})},t._removeBackdrop=function(){this._backdrop&&(g(this._backdrop).remove(),this._backdrop=null)},t._showBackdrop=function(t){var e=this,n=g(this._element).hasClass(ce)?ce:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className=ae,n&&this._backdrop.classList.add(n),g(this._backdrop).appendTo(document.body),g(th
is._element).on(re.CLICK_DISMISS,function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._element.focus():e.hide())}),n&&_.reflow(this._backdrop),g(this._backdrop).addClass(he),!t)return;if(!n)return void t();var i=_.getTransitionDurationFromElement(this._backdrop);g(this._backdrop).one(_.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){g(this._backdrop).removeClass(he);var o=function(){e._removeBackdrop(),t&&t()};if(g(this._element).hasClass(ce)){var r=_.getTransitionDurationFromElement(this._backdrop);g(this._backdrop).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o()}else t&&t()},t._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=fun
ction(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},t._setScrollbar=function(){var o=this;if(this._isBodyOverflowing){var t=[].slice.call(document.querySelectorAll(ge)),e=[].slice.call(document.querySelectorAll(_e));g(t).each(function(t,e){var n=e.style.paddingRight,i=g(e).css("padding-right");g(e).data("padding-right",n).css("padding-right",parseFloat(i)+o._scrollbarWidth+"px")}),g(e).each(function(t,e){var n=e.style.marginRight,i=g(e).css("margin-right");g(e).data("margin-right",n).css("margin-right",parseFloat(i)-o._scrollbarWidth+"px")});var n=document.body.style.paddingRight,i=g(document.body).css("padding-right");g(document.body).data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")}g(document.body).addClass(le)},t._resetScrollbar=function(){va
r t=[].slice.call(document.querySelectorAll(ge));g(t).each(function(t,e){var n=g(e).data("padding-right");g(e).removeData("padding-right"),e.style.paddingRight=n||""});var e=[].slice.call(document.querySelectorAll(""+_e));g(e).each(function(t,e){var n=g(e).data("margin-right");"undefined"!=typeof n&&g(e).css("margin-right",n).removeData("margin-right")});var n=g(document.body).data("padding-right");g(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},t._getScrollbarWidth=function(){var t=document.createElement("div");t.className=se,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},o._jQueryInterface=function(n,i){return this.each(function(){var t=g(this).data(te),e=l({},ie,g(this).data(),"object"==typeof n&&n?n:{});if(t||(t=new o(this,e),g(this).data(te,t)),"string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n](i)}else e.show&&t.show(i)})
},s(o,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return ie}}]),o}();g(document).on(re.CLICK_DATA_API,fe,function(t){var e,n=this,i=_.getSelectorFromElement(this);i&&(e=document.querySelector(i));var o=g(e).data(te)?"toggle":l({},g(e).data(),g(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var r=g(e).one(re.SHOW,function(t){t.isDefaultPrevented()||r.one(re.HIDDEN,function(){g(n).is(":visible")&&n.focus()})});me._jQueryInterface.call(g(e),o,this)}),g.fn[$t]=me._jQueryInterface,g.fn[$t].Constructor=me,g.fn[$t].noConflict=function(){return g.fn[$t]=ne,me._jQueryInterface};var pe="tooltip",ve="bs.tooltip",Ee="."+ve,ye=g.fn[pe],Ce="bs-tooltip",Te=new RegExp("(^|\\s)"+Ce+"\\S+","g"),Se={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string)",container:"(string|element|bo
olean)",fallbackPlacement:"(string|array)",boundary:"(string|element)"},be={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},Ie={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},De="show",we="out",Ae={HIDE:"hide"+Ee,HIDDEN:"hidden"+Ee,SHOW:"show"+Ee,SHOWN:"shown"+Ee,INSERTED:"inserted"+Ee,CLICK:"click"+Ee,FOCUSIN:"focusin"+Ee,FOCUSOUT:"focusout"+Ee,MOUSEENTER:"mouseenter"+Ee,MOUSELEAVE:"mouseleave"+Ee},Ne="fade",Oe="show",ke=".tooltip-inner",Pe=".arrow",Le="hover",je="focus",He="click",Re="manual",Ue=function(){function i(t,e){if("undefined"==typeof u)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,th
is.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=g(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(g(this.getTipElement()).hasClass(Oe))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),g.removeData(this.element,this.constructor.DATA_KEY),g(this.element).off(this.constructor.EVENT_KEY),g(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&g(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._p
opper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===g(this.element).css("display"))throw new Error("Please use show on visible elements");var t=g.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){g(this.element).trigger(t);var n=_.findShadowRoot(this.element),i=g.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=_.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&g(o).addClass(Ne);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();g(o).data(this.constructor.DATA_KEY,this),g.contains(this.element.ownerDocument.documentElement,this.tip)||g(o).appendTo(l),g(this.e
lement).trigger(this.constructor.Event.INSERTED),this._popper=new u(this.element,o,{placement:a,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:Pe},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),g(o).addClass(Oe),"ontouchstart"in document.documentElement&&g(document.body).children().on("mouseover",null,g.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,g(e.element).trigger(e.constructor.Event.SHOWN),t===we&&e._leave(null,e)};if(g(this.tip).hasClass(Ne)){var h=_.getTransitionDurationFromElement(this.tip);g(this.tip).one(_.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=g.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==De&&n.parentNode&&
n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),g(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(g(this.element).trigger(i),!i.isDefaultPrevented()){if(g(n).removeClass(Oe),"ontouchstart"in document.documentElement&&g(document.body).children().off("mouseover",null,g.noop),this._activeTrigger[He]=!1,this._activeTrigger[je]=!1,this._activeTrigger[Le]=!1,g(this.tip).hasClass(Ne)){var r=_.getTransitionDurationFromElement(n);g(n).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){g(this.getTipElement()).addClass(Ce+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(g(t.querySelectorAll(k
e)),this.getTitle()),g(t).removeClass(Ne+" "+Oe)},t.setElementContent=function(t,e){var n=this.config.html;"object"==typeof e&&(e.nodeType||e.jquery)?n?g(e).parent().is(t)||t.empty().append(e):t.text(g(e).text()):t[n?"html":"text"](e)},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getContainer=function(){return!1===this.config.container?document.body:_.isElement(this.config.container)?g(this.config.container):g(document).find(this.config.container)},t._getAttachment=function(t){return be[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)g(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Re){var e=t===Le?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===Le?i.constructor.Event.MOUSELEAVE:i.constructor.Even
t.FOCUSOUT;g(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),g(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?je:Le]=!0),g(e.getTipElement()).hasClass(Oe)||e._hoverState===De?e._hoverState=De:(clearTimeout(e._timeout),e._hoverState=De,e.config.delay&&e.config.delay.show?e._timeout=setTime
out(function(){e._hoverState===De&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?je:Le]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=we,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===we&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){return"number"==typeof(t=l({},this.constructor.Default,g(this.element).data(),"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),_.typeCheckConfig(pe,t,this.constructor.DefaultType),t},t._getDelegateConfig
=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Te);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(g(t).removeClass(Ne),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(ve),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(ve,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Def
ault",get:function(){return Ie}},{key:"NAME",get:function(){return pe}},{key:"DATA_KEY",get:function(){return ve}},{key:"Event",get:function(){return Ae}},{key:"EVENT_KEY",get:function(){return Ee}},{key:"DefaultType",get:function(){return Se}}]),i}();g.fn[pe]=Ue._jQueryInterface,g.fn[pe].Constructor=Ue,g.fn[pe].noConflict=function(){return g.fn[pe]=ye,Ue._jQueryInterface};var We="popover",xe="bs.popover",Fe="."+xe,qe=g.fn[We],Me="bs-popover",Ke=new RegExp("(^|\\s)"+Me+"\\S+","g"),Qe=l({},Ue.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),Be=l({},Ue.DefaultType,{content:"(string|element|function)"}),Ve="fade",Ye="show",Xe=".popover-header",ze=".popover-body",Ge={HIDE:"hide"+Fe,HIDDEN:"hidden"+Fe,SHOW:"show"+Fe,SHOWN:"shown"+Fe,INSERTED:"inserted"+Fe,CLICK:"click"+Fe,FOCUSIN:"focusin"+Fe,FOCUSOUT:"focusout"+Fe,MOUSEENTER:"mouseenter"+F
e,MOUSELEAVE:"mouseleave"+Fe},Je=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){g(this.getTipElement()).addClass(Me+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},o.setContent=function(){var t=g(this.getTipElement());this.setElementContent(t.find(Xe),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(ze),e),t.removeClass(Ve+" "+Ye)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ke);null!==e&&0<e.length&&t.removeClass(e.join(""))},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).
data(xe),e="object"==typeof n?n:null;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(xe,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return Qe}},{key:"NAME",get:function(){return We}},{key:"DATA_KEY",get:function(){return xe}},{key:"Event",get:function(){return Ge}},{key:"EVENT_KEY",get:function(){return Fe}},{key:"DefaultType",get:function(){return Be}}]),i}(Ue);g.fn[We]=Je._jQueryInterface,g.fn[We].Constructor=Je,g.fn[We].noConflict=function(){return g.fn[We]=qe,Je._jQueryInterface};var Ze="scrollspy",$e="bs.scrollspy",tn="."+$e,en=g.fn[Ze],nn={offset:10,method:"auto",target:""},on={offset:"number",method:"string",target:"(string|element)"},rn={ACTIVATE:"activate"+tn,SCROLL:"scroll"+tn,LOAD_DATA_API:"load"+tn+".data-api"},sn="dropdown-item",an="active",ln='[data-spy="scroll"]',cn=".nav, .list-group",hn=".nav-link
",un=".nav-item",fn=".list-group-item",dn=".dropdown",gn=".dropdown-item",_n=".dropdown-toggle",mn="offset",pn="position",vn=function(){function n(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" "+hn+","+this._config.target+" "+fn+","+this._config.target+" "+gn,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,g(this._scrollElement).on(rn.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process()}var t=n.prototype;return t.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?mn:pn,o="auto"===this._config.method?t:this._config.method,r=o===pn?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map(function(t){var e,n=_.getSelectorFromElement(t);if(n&&(e=document.querySelector(n)),e){var i=e.getBoundingClientRect
();if(i.width||i.height)return[g(e)[o]().top+r,n]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},t.dispose=function(){g.removeData(this._element,$e),g(this._scrollElement).off(tn),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},t._getConfig=function(t){if("string"!=typeof(t=l({},nn,"object"==typeof t&&t?t:{})).target){var e=g(t.target).attr("id");e||(e=_.getUID(Ze),g(t.target).attr("id",e)),t.target="#"+e}return _.typeCheckConfig(Ze,t,on),t},t._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},t._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},t._getOffsetHeight=function(){return this._scrollElemen
t===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},t._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),n<=t){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}}},t._activate=function(e){this._activeTarget=e,this._clear();var t=this._selector.split(",").map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'}),n=g([].slice.call(document.querySelectorAll(t.join(","))));n.hasClass(sn)?(n.closest(dn).find(_n).addClass(an),n.addClass(an)):(n.addClass(an),n.parents(cn).prev(
hn+", "+fn).addClass(an),n.parents(cn).prev(un).children(hn).addClass(an)),g(this._scrollElement).trigger(rn.ACTIVATE,{relatedTarget:e})},t._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter(function(t){return t.classList.contains(an)}).forEach(function(t){return t.classList.remove(an)})},n._jQueryInterface=function(e){return this.each(function(){var t=g(this).data($e);if(t||(t=new n(this,"object"==typeof e&&e),g(this).data($e,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},s(n,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return nn}}]),n}();g(window).on(rn.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(ln)),e=t.length;e--;){var n=g(t[e]);vn._jQueryInterface.call(n,n.data())}}),g.fn[Ze]=vn._jQueryInterface,g.fn[Ze].Constructor=vn,g.fn[Ze].noConflict=function(){return g.fn[Ze]=en,vn._jQueryInterface};var En="bs.tab",yn="."+En,Cn=
g.fn.tab,Tn={HIDE:"hide"+yn,HIDDEN:"hidden"+yn,SHOW:"show"+yn,SHOWN:"shown"+yn,CLICK_DATA_API:"click"+yn+".data-api"},Sn="dropdown-menu",bn="active",In="disabled",Dn="fade",wn="show",An=".dropdown",Nn=".nav, .list-group",On=".active",kn="> li > .active",Pn='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',Ln=".dropdown-toggle",jn="> .dropdown-menu .active",Hn=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&g(this._element).hasClass(bn)||g(this._element).hasClass(In))){var t,i,e=g(this._element).closest(Nn)[0],o=_.getSelectorFromElement(this._element);if(e){var r="UL"===e.nodeName||"OL"===e.nodeName?kn:On;i=(i=g.makeArray(g(e).find(r)))[i.length-1]}var s=g.Event(Tn.HIDE,{relatedTarget:this._element}),a=g.Event(Tn.SHOW,{relatedTarget:i});if(i&&g(i).trigger(s),g(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){o&
&(t=document.querySelector(o)),this._activate(this._element,e);var l=function(){var t=g.Event(Tn.HIDDEN,{relatedTarget:n._element}),e=g.Event(Tn.SHOWN,{relatedTarget:i});g(i).trigger(t),g(n._element).trigger(e)};t?this._activate(t,t.parentNode,l):l()}}},t.dispose=function(){g.removeData(this._element,En),this._element=null},t._activate=function(t,e,n){var i=this,o=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?g(e).children(On):g(e).find(kn))[0],r=n&&o&&g(o).hasClass(Dn),s=function(){return i._transitionComplete(t,o,n)};if(o&&r){var a=_.getTransitionDurationFromElement(o);g(o).removeClass(wn).one(_.TRANSITION_END,s).emulateTransitionEnd(a)}else s()},t._transitionComplete=function(t,e,n){if(e){g(e).removeClass(bn);var i=g(e.parentNode).find(jn)[0];i&&g(i).removeClass(bn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(g(t).addClass(bn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),_.reflow(t),g(t).addClass(wn),t.parentNode&&g(t.parentNode).hasCla
ss(Sn)){var o=g(t).closest(An)[0];if(o){var r=[].slice.call(o.querySelectorAll(Ln));g(r).addClass(bn)}t.setAttribute("aria-expanded",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(En);if(e||(e=new i(this),t.data(En,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.2.1"}}]),i}();g(document).on(Tn.CLICK_DATA_API,Pn,function(t){t.preventDefault(),Hn._jQueryInterface.call(g(this),"show")}),g.fn.tab=Hn._jQueryInterface,g.fn.tab.Constructor=Hn,g.fn.tab.noConflict=function(){return g.fn.tab=Cn,Hn._jQueryInterface};var Rn="toast",Un="bs.toast",Wn="."+Un,xn=g.fn[Rn],Fn={CLICK_DISMISS:"click.dismiss"+Wn,HIDE:"hide"+Wn,HIDDEN:"hidden"+Wn,SHOW:"show"+Wn,SHOWN:"shown"+Wn},qn="fade",Mn="hide",Kn="show",Qn="showing",Bn={animation:"boolean",autohide:"boolean",delay:"number"},Vn={animation:!0,autohide:!0,delay:500},Yn='[data-dismiss="toast"]',Xn=
function(){function i(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var t=i.prototype;return t.show=function(){var t=this;g(this._element).trigger(Fn.SHOW),this._config.animation&&this._element.classList.add(qn);var e=function(){t._element.classList.remove(Qn),t._element.classList.add(Kn),g(t._element).trigger(Fn.SHOWN),t._config.autohide&&t.hide()};if(this._element.classList.remove(Mn),this._element.classList.add(Qn),this._config.animation){var n=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},t.hide=function(t){var e=this;this._element.classList.contains(Kn)&&(g(this._element).trigger(Fn.HIDE),t?this._close():this._timeout=setTimeout(function(){e._close()},this._config.delay))},t.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(Kn)&&this._element.classList.remove(Kn),g(this._element).off(Fn.CLICK_DISMISS),g.re
moveData(this._element,Un),this._element=null,this._config=null},t._getConfig=function(t){return t=l({},Vn,g(this._element).data(),"object"==typeof t&&t?t:{}),_.typeCheckConfig(Rn,t,this.constructor.DefaultType),t},t._setListeners=function(){var t=this;g(this._element).on(Fn.CLICK_DISMISS,Yn,function(){return t.hide(!0)})},t._close=function(){var t=this,e=function(){t._element.classList.add(Mn),g(t._element).trigger(Fn.HIDDEN)};if(this._element.classList.remove(Kn),this._config.animation){var n=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(Un);if(e||(e=new i(this,"object"==typeof n&&n),t.data(Un,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n](this)}})},s(i,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"DefaultType",get:function(){return Bn}}]),i}();g.fn[Rn]=X
n._jQueryInterface,g.fn[Rn].Constructor=Xn,g.fn[Rn].noConflict=function(){return g.fn[Rn]=xn,Xn._jQueryInterface},function(){if("undefined"==typeof g)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=g.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||4<=t[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(),t.Util=_,t.Alert=p,t.Button=P,t.Carousel=lt,t.Collapse=bt,t.Dropdown=Zt,t.Modal=me,t.Popover=Je,t.Scrollspy=vn,t.Tab=Hn,t.Toast=Xn,t.Tooltip=Ue,Object.defineProperty(t,"__esModule",{value:!0})});
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap={},t.jQuery,t.Popper)}(this,(function(t,e,n){"use strict";function i(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var o=i(e),a=i(n);function s(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function l(t,e,n){return e&&s(t.prototype,e),n&&s(t,n),t}function r(){return r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},r.apply(this,arguments)}function u(t,e){return u=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},u(t,e)}var f="transitionend";var d={TRANSITION_END:"bsTransitionEnd
",getUID:function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");if(!e||"#"===e){var n=t.getAttribute("href");e=n&&"#"!==n?n.trim():""}try{return document.querySelector(e)?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=o.default(t).css("transition-duration"),n=o.default(t).css("transition-delay"),i=parseFloat(e),a=parseFloat(n);return i||a?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){o.default(t).trigger(f)},supportsTransitionEnd:function(){return Boolean(f)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],a=e[i],s=a&&d.isElement(a)?"element":null===(l=a)||"undefined"==typeof l?""+l:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowe
rCase();if(!new RegExp(o).test(s))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+o+'".')}var l},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){var e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?d.findShadowRoot(t.parentNode):null},jQueryDetection:function(){if("undefined"==typeof o.default)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=o.default.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||t[0]>=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};d.jQueryDetection(),o.default.fn.emulateTransitionEnd=function(t){var e=this,n=!1;return o.default(this).one(d.TRANSITION_END,(function(){n=!0})),setTimeout((function(){n||d.triggerTransitionEnd(e)}),t),this},o.de
fault.event.special[d.TRANSITION_END]={bindType:f,delegateType:f,handle:function(t){if(o.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var c="bs.alert",h=o.default.fn.alert,g=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.default.removeData(this._element,c),this._element=null},e._getRootElement=function(t){var e=d.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=o.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=o.default.Event("close.bs.alert");return o.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(o.default(t).removeClass("show"),o.default(t).hasClass("fade")){var n=d.getTransitionDurationFromElement(t);o.default(t).one(d.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTra
nsitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){o.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(c);i||(i=new t(this),n.data(c,i)),"close"===e&&i[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',g._handleDismiss(new g)),o.default.fn.alert=g._jQueryInterface,o.default.fn.alert.Constructor=g,o.default.fn.alert.noConflict=function(){return o.default.fn.alert=h,g._jQueryInterface};var m="bs.button",p=o.default.fn.button,_="active",v='[data-toggle^="button"]',y='input:not([type="hidden"])',b=".btn",E=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=o.default(this._element).closest('[data-toggle=
"buttons"]')[0];if(n){var i=this._element.querySelector(y);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(_))t=!1;else{var a=n.querySelector(".active");a&&o.default(a).removeClass(_)}t&&("checkbox"!==i.type&&"radio"!==i.type||(i.checked=!this._element.classList.contains(_)),this.shouldAvoidTriggerChange||o.default(i).trigger("change")),i.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(_)),t&&o.default(this._element).toggleClass(_))},e.dispose=function(){o.default.removeData(this._element,m),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var i=o.default(this),a=i.data(m);a||(a=new t(this),i.data(m,a)),a.shouldAvoidTriggerChange=n,"toggle"===e&&a[e]()}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.button.data-api",v,(function(t){var e=t.target
,n=e;if(o.default(e).hasClass("btn")||(e=o.default(e).closest(b)[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var i=e.querySelector(y);if(i&&(i.hasAttribute("disabled")||i.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||E._jQueryInterface.call(o.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",v,(function(t){var e=o.default(t.target).closest(b)[0];o.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),o.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e<n;e++){var i=t[e],o=i.querySelector(y);o.checked||o.hasAttribute("checked")?i.classList.add(_):i.classList.remove(_)}for(var a=0,s=(t=[].slice.call(document.querySelectorAll('[data-toggle="button"]'))).length;a<s;a++){var l=t[a];"true"===l.getAttribute("aria-pressed")
?l.classList.add(_):l.classList.remove(_)}})),o.default.fn.button=E._jQueryInterface,o.default.fn.button.Constructor=E,o.default.fn.button.noConflict=function(){return o.default.fn.button=p,E._jQueryInterface};var T="carousel",w="bs.carousel",C=o.default.fn[T],S="active",N="next",D="prev",A="slid.bs.carousel",I=".active.carousel-item",k={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},O={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},j={TOUCH:"touch",PEN:"pen"},P=function(){function t(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(".carousel-indicators"),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(
window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide(N)},e.nextWhenVisible=function(){var t=o.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide(D)},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(d.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(I);var n=this._getItemIndex(this._activeElement);if(!(t>this._ite
ms.length-1||t<0))if(this._isSliding)o.default(this._element).one(A,(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var i=t>n?N:D;this._slide(i,this._items[t])}},e.dispose=function(){o.default(this._element).off(".bs.carousel"),o.default.removeData(this._element,w),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=r({},k,t),d.typeCheckConfig(T,t,O),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&o.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&o.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(func
tion(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&j[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&j[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};o.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(o.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.a
dd("pointer-event")):(o.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){t.touchDeltaX=e.originalEvent.touches&&e.originalEvent.touches.length>1?0:e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),o.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n=t===N,i=t===D,o=this._getItemIndex(e),a=this._items.length-1;if((i&&0===o||n&&o===a)&&!this._config.wrap)return e;var s=(o+(t===D?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},e._triggerSlid
eEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(I)),a=o.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:i,to:n});return o.default(this._element).trigger(a),a},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));o.default(e).removeClass(S);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&o.default(n).addClass(S)}},e._updateInterval=function(){var t=this._activeElement||this._element.querySelector(I);if(t){var e=parseInt(t.getAttribute("data-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}},e._slide=function(t,e){var n,i,a,s=this,l=this._element.querySelector(I),r=this._getItemIndex(l),u=e||l&&this._getItemByDirection(t,l),f=this._getItemIndex(u),c=Boolean(this._in
terval);if(t===N?(n="carousel-item-left",i="carousel-item-next",a="left"):(n="carousel-item-right",i="carousel-item-prev",a="right"),u&&o.default(u).hasClass(S))this._isSliding=!1;else if(!this._triggerSlideEvent(u,a).isDefaultPrevented()&&l&&u){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(u),this._activeElement=u;var h=o.default.Event(A,{relatedTarget:u,direction:a,from:r,to:f});if(o.default(this._element).hasClass("slide")){o.default(u).addClass(i),d.reflow(u),o.default(l).addClass(n),o.default(u).addClass(n);var g=d.getTransitionDurationFromElement(l);o.default(l).one(d.TRANSITION_END,(function(){o.default(u).removeClass(n+" "+i).addClass(S),o.default(l).removeClass("active "+i+" "+n),s._isSliding=!1,setTimeout((function(){return o.default(s._element).trigger(h)}),0)})).emulateTransitionEnd(g)}else o.default(l).removeClass(S),o.default(u).addClass(S),this._isSliding=!1,o.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){retur
n this.each((function(){var n=o.default(this).data(w),i=r({},k,o.default(this).data());"object"==typeof e&&(i=r({},i,e));var a="string"==typeof e?e:i.slide;if(n||(n=new t(this,i),o.default(this).data(w,n)),"number"==typeof e)n.to(e);else if("string"==typeof a){if("undefined"==typeof n[a])throw new TypeError('No method named "'+a+'"');n[a]()}else i.interval&&i.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=d.getSelectorFromElement(this);if(n){var i=o.default(n)[0];if(i&&o.default(i).hasClass("carousel")){var a=r({},o.default(i).data(),o.default(this).data()),s=this.getAttribute("data-slide-to");s&&(a.interval=!1),t._jQueryInterface.call(o.default(i),a),s&&o.default(i).data(w).to(s),e.preventDefault()}}},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return k}}]),t}();o.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",P._dataApiClickHandler),o.default(window).on("load.bs.carousel.data-api
",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e<n;e++){var i=o.default(t[e]);P._jQueryInterface.call(i,i.data())}})),o.default.fn[T]=P._jQueryInterface,o.default.fn[T].Constructor=P,o.default.fn[T].noConflict=function(){return o.default.fn[T]=C,P._jQueryInterface};var L="collapse",R="bs.collapse",x=o.default.fn[L],q="show",F="collapse",Q="collapsing",B="collapsed",H="width",U='[data-toggle="collapse"]',M={toggle:!0,parent:""},W={toggle:"boolean",parent:"(string|element)"},V=function(){function t(t,e){this._isTransitioning=!1,this._element=t,this._config=this._getConfig(e),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(U)),i=0,o=n.length;i<o;i++){var a=n[i],s=d.getSelectorFromElement(a),l=[].slice.call(document.querySelectorAll(s)).filter((function(e){return e===t}));n
ull!==s&&l.length>0&&(this._selector=s,this._triggerArray.push(a))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){o.default(this._element).hasClass(q)?this.hide():this.show()},e.show=function(){var e,n,i=this;if(!(this._isTransitioning||o.default(this._element).hasClass(q)||(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof i._config.parent?t.getAttribute("data-parent")===i._config.parent:t.classList.contains(F)}))).length&&(e=null),e&&(n=o.default(e).not(this._selector).data(R))&&n._isTransitioning))){var a=o.default.Event("show.bs.collapse");if(o.default(this._element).trigger(a),!a.isDefaultPrevented()){e&&(t._jQueryInterface.call(o.default(e).not(this._selector),"hide"),n||o.default(e).data(R,null));var s=this._getDimension();o
.default(this._element).removeClass(F).addClass(Q),this._element.style[s]=0,this._triggerArray.length&&o.default(this._triggerArray).removeClass(B).attr("aria-expanded",!0),this.setTransitioning(!0);var l="scroll"+(s[0].toUpperCase()+s.slice(1)),r=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(){o.default(i._element).removeClass(Q).addClass("collapse show"),i._element.style[s]="",i.setTransitioning(!1),o.default(i._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(r),this._element.style[s]=this._element[l]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&o.default(this._element).hasClass(q)){var e=o.default.Event("hide.bs.collapse");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",d.reflow(this._element),o.default(this._element).addClass(Q).removeClass("collapse show");var i=this._triggerA
rray.length;if(i>0)for(var a=0;a<i;a++){var s=this._triggerArray[a],l=d.getSelectorFromElement(s);null!==l&&(o.default([].slice.call(document.querySelectorAll(l))).hasClass(q)||o.default(s).addClass(B).attr("aria-expanded",!1))}this.setTransitioning(!0),this._element.style[n]="";var r=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(){t.setTransitioning(!1),o.default(t._element).removeClass(Q).addClass(F).trigger("hidden.bs.collapse")})).emulateTransitionEnd(r)}}},e.setTransitioning=function(t){this._isTransitioning=t},e.dispose=function(){o.default.removeData(this._element,R),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},e._getConfig=function(t){return(t=r({},M,t)).toggle=Boolean(t.toggle),d.typeCheckConfig(L,t,W),t},e._getDimension=function(){return o.default(this._element).hasClass(H)?H:"height"},e._getParent=function(){var e,n=this;d.isElement(this._config.parent
)?(e=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(e=this._config.parent[0])):e=document.querySelector(this._config.parent);var i='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',a=[].slice.call(e.querySelectorAll(i));return o.default(a).each((function(e,i){n._addAriaAndCollapsedClass(t._getTargetFromElement(i),[i])})),e},e._addAriaAndCollapsedClass=function(t,e){var n=o.default(t).hasClass(q);e.length&&o.default(e).toggleClass(B,!n).attr("aria-expanded",n)},t._getTargetFromElement=function(t){var e=d.getSelectorFromElement(t);return e?document.querySelector(e):null},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(R),a=r({},M,n.data(),"object"==typeof e&&e?e:{});if(!i&&a.toggle&&"string"==typeof e&&/show|hide/.test(e)&&(a.toggle=!1),i||(i=new t(this,a),n.data(R,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:fu
nction(){return"4.6.1"}},{key:"Default",get:function(){return M}}]),t}();o.default(document).on("click.bs.collapse.data-api",U,(function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var e=o.default(this),n=d.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(n));o.default(i).each((function(){var t=o.default(this),n=t.data(R)?"toggle":e.data();V._jQueryInterface.call(t,n)}))})),o.default.fn[L]=V._jQueryInterface,o.default.fn[L].Constructor=V,o.default.fn[L].noConflict=function(){return o.default.fn[L]=x,V._jQueryInterface};var z="dropdown",K="bs.dropdown",X=o.default.fn[z],Y=new RegExp("38|40|27"),$="disabled",J="show",G="dropdown-menu-right",Z="hide.bs.dropdown",tt="hidden.bs.dropdown",et="click.bs.dropdown.data-api",nt="keydown.bs.dropdown.data-api",it='[data-toggle="dropdown"]',ot=".dropdown-menu",at={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},st={offset:"(number|string|function)",flip:"boolean",boun
dary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},lt=function(){function t(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e=t.prototype;return e.toggle=function(){if(!this._element.disabled&&!o.default(this._element).hasClass($)){var e=o.default(this._menu).hasClass(J);t._clearMenus(),e||this.show(!0)}},e.show=function(e){if(void 0===e&&(e=!1),!(this._element.disabled||o.default(this._element).hasClass($)||o.default(this._menu).hasClass(J))){var n={relatedTarget:this._element},i=o.default.Event("show.bs.dropdown",n),s=t._getParentFromElement(this._element);if(o.default(s).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar&&e){if("undefined"==typeof a.default)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");var l=this._element;"parent"===this._config.reference?l=s:d.isElemen
t(this._config.reference)&&(l=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(l=this._config.reference[0])),"scrollParent"!==this._config.boundary&&o.default(s).addClass("position-static"),this._popper=new a.default(l,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===o.default(s).closest(".navbar-nav").length&&o.default(document.body).children().on("mouseover",null,o.default.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),o.default(this._menu).toggleClass(J),o.default(s).toggleClass(J).trigger(o.default.Event("shown.bs.dropdown",n))}}},e.hide=function(){if(!this._element.disabled&&!o.default(this._element).hasClass($)&&o.default(this._menu).hasClass(J)){var e={relatedTarget:this._element},n=o.default.Event(Z,e),i=t._getParentFromElement(this._element);o.default(i).trigger(n),n.isDefaultPrevented()||(this._popper&&this._popper.destroy(),o.default(this._menu).toggleClass(J),o.default(i).toggleClass(
J).trigger(o.default.Event(tt,e)))}},e.dispose=function(){o.default.removeData(this._element,K),o.default(this._element).off(".bs.dropdown"),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;o.default(this._element).on("click.bs.dropdown",(function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}))},e._getConfig=function(t){return t=r({},this.constructor.Default,o.default(this._element).data(),t),d.typeCheckConfig(z,t,this.constructor.DefaultType),t},e._getMenuElement=function(){if(!this._menu){var e=t._getParentFromElement(this._element);e&&(this._menu=e.querySelector(ot))}return this._menu},e._getPlacement=function(){var t=o.default(this._element.parentNode),e="bottom-start";return t.hasClass("dropup")?e=o.default(this._menu).hasClass(G)?"top-end":"top-start":t.hasClass("droprig
ht")?e="right-start":t.hasClass("dropleft")?e="left-start":o.default(this._menu).hasClass(G)&&(e="bottom-end"),e},e._detectNavbar=function(){return o.default(this._element).closest(".navbar").length>0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t._config.offset(e.offsets,t._element)),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),r({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(K);if(n||(n=new t(this,"object"==typeof e?e:null),o.default(this).data(K,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._cle
arMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll(it)),i=0,a=n.length;i<a;i++){var s=t._getParentFromElement(n[i]),l=o.default(n[i]).data(K),r={relatedTarget:n[i]};if(e&&"click"===e.type&&(r.clickEvent=e),l){var u=l._menu;if(o.default(s).hasClass(J)&&!(e&&("click"===e.type&&/input|textarea/i.test(e.target.tagName)||"keyup"===e.type&&9===e.which)&&o.default.contains(s,e.target))){var f=o.default.Event(Z,r);o.default(s).trigger(f),f.isDefaultPrevented()||("ontouchstart"in document.documentElement&&o.default(document.body).children().off("mouseover",null,o.default.noop),n[i].setAttribute("aria-expanded","false"),l._popper&&l._popper.destroy(),o.default(u).removeClass(J),o.default(s).removeClass(J).trigger(o.default.Event(tt,r)))}}}},t._getParentFromElement=function(t){var e,n=d.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},t._dataApiKeydownHandler=function(e){if(!(/input|textare
a/i.test(e.target.tagName)?32===e.which||27!==e.which&&(40!==e.which&&38!==e.which||o.default(e.target).closest(ot).length):!Y.test(e.which))&&!this.disabled&&!o.default(this).hasClass($)){var n=t._getParentFromElement(this),i=o.default(n).hasClass(J);if(i||27!==e.which){if(e.preventDefault(),e.stopPropagation(),!i||27===e.which||32===e.which)return 27===e.which&&o.default(n.querySelector(it)).trigger("focus"),void o.default(this).trigger("click");var a=[].slice.call(n.querySelectorAll(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)")).filter((function(t){return o.default(t).is(":visible")}));if(0!==a.length){var s=a.indexOf(e.target);38===e.which&&s>0&&s--,40===e.which&&s<a.length-1&&s++,s<0&&(s=0),a[s].focus()}}}},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return at}},{key:"DefaultType",get:function(){return st}}]),t}();o.default(document).on(nt,it,lt._dataApiKeydownHandler).on(nt,ot,lt._dataApiKeydownHandler).on(et+" keyup.b
s.dropdown.data-api",lt._clearMenus).on(et,it,(function(t){t.preventDefault(),t.stopPropagation(),lt._jQueryInterface.call(o.default(this),"toggle")})).on(et,".dropdown form",(function(t){t.stopPropagation()})),o.default.fn[z]=lt._jQueryInterface,o.default.fn[z].Constructor=lt,o.default.fn[z].noConflict=function(){return o.default.fn[z]=X,lt._jQueryInterface};var rt="bs.modal",ut=o.default.fn.modal,ft="modal-open",dt="fade",ct="show",ht="modal-static",gt="hidden.bs.modal",mt="show.bs.modal",pt="focusin.bs.modal",_t="resize.bs.modal",vt="click.dismiss.bs.modal",yt="keydown.dismiss.bs.modal",bt="mousedown.dismiss.bs.modal",Et=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Tt={backdrop:!0,keyboard:!0,focus:!0,show:!0},wt={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},Ct=function(){function t(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(".modal-dialog"),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing
=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var e=t.prototype;return e.toggle=function(t){return this._isShown?this.hide():this.show(t)},e.show=function(t){var e=this;if(!this._isShown&&!this._isTransitioning){var n=o.default.Event(mt,{relatedTarget:t});o.default(this._element).trigger(n),n.isDefaultPrevented()||(this._isShown=!0,o.default(this._element).hasClass(dt)&&(this._isTransitioning=!0),this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),o.default(this._element).on(vt,'[data-dismiss="modal"]',(function(t){return e.hide(t)})),o.default(this._dialog).on(bt,(function(){o.default(e._element).one("mouseup.dismiss.bs.modal",(function(t){o.default(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)}))})),this._showBackdrop((function(){return e._showElement(t)})))}},e.hide=function(t){var e=this;if(t&&t.preventDefault(),this._isShown&&!this._isTransitioning){var n=o.default.Event("hide.
bs.modal");if(o.default(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=o.default(this._element).hasClass(dt);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),o.default(document).off(pt),o.default(this._element).removeClass(ct),o.default(this._element).off(vt),o.default(this._dialog).off(bt),i){var a=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(t){return e._hideModal(t)})).emulateTransitionEnd(a)}else this._hideModal()}}},e.dispose=function(){[window,this._element,this._dialog].forEach((function(t){return o.default(t).off(".bs.modal")})),o.default(document).off(pt),o.default.removeData(this._element,rt),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},e.handleUpdate=function(){this._adjustDialog()
},e._getConfig=function(t){return t=r({},Tt,t),d.typeCheckConfig("modal",t,wt),t},e._triggerBackdropTransition=function(){var t=this,e=o.default.Event("hidePrevented.bs.modal");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._element.scrollHeight>document.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add(ht);var i=d.getTransitionDurationFromElement(this._dialog);o.default(this._element).off(d.TRANSITION_END),o.default(this._element).one(d.TRANSITION_END,(function(){t._element.classList.remove(ht),n||o.default(t._element).one(d.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,i)})).emulateTransitionEnd(i),this._element.focus()}},e._showElement=function(t){var e=this,n=o.default(this._element).hasClass(dt),i=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appen
dChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),o.default(this._dialog).hasClass("modal-dialog-scrollable")&&i?i.scrollTop=0:this._element.scrollTop=0,n&&d.reflow(this._element),o.default(this._element).addClass(ct),this._config.focus&&this._enforceFocus();var a=o.default.Event("shown.bs.modal",{relatedTarget:t}),s=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,o.default(e._element).trigger(a)};if(n){var l=d.getTransitionDurationFromElement(this._dialog);o.default(this._dialog).one(d.TRANSITION_END,s).emulateTransitionEnd(l)}else s()},e._enforceFocus=function(){var t=this;o.default(document).off(pt).on(pt,(function(e){document!==e.target&&t._element!==e.target&&0===o.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?o.default(this._element).on(yt,(funct
ion(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||o.default(this._element).off(yt)},e._setResizeEvent=function(){var t=this;this._isShown?o.default(window).on(_t,(function(e){return t.handleUpdate(e)})):o.default(window).off(_t)},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){o.default(document.body).removeClass(ft),t._resetAdjustments(),t._resetScrollbar(),o.default(t._element).trigger(gt)}))},e._removeBackdrop=function(){this._backdrop&&(o.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=o.default(this._element).hasClass(dt)?dt:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdro
p.className="modal-backdrop",n&&this._backdrop.classList.add(n),o.default(this._backdrop).appendTo(document.body),o.default(this._element).on(vt,(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._triggerBackdropTransition():e.hide())})),n&&d.reflow(this._backdrop),o.default(this._backdrop).addClass(ct),!t)return;if(!n)return void t();var i=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){o.default(this._backdrop).removeClass(ct);var a=function(){e._removeBackdrop(),t&&t()};if(o.default(this._element).hasClass(dt)){var s=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._e
lement.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},e._setScrollbar=function(){var t=this;if(this._isBodyOverflowing){var e=[].slice.call(document.querySelectorAll(Et)),n=[].slice.call(document.querySelectorAll(".sticky-top"));o.default(e).each((function(e,n){var i=n.style.paddingRight,a=o.default(n).css("padding-right");o.default(n).data("padding-right",i).css("padding-right",parseFloat(a)+t._scrollbarWidth+"px")})),o.default(n).each((function(e,n){var i=n.style.marginRight,a=o.default(n).css("margin-right");o.default(n).data("margin-right",i).css("margin-right",parseFloat(a)-t._scrollbarWidth+"px")}));va
r i=document.body.style.paddingRight,a=o.default(document.body).css("padding-right");o.default(document.body).data("padding-right",i).css("padding-right",parseFloat(a)+this._scrollbarWidth+"px")}o.default(document.body).addClass(ft)},e._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(Et));o.default(t).each((function(t,e){var n=o.default(e).data("padding-right");o.default(e).removeData("padding-right"),e.style.paddingRight=n||""}));var e=[].slice.call(document.querySelectorAll(".sticky-top"));o.default(e).each((function(t,e){var n=o.default(e).data("margin-right");"undefined"!=typeof n&&o.default(e).css("margin-right",n).removeData("margin-right")}));var n=o.default(document.body).data("padding-right");o.default(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},e._getScrollbarWidth=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",document.body.appendChild(t);var e=t.getBoundingClientRect().wi
dth-t.clientWidth;return document.body.removeChild(t),e},t._jQueryInterface=function(e,n){return this.each((function(){var i=o.default(this).data(rt),a=r({},Tt,o.default(this).data(),"object"==typeof e&&e?e:{});if(i||(i=new t(this,a),o.default(this).data(rt,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e](n)}else a.show&&i.show(n)}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return Tt}}]),t}();o.default(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',(function(t){var e,n=this,i=d.getSelectorFromElement(this);i&&(e=document.querySelector(i));var a=o.default(e).data(rt)?"toggle":r({},o.default(e).data(),o.default(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var s=o.default(e).one(mt,(function(t){t.isDefaultPrevented()||s.one(gt,(function(){o.default(n).is(":visible")&&n.focus()}))}));Ct._jQueryInterface.call(o.default(e),a,this)})),o.default
.fn.modal=Ct._jQueryInterface,o.default.fn.modal.Constructor=Ct,o.default.fn.modal.noConflict=function(){return o.default.fn.modal=ut,Ct._jQueryInterface};var St=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],Nt=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Dt=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;function At(t,e,n){if(0===t.length)return t;if(n&&"function"==typeof n)return n(t);for(var i=(new window.DOMParser).parseFromString(t,"text/html"),o=Object.keys(e),a=[].slice.call(i.body.querySelectorAll("*")),s=function(t,n){var i=a[t],s=i.nodeName.toLowerCase();if(-1===o.indexOf(i.nodeName.toLowerCase()))return i.parentNode.removeChild(i),"continue";var l=[].slice.call(i.attributes),r=[].concat(e["*"]||[],e[s]||[]);l.forEach((function(t){(function(t,e){var n=t.nodeName.toLowerCase();if(-1!==e.indexOf(n))return-1===St.indexOf(n)||Boolean(Nt.test
(t.nodeValue)||Dt.test(t.nodeValue));for(var i=e.filter((function(t){return t instanceof RegExp})),o=0,a=i.length;o<a;o++)if(i[o].test(n))return!0;return!1})(t,r)||i.removeAttribute(t.nodeName)}))},l=0,r=a.length;l<r;l++)s(l);return i.body.innerHTML}var It="tooltip",kt="bs.tooltip",Ot=o.default.fn.tooltip,jt=new RegExp("(^|\\s)bs-tooltip\\S+","g"),Pt=["sanitize","whiteList","sanitizeFn"],Lt="fade",Rt="show",xt="show",qt="out",Ft="hover",Qt="focus",Bt={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},Ht={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[
],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Ut={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},Mt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Wt=function(){function t(t,e){if("undefined"==typeof a.default)th
row new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=o.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(o.default(this.getTipElement()).hasClass(Rt))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),o.default.removeData(this.element,this.constructor.DATA_KEY),o.default(this.eleme
nt).off(this.constructor.EVENT_KEY),o.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&o.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===o.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=o.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){o.default(this.element).trigger(e);var n=d.findShadowRoot(this.element),i=o.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!i)return;var s=this.getTipElement(),l=d.getUID(this.constructor.NAME);s.setAttribute("id",l),this.element.setAttribute("aria-describedby",l),this.setContent(),this.config.animation&&o.default(s).addClass(Lt);var r="function"==t
ypeof this.config.placement?this.config.placement.call(this,s,this.element):this.config.placement,u=this._getAttachment(r);this.addAttachmentClass(u);var f=this._getContainer();o.default(s).data(this.constructor.DATA_KEY,this),o.default.contains(this.element.ownerDocument.documentElement,this.tip)||o.default(s).appendTo(f),o.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new a.default(this.element,s,this._getPopperConfig(u)),o.default(s).addClass(Rt),o.default(s).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&o.default(document.body).children().on("mouseover",null,o.default.noop);var c=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,o.default(t.element).trigger(t.constructor.Event.SHOWN),e===qt&&t._leave(null,t)};if(o.default(this.tip).hasClass(Lt)){var h=d.getTransitionDurationFromElement(this.tip);o.default(this.tip).one(d.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},e.hide=
function(t){var e=this,n=this.getTipElement(),i=o.default.Event(this.constructor.Event.HIDE),a=function(){e._hoverState!==xt&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),o.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(o.default(this.element).trigger(i),!i.isDefaultPrevented()){if(o.default(n).removeClass(Rt),"ontouchstart"in document.documentElement&&o.default(document.body).children().off("mouseover",null,o.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,o.default(this.tip).hasClass(Lt)){var s=d.getTransitionDurationFromElement(n);o.default(n).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){o.default(this.getTipElement
()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(o.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),o.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=At(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?o.default(e).parent().is(t)||t.empty().append(e):t.text(o.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return r({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.co
nfig.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t.config.offset(e.offsets,t.element)),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:d.isElement(this.config.container)?o.default(this.config.container):o.default(document).find(this.config.container)},e._getAttachment=function(t){return Bt[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)o.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n=e===Ft?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i=e===Ft?t.constructor.Event.MOUSELEAVE:t.co
nstructor.Event.FOCUSOUT;o.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(i,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},o.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Qt:Ft]=!0),o.default(e.getTipElement()).hasClass(Rt)||e._hoverState===xt?e._hoverS
tate=xt:(clearTimeout(e._timeout),e._hoverState=xt,e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){e._hoverState===xt&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Qt:Ft]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=qt,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){e._hoverState===qt&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=o.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Pt.indexOf(t)&&delete e[t]})),"number"==typeof(t=r({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.
delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),d.typeCheckConfig(It,t,this.constructor.DefaultType),t.sanitize&&(t.template=At(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(jt);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(o.default(t).removeClass(Lt),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=
o.default(this),i=n.data(kt),a="object"==typeof e&&e;if((i||!/dispose|hide/.test(e))&&(i||(i=new t(this,a),n.data(kt,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return Ht}},{key:"NAME",get:function(){return It}},{key:"DATA_KEY",get:function(){return kt}},{key:"Event",get:function(){return Mt}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Ut}}]),t}();o.default.fn.tooltip=Wt._jQueryInterface,o.default.fn.tooltip.Constructor=Wt,o.default.fn.tooltip.noConflict=function(){return o.default.fn.tooltip=Ot,Wt._jQueryInterface};var Vt="bs.popover",zt=o.default.fn.popover,Kt=new RegExp("(^|\\s)bs-popover\\S+","g"),Xt=r({},Wt.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="po
pover-body"></div></div>'}),Yt=r({},Wt.DefaultType,{content:"(string|element|function)"}),$t={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},Jt=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),e.prototype.constructor=e,u(e,n);var a=i.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-popover-"+t)},a.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},a.setContent=function(){var t=o.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e
.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(Kt);null!==e&&e.length>0&&t.removeClass(e.join(""))},i._jQueryInterface=function(t){return this.each((function(){var e=o.default(this).data(Vt),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new i(this,n),o.default(this).data(Vt,e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},l(i,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return Xt}},{key:"NAME",get:function(){return"popover"}},{key:"DATA_KEY",get:function(){return Vt}},{key:"Event",get:function(){return $t}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Yt}}]),i}(Wt);o.default.fn.po
pover=Jt._jQueryInterface,o.default.fn.popover.Constructor=Jt,o.default.fn.popover.noConflict=function(){return o.default.fn.popover=zt,Jt._jQueryInterface};var Gt="scrollspy",Zt="bs.scrollspy",te=o.default.fn[Gt],ee="active",ne="position",ie=".nav, .list-group",oe={offset:10,method:"auto",target:""},ae={offset:"number",method:"string",target:"(string|element)"},se=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,o.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":ne,n="auto"===this._config.method?e:this._confi
g.method,i=n===ne?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,a=d.getSelectorFromElement(t);if(a&&(e=document.querySelector(a)),e){var s=e.getBoundingClientRect();if(s.width||s.height)return[o.default(e)[n]().top+i,a]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){o.default.removeData(this._element,Zt),o.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=r({},oe,"object"==typeof t&&t?t:{})).target&&d.isElement(t.target)){var e=o.default(t.target).attr("id");e||(e=d.getUID(Gt),o.default(t.target).attr("id",e)),t
.target="#"+e}return d.typeCheckConfig(Gt,t,ae),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t<thi
s._offsets[o+1])&&this._activate(this._targets[o])}},e._activate=function(t){this._activeTarget=t,this._clear();var e=this._selector.split(",").map((function(e){return e+'[data-target="'+t+'"],'+e+'[href="'+t+'"]'})),n=o.default([].slice.call(document.querySelectorAll(e.join(","))));n.hasClass("dropdown-item")?(n.closest(".dropdown").find(".dropdown-toggle").addClass(ee),n.addClass(ee)):(n.addClass(ee),n.parents(ie).prev(".nav-link, .list-group-item").addClass(ee),n.parents(ie).prev(".nav-item").children(".nav-link").addClass(ee)),o.default(this._scrollElement).trigger("activate.bs.scrollspy",{relatedTarget:t})},e._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter((function(t){return t.classList.contains(ee)})).forEach((function(t){return t.classList.remove(ee)}))},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(Zt);if(n||(n=new t(this,"object"==typeof e&&e),o.default(this).data(Zt,n)),"string"==typeof e){if("unde
fined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return oe}}]),t}();o.default(window).on("load.bs.scrollspy.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-spy="scroll"]')),e=t.length;e--;){var n=o.default(t[e]);se._jQueryInterface.call(n,n.data())}})),o.default.fn[Gt]=se._jQueryInterface,o.default.fn[Gt].Constructor=se,o.default.fn[Gt].noConflict=function(){return o.default.fn[Gt]=te,se._jQueryInterface};var le="bs.tab",re=o.default.fn.tab,ue="active",fe="fade",de="show",ce=".active",he="> li > .active",ge=function(){function t(t){this._element=t}var e=t.prototype;return e.show=function(){var t=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&o.default(this._element).hasClass(ue)||o.default(this._element).hasClass("disabled"))){var e,n,i=o.default(this._element).closest(".nav, .list-group")[0],a=
d.getSelectorFromElement(this._element);if(i){var s="UL"===i.nodeName||"OL"===i.nodeName?he:ce;n=(n=o.default.makeArray(o.default(i).find(s)))[n.length-1]}var l=o.default.Event("hide.bs.tab",{relatedTarget:this._element}),r=o.default.Event("show.bs.tab",{relatedTarget:n});if(n&&o.default(n).trigger(l),o.default(this._element).trigger(r),!r.isDefaultPrevented()&&!l.isDefaultPrevented()){a&&(e=document.querySelector(a)),this._activate(this._element,i);var u=function(){var e=o.default.Event("hidden.bs.tab",{relatedTarget:t._element}),i=o.default.Event("shown.bs.tab",{relatedTarget:n});o.default(n).trigger(e),o.default(t._element).trigger(i)};e?this._activate(e,e.parentNode,u):u()}}},e.dispose=function(){o.default.removeData(this._element,le),this._element=null},e._activate=function(t,e,n){var i=this,a=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?o.default(e).children(ce):o.default(e).find(he))[0],s=n&&a&&o.default(a).hasClass(fe),l=function(){return i._transitionComplete(t,a,n)};if(a&&s){
var r=d.getTransitionDurationFromElement(a);o.default(a).removeClass(de).one(d.TRANSITION_END,l).emulateTransitionEnd(r)}else l()},e._transitionComplete=function(t,e,n){if(e){o.default(e).removeClass(ue);var i=o.default(e.parentNode).find("> .dropdown-menu .active")[0];i&&o.default(i).removeClass(ue),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}o.default(t).addClass(ue),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),d.reflow(t),t.classList.contains(fe)&&t.classList.add(de);var a=t.parentNode;if(a&&"LI"===a.nodeName&&(a=a.parentNode),a&&o.default(a).hasClass("dropdown-menu")){var s=o.default(t).closest(".dropdown")[0];if(s){var l=[].slice.call(s.querySelectorAll(".dropdown-toggle"));o.default(l).addClass(ue)}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(le);if(i||(i=new t(this),n.data(le,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeErr
or('No method named "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),ge._jQueryInterface.call(o.default(this),"show")})),o.default.fn.tab=ge._jQueryInterface,o.default.fn.tab.Constructor=ge,o.default.fn.tab.noConflict=function(){return o.default.fn.tab=re,ge._jQueryInterface};var me="bs.toast",pe=o.default.fn.toast,_e="hide",ve="show",ye="showing",be="click.dismiss.bs.toast",Ee={animation:!0,autohide:!0,delay:500},Te={animation:"boolean",autohide:"boolean",delay:"number"},we=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=o.default.Event("show.bs.toast");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList
.add("fade");var n=function(){t._element.classList.remove(ye),t._element.classList.add(ve),o.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove(_e),d.reflow(this._element),this._element.classList.add(ye),this._config.animation){var i=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,n).emulateTransitionEnd(i)}else n()}},e.hide=function(){if(this._element.classList.contains(ve)){var t=o.default.Event("hide.bs.toast");o.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains(ve)&&this._element.classList.remove(ve),o.default(this._element).off(be),o.default.removeData(this._element,me),this._element=null,this._config=null},e._getConfig=function(t){return t=r({},Ee,o.default(this._element).data(),"object"==typeof t&&t?t:{}),d.typeCheckCon
fig("toast",t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;o.default(this._element).on(be,'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add(_e),o.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove(ve),this._config.animation){var n=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(me);if(i||(i=new t(this,"object"==typeof e&&e),n.data(me,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e](this)}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"DefaultType",get:function(){return Te}},{key:"Default",get:function(){return Ee}}]),t}();o.default.f
n.toast=we._jQueryInterface,o.default.fn.toast.Constructor=we,o.default.fn.toast.noConflict=function(){return o.default.fn.toast=pe,we._jQueryInterface},t.Alert=g,t.Button=E,t.Carousel=P,t.Collapse=V,t.Dropdown=lt,t.Modal=Ct,t.Popover=Jt,t.Scrollspy=se,t.Tab=ge,t.Toast=we,t.Tooltip=Wt,t.Util=d,Object.defineProperty(t,"__esModule",{value:!0})}));
-----------------------------------------------------------------------
hooks/post-receive
--
rt
More information about the rt-commit
mailing list