bootstrap 4.3.1 → 5.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +17 -2
  3. data/CHANGELOG.md +2 -14
  4. data/README.md +7 -4
  5. data/assets/javascripts/bootstrap/alert.js +172 -136
  6. data/assets/javascripts/bootstrap/base-component.js +182 -0
  7. data/assets/javascripts/bootstrap/button.js +101 -142
  8. data/assets/javascripts/bootstrap/carousel.js +483 -408
  9. data/assets/javascripts/bootstrap/collapse.js +340 -273
  10. data/assets/javascripts/bootstrap/dom/data.js +68 -0
  11. data/assets/javascripts/bootstrap/dom/event-handler.js +321 -0
  12. data/assets/javascripts/bootstrap/dom/manipulator.js +88 -0
  13. data/assets/javascripts/bootstrap/dom/selector-engine.js +127 -0
  14. data/assets/javascripts/bootstrap/dropdown.js +491 -399
  15. data/assets/javascripts/bootstrap/modal.js +841 -449
  16. data/assets/javascripts/bootstrap/offcanvas.js +866 -0
  17. data/assets/javascripts/bootstrap/popover.js +121 -198
  18. data/assets/javascripts/bootstrap/scrollspy.js +256 -240
  19. data/assets/javascripts/bootstrap/tab.js +218 -154
  20. data/assets/javascripts/bootstrap/toast.js +329 -189
  21. data/assets/javascripts/bootstrap/tooltip.js +651 -552
  22. data/assets/javascripts/bootstrap-global-this-define.js +6 -0
  23. data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
  24. data/assets/javascripts/bootstrap-sprockets.js +8 -1
  25. data/assets/javascripts/bootstrap.js +3503 -2892
  26. data/assets/javascripts/bootstrap.min.js +4 -4
  27. data/assets/stylesheets/_bootstrap-grid.scss +56 -18
  28. data/assets/stylesheets/_bootstrap-reboot.scss +5 -4
  29. data/assets/stylesheets/_bootstrap.scss +20 -11
  30. data/assets/stylesheets/bootstrap/_accordion.scss +118 -0
  31. data/assets/stylesheets/bootstrap/_alert.scss +15 -9
  32. data/assets/stylesheets/bootstrap/_badge.scss +2 -27
  33. data/assets/stylesheets/bootstrap/_breadcrumb.scss +5 -18
  34. data/assets/stylesheets/bootstrap/_button-group.scss +21 -45
  35. data/assets/stylesheets/bootstrap/_buttons.scss +28 -54
  36. data/assets/stylesheets/bootstrap/_card.scss +52 -125
  37. data/assets/stylesheets/bootstrap/_carousel.scss +70 -38
  38. data/assets/stylesheets/bootstrap/_close.scss +30 -31
  39. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  40. data/assets/stylesheets/bootstrap/_dropdown.scss +88 -39
  41. data/assets/stylesheets/bootstrap/_forms.scss +9 -330
  42. data/assets/stylesheets/bootstrap/_functions.scss +243 -27
  43. data/assets/stylesheets/bootstrap/_grid.scss +14 -33
  44. data/assets/stylesheets/bootstrap/_helpers.scss +9 -0
  45. data/assets/stylesheets/bootstrap/_images.scss +3 -3
  46. data/assets/stylesheets/bootstrap/_list-group.scss +61 -36
  47. data/assets/stylesheets/bootstrap/_mixins.scss +12 -16
  48. data/assets/stylesheets/bootstrap/_modal.scss +64 -84
  49. data/assets/stylesheets/bootstrap/_nav.scss +29 -10
  50. data/assets/stylesheets/bootstrap/_navbar.scss +93 -52
  51. data/assets/stylesheets/bootstrap/_offcanvas.scss +83 -0
  52. data/assets/stylesheets/bootstrap/_pagination.scss +13 -22
  53. data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
  54. data/assets/stylesheets/bootstrap/_popover.scss +29 -42
  55. data/assets/stylesheets/bootstrap/_progress.scss +10 -5
  56. data/assets/stylesheets/bootstrap/_reboot.scss +350 -208
  57. data/assets/stylesheets/bootstrap/_root.scss +43 -8
  58. data/assets/stylesheets/bootstrap/_spinners.scss +21 -7
  59. data/assets/stylesheets/bootstrap/_tables.scss +84 -114
  60. data/assets/stylesheets/bootstrap/_toasts.scss +21 -14
  61. data/assets/stylesheets/bootstrap/_tooltip.scss +21 -21
  62. data/assets/stylesheets/bootstrap/_transitions.scss +8 -1
  63. data/assets/stylesheets/bootstrap/_type.scss +40 -61
  64. data/assets/stylesheets/bootstrap/_utilities.scss +630 -17
  65. data/assets/stylesheets/bootstrap/_variables.scss +1007 -489
  66. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
  67. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +63 -0
  68. data/assets/stylesheets/bootstrap/forms/_form-check.scss +152 -0
  69. data/assets/stylesheets/bootstrap/forms/_form-control.scss +219 -0
  70. data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
  71. data/assets/stylesheets/bootstrap/forms/_form-select.scss +72 -0
  72. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  73. data/assets/stylesheets/bootstrap/forms/_input-group.scss +121 -0
  74. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  75. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  76. data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
  77. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
  78. data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
  79. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
  80. data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -0
  81. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  82. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  83. data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
  84. data/assets/stylesheets/bootstrap/helpers/_vr.scss +8 -0
  85. data/assets/stylesheets/bootstrap/mixins/_alert.scss +3 -5
  86. data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
  87. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +37 -22
  88. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
  89. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +14 -10
  90. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +77 -51
  91. data/assets/stylesheets/bootstrap/mixins/_caret.scss +10 -8
  92. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  93. data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
  94. data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
  95. data/assets/stylesheets/bootstrap/mixins/_forms.scss +67 -115
  96. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
  97. data/assets/stylesheets/bootstrap/mixins/_grid.scss +132 -32
  98. data/assets/stylesheets/bootstrap/mixins/_image.scss +0 -20
  99. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +5 -2
  100. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +17 -8
  101. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  102. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
  103. data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
  104. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +89 -0
  105. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +29 -0
  106. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  107. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +278 -128
  108. data/bootstrap.gemspec +4 -6
  109. data/lib/bootstrap/version.rb +2 -2
  110. data/tasks/updater/js.rb +25 -6
  111. data/tasks/updater/network.rb +8 -2
  112. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  113. data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
  114. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  115. data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
  116. data/test/dummy_rails/app/views/pages/root.html +89 -0
  117. data/test/dummy_rails/config/application.rb +0 -3
  118. data/test/gemfiles/rails_6_0.gemfile +7 -0
  119. data/test/gemfiles/rails_6_1.gemfile +7 -0
  120. data/test/support/dummy_rails_integration.rb +3 -1
  121. data/test/test_helper.rb +18 -13
  122. metadata +61 -79
  123. data/assets/javascripts/bootstrap/util.js +0 -171
  124. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  125. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -507
  126. data/assets/stylesheets/bootstrap/_input-group.scss +0 -193
  127. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  128. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  129. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  130. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -21
  131. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  132. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  133. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -66
  134. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  135. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -10
  136. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -33
  137. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  138. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  139. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -16
  140. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  141. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  142. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  143. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  144. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  145. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  146. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  147. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  148. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  149. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  150. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  151. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  152. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  153. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  154. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  155. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  156. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  157. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
  158. data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
