bootstrap-scss 4.4.1 → 4.5.3

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.
package/LICENSE CHANGED
@@ -1,22 +1,22 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2011-2019 Twitter, Inc.
4
- Copyright (c) 2011-2019 The Bootstrap Authors
5
-
6
- Permission is hereby granted, free of charge, to any person obtaining a copy
7
- of this software and associated documentation files (the "Software"), to deal
8
- in the Software without restriction, including without limitation the rights
9
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- copies of the Software, and to permit persons to whom the Software is
11
- furnished to do so, subject to the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be included in
14
- all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
- THE SOFTWARE.
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2011-2020 Twitter, Inc.
4
+ Copyright (c) 2011-2020 The Bootstrap Authors
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in
14
+ all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ THE SOFTWARE.
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  <p align="center">
6
6
  <a href="https://getbootstrap.com/">
7
- <img src="https://getbootstrap.com/docs/4.4/assets/brand/bootstrap-solid.svg" alt="Bootstrap logo" width="72" height="72">
7
+ <img src="https://getbootstrap.com/docs/4.5/assets/brand/bootstrap-solid.svg" alt="Bootstrap logo" width="72" height="72">
8
8
  </a>
9
9
  </p>
10
10
 
@@ -13,7 +13,7 @@
13
13
  <p align="center">
14
14
  Sleek, intuitive, and powerful front-end framework for faster and easier web development.
15
15
  <br>
16
- <a href="https://getbootstrap.com/docs/4.4/"><strong>Explore Bootstrap docs »</strong></a>
16
+ <a href="https://getbootstrap.com/docs/4.5/"><strong>Explore Bootstrap docs »</strong></a>
17
17
  <br>
18
18
  <br>
19
19
  <a href="https://github.com/twbs/bootstrap/issues/new?template=bug.md">Report bug</a>
@@ -40,10 +40,10 @@
40
40
 
41
41
  Several quick start options are available:
42
42
 
