bootstrap 4.5.2 → 5.0.0.alpha1

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.
Files changed (131) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/assets/javascripts/bootstrap-sprockets.js +12 -8
  4. data/assets/javascripts/bootstrap.js +1876 -1220
  5. data/assets/javascripts/bootstrap.min.js +2 -2
  6. data/assets/javascripts/bootstrap/alert.js +133 -48
  7. data/assets/javascripts/bootstrap/button.js +56 -123
  8. data/assets/javascripts/bootstrap/carousel.js +268 -129
  9. data/assets/javascripts/bootstrap/collapse.js +285 -106
  10. data/assets/javascripts/bootstrap/dom/data.js +81 -0
  11. data/assets/javascripts/bootstrap/dom/event-handler.js +311 -0
  12. data/assets/javascripts/bootstrap/dom/manipulator.js +100 -0
  13. data/assets/javascripts/bootstrap/dom/polyfill.js +110 -0
  14. data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
  15. data/assets/javascripts/bootstrap/dropdown.js +235 -161
  16. data/assets/javascripts/bootstrap/modal.js +322 -193
  17. data/assets/javascripts/bootstrap/popover.js +72 -41
  18. data/assets/javascripts/bootstrap/scrollspy.js +151 -56
  19. data/assets/javascripts/bootstrap/tab.js +151 -64
  20. data/assets/javascripts/bootstrap/toast.js +163 -65
  21. data/assets/javascripts/bootstrap/tooltip.js +336 -155
  22. data/assets/stylesheets/_bootstrap-grid.scss +51 -15
  23. data/assets/stylesheets/_bootstrap-reboot.scss +4 -1
  24. data/assets/stylesheets/_bootstrap.scss +14 -8
  25. data/assets/stylesheets/bootstrap/_alert.scss +3 -3
  26. data/assets/stylesheets/bootstrap/_badge.scss +2 -27
  27. data/assets/stylesheets/bootstrap/_breadcrumb.scss +3 -17
  28. data/assets/stylesheets/bootstrap/_button-group.scss +16 -38
  29. data/assets/stylesheets/bootstrap/_buttons.scss +27 -45
  30. data/assets/stylesheets/bootstrap/_card.scss +18 -64
  31. data/assets/stylesheets/bootstrap/_carousel.scss +13 -15
  32. data/assets/stylesheets/bootstrap/_close.scss +9 -13
  33. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  34. data/assets/stylesheets/bootstrap/_dropdown.scss +10 -7
  35. data/assets/stylesheets/bootstrap/_forms.scss +9 -347
  36. data/assets/stylesheets/bootstrap/_functions.scss +82 -20
  37. data/assets/stylesheets/bootstrap/_grid.scss +3 -54
  38. data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
  39. data/assets/stylesheets/bootstrap/_list-group.scss +6 -3
  40. data/assets/stylesheets/bootstrap/_mixins.scss +6 -12
  41. data/assets/stylesheets/bootstrap/_modal.scss +34 -39
  42. data/assets/stylesheets/bootstrap/_nav.scss +8 -8
  43. data/assets/stylesheets/bootstrap/_navbar.scss +42 -74
  44. data/assets/stylesheets/bootstrap/_pagination.scss +7 -20
  45. data/assets/stylesheets/bootstrap/_popover.scss +5 -5
  46. data/assets/stylesheets/bootstrap/_progress.scss +2 -4
  47. data/assets/stylesheets/bootstrap/_reboot.scss +300 -164
  48. data/assets/stylesheets/bootstrap/_root.scss +5 -9
  49. data/assets/stylesheets/bootstrap/_spinners.scss +2 -2
  50. data/assets/stylesheets/bootstrap/_tables.scss +80 -114
  51. data/assets/stylesheets/bootstrap/_toasts.scss +2 -4
  52. data/assets/stylesheets/bootstrap/_tooltip.scss +5 -5
  53. data/assets/stylesheets/bootstrap/_transitions.scss +0 -1
  54. data/assets/stylesheets/bootstrap/_type.scss +38 -59
  55. data/assets/stylesheets/bootstrap/_utilities.scss +503 -18
  56. data/assets/stylesheets/bootstrap/_variables.scss +544 -424
  57. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
  58. data/assets/stylesheets/bootstrap/forms/_form-check.scss +142 -0
  59. data/assets/stylesheets/bootstrap/forms/_form-control.scss +116 -0
  60. data/assets/stylesheets/bootstrap/forms/_form-file.scss +91 -0
  61. data/assets/stylesheets/bootstrap/forms/_form-range.scss +136 -0
  62. data/assets/stylesheets/bootstrap/forms/_form-select.scss +82 -0
  63. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  64. data/assets/stylesheets/bootstrap/forms/_input-group.scss +140 -0
  65. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  66. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  67. data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
  68. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
  69. data/assets/stylesheets/bootstrap/helpers/_embed.scss +31 -0
  70. data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
  71. data/assets/stylesheets/bootstrap/helpers/_screenreaders.scss +8 -0
  72. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  73. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  74. data/assets/stylesheets/bootstrap/mixins/_alert.scss +0 -4
  75. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +11 -8
  76. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +62 -47
  77. data/assets/stylesheets/bootstrap/mixins/_caret.scss +4 -4
  78. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  79. data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
  80. data/assets/stylesheets/bootstrap/mixins/_forms.scss +22 -67
  81. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +9 -11
  82. data/assets/stylesheets/bootstrap/mixins/_grid.scss +84 -32
  83. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  84. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -1
  85. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  86. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +15 -8
  87. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  88. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +16 -22
  89. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
  90. data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
  91. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +49 -0
  92. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  93. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +234 -126
  94. data/lib/bootstrap/version.rb +2 -2
  95. data/tasks/updater/js.rb +3 -3
  96. metadata +31 -39
  97. data/assets/javascripts/bootstrap/util.js +0 -192
  98. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  99. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -523
  100. data/assets/stylesheets/bootstrap/_input-group.scss +0 -192
  101. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  102. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  103. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  104. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
  105. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  106. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  107. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
  108. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  109. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  110. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  111. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  112. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  113. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  114. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  115. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  116. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  117. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  118. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  119. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  120. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  121. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  122. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
  123. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  124. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  125. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  126. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  127. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  128. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  129. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  130. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  131. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