@@ -4,7 +4,6 @@
4
4
  // Navbar brand
5
5
  // Navbar nav
6
6
  // Navbar text
7
- // Navbar divider
8
7
  // Responsive navbar
9
8
  // Navbar position
10
9
  // Navbar themes
@@ -21,17 +20,32 @@
21
20
  flex-wrap: wrap; // allow us to do the line break for collapsing content
22
21
  align-items: center;
23
22
  justify-content: space-between; // space out brand from logo
24
- padding: $navbar-padding-y $navbar-padding-x;
23
+ padding-top: $navbar-padding-y;
24
+ padding-right: $navbar-padding-x; // default: null
25
+ padding-bottom: $navbar-padding-y;
26
+ padding-left: $navbar-padding-x; // default: null
27
+ @include gradient-bg();
25
28
 
26
29
  // Because flex properties aren't inherited, we need to redeclare these first
27
30
  // few properties so that content nested within behave properly.
28
- > .container,
29
- > .container-fluid {
31
+ // The `flex-wrap` property is inherited to simplify the expanded navbars
32
+ %container-flex-properties {
30
33
  display: flex;
31
- flex-wrap: wrap;
34
+ flex-wrap: inherit;
32
35
  align-items: center;
33
36
  justify-content: space-between;
34
37
  }
38
+
39
+ > .container,
40
+ > .container-fluid {
41
+ @extend %container-flex-properties;
42
+ }
43
+
44
+ @each $breakpoint, $container-max-width in $container-max-widths {
45
+ > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {
46
+ @extend %container-flex-properties;
47
+ }
48
+ }
35
49
  }