43
- - Install with [npm](https://www.npmjs.com/): `npm install bootstrap-scss@4.4.1`
44
- - Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap-scss@4.4.1`
43
+ - Install with [npm](https://www.npmjs.com/): `npm install bootstrap-scss@4.5.3`
44
+ - Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap-scss@4.5.3`
45
45
 
46
- Read the [Getting started page](https://getbootstrap.com/docs/4.4/getting-started/introduction/) for information on the framework contents, templates and examples, and more.
46
+ Read the [Getting started page](https://getbootstrap.com/docs/4.5/getting-started/introduction/) for information on the framework contents, templates and examples, and more.
47
47
 
48
48
  ## Status
49
49
 
@@ -76,8 +76,8 @@ For simplicity, this project will use the same version numbers as Bootstrap.
76
76
 
77
77
  ## Changelog
78
78
 
79
- https://blog.getbootstrap.com/2019/11/28/bootstrap-4-4-1/
79
+ https://blog.getbootstrap.com/2020/10/13/bootstrap-4-5-3/
80
80
 
81
81
  ## Copyright and license
82
82
 
83
- Code and documentation copyright 2011-2019 the [Bootstrap Authors](https://github.com/twbs/bootstrap/graphs/contributors) and [Twitter, Inc.](https://twitter.com) Code released under the [MIT License](https://github.com/twbs/bootstrap/blob/master/LICENSE).
83
+ Code and documentation copyright 2011-2020 the [Bootstrap Authors](https://github.com/twbs/bootstrap/graphs/contributors) and [Twitter, Inc.](https://twitter.com) Code released under the [MIT License](https://github.com/twbs/bootstrap/blob/master/LICENSE).
package/_alert.scss CHANGED
@@ -34,6 +34,7 @@
34
34
  position: absolute;
35
35
  top: 0;
36
36
  right: 0;
37
+ z-index: 2;
37
38
  padding: $alert-padding-y $alert-padding-x;
38
39
  color: inherit;
39
40
  }
package/_breadcrumb.scss CHANGED
@@ -10,6 +10,8 @@
10
10
  }
11
11
 
12
12
  .breadcrumb-item {
13
+ display: flex;
14
+
13
15
  // The separator between breadcrumbs (by default, a forward-slash: "/")
14
16
  + .breadcrumb-item {
15
17
  padding-left: $breadcrumb-item-padding;
package/_buttons.scss CHANGED
@@ -10,9 +10,9 @@
10
10
  font-weight: $btn-font-weight;
11
11
  color: $body-color;
12
12
  text-align: center;
13
+ text-decoration: if($link-decoration == none, null, none);
13
14
  white-space: $btn-white-space;
14
15
  vertical-align: middle;
15
- cursor: if($enable-pointer-cursor-for-buttons, pointer, null);
16
16
  user-select: none;
17
17
  background-color: transparent;
18
18
  border: $btn-border-width solid transparent;
@@ -37,12 +37,16 @@
37
37
  @include box-shadow(none);
38
38
  }
39
39
 
40
- &:not(:disabled):not(.disabled):active,
41
- &:not(:disabled):not(.disabled).active {
42
- @include box-shadow($btn-active-box-shadow);
40
+ &:not(:disabled):not(.disabled) {
41
+ cursor: if($enable-pointer-cursor-for-buttons, pointer, null);
43
42
 
44
- &:focus {
45
- @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);
43
+ &:active,
44
+ &.active {
45
+ @include box-shadow($btn-active-box-shadow);
46
+
47
+ &:focus {
48
+ @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);
49
+ }
46
50
  }
47
51
  }
48
52
  }
@@ -89,7 +93,6 @@ fieldset:disabled a.btn {
89
93
  &:focus,
90
94
  &.focus {
91
95
  text-decoration: $link-hover-decoration;
92
- box-shadow: none;
93
96
  }
94
97
 
95
98
  &:disabled,
package/_card.scss CHANGED
@@ -19,17 +19,27 @@
19
19
  margin-left: 0;
20
20
  }
21
21
 
22
- > .list-group:first-child {
23
- .list-group-item:first-child {
24
- @include border-top-radius($card-border-radius);
22
+ > .list-group {
23
+ border-top: inherit;
24
+ border-bottom: inherit;
25
+
26
+ &:first-child {
27
+ border-top-width: 0;
28
+ @include border-top-radius($card-inner-border-radius);
25
29
  }
26
- }
27
30
 
28
- > .list-group:last-child {
29
- .list-group-item:last-child {
30
- @include border-bottom-radius($card-border-radius);
31
+ &:last-child {
32
+ border-bottom-width: 0;
33
+ @include border-bottom-radius($card-inner-border-radius);
31
34
  }
32
35
  }
36
+
37
+ // Due to specificity of the above selector (`.card > .list-group`), we must
38
+ // use a child selector here to prevent double borders.
39
+ > .card-header + .list-group,
40
+ > .list-group + .card-footer {
41
+ border-top: 0;
42
+ }
33
43
  }
34
44
 
35
45
  .card-body {
@@ -80,16 +90,11 @@
80
90
  &:first-child {
81
91
  @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);
82
92
  }
83
-
84
- + .list-group {
85
- .list-group-item:first-child {
86
- border-top: 0;
87
- }
88
- }
89
93
  }
90
94
 
91
95
  .card-footer {
92
96
  padding: $card-spacer-y $card-spacer-x;
97
+ color: $card-cap-color;
93
98
  background-color: $card-cap-bg;
94
99
  border-top: $card-border-width solid $card-border-color;
95
100
 
@@ -123,6 +128,7 @@
123
128
  bottom: 0;
124
129
  left: 0;
125
130
  padding: $card-img-overlay-padding;
131
+ @include border-radius($card-inner-border-radius);
126
132
  }
127
133
 
128
134
  .card-img,
@@ -200,12 +206,12 @@
200
206
 
201
207
  .card-img-top,
202
208
  .card-header {
203
- // stylelint-disable-next-line property-blacklist
209
+ // stylelint-disable-next-line property-disallowed-list
204
210
  border-top-right-radius: 0;
205
211
  }
206
212
  .card-img-bottom,
207
213
  .card-footer {
208
- // stylelint-disable-next-line property-blacklist
214
+ // stylelint-disable-next-line property-disallowed-list
209
215
  border-bottom-right-radius: 0;
210
216
  }
211
217
  }
@@ -215,12 +221,12 @@
215
221
 
216
222
  .card-img-top,
217
223
  .card-header {
218
- // stylelint-disable-next-line property-blacklist
224
+ // stylelint-disable-next-line property-disallowed-list
219
225
  border-top-left-radius: 0;
220
226
  }
221
227
  .card-img-bottom,
222
228
  .card-footer {
223
- // stylelint-disable-next-line property-blacklist
229
+ // stylelint-disable-next-line property-disallowed-list
224
230
  border-bottom-left-radius: 0;
225
231
  }
226
232
  }
@@ -258,6 +264,8 @@
258
264
  //
259
265
 
260
266
  .accordion {
267
+ overflow-anchor: none;
268
+
261
269
  > .card {
262
270
  overflow: hidden;
263
271
 
package/_close.scss CHANGED
@@ -30,7 +30,6 @@ button.close {
30
30
  padding: 0;
31
31
  background-color: transparent;
32
32
  border: 0;
33
- appearance: none;
34
33
  }
35
34
 
36
35
  // Future-proof disabling of clicks on `<a>` elements
@@ -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
+ color-adjust: exact; // Keep themed appearance for print
15
17
  }
16
18
 
17
19
  .custom-control-inline {
@@ -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, $input-focus-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
  }
@@ -135,10 +137,10 @@
135
137
 
136
138
  .custom-control-input:disabled {
137
139
  &:checked ~ .custom-control-label::before {
138
- background-color: $custom-control-indicator-checked-disabled-bg;
140
+ @include gradient-bg($custom-control-indicator-checked-disabled-bg);
139
141
  }
140
142
  &:indeterminate ~ .custom-control-label::before {
141
- background-color: $custom-control-indicator-checked-disabled-bg;
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-blacklist
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
- background-color: $custom-control-indicator-checked-disabled-bg;
166
+ @include gradient-bg($custom-control-indicator-checked-disabled-bg);
165
167
  }
166
168
  }
167
169
  }
@@ -179,7 +181,7 @@
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-blacklist
184
+ // stylelint-disable-next-line property-disallowed-list
183
185
  border-radius: $custom-switch-indicator-border-radius;
184
186
  }
185
187
 
@@ -189,7 +191,7 @@
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-blacklist
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
- background-color: $custom-control-indicator-checked-disabled-bg;
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: $custom-select-box-shadow, $custom-select-focus-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
 
package/_dropdown.scss CHANGED
@@ -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 0;
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;
@@ -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-padding-y $dropdown-item-padding-x;
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;
package/_forms.scss CHANGED
@@ -59,6 +59,15 @@
59
59
  }