@@ -1,15 +1,11 @@
1
1
  .pagination {
2
2
  display: flex;
3
3
  @include list-unstyled();
4
- @include border-radius();
5
4
  }
6
5
 
7
6
  .page-link {
8
7
  position: relative;
9
8
  display: block;
10
- padding: $pagination-padding-y $pagination-padding-x;
11
- margin-left: -$pagination-border-width;
12
- line-height: $pagination-line-height;
13
9
  color: $pagination-color;
14
10
  text-decoration: if($link-decoration == none, null, none);
15
11
  background-color: $pagination-bg;
@@ -18,7 +14,7 @@
18
14
  &:hover {
19
15
  z-index: 2;
20
16
  color: $pagination-hover-color;
21
- text-decoration: none;
17
+ text-decoration: if($link-hover-decoration == underline, none, null);
22
18
  background-color: $pagination-hover-bg;
23
19
  border-color: $pagination-hover-border-color;
24
20
  }
@@ -31,30 +27,20 @@
31
27
  }
32
28
 
33
29
  .page-item {
34
- &:first-child {
35
- .page-link {
36
- margin-left: 0;
37
- @include border-left-radius($border-radius);
38
- }
39
- }
40
- &:last-child {
41
- .page-link {
42
- @include border-right-radius($border-radius);
43
- }
30
+ &:not(:first-child) .page-link {
31
+ margin-left: $pagination-margin-left;
44
32
  }
45
33
 
46
34
  &.active .page-link {
47
35
  z-index: 3;
48
36
  color: $pagination-active-color;
49
- background-color: $pagination-active-bg;
37
+ @include gradient-bg($pagination-active-bg);
50
38
  border-color: $pagination-active-border-color;
51
39
  }
52
40
 
53
41
  &.disabled .page-link {
54
42
  color: $pagination-disabled-color;
55
43
  pointer-events: none;
56
- // Opinionated: remove the "hand" cursor set previously for .page-link
57
- cursor: auto;
58
44
  background-color: $pagination-disabled-bg;
59
45
  border-color: $pagination-disabled-border-color;
60
46
  }
@@ -64,11 +50,12 @@
64
50
  //
65
51
  // Sizing
66
52
  //
53
+ @include pagination-size($pagination-padding-y, $pagination-padding-x, null, $pagination-border-radius);
67
54
 
68
55
  .pagination-lg {
69
- @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $border-radius-lg);
56
+ @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $border-radius-lg);
70
57
  }
71
58
 
72
59
  .pagination-sm {
73
- @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $border-radius-sm);
60
+ @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $border-radius-sm);
74
61
  }
@@ -17,7 +17,7 @@
17
17
  @include border-radius($popover-border-radius);
18
18
  @include box-shadow($popover-box-shadow);
19
19
 