36
50
 
37
51
 
@@ -40,16 +54,16 @@
40
54
  // Used for brand, project, or site names.
41
55
 
42
56
  .navbar-brand {
43
- display: inline-block;
44
57
  padding-top: $navbar-brand-padding-y;
45
58
  padding-bottom: $navbar-brand-padding-y;
46
- margin-right: $navbar-padding-x;
59
+ margin-right: $navbar-brand-margin-end;
47
60
  @include font-size($navbar-brand-font-size);
48
- line-height: inherit;
61
+ text-decoration: if($link-decoration == none, null, none);
49
62
  white-space: nowrap;
50
63
 
51
- @include hover-focus {
52
- text-decoration: none;
64
+ &:hover,
65
+ &:focus {
66
+ text-decoration: if($link-hover-decoration == underline, none, null);
53
67
  }
54
68
  }
55
69
 
@@ -72,7 +86,6 @@
72
86
 
73
87
  .dropdown-menu {
74
88
  position: static;
75
- float: none;
76
89
  }
77
90
  }
78
91
 
@@ -82,7 +95,6 @@
82
95
  //
83
96
 
84
97
  .navbar-text {
85
- display: inline-block;
86
98
  padding-top: $nav-link-padding-y;
87
99
  padding-bottom: $nav-link-padding-y;
88
100
  }
@@ -112,10 +124,17 @@
112
124
  background-color: transparent; // remove default button style
113
125
  border: $border-width solid transparent; // remove default button style
114
126
  @include border-radius($navbar-toggler-border-radius);
127
+ @include transition($navbar-toggler-transition);
115
128
 
116
- @include hover-focus {
129
+ &:hover {
117
130
  text-decoration: none;
118
131
  }
132
+
133
+ &:focus {
134
+ text-decoration: none;
135
+ outline: 0;
136
+ box-shadow: 0 0 0 $navbar-toggler-focus-width;
137
+ }
119
138
  }
120
139
 
121
140
  // Keep as a separate element so folks can easily override it with another icon
@@ -125,11 +144,17 @@
125
144
  width: 1.5em;
126
145
  height: 1.5em;
127
146
  vertical-align: middle;
128
- content: "";
129
- background: no-repeat center center;
130
- background-size: 100% 100%;
147
+ background-repeat: no-repeat;
148
+ background-position: center;
149
+ background-size: 100%;
150
+ }
151
+
152
+ .navbar-nav-scroll {
153
+ max-height: var(--#{$variable-prefix}scroll-height, 75vh);
154
+ overflow-y: auto;
131
155
  }
132
156
 
157
+ // scss-docs-start navbar-expand-loop
133
158
  // Generate series of `.navbar-expand-*` responsive classes for configuring
134
159
  // where your navbar collapses.
135
160
  .navbar-expand {
@@ -137,17 +162,10 @@
137
162
  $next: breakpoint-next($breakpoint, $grid-breakpoints);
138
163
  $infix: breakpoint-infix($next, $grid-breakpoints);
139
164
 
165
+ // stylelint-disable-next-line scss/selector-no-union-class-name
140
166
  &#{$infix} {
141
- @include media-breakpoint-down($breakpoint) {
142
- > .container,
143
- > .container-fluid {
144
- padding-right: 0;
145
- padding-left: 0;
146
- }
147
- }
148
-
149
167
  @include media-breakpoint-up($next) {
150
- flex-flow: row nowrap;
168
+ flex-wrap: nowrap;
151
169
  justify-content: flex-start;
152
170
 
153
171
  .navbar-nav {
@@ -163,27 +181,53 @@
163
181
  }
164
182
  }
165
183
 
166
- // For nesting containers, have to redeclare for alignment purposes
167
- > .container,
168
- > .container-fluid {
169
- flex-wrap: nowrap;
184
+ .navbar-nav-scroll {
185
+ overflow: visible;
170
186
  }
171
187
 
172
188
  .navbar-collapse {
173
189
  display: flex !important; // stylelint-disable-line declaration-no-important
174
-
175
- // Changes flex-bases to auto because of an IE10 bug
176
190
  flex-basis: auto;
177
191
  }
178
192
 
179
193
  .navbar-toggler {
180
194
  display: none;
181
195
  }
196
+
197
+ .offcanvas-header {
198
+ display: none;
199
+ }
200
+
201
+ .offcanvas {
202
+ position: inherit;
203
+ bottom: 0;
204
+ z-index: 1000;
205
+ flex-grow: 1;
206
+ visibility: visible !important; // stylelint-disable-line declaration-no-important
207
+ background-color: transparent;
208
+ border-right: 0;
209
+ border-left: 0;
210
+ @include transition(none);
211
+ transform: none;
212
+ }
213
+ .offcanvas-top,
214
+ .offcanvas-bottom {
215
+ height: auto;
216
+ border-top: 0;
217
+ border-bottom: 0;
218
+ }
219
+
220
+ .offcanvas-body {
221
+ display: flex;
222
+ flex-grow: 0;
223
+ padding: 0;
224
+ overflow-y: visible;
225
+ }
182
226
  }
183
227
  }
184
228
  }
