bootstrap 4.4.1 → 5.0.1

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