20
- .arrow {
20
+ .popover-arrow {
21
21
  position: absolute;
22
22
  display: block;
23
23
  width: $popover-arrow-width;
@@ -38,7 +38,7 @@
38
38
  .bs-popover-top {
39
39
  margin-bottom: $popover-arrow-height;
40
40
 
41
- > .arrow {
41
+ > .popover-arrow {
42
42
  bottom: subtract(-$popover-arrow-height, $popover-border-width);
43
43
 
44
44
  &::before {
@@ -58,7 +58,7 @@
58
58
  .bs-popover-right {
59
59
  margin-left: $popover-arrow-height;
60
60
 
61
- > .arrow {
61
+ > .popover-arrow {
62
62
  left: subtract(-$popover-arrow-height, $popover-border-width);
63
63
  width: $popover-arrow-height;
64
64
  height: $popover-arrow-width;
@@ -81,7 +81,7 @@
81
81
  .bs-popover-bottom {
82
82
  margin-top: $popover-arrow-height;
83
83
 
84
- > .arrow {
84
+ > .popover-arrow {
85
85
  top: subtract(-$popover-arrow-height, $popover-border-width);
86
86
 
87
87
  &::before {
@@ -113,7 +113,7 @@
113
113
  .bs-popover-left {
114
114
  margin-right: $popover-arrow-height;
115
115
 
116
- > .arrow {
116
+ > .popover-arrow {
117
117
  right: subtract(-$popover-arrow-height, $popover-border-width);
118
118
  width: $popover-arrow-height;
119
119
  height: $popover-arrow-width;
@@ -1,8 +1,7 @@
1
1
  // Disable animation if transitions are disabled
2
2
  @if $enable-transitions {
3
3
  @keyframes progress-bar-stripes {
4
- from { background-position: $progress-height 0; }
5
- to { background-position: 0 0; }
4
+ 0% { background-position-x: $progress-height; }
6
5
  }
7
6
  }
8
7
 
@@ -10,7 +9,6 @@
10
9
  display: flex;
11
10
  height: $progress-height;
12
11
  overflow: hidden; // force rounded corners by cropping it
13
- line-height: 0;
14
12
  @include font-size($progress-font-size);
15
13
  background-color: $progress-bg;
16
14
  @include border-radius($progress-border-radius);
@@ -38,7 +36,7 @@
38
36
  .progress-bar-animated {
39
37
  animation: progress-bar-stripes $progress-bar-animation-timing;
40
38
 
41
- @if $enable-prefers-reduced-motion-media-query {
39
+ @if $enable-reduced-motion {
42
40
  @media (prefers-reduced-motion: reduce) {
43
41
  animation: none;
44
42
  }
@@ -1,5 +1,6 @@
1
1
  // stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix
2
2
 
3
+
3
4
  // Reboot
4
5
  //
5
6
  // Normalization of HTML elements, manually forked from Normalize.css to remove
@@ -10,38 +11,31 @@
10
11
 
11
12
  // Document
12
13
  //
13
- // 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.
14
- // 2. Change the default font family in all browsers.
15
- // 3. Correct the line height in all browsers.
16
- // 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.
17
- // 5. Change the default tap highlight to be completely transparent in iOS.
14
+ // Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.
18
15
 
19
16
  *,
20
17
  *::before,
21
18
  *::after {
22
- box-sizing: border-box; // 1
19
+ box-sizing: border-box;
23
20
  }
24
21
 
25
- html {
26
- font-family: sans-serif; // 2
27
- line-height: 1.15; // 3
28
- -webkit-text-size-adjust: 100%; // 4
29
- -webkit-tap-highlight-color: rgba($black, 0); // 5
30
- }
31
22
 
32
- // Shim for "new" HTML5 structural elements to display correctly (IE10, older browsers)
33
- // TODO: remove in v5
34
- // stylelint-disable-next-line selector-list-comma-newline-after
35
- article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
36
- display: block;
23
+ // Root
24
+ //
25
+ // Ability to the value of the root font sizes, affecting the value of `rem`.
26
+ // null by default, thus nothing is generated.
27
+
28
+ :root {
29
+ font-size: $font-size-root;
37
30
  }
38
31
 
32
+
39
33
  // Body
40
34
  //
41
35
  // 1. Remove the margin in all browsers.
42
36
  // 2. As a best practice, apply a default `background-color`.
43
- // 3. Set an explicit initial text-align value so that we can later use
44
- // the `inherit` value on things like `<th>` elements.
37
+ // 3. Prevent adjustments of font size after orientation changes in iOS.
38
+ // 4. Change the default tap highlight to be completely transparent in iOS.
45
39
 
46
40
  body {
47
41
  margin: 0; // 1
@@ -50,19 +44,22 @@ body {
50
44
  font-weight: $font-weight-base;
51
45
  line-height: $line-height-base;
52
46
  color: $body-color;
53
- text-align: left; // 3
47
+ text-align: $body-text-align;
54
48
  background-color: $body-bg; // 2
49
+ -webkit-text-size-adjust: 100%; // 3
50
+ -webkit-tap-highlight-color: rgba($black, 0); // 4
55
51
  }
56
52
 
53
+
57
54
  // Future-proof rule: in browsers that support :focus-visible, suppress the focus outline
58
55
  // on elements that programmatically receive focus but wouldn't normally show a visible
59
56
  // focus outline. In general, this would mean that the outline is only applied if the
60
57
  // interaction that led to the element receiving programmatic focus was a keyboard interaction,
61
58
  // or the browser has somehow determined that the user is primarily a keyboard user and/or
62
59
  // wants focus outlines to always be presented.
63
- //
64
60
  // See https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible
65
61
  // and https://developer.paciellogroup.com/blog/2018/03/focus-visible-and-backwards-compatibility/
62
+
66
63
  [tabindex="-1"]:focus:not(:focus-visible) {
67
64
  outline: 0 !important;
68
65
  }
@@ -70,62 +67,113 @@ body {
70
67
 
71
68
  // Content grouping
72
69
  //
73
- // 1. Add the correct box sizing in Firefox.
74
- // 2. Show the overflow in Edge and IE.
70
+ // 1. Reset Firefox's gray color
71
+ // 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field
72
+ // See https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_hr_size
75
73
 
76
74
  hr {
77
- box-sizing: content-box; // 1
78
- height: 0; // 1
79
- overflow: visible; // 2
75
+ margin: $hr-margin-y 0;
76
+ color: $hr-color; // 1
77
+ background-color: currentColor;
78
+ border: 0;
79
+ opacity: $hr-opacity;
80
+ }
81
+
82
+ hr:not([size]) {
83
+ height: $hr-height; // 2
80
84
  }
81
85
 
82
86
 
83
- //
84
87
  // Typography
85
88
  //
89
+ // 1. Remove top margins from headings
90
+ // By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top
91
+ // margin for easier control within type scales as it avoids margin collapsing.
86
92
 
87
- // Remove top margins from headings
88
- //
89
- // By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top
90
- // margin for easier control within type scales as it avoids margin collapsing.
91
- // stylelint-disable-next-line selector-list-comma-newline-after
92
- h1, h2, h3, h4, h5, h6 {
93
- margin-top: 0;
93
+ %heading {
94
+ margin-top: 0; // 1
94
95
  margin-bottom: $headings-margin-bottom;
96
+ font-family: $headings-font-family;
97
+ font-style: $headings-font-style;
98
+ font-weight: $headings-font-weight;
99
+ line-height: $headings-line-height;
100
+ color: $headings-color;
101
+ }
102
+
103
+ h1 {
104
+ @extend %heading;
105
+ @include font-size($h1-font-size);
106
+ }
107
+
108
+ h2 {
109
+ @extend %heading;
110
+ @include font-size($h2-font-size);
111
+ }
112
+
113
+ h3 {
114
+ @extend %heading;
115
+ @include font-size($h3-font-size);
116
+ }
117
+
118
+ h4 {
119
+ @extend %heading;
120
+ @include font-size($h4-font-size);
121
+ }
122
+
123
+ h5 {
124
+ @extend %heading;
125
+ @include font-size($h5-font-size);
126
+ }
127
+
128
+ h6 {
129
+ @extend %heading;
130
+ @include font-size($h6-font-size);
95
131
  }
96
132
 
133
+
97
134
  // Reset margins on paragraphs
98
135
  //
99
136
  // Similarly, the top margin on `<p>`s get reset. However, we also reset the
100
137
  // bottom margin to use `rem` units instead of `em`.
138
+
101
139
  p {
102
140
  margin-top: 0;
103
141
  margin-bottom: $paragraph-margin-bottom;
104
142
  }
105
143
 
144
+
106
145
  // Abbreviations
107
146
  //
108
147
  // 1. Duplicate behavior to the data-* attribute for our tooltip plugin
109
- // 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
148
+ // 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.
110
149
  // 3. Add explicit cursor to indicate changed behavior.
111
- // 4. Remove the bottom border in Firefox 39-.
112
- // 5. Prevent the text-decoration to be skipped.
150
+ // 4. Prevent the text-decoration to be skipped.
113
151
 
114
152
  abbr[title],
115
153
  abbr[data-original-title] { // 1
116
154
  text-decoration: underline; // 2
117
155
  text-decoration: underline dotted; // 2
118
156
  cursor: help; // 3
119
- border-bottom: 0; // 4
120
- text-decoration-skip-ink: none; // 5
157
+ text-decoration-skip-ink: none; // 4
121
158
  }
122
159
 
160
+
161
+ // Address
162
+
123
163
  address {
124
164
  margin-bottom: 1rem;
125
165
  font-style: normal;
126
166
  line-height: inherit;
127
167
  }
128
168
 
169
+
170
+ // Lists
171
+
172
+ ol,
173
+ ul {
174
+ padding-left: 2rem;
175
+ }
176
+
129
177
  ol,
130
178
  ul,
131
179
  dl {
@@ -144,33 +192,57 @@ dt {
144
192
  font-weight: $dt-font-weight;
145
193
  }
146
194
 
195
+ // 1. Undo browser default
196
+
147
197
  dd {
148
198
  margin-bottom: .5rem;
149
- margin-left: 0; // Undo browser default
199
+ margin-left: 0; // 1
150
200
  }
151
201
 
202
+
203
+ // Blockquote
204
+
152
205
  blockquote {
153
206
  margin: 0 0 1rem;
154
207
  }
155
208
 
209
+
210
+ // Strong
211
+ //
212
+ // Add the correct font weight in Chrome, Edge, and Safari
213
+
156
214
  b,
157
215
  strong {
158
- font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari
216
+ font-weight: $font-weight-bolder;
159
217
  }
160
218
 
219
+
220
+ // Small
221
+ //
222
+ // Add the correct font size in all browsers
223
+
161
224
  small {
162
- @include font-size(80%); // Add the correct font size in all browsers
225
+ @include font-size($small-font-size);
226
+ }
227
+
228
+
229
+ // Mark
230
+
231
+ mark {
232
+ padding: $mark-padding;
233
+ background-color: $mark-bg;
163
234
  }
164
235
 
236
+
237
+ // Sub and Sup
165
238
  //
166
239
  // Prevent `sub` and `sup` elements from affecting the line height in
167
240
  // all browsers.
168
- //
169
241
 
170
242
  sub,
171
243
  sup {
172
244
  position: relative;
173
- @include font-size(75%);
245
+ @include font-size($sub-sup-font-size);
174
246
  line-height: 0;
175
247
  vertical-align: baseline;
176
248
  }
@@ -179,16 +251,13 @@ sub { bottom: -.25em; }
179
251
  sup { top: -.5em; }
180
252
 
181
253
 
182
- //
183
254
  // Links
184
- //
185
255
 
186
256
  a {
187
257
  color: $link-color;
188
258
  text-decoration: $link-decoration;
189
- background-color: transparent; // Remove the gray background on active links in IE 10.
190
259
 
191
- @include hover() {
260
+ &:hover {
192
261
  color: $link-hover-color;
193
262
  text-decoration: $link-hover-decoration;
194
263
  }
@@ -200,137 +269,176 @@ a {
200
269
  // See https://github.com/twbs/bootstrap/issues/19402
201
270
 
202
271
  a:not([href]):not([class]) {
203
- color: inherit;
204
- text-decoration: none;
205
-
206
- @include hover() {
272
+ &,
273
+ &:hover {
207
274
  color: inherit;
208
275
  text-decoration: none;
209
276
  }
210
277
  }
211
278
 
212
279
 
213
- //
214
280
  // Code
215
- //
216
281
 
217
282
  pre,
218
283
  code,
219
284
  kbd,
220
285
  samp {
221
- font-family: $font-family-monospace;
286
+ font-family: $font-family-code;
222
287
  @include font-size(1em); // Correct the odd `em` font sizing in all browsers.
223
288
  }
224
289
 
290
+ // 1. Remove browser default top margin
291
+ // 2. Reset browser default of `1em` to use `rem`s
292
+ // 3. Don't allow content to break outside
293
+ // 4. Disable auto-hiding scrollbar in legacy Edge to avoid overlap,
294
+ // making it impossible to interact with the content
295
+
225
296
  pre {
226
- // Remove browser default top margin
227
- margin-top: 0;
228
- // Reset browser default of `1em` to use `rem`s
229
- margin-bottom: 1rem;
230
- // Don't allow content to break outside
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;
297
+ display: block;
298
+ margin-top: 0; // 1
299
+ margin-bottom: 1rem; // 2
300
+ overflow: auto; // 3
301
+ @include font-size($code-font-size);
302
+ color: $pre-color;
303
+ -ms-overflow-style: scrollbar; // 4
304
+
305
+ // Account for some code outputs that place code tags in pre tags
306
+ code {
307
+ @include font-size(inherit);
308
+ color: inherit;
309
+ word-break: normal;
310
+ }
311
+ }
312
+
313
+ code {
314
+ @include font-size($code-font-size);
315
+ color: $code-color;
316
+ word-wrap: break-word;
317
+
318
+ // Streamline the style when inside anchors to avoid broken underline and more
319
+ a > & {
320
+ color: inherit;
321
+ }
322
+ }
323
+
324
+ kbd {
325
+ padding: $kbd-padding-y $kbd-padding-x;
326
+ @include font-size($kbd-font-size);
327
+ color: $kbd-color;
328
+ background-color: $kbd-bg;
329
+ @include border-radius($border-radius-sm);
330
+
331
+ kbd {
332
+ padding: 0;
333
+ @include font-size(1em);
334
+ font-weight: $nested-kbd-font-weight;
335
+ }
235
336
  }
236
337
 
237
338
 
238
- //
239
339
  // Figures
240
340
  //
341
+ // Apply a consistent margin strategy (matches our type styles).
241
342
 
242
343
  figure {
243
- // Apply a consistent margin strategy (matches our type styles).
244
344
  margin: 0 0 1rem;
245
345
  }
246
346
 
247
347
 
248
- //
249
348
  // Images and content
250
- //
251
-
252
- img {
253
- vertical-align: middle;
254
- border-style: none; // Remove the border on images inside links in IE 10-.
255
- }
256
349
 
350
+ img,
257
351
  svg {
258
- // Workaround for the SVG overflow bug in IE10/11 is still required.
259
- // See https://github.com/twbs/bootstrap/issues/26878
260
- overflow: hidden;
261
352
  vertical-align: middle;
262
353
  }
263
354
 
264
355
 
265
- //
266
356
  // Tables
267
357
  //
358
+ // Prevent double borders
268
359
 
269
360
  table {
270
- border-collapse: collapse; // Prevent double borders
361
+ caption-side: bottom;
362
+ border-collapse: collapse;
271
363
  }
272
364
 
273
365
  caption {
274
- padding-top: $table-cell-padding;
275
- padding-bottom: $table-cell-padding;
366
+ padding-top: $table-cell-padding-y;
367
+ padding-bottom: $table-cell-padding-y;
276
368
  color: $table-caption-color;
277
369
  text-align: left;
278
- caption-side: bottom;
279
370
  }
280
371
 
372
+ // 1. Matches default `<td>` alignment by inheriting `text-align`.
373
+ // 2. Fix alignment for Safari
374
+
281
375
  th {
282
- // Matches default `<td>` alignment by inheriting from the `<body>`, or the
283
- // closest parent with a set `text-align`.
284
- text-align: inherit;
376
+ text-align: inherit; // 1
377
+ text-align: -webkit-match-parent; // 2
378
+ }
379
+
380
+ thead,
381
+ tbody,
382
+ tfoot,
383
+ tr,
384
+ td,
385
+ th {
386
+ border-color: inherit;
387
+ border-style: solid;
388
+ border-width: 0;
285
389
  }
286
390
 
287
391
 
288
- //
289
392
  // Forms
290
393
  //
394
+ // 1. Allow labels to use `margin` for spacing.
291
395
 
292
396
  label {
293
- // Allow labels to use `margin` for spacing.
294
- display: inline-block;
295
- margin-bottom: $label-margin-bottom;
397
+ display: inline-block; // 1
296
398
  }
297
399
 
298
400
  // Remove the default `border-radius` that macOS Chrome adds.
299
- //
300
- // Details at https://github.com/twbs/bootstrap/issues/24093
401
+ // See https://github.com/twbs/bootstrap/issues/24093
402
+
301
403
  button {
302
404
  // stylelint-disable-next-line property-blacklist
303
405
  border-radius: 0;
304
406
  }
305
407
 
306
- // Work around a Firefox/IE bug where the transparent `button` background
408
+ // Work around a Firefox bug where the transparent `button` background
307
409
  // results in a loss of the default `button` focus styles.
308
- //
309
- // Credit: https://github.com/suitcss/base/
410
+ // Credit https://github.com/suitcss/base/
411
+
310
412
  button:focus {
311
413
  outline: 1px dotted;
312
414
  outline: 5px auto -webkit-focus-ring-color;
313
415
  }
314
416
 
417
+ // 1. Remove the margin in Firefox and Safari
418
+
315
419
  input,
316
420
  button,
317
421
  select,
318
422
  optgroup,
319
423
  textarea {
320
- margin: 0; // Remove the margin in Firefox and Safari
424
+ margin: 0; // 1
321
425
  font-family: inherit;
322
426
  @include font-size(inherit);
323
427
  line-height: inherit;
324
428
  }
325
429
 
430
+ // Show the overflow in Edge
431
+
326
432
  button,
327
433
  input {
328
- overflow: visible; // Show the overflow in Edge
434
+ overflow: visible;
329
435
  }
330
436
 
437
+ // Remove the inheritance of text transform in Firefox
438
+
331
439
  button,
332
440
  select {
333
- text-transform: none; // Remove the inheritance of text transform in Firefox
441
+ text-transform: none;
334
442
  }
335
443
 
336
444
  // Set the cursor for non-`<button>` buttons
@@ -341,140 +449,168 @@ select {
341
449
  }
342
450
 
343
451
  // Remove the inheritance of word-wrap in Safari.
344
- //
345
- // Details at https://github.com/twbs/bootstrap/issues/24990
452
+ // See https://github.com/twbs/bootstrap/issues/24990
453
+
346
454
  select {
347
455
  word-wrap: normal;
348
456
  }
349
457
 
458
+ // Remove the dropdown arrow in Chrome from inputs built with datalists.
459
+ // See https://stackoverflow.com/a/54997118
460
+
461
+ [list]::-webkit-calendar-picker-indicator {
462
+ display: none;
463
+ }
350
464
 
351
465
  // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
352
466
  // controls in Android 4.
353
467
  // 2. Correct the inability to style clickable types in iOS and Safari.
468
+ // 3. Opinionated: add "hand" cursor to non-disabled button elements.
469
+
354
470
  button,
355
471
  [type="button"], // 1
356
472
  [type="reset"],
357
473
  [type="submit"] {
358
474
  -webkit-appearance: button; // 2
359
- }
360
475
 
361
- // Opinionated: add "hand" cursor to non-disabled button elements.
362
- @if $enable-pointer-cursor-for-buttons {
363
- button,
364
- [type="button"],
365
- [type="reset"],
366
- [type="submit"] {
476
+ @if $enable-button-pointers {
367
477
  &:not(:disabled) {
368
- cursor: pointer;
478
+ cursor: pointer; // 3
369
479
  }
370
480
  }
371
481
  }
372
482
 
373
483
  // Remove inner border and padding from Firefox, but don't restore the outline like Normalize.
374
- button::-moz-focus-inner,
375
- [type="button"]::-moz-focus-inner,
376
- [type="reset"]::-moz-focus-inner,
377
- [type="submit"]::-moz-focus-inner {
484
+
485
+ ::-moz-focus-inner {
378
486
  padding: 0;
379
487
  border-style: none;
380
488
  }
381
489
 
382
- input[type="radio"],
383
- input[type="checkbox"] {
384
- box-sizing: border-box; // 1. Add the correct box sizing in IE 10-
385
- padding: 0; // 2. Remove the padding in IE 10-
386
- }
387
-
490
+ // 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.
388
491
 
389
492
  textarea {
390
- overflow: auto; // Remove the default vertical scrollbar in IE.
391
- // Textareas should really only resize vertically so they don't break their (horizontal) containers.
392
- resize: vertical;
493
+ resize: vertical; // 1
393
494
  }
394
495
 
496
+ // 1. Browsers set a default `min-width: min-content;` on fieldsets,
497
+ // unlike e.g. `<div>`s, which have `min-width: 0;` by default.
498
+ // So we reset that to ensure fieldsets behave more like a standard block element.
499
+ // See https://github.com/twbs/bootstrap/issues/12359
500
+ // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
501
+ // 2. Reset the default outline behavior of fieldsets so they don't affect page layout.
502
+
395
503
  fieldset {
396
- // Browsers set a default `min-width: min-content;` on fieldsets,
397
- // unlike e.g. `<div>`s, which have `min-width: 0;` by default.
398
- // So we reset that to ensure fieldsets behave more like a standard block element.
399
- // See https://github.com/twbs/bootstrap/issues/12359
400
- // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
401
- min-width: 0;
402
- // Reset the default outline behavior of fieldsets so they don't affect page layout.
403
- padding: 0;
404
- margin: 0;
405
- border: 0;
504
+ min-width: 0; // 1
505
+ padding: 0; // 2
506
+ margin: 0; // 2
507
+ border: 0; // 2
406
508
  }
407
509
 
408
- // 1. Correct the text wrapping in Edge and IE.
409
- // 2. Correct the color inheritance from `fieldset` elements in IE.
510
+ // 1. By using `float: left`, the legend will behave like a block element.
511
+ // This way the border of a fieldset wraps around the legend if present.
512
+ // 2. Correct the text wrapping in Edge.
513
+ // 3. Fix wrapping bug.
514
+ // See https://github.com/twbs/bootstrap/issues/29712
515
+
410
516
  legend {
411
- display: block;
517
+ float: left; // 1
412
518
  width: 100%;
413
- max-width: 100%; // 1
414
519
  padding: 0;
415
- margin-bottom: .5rem;
416
- @include font-size(1.5rem);
520
+ margin-bottom: $legend-margin-bottom;
521
+ @include font-size($legend-font-size);
522
+ font-weight: $legend-font-weight;
417
523
  line-height: inherit;
418
- color: inherit; // 2
419
- white-space: normal; // 1
524
+ white-space: normal; // 2
525
+
526
+ + * {
527
+ clear: left; // 3
528
+ }
420
529
  }
421
530
 
422
- progress {
423
- vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.
531
+ // Fix height of inputs with a type of datetime-local, date, month, week, or time
532
+ // See https://github.com/twbs/bootstrap/issues/18842
533
+
534
+ ::-webkit-datetime-edit-fields-wrapper,
535
+ ::-webkit-datetime-edit-text,
536
+ ::-webkit-datetime-edit-minute,
537
+ ::-webkit-datetime-edit-hour-field,
538
+ ::-webkit-datetime-edit-day-field,
539
+ ::-webkit-datetime-edit-month-field,
540
+ ::-webkit-datetime-edit-year-field {
541
+ padding: 0;
424
542
  }
425
543
 
426
- // Correct the cursor style of increment and decrement buttons in Chrome.
427
- [type="number"]::-webkit-inner-spin-button,
428
- [type="number"]::-webkit-outer-spin-button {
544
+ ::-webkit-inner-spin-button {
429
545
  height: auto;
430
546
  }
431
547
 
548
+ // 1. Correct the outline style in Safari.
549
+ // 2. This overrides the extra rounded corners on search inputs in iOS so that our
550
+ // `.form-control` class can properly style them. Note that this cannot simply
551
+ // be added to `.form-control` as it's not specific enough. For details, see
552
+ // https://github.com/twbs/bootstrap/issues/11586.
553
+
432
554
  [type="search"] {
433
- // This overrides the extra rounded corners on search inputs in iOS so that our
434
- // `.form-control` class can properly style them. Note that this cannot simply
435
- // be added to `.form-control` as it's not specific enough. For details, see
436
- // https://github.com/twbs/bootstrap/issues/11586.
437
- outline-offset: -2px; // 2. Correct the outline style in Safari.
438
- -webkit-appearance: none;
555
+ outline-offset: -2px; // 1
556
+ -webkit-appearance: textfield; // 2
439
557
  }
440
558
 
441
- //
442
559
  // Remove the inner padding in Chrome and Safari on macOS.
443
- //
444
560
 
445
- [type="search"]::-webkit-search-decoration {
561
+ ::-webkit-search-decoration {
446
562
  -webkit-appearance: none;
447
563
  }
448
564
 
449
- //
450
- // 1. Correct the inability to style clickable types in iOS and Safari.
451
- // 2. Change font properties to `inherit` in Safari.
452
- //
565
+ // Remove padding around color pickers in webkit browsers
566
+
567
+ ::-webkit-color-swatch-wrapper {
568
+ padding: 0;
569
+ }
570
+
571
+ // 1. Change font properties to `inherit` in Safari.
572
+ // 2. Correct the inability to style clickable types in iOS and Safari.
453
573
 
454
574
  ::-webkit-file-upload-button {
455
- font: inherit; // 2
456
- -webkit-appearance: button; // 1
575
+ font: inherit; // 1
576
+ -webkit-appearance: button; // 2
457
577
  }
458
578
 
459
- //
460
579
  // Correct element displays
461
- //
462
580
 
463
581
  output {
464
582
  display: inline-block;
465
583
  }
466
584
 
585
+ // Remove border from iframe
586
+
587
+ iframe {
588
+ border: 0;
589
+ }
590
+
591
+ // Summary
592
+ //
593
+ // 1. Add the correct display in all browsers
594
+
467
595
  summary {
468
- display: list-item; // Add the correct display in all browsers
596
+ display: list-item; // 1
469
597
  cursor: pointer;
470
598
  }
471
599
 
472
- template {
473
- display: none; // Add the correct display in IE
600
+
601
+ // Progress
602
+ //
603
+ // Add the correct vertical alignment in Chrome, Firefox, and Opera.
604
+
605
+ progress {
606
+ vertical-align: baseline;
474
607
  }
475
608
 
476
- // Always hide an element with the `hidden` HTML attribute (from PureCSS).
477
- // Needed for proper display in IE 10-.
609
+
610
+ // Hidden attribute
611
+ //
612
+ // Always hide an element with the `hidden` HTML attribute.
613
+
478
614
  [hidden] {
479
615
  display: none !important;
480
616
  }