185
229
  }
186
-
230
+ // scss-docs-end navbar-expand-loop
187
231
 
188
232
  // Navbar themes
189
233
  //
@@ -194,7 +238,8 @@
194
238
  .navbar-brand {
195
239
  color: $navbar-light-brand-color;
196
240
 
197
- @include hover-focus {
241
+ &:hover,
242
+ &:focus {
198
243
  color: $navbar-light-brand-hover-color;
199
244
  }
200
245
  }
@@ -203,7 +248,8 @@
203
248
  .nav-link {
204
249
  color: $navbar-light-color;
205
250
 
206
- @include hover-focus {
251
+ &:hover,
252
+ &:focus {
207
253
  color: $navbar-light-hover-color;
208
254
  }
209
255
 
@@ -213,8 +259,6 @@
213
259
  }
214
260
 
215
261
  .show > .nav-link,
216
- .active > .nav-link,
217
- .nav-link.show,
218
262
  .nav-link.active {
219
263
  color: $navbar-light-active-color;
220
264
  }
@@ -226,17 +270,16 @@
226
270
  }
227
271
 
228
272
  .navbar-toggler-icon {
229
- background-image: $navbar-light-toggler-icon-bg;
273
+ background-image: escape-svg($navbar-light-toggler-icon-bg);
230
274
  }
231
275
 
232
276
  .navbar-text {
233
277
  color: $navbar-light-color;
234
- a {
235
- color: $navbar-light-active-color;
236
278
 
237
- @include hover-focus {
238
- color: $navbar-light-active-color;
239
- }
279
+ a,
280
+ a:hover,
281
+ a:focus {
282
+ color: $navbar-light-active-color;
240
283
  }
241
284
  }
242
285
  }
@@ -246,7 +289,8 @@
246
289
  .navbar-brand {
247
290
  color: $navbar-dark-brand-color;
248
291
 
249
- @include hover-focus {
292
+ &:hover,
293
+ &:focus {
250
294
  color: $navbar-dark-brand-hover-color;
251
295
  }
252
296
  }
@@ -255,7 +299,8 @@
255
299
  .nav-link {
256
300
  color: $navbar-dark-color;
257
301
 
258
- @include hover-focus {
302
+ &:hover,
303
+ &:focus {
259
304
  color: $navbar-dark-hover-color;
260
305
  }
261
306
 
@@ -265,8 +310,6 @@
265
310
  }
266
311
 
267
312
  .show > .nav-link,
268
- .active > .nav-link,
269
- .nav-link.show,
270
313
  .nav-link.active {
271
314
  color: $navbar-dark-active-color;
272
315
  }
@@ -278,17 +321,15 @@
278
321
  }
279
322
 
280
323
  .navbar-toggler-icon {
281
- background-image: $navbar-dark-toggler-icon-bg;
324
+ background-image: escape-svg($navbar-dark-toggler-icon-bg);
282
325
  }
283
326
 
284
327
  .navbar-text {
285
328
  color: $navbar-dark-color;
286
- a {
329
+ a,
330
+ a:hover,
331
+ a:focus {
287
332
  color: $navbar-dark-active-color;
288
-
289
- @include hover-focus {
290
- color: $navbar-dark-active-color;
291
- }
292
333
  }
293
334
  }
294
335
  }
@@ -0,0 +1,83 @@
1
+ .offcanvas {
2
+ position: fixed;
3
+ bottom: 0;
4
+ z-index: $zindex-offcanvas;
5
+ display: flex;
6
+ flex-direction: column;
7
+ max-width: 100%;
8
+ color: $offcanvas-color;
9
+ visibility: hidden;
10
+ background-color: $offcanvas-bg-color;
11
+ background-clip: padding-box;
12
+ outline: 0;
13
+ @include box-shadow($offcanvas-box-shadow);
14
+ @include transition(transform $offcanvas-transition-duration ease-in-out);
15
+ }
16
+
17
+ .offcanvas-backdrop {
18
+ @include overlay-backdrop($zindex-offcanvas-backdrop, $offcanvas-backdrop-bg, $offcanvas-backdrop-opacity);
19
+ }
20
+
21
+ .offcanvas-header {
22
+ display: flex;
23
+ align-items: center;
24
+ justify-content: space-between;
25
+ padding: $offcanvas-padding-y $offcanvas-padding-x;
26
+
27
+ .btn-close {
28
+ padding: ($offcanvas-padding-y * .5) ($offcanvas-padding-x * .5);
29
+ margin-top: $offcanvas-padding-y * -.5;
30
+ margin-right: $offcanvas-padding-x * -.5;
31
+ margin-bottom: $offcanvas-padding-y * -.5;
32
+ }
33
+ }
34
+
35
+ .offcanvas-title {
36
+ margin-bottom: 0;
37
+ line-height: $offcanvas-title-line-height;
38
+ }
39
+
40
+ .offcanvas-body {
41
+ flex-grow: 1;
42
+ padding: $offcanvas-padding-y $offcanvas-padding-x;
43
+ overflow-y: auto;
44
+ }
45
+
46
+ .offcanvas-start {
47
+ top: 0;
48
+ left: 0;
49
+ width: $offcanvas-horizontal-width;
50
+ border-right: $offcanvas-border-width solid $offcanvas-border-color;
51
+ transform: translateX(-100%);
52
+ }
53
+
54
+ .offcanvas-end {
55
+ top: 0;
56
+ right: 0;
57
+ width: $offcanvas-horizontal-width;
58
+ border-left: $offcanvas-border-width solid $offcanvas-border-color;
59
+ transform: translateX(100%);
60
+ }
61
+
62
+ .offcanvas-top {
63
+ top: 0;
64
+ right: 0;
65
+ left: 0;
66
+ height: $offcanvas-vertical-height;
67
+ max-height: 100%;
68
+ border-bottom: $offcanvas-border-width solid $offcanvas-border-color;
69
+ transform: translateY(-100%);
70
+ }
71
+
72
+ .offcanvas-bottom {
73
+ right: 0;
74
+ left: 0;
75
+ height: $offcanvas-vertical-height;
76
+ max-height: 100%;
77
+ border-top: $offcanvas-border-width solid $offcanvas-border-color;
78
+ transform: translateY(100%);
79
+ }
80
+
81
+ .offcanvas.show {
82
+ transform: none;
83
+ }
@@ -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
- z-index: 2;
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-start;
43
35
  }
44
36
 
45
37
  &.active .page-link {
46
- z-index: 1;
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, $pagination-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, $pagination-border-radius-sm);
73
64
  }
