bootstrap 4.4.1 → 4.6.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +11 -1
- data/CHANGELOG.md +4 -0
- data/README.md +7 -1
- data/Rakefile +16 -4
- data/assets/javascripts/bootstrap/alert.js +42 -53
- data/assets/javascripts/bootstrap/button.js +76 -81
- data/assets/javascripts/bootstrap/carousel.js +161 -199
- data/assets/javascripts/bootstrap/collapse.js +97 -142
- data/assets/javascripts/bootstrap/dropdown.js +130 -186
- data/assets/javascripts/bootstrap/modal.js +191 -213
- data/assets/javascripts/bootstrap/popover.js +62 -92
- data/assets/javascripts/bootstrap/scrollspy.js +81 -132
- data/assets/javascripts/bootstrap/tab.js +78 -83
- data/assets/javascripts/bootstrap/toast.js +83 -118
- data/assets/javascripts/bootstrap/tooltip.js +158 -198
- data/assets/javascripts/bootstrap/util.js +27 -26
- data/assets/javascripts/bootstrap-sprockets.js +7 -7
- data/assets/javascripts/bootstrap.js +1037 -1202
- data/assets/javascripts/bootstrap.min.js +4 -4
- data/assets/stylesheets/_bootstrap-grid.scss +5 -4
- data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
- data/assets/stylesheets/_bootstrap.scss +4 -4
- data/assets/stylesheets/bootstrap/_alert.scss +1 -0
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +1 -1
- data/assets/stylesheets/bootstrap/_buttons.scss +10 -7
- data/assets/stylesheets/bootstrap/_card.scss +30 -22
- data/assets/stylesheets/bootstrap/_carousel.scss +6 -3
- data/assets/stylesheets/bootstrap/_close.scss +0 -1
- data/assets/stylesheets/bootstrap/_custom-forms.scss +23 -18
- data/assets/stylesheets/bootstrap/_dropdown.scss +4 -3
- data/assets/stylesheets/bootstrap/_forms.scss +19 -10
- data/assets/stylesheets/bootstrap/_functions.scss +62 -6
- data/assets/stylesheets/bootstrap/_grid.scss +10 -6
- data/assets/stylesheets/bootstrap/_images.scss +1 -1
- data/assets/stylesheets/bootstrap/_input-group.scss +24 -4
- data/assets/stylesheets/bootstrap/_jumbotron.scss +1 -1
- data/assets/stylesheets/bootstrap/_list-group.scss +10 -14
- data/assets/stylesheets/bootstrap/_modal.scss +4 -3
- data/assets/stylesheets/bootstrap/_nav.scss +9 -4
- data/assets/stylesheets/bootstrap/_navbar.scss +10 -2
- data/assets/stylesheets/bootstrap/_pagination.scss +3 -2
- data/assets/stylesheets/bootstrap/_popover.scss +9 -9
- data/assets/stylesheets/bootstrap/_print.scss +0 -9
- data/assets/stylesheets/bootstrap/_progress.scss +2 -1
- data/assets/stylesheets/bootstrap/_reboot.scss +27 -25
- data/assets/stylesheets/bootstrap/_root.scss +0 -1
- data/assets/stylesheets/bootstrap/_spinners.scss +18 -8
- data/assets/stylesheets/bootstrap/_toasts.scss +4 -2
- data/assets/stylesheets/bootstrap/_tooltip.scss +4 -4
- data/assets/stylesheets/bootstrap/_transitions.scss +6 -0
- data/assets/stylesheets/bootstrap/_type.scss +1 -1
- data/assets/stylesheets/bootstrap/_utilities.scss +2 -1
- data/assets/stylesheets/bootstrap/_variables.scss +34 -28
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +2 -1
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +27 -14
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +6 -6
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +23 -5
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +26 -17
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +17 -17
- data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
- data/assets/stylesheets/bootstrap/utilities/_background.scss +1 -1
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +1 -1
- data/assets/stylesheets/bootstrap/utilities/_embed.scss +1 -1
- data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
- data/assets/stylesheets/bootstrap/utilities/_spacing.scss +1 -1
- data/assets/stylesheets/bootstrap/utilities/_text.scss +2 -2
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +126 -102
- data/bootstrap.gemspec +1 -3
- data/lib/bootstrap/engine.rb +17 -1
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +18 -6
- data/tasks/updater/network.rb +8 -2
- data/test/gemfiles/rails_6_0.gemfile +7 -0
- data/test/gemfiles/rails_7_0_dartsass.gemfile +8 -0
- data/test/gemfiles/rails_7_0_sassc.gemfile +8 -0
- metadata +12 -19
|
@@ -9,9 +9,11 @@
|
|
|
9
9
|
|
|
10
10
|
.custom-control {
|
|
11
11
|
position: relative;
|
|
12
|
+
z-index: 1;
|
|
12
13
|
display: block;
|
|
13
14
|
min-height: $font-size-base * $line-height-base;
|
|
14
15
|
padding-left: $custom-control-gutter + $custom-control-indicator-size;
|
|
16
|
+
print-color-adjust: exact; // Keep themed appearance for print
|
|
15
17
|
}
|
|
16
18
|
|
|
17
19
|
.custom-control-inline {
|
|
@@ -24,7 +26,7 @@
|
|
|
24
26
|
left: 0;
|
|
25
27
|
z-index: -1; // Put the input behind the label so it doesn't overlay text
|
|
26
28
|
width: $custom-control-indicator-size;
|
|
27
|
-
height: ($font-size-base * $line-height-base + $custom-control-indicator-size)
|
|
29
|
+
height: ($font-size-base * $line-height-base + $custom-control-indicator-size) * .5;
|
|
28
30
|
opacity: 0;
|
|
29
31
|
|
|
30
32
|
&:checked ~ .custom-control-label::before {
|
|
@@ -37,7 +39,7 @@
|
|
|
37
39
|
&:focus ~ .custom-control-label::before {
|
|
38
40
|
// the mixin is not used here to make sure there is feedback
|
|
39
41
|
@if $enable-shadows {
|
|
40
|
-
box-shadow: $input-box-shadow, $
|
|
42
|
+
box-shadow: $input-box-shadow, $custom-control-indicator-focus-box-shadow;
|
|
41
43
|
} @else {
|
|
42
44
|
box-shadow: $custom-control-indicator-focus-box-shadow;
|
|
43
45
|
}
|
|
@@ -81,7 +83,7 @@
|
|
|
81
83
|
// Background-color and (when enabled) gradient
|
|
82
84
|
&::before {
|
|
83
85
|
position: absolute;
|
|
84
|
-
top: ($font-size-base * $line-height-base - $custom-control-indicator-size)
|
|
86
|
+
top: ($font-size-base * $line-height-base - $custom-control-indicator-size) * .5;
|
|
85
87
|
left: -($custom-control-gutter + $custom-control-indicator-size);
|
|
86
88
|
display: block;
|
|
87
89
|
width: $custom-control-indicator-size;
|
|
@@ -89,20 +91,20 @@
|
|
|
89
91
|
pointer-events: none;
|
|
90
92
|
content: "";
|
|
91
93
|
background-color: $custom-control-indicator-bg;
|
|
92
|
-
border: $custom-control-indicator-border-
|
|
94
|
+
border: $custom-control-indicator-border-width solid $custom-control-indicator-border-color;
|
|
93
95
|
@include box-shadow($custom-control-indicator-box-shadow);
|
|
94
96
|
}
|
|
95
97
|
|
|
96
98
|
// Foreground (icon)
|
|
97
99
|
&::after {
|
|
98
100
|
position: absolute;
|
|
99
|
-
top: ($font-size-base * $line-height-base - $custom-control-indicator-size)
|
|
101
|
+
top: ($font-size-base * $line-height-base - $custom-control-indicator-size) * .5;
|
|
100
102
|
left: -($custom-control-gutter + $custom-control-indicator-size);
|
|
101
103
|
display: block;
|
|
102
104
|
width: $custom-control-indicator-size;
|
|
103
105
|
height: $custom-control-indicator-size;
|
|
104
106
|
content: "";
|
|
105
|
-
background:
|
|
107
|
+
background: 50% / #{$custom-control-indicator-bg-size} no-repeat;
|
|
106
108
|
}
|
|
107
109
|
}
|
|
108
110
|
|
|
@@ -135,10 +137,10 @@
|
|
|
135
137
|
|
|
136
138
|
.custom-control-input:disabled {
|
|
137
139
|
&:checked ~ .custom-control-label::before {
|
|
138
|
-
|
|
140
|
+
@include gradient-bg($custom-control-indicator-checked-disabled-bg);
|
|
139
141
|
}
|
|
140
142
|
&:indeterminate ~ .custom-control-label::before {
|
|
141
|
-
|
|
143
|
+
@include gradient-bg($custom-control-indicator-checked-disabled-bg);
|
|
142
144
|
}
|
|
143
145
|
}
|
|
144
146
|
}
|
|
@@ -149,7 +151,7 @@
|
|
|
149
151
|
|
|
150
152
|
.custom-radio {
|
|
151
153
|
.custom-control-label::before {
|
|
152
|
-
// stylelint-disable-next-line property-
|
|
154
|
+
// stylelint-disable-next-line property-disallowed-list
|
|
153
155
|
border-radius: $custom-radio-indicator-border-radius;
|
|
154
156
|
}
|
|
155
157
|
|
|
@@ -161,7 +163,7 @@
|
|
|
161
163
|
|
|
162
164
|
.custom-control-input:disabled {
|
|
163
165
|
&:checked ~ .custom-control-label::before {
|
|
164
|
-
|
|
166
|
+
@include gradient-bg($custom-control-indicator-checked-disabled-bg);
|
|
165
167
|
}
|
|
166
168
|
}
|
|
167
169
|
}
|
|
@@ -179,17 +181,17 @@
|
|
|
179
181
|
left: -($custom-switch-width + $custom-control-gutter);
|
|
180
182
|
width: $custom-switch-width;
|
|
181
183
|
pointer-events: all;
|
|
182
|
-
// stylelint-disable-next-line property-
|
|
184
|
+
// stylelint-disable-next-line property-disallowed-list
|
|
183
185
|
border-radius: $custom-switch-indicator-border-radius;
|
|
184
186
|
}
|
|
185
187
|
|
|
186
188
|
&::after {
|
|
187
|
-
top: add(($font-size-base * $line-height-base - $custom-control-indicator-size)
|
|
189
|
+
top: add(($font-size-base * $line-height-base - $custom-control-indicator-size) * .5, $custom-control-indicator-border-width * 2);
|
|
188
190
|
left: add(-($custom-switch-width + $custom-control-gutter), $custom-control-indicator-border-width * 2);
|
|
189
191
|
width: $custom-switch-indicator-size;
|
|
190
192
|
height: $custom-switch-indicator-size;
|
|
191
193
|
background-color: $custom-control-indicator-border-color;
|
|
192
|
-
// stylelint-disable-next-line property-
|
|
194
|
+
// stylelint-disable-next-line property-disallowed-list
|
|
193
195
|
border-radius: $custom-switch-indicator-border-radius;
|
|
194
196
|
@include transition(transform .15s ease-in-out, $custom-forms-transition);
|
|
195
197
|
}
|
|
@@ -204,7 +206,7 @@
|
|
|
204
206
|
|
|
205
207
|
.custom-control-input:disabled {
|
|
206
208
|
&:checked ~ .custom-control-label::before {
|
|
207
|
-
|
|
209
|
+
@include gradient-bg($custom-control-indicator-checked-disabled-bg);
|
|
208
210
|
}
|
|
209
211
|
}
|
|
210
212
|
}
|
|
@@ -237,8 +239,9 @@
|
|
|
237
239
|
border-color: $custom-select-focus-border-color;
|
|
238
240
|
outline: 0;
|
|
239
241
|
@if $enable-shadows {
|
|
240
|
-
box-shadow
|
|
242
|
+
@include box-shadow($custom-select-box-shadow, $custom-select-focus-box-shadow);
|
|
241
243
|
} @else {
|
|
244
|
+
// Avoid using mixin so we can pass custom focus shadow properly
|
|
242
245
|
box-shadow: $custom-select-focus-box-shadow;
|
|
243
246
|
}
|
|
244
247
|
|
|
@@ -312,6 +315,7 @@
|
|
|
312
315
|
width: 100%;
|
|
313
316
|
height: $custom-file-height;
|
|
314
317
|
margin: 0;
|
|
318
|
+
overflow: hidden;
|
|
315
319
|
opacity: 0;
|
|
316
320
|
|
|
317
321
|
&:focus ~ .custom-file-label {
|
|
@@ -344,6 +348,7 @@
|
|
|
344
348
|
z-index: 1;
|
|
345
349
|
height: $custom-file-height;
|
|
346
350
|
padding: $custom-file-padding-y $custom-file-padding-x;
|
|
351
|
+
overflow: hidden;
|
|
347
352
|
font-family: $custom-file-font-family;
|
|
348
353
|
font-weight: $custom-file-font-weight;
|
|
349
354
|
line-height: $custom-file-line-height;
|
|
@@ -385,7 +390,7 @@
|
|
|
385
390
|
appearance: none;
|
|
386
391
|
|
|
387
392
|
&:focus {
|
|
388
|
-
outline:
|
|
393
|
+
outline: 0;
|
|
389
394
|
|
|
390
395
|
// Pseudo-elements must be split across multiple rulesets to have an effect.
|
|
391
396
|
// No box-shadow() mixin for focus accessibility.
|
|
@@ -401,7 +406,7 @@
|
|
|
401
406
|
&::-webkit-slider-thumb {
|
|
402
407
|
width: $custom-range-thumb-width;
|
|
403
408
|
height: $custom-range-thumb-height;
|
|
404
|
-
margin-top: ($custom-range-track-height - $custom-range-thumb-height)
|
|
409
|
+
margin-top: ($custom-range-track-height - $custom-range-thumb-height) * .5; // Webkit specific
|
|
405
410
|
@include gradient-bg($custom-range-thumb-bg);
|
|
406
411
|
border: $custom-range-thumb-border;
|
|
407
412
|
@include border-radius($custom-range-thumb-border-radius);
|
|
@@ -476,7 +481,7 @@
|
|
|
476
481
|
cursor: $custom-range-track-cursor;
|
|
477
482
|
background-color: transparent;
|
|
478
483
|
border-color: transparent;
|
|
479
|
-
border-width: $custom-range-thumb-height
|
|
484
|
+
border-width: $custom-range-thumb-height * .5;
|
|
480
485
|
@include box-shadow($custom-range-track-box-shadow);
|
|
481
486
|
}
|
|
482
487
|
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
display: none; // none by default, but block on "open" of the menu
|
|
23
23
|
float: left;
|
|
24
24
|
min-width: $dropdown-min-width;
|
|
25
|
-
padding: $dropdown-padding-y
|
|
25
|
+
padding: $dropdown-padding-y $dropdown-padding-x;
|
|
26
26
|
margin: $dropdown-spacer 0 0; // override default ul
|
|
27
27
|
@include font-size($dropdown-font-size);
|
|
28
28
|
color: $dropdown-color;
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
// When enabled
|
|
103
|
+
// When Popper is enabled, reset the basic dropdown position
|
|
104
104
|
// stylelint-disable-next-line no-duplicate-selectors
|
|
105
105
|
.dropdown-menu {
|
|
106
106
|
&[x-placement^="top"],
|
|
@@ -128,6 +128,7 @@
|
|
|
128
128
|
font-weight: $font-weight-normal;
|
|
129
129
|
color: $dropdown-link-color;
|
|
130
130
|
text-align: inherit; // For `<button>`s
|
|
131
|
+
text-decoration: if($link-decoration == none, null, none);
|
|
131
132
|
white-space: nowrap; // prevent links from randomly breaking onto new lines
|
|
132
133
|
background-color: transparent; // For `<button>`s
|
|
133
134
|
border: 0; // For `<button>`s
|
|
@@ -176,7 +177,7 @@
|
|
|
176
177
|
// Dropdown section headers
|
|
177
178
|
.dropdown-header {
|
|
178
179
|
display: block;
|
|
179
|
-
padding: $dropdown-
|
|
180
|
+
padding: $dropdown-header-padding;
|
|
180
181
|
margin-bottom: 0; // for use with heading elements
|
|
181
182
|
@include font-size($font-size-sm);
|
|
182
183
|
color: $dropdown-header-color;
|
|
@@ -30,12 +30,6 @@
|
|
|
30
30
|
border: 0;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
// Remove select outline from select box in FF
|
|
34
|
-
&:-moz-focusring {
|
|
35
|
-
color: transparent;
|
|
36
|
-
text-shadow: 0 0 0 $input-color;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
33
|
// Customize the `:focus` state to imitate native WebKit styles.
|
|
40
34
|
@include form-control-focus($ignore-warning: true);
|
|
41
35
|
|
|
@@ -59,7 +53,22 @@
|
|
|
59
53
|
}
|
|
60
54
|
}
|
|
61
55
|
|
|
56
|
+
input[type="date"],
|
|
57
|
+
input[type="time"],
|
|
58
|
+
input[type="datetime-local"],
|
|
59
|
+
input[type="month"] {
|
|
60
|
+
&.form-control {
|
|
61
|
+
appearance: none; // Fix appearance for date inputs in Safari
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
62
65
|
select.form-control {
|
|
66
|
+
// Remove select outline from select box in FF
|
|
67
|
+
&:-moz-focusring {
|
|
68
|
+
color: transparent;
|
|
69
|
+
text-shadow: 0 0 0 $input-color;
|
|
70
|
+
}
|
|
71
|
+
|
|
63
72
|
&:focus::-ms-value {
|
|
64
73
|
// Suppress the nested default white text on blue background highlight given to
|
|
65
74
|
// the selected option text when the (still closed) <select> receives focus
|
|
@@ -190,13 +199,13 @@ textarea.form-control {
|
|
|
190
199
|
.form-row {
|
|
191
200
|
display: flex;
|
|
192
201
|
flex-wrap: wrap;
|
|
193
|
-
margin-right: -$form-grid-gutter-width
|
|
194
|
-
margin-left: -$form-grid-gutter-width
|
|
202
|
+
margin-right: -$form-grid-gutter-width * .5;
|
|
203
|
+
margin-left: -$form-grid-gutter-width * .5;
|
|
195
204
|
|
|
196
205
|
> .col,
|
|
197
206
|
> [class*="col-"] {
|
|
198
|
-
padding-right: $form-grid-gutter-width
|
|
199
|
-
padding-left: $form-grid-gutter-width
|
|
207
|
+
padding-right: $form-grid-gutter-width * .5;
|
|
208
|
+
padding-left: $form-grid-gutter-width * .5;
|
|
200
209
|
}
|
|
201
210
|
}
|
|
202
211
|
|
|
@@ -23,10 +23,12 @@
|
|
|
23
23
|
// Starts at zero
|
|
24
24
|
// Used to ensure the min-width of the lowest breakpoint starts at 0.
|
|
25
25
|
@mixin _assert-starts-at-zero($map, $map-name: "$grid-breakpoints") {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
@
|
|
26
|
+
@if length($map) > 0 {
|
|
27
|
+
$values: map-values($map);
|
|
28
|
+
$first-value: nth($values, 1);
|
|
29
|
+
@if $first-value != 0 {
|
|
30
|
+
@warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.";
|
|
31
|
+
}
|
|
30
32
|
}
|
|
31
33
|
}
|
|
32
34
|
|
|
@@ -49,10 +51,18 @@
|
|
|
49
51
|
}
|
|
50
52
|
|
|
51
53
|
// See https://codepen.io/kevinweber/pen/dXWoRw
|
|
54
|
+
//
|
|
55
|
+
// Requires the use of quotes around data URIs.
|
|
56
|
+
|
|
52
57
|
@function escape-svg($string) {
|
|
53
58
|
@if str-index($string, "data:image/svg+xml") {
|
|
54
59
|
@each $char, $encoded in $escaped-characters {
|
|
55
|
-
|
|
60
|
+
// Do not escape the url brackets
|
|
61
|
+
@if str-index($string, "url(") == 1 {
|
|
62
|
+
$string: url("#{str-replace(str-slice($string, 6, -3), $char, $encoded)}");
|
|
63
|
+
} @else {
|
|
64
|
+
$string: str-replace($string, $char, $encoded);
|
|
65
|
+
}
|
|
56
66
|
}
|
|
57
67
|
}
|
|
58
68
|
|
|
@@ -65,7 +75,7 @@
|
|
|
65
75
|
$g: green($color);
|
|
66
76
|
$b: blue($color);
|
|
67
77
|
|
|
68
|
-
$yiq: (($r * 299) + ($g * 587) + ($b * 114))
|
|
78
|
+
$yiq: (($r * 299) + ($g * 587) + ($b * 114)) * .001;
|
|
69
79
|
|
|
70
80
|
@if ($yiq >= $yiq-contrasted-threshold) {
|
|
71
81
|
@return $dark;
|
|
@@ -130,5 +140,51 @@
|
|
|
130
140
|
@return $value1 - $value2;
|
|
131
141
|
}
|
|
132
142
|
|
|
143
|
+
@if type-of($value2) != number {
|
|
144
|
+
$value2: unquote("(") + $value2 + unquote(")");
|
|
145
|
+
}
|
|
146
|
+
|
|
133
147
|
@return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + unquote(" - ") + $value2);
|
|
134
148
|
}
|
|
149
|
+
|
|
150
|
+
@function divide($dividend, $divisor, $precision: 10) {
|
|
151
|
+
$sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
|
|
152
|
+
$dividend: abs($dividend);
|
|
153
|
+
$divisor: abs($divisor);
|
|
154
|
+
@if $dividend == 0 {
|
|
155
|
+
@return 0;
|
|
156
|
+
}
|
|
157
|
+
@if $divisor == 0 {
|
|
158
|
+
@error "Cannot divide by 0";
|
|
159
|
+
}
|
|
160
|
+
$remainder: $dividend;
|
|
161
|
+
$result: 0;
|
|
162
|
+
$factor: 10;
|
|
163
|
+
@while ($remainder > 0 and $precision >= 0) {
|
|
164
|
+
$quotient: 0;
|
|
165
|
+
@while ($remainder >= $divisor) {
|
|
166
|
+
$remainder: $remainder - $divisor;
|
|
167
|
+
$quotient: $quotient + 1;
|
|
168
|
+
}
|
|
169
|
+
$result: $result * 10 + $quotient;
|
|
170
|
+
$factor: $factor * .1;
|
|
171
|
+
$remainder: $remainder * 10;
|
|
172
|
+
$precision: $precision - 1;
|
|
173
|
+
@if ($precision < 0 and $remainder >= $divisor * 5) {
|
|
174
|
+
$result: $result + 1;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
$result: $result * $factor * $sign;
|
|
178
|
+
$dividend-unit: unit($dividend);
|
|
179
|
+
$divisor-unit: unit($divisor);
|
|
180
|
+
$unit-map: (
|
|
181
|
+
"px": 1px,
|
|
182
|
+
"rem": 1rem,
|
|
183
|
+
"em": 1em,
|
|
184
|
+
"%": 1%
|
|
185
|
+
);
|
|
186
|
+
@if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
|
|
187
|
+
$result: $result * map-get($unit-map, $dividend-unit);
|
|
188
|
+
}
|
|
189
|
+
@return $result;
|
|
190
|
+
}
|
|
@@ -4,11 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
@if $enable-grid-classes {
|
|
6
6
|
// Single container class with breakpoint max-widths
|
|
7
|
-
.container
|
|
8
|
-
@include make-container();
|
|
9
|
-
@include make-container-max-widths();
|
|
10
|
-
}
|
|
11
|
-
|
|
7
|
+
.container,
|
|
12
8
|
// 100% wide container at all breakpoints
|
|
13
9
|
.container-fluid {
|
|
14
10
|
@include make-container();
|
|
@@ -25,11 +21,19 @@
|
|
|
25
21
|
max-width: $container-max-width;
|
|
26
22
|
}
|
|
27
23
|
|
|
24
|
+
// Extend each breakpoint which is smaller or equal to the current breakpoint
|
|
25
|
+
$extend-breakpoint: true;
|
|
26
|
+
|
|
28
27
|
@each $name, $width in $grid-breakpoints {
|
|
29
|
-
@if ($
|
|
28
|
+
@if ($extend-breakpoint) {
|
|
30
29
|
.container#{breakpoint-infix($name, $grid-breakpoints)} {
|
|
31
30
|
@extend %responsive-container-#{$breakpoint};
|
|
32
31
|
}
|
|
32
|
+
|
|
33
|
+
// Once the current breakpoint is reached, stop extending
|
|
34
|
+
@if ($breakpoint == $name) {
|
|
35
|
+
$extend-breakpoint: false;
|
|
36
|
+
}
|
|
33
37
|
}
|
|
34
38
|
}
|
|
35
39
|
}
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
> .custom-select,
|
|
17
17
|
> .custom-file {
|
|
18
18
|
position: relative; // For focus state's z-index
|
|
19
|
-
flex: 1 1
|
|
19
|
+
flex: 1 1 auto;
|
|
20
|
+
width: 1%;
|
|
20
21
|
min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size
|
|
21
22
|
margin-bottom: 0;
|
|
22
23
|
|
|
@@ -41,7 +42,6 @@
|
|
|
41
42
|
|
|
42
43
|
> .form-control,
|
|
43
44
|
> .custom-select {
|
|
44
|
-
&:not(:last-child) { @include border-right-radius(0); }
|
|
45
45
|
&:not(:first-child) { @include border-left-radius(0); }
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -55,6 +55,24 @@
|
|
|
55
55
|
&:not(:last-child) .custom-file-label::after { @include border-right-radius(0); }
|
|
56
56
|
&:not(:first-child) .custom-file-label { @include border-left-radius(0); }
|
|
57
57
|
}
|
|
58
|
+
|
|
59
|
+
&:not(.has-validation) {
|
|
60
|
+
> .form-control:not(:last-child),
|
|
61
|
+
> .custom-select:not(:last-child),
|
|
62
|
+
> .custom-file:not(:last-child) .custom-file-label,
|
|
63
|
+
> .custom-file:not(:last-child) .custom-file-label::after {
|
|
64
|
+
@include border-right-radius(0);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
&.has-validation {
|
|
69
|
+
> .form-control:nth-last-child(n + 3),
|
|
70
|
+
> .custom-select:nth-last-child(n + 3),
|
|
71
|
+
> .custom-file:nth-last-child(n + 3) .custom-file-label,
|
|
72
|
+
> .custom-file:nth-last-child(n + 3) .custom-file-label::after {
|
|
73
|
+
@include border-right-radius(0);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
58
76
|
}
|
|
59
77
|
|
|
60
78
|
|
|
@@ -174,8 +192,10 @@
|
|
|
174
192
|
|
|
175
193
|
.input-group > .input-group-prepend > .btn,
|
|
176
194
|
.input-group > .input-group-prepend > .input-group-text,
|
|
177
|
-
.input-group > .input-group-append:not(:last-child) > .btn,
|
|
178
|
-
.input-group > .input-group-append:not(:last-child) > .input-group-text,
|
|
195
|
+
.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .btn,
|
|
196
|
+
.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .input-group-text,
|
|
197
|
+
.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .btn,
|
|
198
|
+
.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .input-group-text,
|
|
179
199
|
.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
|
|
180
200
|
.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
|
|
181
201
|
@include border-right-radius(0);
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
// No need to set list-style: none; since .list-group-item is block level
|
|
10
10
|
padding-left: 0; // reset padding because ul and ol
|
|
11
11
|
margin-bottom: 0;
|
|
12
|
+
@include border-radius($list-group-border-radius);
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
|
|
@@ -46,15 +47,16 @@
|
|
|
46
47
|
display: block;
|
|
47
48
|
padding: $list-group-item-padding-y $list-group-item-padding-x;
|
|
48
49
|
color: $list-group-color;
|
|
50
|
+
text-decoration: if($link-decoration == none, null, none);
|
|
49
51
|
background-color: $list-group-bg;
|
|
50
52
|
border: $list-group-border-width solid $list-group-border-color;
|
|
51
53
|
|
|
52
54
|
&:first-child {
|
|
53
|
-
@include border-top-radius(
|
|
55
|
+
@include border-top-radius(inherit);
|
|
54
56
|
}
|
|
55
57
|
|
|
56
58
|
&:last-child {
|
|
57
|
-
@include border-bottom-radius(
|
|
59
|
+
@include border-bottom-radius(inherit);
|
|
58
60
|
}
|
|
59
61
|
|
|
60
62
|
&.disabled,
|
|
@@ -94,7 +96,7 @@
|
|
|
94
96
|
.list-group-horizontal#{$infix} {
|
|
95
97
|
flex-direction: row;
|
|
96
98
|
|
|
97
|
-
.list-group-item {
|
|
99
|
+
> .list-group-item {
|
|
98
100
|
&:first-child {
|
|
99
101
|
@include border-bottom-left-radius($list-group-border-radius);
|
|
100
102
|
@include border-top-right-radius(0);
|
|
@@ -109,7 +111,7 @@
|
|
|
109
111
|
margin-top: 0;
|
|
110
112
|
}
|
|
111
113
|
|
|
112
|
-
|
|
114
|
+
+ .list-group-item {
|
|
113
115
|
border-top-width: $list-group-border-width;
|
|
114
116
|
border-left-width: 0;
|
|
115
117
|
|
|
@@ -130,18 +132,12 @@
|
|
|
130
132
|
// useful within other components (e.g., cards).
|
|
131
133
|
|
|
132
134
|
.list-group-flush {
|
|
133
|
-
|
|
134
|
-
border-right-width: 0;
|
|
135
|
-
border-left-width: 0;
|
|
136
|
-
@include border-radius(0);
|
|
135
|
+
@include border-radius(0);
|
|
137
136
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
141
|
-
}
|
|
137
|
+
> .list-group-item {
|
|
138
|
+
border-width: 0 0 $list-group-border-width;
|
|
142
139
|
|
|
143
|
-
|
|
144
|
-
.list-group-item:last-child {
|
|
140
|
+
&:last-child {
|
|
145
141
|
border-bottom-width: 0;
|
|
146
142
|
}
|
|
147
143
|
}
|
|
@@ -83,6 +83,7 @@
|
|
|
83
83
|
&::before {
|
|
84
84
|
display: block; // IE10
|
|
85
85
|
height: subtract(100vh, $modal-dialog-margin * 2);
|
|
86
|
+
height: min-content; // Reset height to 0 except on IE
|
|
86
87
|
content: "";
|
|
87
88
|
}
|
|
88
89
|
|
|
@@ -174,16 +175,15 @@
|
|
|
174
175
|
flex-wrap: wrap;
|
|
175
176
|
align-items: center; // vertically center
|
|
176
177
|
justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items
|
|
177
|
-
padding: $modal-inner-padding - $modal-footer-margin-between
|
|
178
|
+
padding: $modal-inner-padding - $modal-footer-margin-between * .5;
|
|
178
179
|
border-top: $modal-footer-border-width solid $modal-footer-border-color;
|
|
179
180
|
@include border-bottom-radius($modal-content-inner-border-radius);
|
|
180
181
|
|
|
181
182
|
// Place margin between footer elements
|
|
182
183
|
// This solution is far from ideal because of the universal selector usage,
|
|
183
184
|
// but is needed to fix https://github.com/twbs/bootstrap/issues/24800
|
|
184
|
-
// stylelint-disable-next-line selector-max-universal
|
|
185
185
|
> * {
|
|
186
|
-
margin: $modal-footer-margin-between
|
|
186
|
+
margin: $modal-footer-margin-between * .5;
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
189
|
|
|
@@ -217,6 +217,7 @@
|
|
|
217
217
|
|
|
218
218
|
&::before {
|
|
219
219
|
height: subtract(100vh, $modal-dialog-margin-y-sm-up * 2);
|
|
220
|
+
height: min-content;
|
|
220
221
|
}
|
|
221
222
|
}
|
|
222
223
|
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
.nav-link {
|
|
15
15
|
display: block;
|
|
16
16
|
padding: $nav-link-padding-y $nav-link-padding-x;
|
|
17
|
+
text-decoration: if($link-decoration == none, null, none);
|
|
17
18
|
|
|
18
19
|
@include hover-focus() {
|
|
19
20
|
text-decoration: none;
|
|
@@ -34,15 +35,15 @@
|
|
|
34
35
|
.nav-tabs {
|
|
35
36
|
border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;
|
|
36
37
|
|
|
37
|
-
.nav-item {
|
|
38
|
-
margin-bottom: -$nav-tabs-border-width;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
38
|
.nav-link {
|
|
39
|
+
margin-bottom: -$nav-tabs-border-width;
|
|
40
|
+
background-color: transparent;
|
|
42
41
|
border: $nav-tabs-border-width solid transparent;
|
|
43
42
|
@include border-top-radius($nav-tabs-border-radius);
|
|
44
43
|
|
|
45
44
|
@include hover-focus() {
|
|
45
|
+
// Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link
|
|
46
|
+
isolation: isolate;
|
|
46
47
|
border-color: $nav-tabs-link-hover-border-color;
|
|
47
48
|
}
|
|
48
49
|
|
|
@@ -75,6 +76,8 @@
|
|
|
75
76
|
|
|
76
77
|
.nav-pills {
|
|
77
78
|
.nav-link {
|
|
79
|
+
background: none;
|
|
80
|
+
border: 0;
|
|
78
81
|
@include border-radius($nav-pills-border-radius);
|
|
79
82
|
}
|
|
80
83
|
|
|
@@ -91,6 +94,7 @@
|
|
|
91
94
|
//
|
|
92
95
|
|
|
93
96
|
.nav-fill {
|
|
97
|
+
> .nav-link,
|
|
94
98
|
.nav-item {
|
|
95
99
|
flex: 1 1 auto;
|
|
96
100
|
text-align: center;
|
|
@@ -98,6 +102,7 @@
|
|
|
98
102
|
}
|
|
99
103
|
|
|
100
104
|
.nav-justified {
|
|
105
|
+
> .nav-link,
|
|
101
106
|
.nav-item {
|
|
102
107
|
flex-basis: 0;
|
|
103
108
|
flex-grow: 1;
|
|
@@ -136,8 +136,12 @@
|
|
|
136
136
|
height: 1.5em;
|
|
137
137
|
vertical-align: middle;
|
|
138
138
|
content: "";
|
|
139
|
-
background: no-repeat
|
|
140
|
-
|
|
139
|
+
background: 50% / 100% 100% no-repeat;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.navbar-nav-scroll {
|
|
143
|
+
max-height: $navbar-nav-scroll-max-height;
|
|
144
|
+
overflow-y: auto;
|
|
141
145
|
}
|
|
142
146
|
|
|
143
147
|
// Generate series of `.navbar-expand-*` responsive classes for configuring
|
|
@@ -199,6 +203,10 @@
|
|
|
199
203
|
}
|
|
200
204
|
}
|
|
201
205
|
|
|
206
|
+
.navbar-nav-scroll {
|
|
207
|
+
overflow: visible;
|
|
208
|
+
}
|
|
209
|
+
|
|
202
210
|
.navbar-collapse {
|
|
203
211
|
display: flex !important; // stylelint-disable-line declaration-no-important
|
|
204
212
|
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
margin-left: -$pagination-border-width;
|
|
12
12
|
line-height: $pagination-line-height;
|
|
13
13
|
color: $pagination-color;
|
|
14
|
+
text-decoration: if($link-decoration == none, null, none);
|
|
14
15
|
background-color: $pagination-bg;
|
|
15
16
|
border: $pagination-border-width solid $pagination-border-color;
|
|
16
17
|
|
|
@@ -65,9 +66,9 @@
|
|
|
65
66
|
//
|
|
66
67
|
|
|
67
68
|
.pagination-lg {
|
|
68
|
-
@include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $border-radius-lg);
|
|
69
|
+
@include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $pagination-border-radius-lg);
|
|
69
70
|
}
|
|
70
71
|
|
|
71
72
|
.pagination-sm {
|
|
72
|
-
@include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $border-radius-sm);
|
|
73
|
+
@include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $pagination-border-radius-sm);
|
|
73
74
|
}
|