60
60
  }
61
61
 
62
+ input[type="date"],
63
+ input[type="time"],
64
+ input[type="datetime-local"],
65
+ input[type="month"] {
66
+ &.form-control {
67
+ appearance: none; // Fix appearance for date inputs in Safari
68
+ }
69
+ }
70
+
62
71
  select.form-control {
63
72
  &:focus::-ms-value {
64
73
  // Suppress the nested default white text on blue background highlight given to
package/_functions.scss CHANGED
@@ -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
- $values: map-values($map);
27
- $first-value: nth($values, 1);
28
- @if $first-value != 0 {
29
- @warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.";
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
- $string: str-replace($string, $char, $encoded);
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
 
package/_grid.scss CHANGED
@@ -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 ($container-max-width > $width or $breakpoint == $name) {
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
  }
package/_input-group.scss CHANGED
@@ -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 0%;
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
 
package/_list-group.scss CHANGED
@@ -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($list-group-border-radius);
55
+ @include border-top-radius(inherit);
54
56
  }
55
57
 
56
58
  &:last-child {
57
- @include border-bottom-radius($list-group-border-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
- & + .list-group-item {
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
- .list-group-item {
134
- border-right-width: 0;
135
- border-left-width: 0;
136
- @include border-radius(0);
135
+ @include border-radius(0);
137
136
 
138
- &:first-child {
139
- border-top-width: 0;
140
- }
141
- }
137
+ > .list-group-item {
138
+ border-width: 0 0 $list-group-border-width;
142
139
 
143
- &:last-child {
144
- .list-group-item:last-child {
140
+ &:last-child {
145
141
  border-bottom-width: 0;
146
142
  }
147
143
  }
package/_modal.scss CHANGED
@@ -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
 
@@ -181,7 +182,6 @@
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
186
  margin: $modal-footer-margin-between / 2;
187
187
  }
@@ -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
 
package/_nav.scss CHANGED
@@ -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;
@@ -91,6 +92,7 @@
91
92
  //
92
93
 
93
94
  .nav-fill {
95
+ > .nav-link,
94
96
  .nav-item {
95
97
  flex: 1 1 auto;
96
98
  text-align: center;
@@ -98,6 +100,7 @@
98
100
  }
99
101
 
100
102
  .nav-justified {
103
+ > .nav-link,
101
104
  .nav-item {
102
105
  flex-basis: 0;
103
106
  flex-grow: 1;
package/_pagination.scss CHANGED
@@ -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
 
package/_progress.scss CHANGED
@@ -10,6 +10,7 @@
10
10
  display: flex;
11
11
  height: $progress-height;
12
12
  overflow: hidden; // force rounded corners by cropping it
13
+ line-height: 0;
13
14
  @include font-size($progress-font-size);
14
15
  background-color: $progress-bg;
15
16
  @include border-radius($progress-border-radius);
package/_reboot.scss CHANGED
@@ -199,7 +199,7 @@ a {
199
199
  // causes specificity issues in many other styles that are too complex to fix.
200
200
  // See https://github.com/twbs/bootstrap/issues/19402
201
201
 
202
- a:not([href]) {
202
+ a:not([href]):not([class]) {
203
203
  color: inherit;
204
204
  text-decoration: none;
205
205
 
@@ -229,6 +229,9 @@ pre {
229
229
  margin-bottom: 1rem;
230
230
  // Don't allow content to break outside
231
231
  overflow: auto;
232
+ // Disable auto-hiding scrollbar in IE & legacy Edge to avoid overlap,
233
+ // making it impossible to interact with the content
234
+ -ms-overflow-style: scrollbar;
232
235
  }
233
236
 
234
237
 
@@ -275,10 +278,14 @@ caption {
275
278
  caption-side: bottom;
276
279
  }
277
280
 
281
+ // 1. Removes font-weight bold by inheriting
282
+ // 2. Matches default `<td>` alignment by inheriting `text-align`.
283
+ // 3. Fix alignment for Safari
284
+
278
285
  th {
279
- // Matches default `<td>` alignment by inheriting from the `<body>`, or the
280
- // closest parent with a set `text-align`.
281
- text-align: inherit;
286
+ font-weight: $table-th-font-weight; // 1
287
+ text-align: inherit; // 2
288
+ text-align: -webkit-match-parent; // 3
282
289
  }
283
290
 
284
291
 
@@ -296,7 +303,7 @@ label {
296
303
  //
297
304
  // Details at https://github.com/twbs/bootstrap/issues/24093
298
305
  button {
299
- // stylelint-disable-next-line property-blacklist
306
+ // stylelint-disable-next-line property-disallowed-list
300
307
  border-radius: 0;
301
308
  }
302
309
 
@@ -330,6 +337,13 @@ select {
330
337
  text-transform: none; // Remove the inheritance of text transform in Firefox
331
338
  }
332
339
 
340
+ // Set the cursor for non-`<button>` buttons
341
+ //
342
+ // Details at https://github.com/twbs/bootstrap/pull/30562
343
+ [role="button"] {
344
+ cursor: pointer;
345
+ }
346
+
333
347
  // Remove the inheritance of word-wrap in Safari.
334
348
  //
335
349
  // Details at https://github.com/twbs/bootstrap/issues/24990
@@ -376,18 +390,6 @@ input[type="checkbox"] {
376
390
  }
377
391
 
378
392
 
379
- input[type="date"],
380
- input[type="time"],
381
- input[type="datetime-local"],
382
- input[type="month"] {
383
- // Remove the default appearance of temporal inputs to avoid a Mobile Safari
384
- // bug where setting a custom line-height prevents text from being vertically
385
- // centered within the input.
386
- // See https://bugs.webkit.org/show_bug.cgi?id=139848
387
- // and https://github.com/twbs/bootstrap/issues/11266
388
- -webkit-appearance: listbox;
389
- }
390
-
391
393
  textarea {
392
394
  overflow: auto; // Remove the default vertical scrollbar in IE.
393
395
  // Textareas should really only resize vertically so they don't break their (horizontal) containers.
package/_spinners.scss CHANGED
@@ -13,7 +13,7 @@
13
13
  vertical-align: text-bottom;
14
14
  border: $spinner-border-width solid currentColor;
15
15
  border-right-color: transparent;
16
- // stylelint-disable-next-line property-blacklist
16
+ // stylelint-disable-next-line property-disallowed-list
17
17
  border-radius: 50%;
18
18
  animation: spinner-border .75s linear infinite;
19
19
  }
@@ -34,6 +34,7 @@
34
34
  }
35
35
  50% {
36
36
  opacity: 1;
37
+ transform: none;
37
38
  }
38
39
  }
39
40
 
@@ -43,7 +44,7 @@
43
44
  height: $spinner-height;
44
45
  vertical-align: text-bottom;
45
46
  background-color: currentColor;
46
- // stylelint-disable-next-line property-blacklist
47
+ // stylelint-disable-next-line property-disallowed-list
47
48
  border-radius: 50%;
48
49
  opacity: 0;
49
50
  animation: spinner-grow .75s linear infinite;
package/_toasts.scss CHANGED
@@ -1,13 +1,14 @@
1
1
  .toast {
2
+ // Prevents from shrinking in IE11, when in a flex container
3
+ // See https://github.com/twbs/bootstrap/issues/28341
4
+ flex-basis: $toast-max-width;
2
5
  max-width: $toast-max-width;
3
- overflow: hidden; // cheap rounded corners on nested items
4
6
  @include font-size($toast-font-size);
5
7
  color: $toast-color;
6
8
  background-color: $toast-background-color;
7
9
  background-clip: padding-box;
8
10
  border: $toast-border-width solid $toast-border-color;
9
11
  box-shadow: $toast-box-shadow;
10
- backdrop-filter: blur(10px);
11
12
  opacity: 0;
12
13
  @include border-radius($toast-border-radius);
13
14
 
@@ -37,6 +38,7 @@
37
38
  background-color: $toast-header-background-color;
38
39
  background-clip: padding-box;
39
40
  border-bottom: $toast-border-width solid $toast-header-border-color;
41
+ @include border-top-radius(subtract($toast-border-radius, $toast-border-width));
40
42
  }
41
43
 
42
44
  .toast-body {
package/_utilities.scss CHANGED
@@ -6,12 +6,13 @@
6
6
  @import "utilities/embed";
7
7
  @import "utilities/flex";
8
8
  @import "utilities/float";
9
+ @import "utilities/interactions";
9
10
  @import "utilities/overflow";
10
11
  @import "utilities/position";
11
12
  @import "utilities/screenreaders";
12
13
  @import "utilities/shadows";
13
14
  @import "utilities/sizing";
14
- @import "utilities/stretched-link";
15
15
  @import "utilities/spacing";
16
+ @import "utilities/stretched-link";
16
17
  @import "utilities/text";
17
18
  @import "utilities/visibility";
package/_variables.scss CHANGED
@@ -18,7 +18,6 @@ $gray-900: #212529 !default;
18
18
  $black: #000 !default;
19
19
 
20
20
  $grays: () !default;
21
- // stylelint-disable-next-line scss/dollar-variable-default
22
21
  $grays: map-merge(
23
22
  (
24
23
  "100": $gray-100,
@@ -46,7 +45,6 @@ $teal: #20c997 !default;
46
45
  $cyan: #17a2b8 !default;
47
46
 
48
47
  $colors: () !default;
49
- // stylelint-disable-next-line scss/dollar-variable-default
50
48
  $colors: map-merge(
51
49
  (
52
50
  "blue": $blue,
@@ -76,7 +74,6 @@ $light: $gray-100 !default;
76
74
  $dark: $gray-800 !default;
77
75
 
78
76
  $theme-colors: () !default;
79
- // stylelint-disable-next-line scss/dollar-variable-default
80
77
  $theme-colors: map-merge(
81
78
  (
82
79
  "primary": $primary,
@@ -103,9 +100,11 @@ $yiq-text-light: $white !default;
103
100
 
104
101
  // Characters which are escaped by the escape-svg function
105
102
  $escaped-characters: (
106
- ("<","%3c"),
107
- (">","%3e"),
108
- ("#","%23"),
103
+ ("<", "%3c"),
104
+ (">", "%3e"),
105
+ ("#", "%23"),
106
+ ("(", "%28"),
107
+ (")", "%29"),
109
108
  ) !default;
110
109
 
111
110
 
@@ -136,7 +135,6 @@ $enable-deprecation-messages: true !default;
136
135
 
137
136
  $spacer: 1rem !default;
138
137
  $spacers: () !default;
139
- // stylelint-disable-next-line scss/dollar-variable-default
140
138
  $spacers: map-merge(
141
139
  (
142
140
  0: 0,
@@ -151,7 +149,6 @@ $spacers: map-merge(
151
149
 
152
150
  // This variable affects the `.h-*` and `.w-*` classes.
153
151
  $sizes: () !default;
154
- // stylelint-disable-next-line scss/dollar-variable-default
155
152
  $sizes: map-merge(
156
153
  (
157
154
  25: 25%,
@@ -262,7 +259,6 @@ $transition-fade: opacity .15s linear !default;
262
259
  $transition-collapse: height .35s ease !default;
263
260
 
264
261
  $embed-responsive-aspect-ratios: () !default;
265
- // stylelint-disable-next-line scss/dollar-variable-default
266
262
  $embed-responsive-aspect-ratios: join(
267
263
  (
268
264
  (21 9),
@@ -367,6 +363,7 @@ $table-border-color: $border-color !default;
367
363
 
368
364
  $table-head-bg: $gray-200 !default;
369
365
  $table-head-color: $gray-700 !default;
366
+ $table-th-font-weight: null !default;
370
367
 
371
368
  $table-dark-color: $white !default;
372
369
  $table-dark-bg: $gray-800 !default;
@@ -544,7 +541,7 @@ $custom-control-label-disabled-color: $gray-600 !default;
544
541
  $custom-control-indicator-checked-color: $component-active-color !default;
545
542
  $custom-control-indicator-checked-bg: $component-active-bg !default;
546
543
  $custom-control-indicator-checked-disabled-bg: rgba(theme-color("primary"), .5) !default;
547
- $custom-control-indicator-checked-box-shadow: none !default;
544
+ $custom-control-indicator-checked-box-shadow: null !default;
548
545
  $custom-control-indicator-checked-border-color: $custom-control-indicator-checked-bg !default;
549
546
 
550
547
  $custom-control-indicator-focus-box-shadow: $input-focus-box-shadow !default;
@@ -552,7 +549,7 @@ $custom-control-indicator-focus-border-color: $input-focus-border-color !defau
552
549
 
553
550
  $custom-control-indicator-active-color: $component-active-color !default;
554
551
  $custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;
555
- $custom-control-indicator-active-box-shadow: none !default;
552
+ $custom-control-indicator-active-box-shadow: null !default;
556
553
  $custom-control-indicator-active-border-color: $custom-control-indicator-active-bg !default;
557
554
 
558
555
  $custom-checkbox-indicator-border-radius: $border-radius !default;
@@ -561,7 +558,7 @@ $custom-checkbox-indicator-icon-checked: url("data:image/svg+xml,<svg xml
561
558
  $custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;
562
559
  $custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;
563
560
  $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;
564
- $custom-checkbox-indicator-indeterminate-box-shadow: none !default;
561
+ $custom-checkbox-indicator-indeterminate-box-shadow: null !default;
565
562
  $custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicator-indeterminate-bg !default;
566
563
 
567
564
  $custom-radio-indicator-border-radius: 50% !default;
@@ -666,7 +663,6 @@ $form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;
666
663
  $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;
667
664
 
668
665
  $form-validation-states: () !default;
669
- // stylelint-disable-next-line scss/dollar-variable-default
670
666
  $form-validation-states: map-merge(
671
667
  (
672
668
  "valid": (
@@ -760,6 +756,7 @@ $navbar-dark-brand-hover-color: $navbar-dark-active-color !default;
760
756
  // Dropdown menu container and contents.
761
757
 
762
758
  $dropdown-min-width: 10rem !default;
759
+ $dropdown-padding-x: 0 !default;
763
760
  $dropdown-padding-y: .5rem !default;
764
761
  $dropdown-spacer: .125rem !default;
765
762
  $dropdown-font-size: $font-size-base !default;
@@ -786,6 +783,7 @@ $dropdown-item-padding-y: .25rem !default;
786
783
  $dropdown-item-padding-x: 1.5rem !default;
787
784
 
788
785
  $dropdown-header-color: $gray-600 !default;
786
+ $dropdown-header-padding: $dropdown-padding-y $dropdown-item-padding-x !default;
789
787
 
790
788
 
791
789
  // Pagination
@@ -1135,6 +1133,7 @@ $pre-scrollable-max-height: 340px !default;
1135
1133
  $displays: none, inline, inline-block, block, table, table-row, table-cell, flex, inline-flex !default;
1136
1134
  $overflows: auto, hidden !default;
1137
1135
  $positions: static, relative, absolute, fixed, sticky !default;
1136
+ $user-selects: all, auto, none !default;
1138
1137
 
1139
1138
 
1140
1139
  // Printing
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Bootstrap Grid v4.4.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 The Bootstrap Authors
4
- * Copyright 2011-2019 Twitter, Inc.
5
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2
+ * Bootstrap Grid v4.5.3 (https://getbootstrap.com/)
3
+ * Copyright 2011-2020 The Bootstrap Authors
4
+ * Copyright 2011-2020 Twitter, Inc.
5
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6
6
  */
7
7
 
8
8
  html {
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Bootstrap Reboot v4.4.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 The Bootstrap Authors
4
- * Copyright 2011-2019 Twitter, Inc.
5
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2
+ * Bootstrap Reboot v4.5.3 (https://getbootstrap.com/)
3
+ * Copyright 2011-2020 The Bootstrap Authors
4
+ * Copyright 2011-2020 Twitter, Inc.
5
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6
6
  * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
7
7
  */
8
8
 
package/bootstrap.scss CHANGED
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Bootstrap v4.4.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 The Bootstrap Authors
4
- * Copyright 2011-2019 Twitter, Inc.
5
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2
+ * Bootstrap v4.5.3 (https://getbootstrap.com/)
3
+ * Copyright 2011-2020 The Bootstrap Authors
4
+ * Copyright 2011-2020 Twitter, Inc.
5
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6
6
  */
7
7
 
8
8
  @import "functions";
@@ -15,8 +15,9 @@
15
15
  @include deprecate("The `bg-variant` mixin", "v4.4.0", "v5", $ignore-warning);
16
16
  }
17
17
 
18
- @mixin bg-gradient-variant($parent, $color) {
18
+ @mixin bg-gradient-variant($parent, $color, $ignore-warning: false) {
19
19
  #{$parent} {
20
20
  background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;
21
21
  }
22
+ @include deprecate("The `bg-gradient-variant` mixin", "v4.5.0", "v5", $ignore-warning);
22
23
  }
@@ -1,9 +1,22 @@
1
- // stylelint-disable property-blacklist
1
+ // stylelint-disable property-disallowed-list
2
2
  // Single side border-radius
3
3
 
4
+ // Helper function to replace negative values with 0
5
+ @function valid-radius($radius) {
6
+ $return: ();
7
+ @each $value in $radius {
8
+ @if type-of($value) == number {
9
+ $return: append($return, max($value, 0));
10
+ } @else {
11
+ $return: append($return, $value);
12
+ }
13
+ }
14
+ @return $return;
15
+ }
16
+
4
17
  @mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {
5
18
  @if $enable-rounded {
6
- border-radius: $radius;
19
+ border-radius: valid-radius($radius);
7
20
  }
8
21
  @else if $fallback-border-radius != false {
9
22
  border-radius: $fallback-border-radius;
@@ -12,52 +25,52 @@
12
25
 
13
26
  @mixin border-top-radius($radius) {
14
27
  @if $enable-rounded {
15
- border-top-left-radius: $radius;
16
- border-top-right-radius: $radius;
28
+ border-top-left-radius: valid-radius($radius);
29
+ border-top-right-radius: valid-radius($radius);
17
30
  }
18
31
  }
19
32
 
20
33
  @mixin border-right-radius($radius) {
21
34
  @if $enable-rounded {
22
- border-top-right-radius: $radius;
23
- border-bottom-right-radius: $radius;
35
+ border-top-right-radius: valid-radius($radius);
36
+ border-bottom-right-radius: valid-radius($radius);
24
37
  }
25
38
  }
26
39
 
27
40
  @mixin border-bottom-radius($radius) {
28
41
  @if $enable-rounded {
29
- border-bottom-right-radius: $radius;
30
- border-bottom-left-radius: $radius;
42
+ border-bottom-right-radius: valid-radius($radius);
43
+ border-bottom-left-radius: valid-radius($radius);
31
44
  }
32
45
  }
33
46
 
34
47
  @mixin border-left-radius($radius) {
35
48
  @if $enable-rounded {
36
- border-top-left-radius: $radius;
37
- border-bottom-left-radius: $radius;
49
+ border-top-left-radius: valid-radius($radius);
50
+ border-bottom-left-radius: valid-radius($radius);
38
51
  }
39
52
  }
40
53
 
41
54
  @mixin border-top-left-radius($radius) {
42
55
  @if $enable-rounded {
43
- border-top-left-radius: $radius;
56
+ border-top-left-radius: valid-radius($radius);
44
57
  }
45
58
  }
46
59
 
47
60
  @mixin border-top-right-radius($radius) {
48
61
  @if $enable-rounded {
49
- border-top-right-radius: $radius;
62
+ border-top-right-radius: valid-radius($radius);
50
63
  }
51
64
  }
52
65
 
53
66
  @mixin border-bottom-right-radius($radius) {
54
67
  @if $enable-rounded {
55
- border-bottom-right-radius: $radius;
68
+ border-bottom-right-radius: valid-radius($radius);
56
69
  }
57
70
  }
58
71
 
59
72
  @mixin border-bottom-left-radius($radius) {
60
73
  @if $enable-rounded {
61
- border-bottom-left-radius: $radius;
74
+ border-bottom-left-radius: valid-radius($radius);
62
75
  }
63
76
  }
@@ -20,10 +20,10 @@
20
20
  color: color-yiq($hover-background);
21
21
  @include gradient-bg($hover-background);
22
22
  border-color: $hover-border;
23
- // Avoid using mixin so we can pass custom focus shadow properly
24
23
  @if $enable-shadows {
25
- box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
24
+ @include box-shadow($btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5));
26
25
  } @else {
26
+ // Avoid using mixin so we can pass custom focus shadow properly
27
27
  box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
28
28
  }
29
29
  }
@@ -51,10 +51,10 @@
51
51
  border-color: $active-border;
52
52
 
53
53
  &:focus {
54
- // Avoid using mixin so we can pass custom focus shadow properly
55
54
  @if $enable-shadows and $btn-active-box-shadow != none {
56
- box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
55
+ @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5));
57
56
  } @else {
57
+ // Avoid using mixin so we can pass custom focus shadow properly
58
58
  box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
59
59
  }
60
60
  }
@@ -90,10 +90,10 @@
90
90
  border-color: $active-border;
91
91
 
92
92
  &:focus {
93
- // Avoid using mixin so we can pass custom focus shadow properly
94
93
  @if $enable-shadows and $btn-active-box-shadow != none {
95
- box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);
94
+ @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5));
96
95
  } @else {
96
+ // Avoid using mixin so we can pass custom focus shadow properly
97
97
  box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
98
98
  }
99
99
  }
@@ -16,10 +16,10 @@
16
16
  background-color: $input-focus-bg;
17
17
  border-color: $input-focus-border-color;
18
18
  outline: 0;
19
- // Avoid using mixin so we can pass custom focus shadow properly
20
19
  @if $enable-shadows {
21
- box-shadow: $input-box-shadow, $input-focus-box-shadow;
20
+ @include box-shadow($input-box-shadow, $input-focus-box-shadow);
22
21
  } @else {
22
+ // Avoid using mixin so we can pass custom focus shadow properly
23
23
  box-shadow: $input-focus-box-shadow;
24
24
  }
25
25
  }
@@ -53,6 +53,7 @@
53
53
  .#{$state}-tooltip {
54
54
  position: absolute;
55
55
  top: 100%;
56
+ left: 0;
56
57
  z-index: 5;
57
58
  display: none;
58
59
  max-width: 100%; // Contain to parent when possible
@@ -15,12 +15,15 @@
15
15
  @each $breakpoint in map-keys($breakpoints) {
16
16
  $infix: breakpoint-infix($breakpoint, $breakpoints);
17
17
 
18
- // Allow columns to stretch full width below their breakpoints
19
- @for $i from 1 through $columns {
20
- .col#{$infix}-#{$i} {
21
- @extend %grid-column;
18
+ @if $columns > 0 {
19
+ // Allow columns to stretch full width below their breakpoints
20
+ @for $i from 1 through $columns {
21
+ .col#{$infix}-#{$i} {
22
+ @extend %grid-column;
23
+ }
22
24
  }
23
25
  }
26
+
24
27
  .col#{$infix},
25
28
  .col#{$infix}-auto {
26
29
  @extend %grid-column;
@@ -34,9 +37,11 @@
34
37
  max-width: 100%;
35
38
  }
36
39
 
37
- @for $i from 1 through $grid-row-columns {
38
- .row-cols#{$infix}-#{$i} {
39
- @include row-cols($i);
40
+ @if $grid-row-columns > 0 {
41
+ @for $i from 1 through $grid-row-columns {
42
+ .row-cols#{$infix}-#{$i} {
43
+ @include row-cols($i);
44
+ }
40
45
  }
41
46
  }
42
47
 
@@ -44,9 +49,11 @@
44
49
  @include make-col-auto();
45
50
  }
46
51
 
47
- @for $i from 1 through $columns {
48
- .col#{$infix}-#{$i} {
49
- @include make-col($i, $columns);
52
+ @if $columns > 0 {
53
+ @for $i from 1 through $columns {
54
+ .col#{$infix}-#{$i} {
55
+ @include make-col($i, $columns);
56
+ }
50
57
  }
51
58
  }
52
59
 
@@ -58,11 +65,13 @@
58
65
  .order#{$infix}-#{$i} { order: $i; }
59
66
  }
60
67
 
61
- // `$columns - 1` because offsetting by the width of an entire row isn't possible
62
- @for $i from 0 through ($columns - 1) {
63
- @if not ($infix == "" and $i == 0) { // Avoid emitting useless .offset-0
64
- .offset#{$infix}-#{$i} {
65
- @include make-col-offset($i, $columns);
68
+ @if $columns > 0 {
69
+ // `$columns - 1` because offsetting by the width of an entire row isn't possible
70
+ @for $i from 0 through ($columns - 1) {
71
+ @if not ($infix == "" and $i == 0) { // Avoid emitting useless .offset-0
72
+ .offset#{$infix}-#{$i} {
73
+ @include make-col-offset($i, $columns);
74
+ }
66
75
  }
67
76
  }
68
77
  }
package/mixins/_grid.scss CHANGED
@@ -10,6 +10,12 @@
10
10
  margin-left: auto;
11
11
  }
12
12
 
13
+ @mixin make-row($gutter: $grid-gutter-width) {
14
+ display: flex;
15
+ flex-wrap: wrap;
16
+ margin-right: -$gutter / 2;
17
+ margin-left: -$gutter / 2;
18
+ }
13
19
 
14
20
  // For each breakpoint, define the maximum width of the container in a media query
15
21
  @mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {
@@ -18,13 +24,7 @@
18
24
  max-width: $container-max-width;
19
25
  }
20
26
  }
21
- }
22
-
23
- @mixin make-row($gutter: $grid-gutter-width) {
24
- display: flex;
25
- flex-wrap: wrap;
26
- margin-right: -$gutter / 2;
27
- margin-left: -$gutter / 2;
27
+ @include deprecate("The `make-container-max-widths` mixin", "v4.5.2", "v5");
28
28
  }
29
29
 
30
30
  @mixin make-col-ready($gutter: $grid-gutter-width) {
@@ -62,7 +62,7 @@
62
62
  // numberof columns. Supports wrapping to new lines, but does not do a Masonry
63
63
  // style grid.
64
64
  @mixin row-cols($count) {
65
- & > * {
65
+ > * {
66
66
  flex: 0 0 100% / $count;
67
67
  max-width: 100% / $count;
68
68
  }
@@ -1,6 +1,6 @@
1
1
  // Only display content to screen readers
2
2
  //
3
- // See: https://a11yproject.com/posts/how-to-hide-content/
3
+ // See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/
4
4
  // See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/
5
5
 
6
6
  @mixin sr-only() {
@@ -1,16 +1,26 @@
1
- // stylelint-disable property-blacklist
1
+ // stylelint-disable property-disallowed-list
2
2
  @mixin transition($transition...) {
3
+ @if length($transition) == 0 {
4
+ $transition: $transition-base;
5
+ }
6
+
7
+ @if length($transition) > 1 {
8
+ @each $value in $transition {
9
+ @if $value == null or $value == none {
10
+ @warn "The keyword 'none' or 'null' must be used as a single argument.";
11
+ }
12
+ }
13
+ }
14
+
3
15
  @if $enable-transitions {
4
- @if length($transition) == 0 {
5
- transition: $transition-base;
6
- } @else {
16
+ @if nth($transition, 1) != null {
7
17
  transition: $transition;
8
18
  }
9
- }
10
19
 
11
- @if $enable-prefers-reduced-motion-media-query {
12
- @media (prefers-reduced-motion: reduce) {
13
- transition: none;
20
+ @if $enable-prefers-reduced-motion-media-query and nth($transition, 1) != null and nth($transition, 1) != none {
21
+ @media (prefers-reduced-motion: reduce) {
22
+ transition: none;
23
+ }
14
24
  }
15
25
  }
16
26
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bootstrap-scss",
3
- "version": "4.4.1",
3
+ "version": "4.5.3",
4
4
  "description": "Bootstrap's SCSS files (only)",
5
5
  "main": "bootstrap.scss",
6
6
  "repository": {
@@ -6,7 +6,7 @@
6
6
 
7
7
  @if $enable-gradients {
8
8
  @each $color, $value in $theme-colors {
9
- @include bg-gradient-variant(".bg-gradient-#{$color}", $value);
9
+ @include bg-gradient-variant(".bg-gradient-#{$color}", $value, true);
10
10
  }
11
11
  }
12
12
 
@@ -1,4 +1,4 @@
1
- // stylelint-disable property-blacklist, declaration-no-important
1
+ // stylelint-disable property-disallowed-list, declaration-no-important
2
2
 
3
3
  //
4
4
  // Border
@@ -0,0 +1,5 @@
1
+ // stylelint-disable declaration-no-important
2
+
3
+ @each $value in $user-selects {
4
+ .user-select-#{$value} { user-select: $value !important; }
5
+ }
@@ -63,8 +63,8 @@
63
63
  .text-decoration-none { text-decoration: none !important; }
64
64
 
65
65
  .text-break {
66
- word-break: break-word !important; // IE & < Edge 18
67
- overflow-wrap: break-word !important;
66
+ word-break: break-word !important; // Deprecated, but avoids issues with flex containers
67
+ word-wrap: break-word !important; // Used instead of `overflow-wrap` for IE & Edge Legacy
68
68
  }
69
69
 
70
70
  // Reset