@@ -0,0 +1,51 @@
1
+ .placeholder {
2
+ display: inline-block;
3
+ min-height: 1em;
4
+ vertical-align: middle;
5
+ cursor: wait;
6
+ background-color: currentColor;
7
+ opacity: $placeholder-opacity-max;
8
+
9
+ &.btn::before {
10
+ display: inline-block;
11
+ content: "";
12
+ }
13
+ }
14
+
15
+ // Sizing
16
+ .placeholder-xs {
17
+ min-height: .6em;
18
+ }
19
+
20
+ .placeholder-sm {
21
+ min-height: .8em;
22
+ }
23
+
24
+ .placeholder-lg {
25
+ min-height: 1.2em;
26
+ }
27
+
28
+ // Animation
29
+ .placeholder-glow {
30
+ .placeholder {
31
+ animation: placeholder-glow 2s ease-in-out infinite;
32
+ }
33
+ }
34
+
35
+ @keyframes placeholder-glow {
36
+ 50% {
37
+ opacity: $placeholder-opacity-min;
38
+ }
39
+ }
40
+
41
+ .placeholder-wave {
42
+ mask-image: linear-gradient(130deg, $black 55%, rgba(0, 0, 0, (1 - $placeholder-opacity-min)) 75%, $black 95%);
43
+ mask-size: 200% 100%;
44
+ animation: placeholder-wave 2s linear infinite;
45
+ }
46
+
47
+ @keyframes placeholder-wave {
48
+ 100% {
49
+ mask-position: -200% 0%;
50
+ }
51
+ }
@@ -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 $border-radius-lg;
26
25
 
