bootstrap 4.4.1 → 5.0.0.alpha2

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