27
26
  &::before,
28
27
  &::after {
@@ -36,63 +35,56 @@
36
35
  }
37
36
 
38
37
  .bs-popover-top {
39
- margin-bottom: $popover-arrow-height;
40
-
41
- > .arrow {
42
- bottom: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
38
+ > .popover-arrow {
39
+ bottom: subtract(-$popover-arrow-height, $popover-border-width);
43
40
 
44
41
  &::before {
45
42
  bottom: 0;
46
- border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;
43
+ border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;
47
44
  border-top-color: $popover-arrow-outer-color;
48
45
  }
49
46
 
50
47
  &::after {
51
48
  bottom: $popover-border-width;
52
- border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;
49
+ border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;
53
50
  border-top-color: $popover-arrow-color;
54
51
  }
55
52
  }
56
53
  }
57
54
 
58
- .bs-popover-right {
59
- margin-left: $popover-arrow-height;
60
-
61
- > .arrow {
62
- left: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
55
+ .bs-popover-end {
56
+ > .popover-arrow {
57
+ left: subtract(-$popover-arrow-height, $popover-border-width);
63
58
  width: $popover-arrow-height;
64
59
  height: $popover-arrow-width;
65
- margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners
66
60
 
67
61
  &::before {
68
62
  left: 0;
69
- border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;
63
+ border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;
70
64
  border-right-color: $popover-arrow-outer-color;
71
65
  }
72
66
 
73
67
  &::after {
74
68
  left: $popover-border-width;
75
- border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;
69
+ border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;
76
70
  border-right-color: $popover-arrow-color;
77
71
  }
78
72
  }
79
73
  }
80
74
 
81
75
  .bs-popover-bottom {
82
- margin-top: $popover-arrow-height;
83
-
84
- > .arrow {
85
- top: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
76
+ > .popover-arrow {
77
+ top: subtract(-$popover-arrow-height, $popover-border-width);
86
78
 
87
79
  &::before {
88
80
  top: 0;
89
- border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);
81
+ border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);
90
82
  border-bottom-color: $popover-arrow-outer-color;
91
83
  }
92
84
 
93
85
  &::after {
94
86
  top: $popover-border-width;
95
- border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);
87
+ border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);
96
88
  border-bottom-color: $popover-arrow-color;
97
89
  }
98
90
  }
@@ -104,51 +96,47 @@
104
96
  left: 50%;
105
97
  display: block;
106
98
  width: $popover-arrow-width;
107
- margin-left: -$popover-arrow-width / 2;
99
+ margin-left: -$popover-arrow-width * .5;
108
100
  content: "";
109
101
  border-bottom: $popover-border-width solid $popover-header-bg;
110
102
  }
111
103
  }
112
104
 
113
- .bs-popover-left {
114
- margin-right: $popover-arrow-height;
115
-
116
- > .arrow {
117
- right: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
105
+ .bs-popover-start {
106
+ > .popover-arrow {
107
+ right: subtract(-$popover-arrow-height, $popover-border-width);
118
108
  width: $popover-arrow-height;
119
109
  height: $popover-arrow-width;
120
- margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners
121
110
 
122
111
  &::before {
123
112
  right: 0;
124
- border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;
113
+ border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;
125
114
  border-left-color: $popover-arrow-outer-color;
126
115
  }
127
116
 
128
117
  &::after {
129
118
  right: $popover-border-width;
130
- border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;
119
+ border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;
131
120
  border-left-color: $popover-arrow-color;
132
121
  }
133
122
  }
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,9 +144,8 @@
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%);
160
- $offset-border-width: calc(#{$border-radius-lg} - #{$popover-border-width});
161
- @include border-top-radius($offset-border-width);
147
+ border-bottom: $popover-border-width solid $popover-border-color;
148
+ @include border-top-radius($popover-inner-border-radius);
162
149
 
163
150
  &:empty {
164
151
  display: none;