bootstrap 4.3.1 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (179) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +55 -0
  3. data/CHANGELOG.md +2 -14
  4. data/README.md +28 -5
  5. data/assets/javascripts/bootstrap/alert.js +54 -163
  6. data/assets/javascripts/bootstrap/base-component.js +83 -0
  7. data/assets/javascripts/bootstrap/button.js +44 -152
  8. data/assets/javascripts/bootstrap/carousel.js +289 -569
  9. data/assets/javascripts/bootstrap/collapse.js +170 -349
  10. data/assets/javascripts/bootstrap/dom/data.js +62 -0
  11. data/assets/javascripts/bootstrap/dom/event-handler.js +236 -0
  12. data/assets/javascripts/bootstrap/dom/manipulator.js +71 -0
  13. data/assets/javascripts/bootstrap/dom/selector-engine.js +103 -0
  14. data/assets/javascripts/bootstrap/dropdown.js +303 -496
  15. data/assets/javascripts/bootstrap/modal.js +229 -559
  16. data/assets/javascripts/bootstrap/offcanvas.js +245 -0
  17. data/assets/javascripts/bootstrap/popover.js +61 -226
  18. data/assets/javascripts/bootstrap/scrollspy.js +217 -317
  19. data/assets/javascripts/bootstrap/tab.js +220 -212
  20. data/assets/javascripts/bootstrap/toast.js +145 -229
  21. data/assets/javascripts/bootstrap/tooltip.js +421 -782
  22. data/assets/javascripts/bootstrap/util/backdrop.js +139 -0
  23. data/assets/javascripts/bootstrap/util/component-functions.js +41 -0
  24. data/assets/javascripts/bootstrap/util/config.js +67 -0
  25. data/assets/javascripts/bootstrap/util/focustrap.js +113 -0
  26. data/assets/javascripts/bootstrap/util/index.js +281 -0
  27. data/assets/javascripts/bootstrap/util/sanitizer.js +110 -0
  28. data/assets/javascripts/bootstrap/util/scrollbar.js +112 -0
  29. data/assets/javascripts/bootstrap/util/swipe.js +134 -0
  30. data/assets/javascripts/bootstrap/util/template-factory.js +150 -0
  31. data/assets/javascripts/bootstrap-global-this-define.js +6 -0
  32. data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
  33. data/assets/javascripts/bootstrap-sprockets.js +23 -7
  34. data/assets/javascripts/bootstrap.js +3690 -3639
  35. data/assets/javascripts/bootstrap.min.js +4 -4
  36. data/assets/stylesheets/_bootstrap-grid.scss +53 -20
  37. data/assets/stylesheets/_bootstrap-reboot.scss +5 -7
  38. data/assets/stylesheets/_bootstrap.scss +21 -13
  39. data/assets/stylesheets/bootstrap/_accordion.scss +158 -0
  40. data/assets/stylesheets/bootstrap/_alert.scss +32 -15
  41. data/assets/stylesheets/bootstrap/_badge.scss +15 -31
  42. data/assets/stylesheets/bootstrap/_breadcrumb.scss +23 -24
  43. data/assets/stylesheets/bootstrap/_button-group.scss +27 -48
  44. data/assets/stylesheets/bootstrap/_buttons.scss +139 -69
  45. data/assets/stylesheets/bootstrap/_card.scss +91 -141
  46. data/assets/stylesheets/bootstrap/_carousel.scss +86 -39
  47. data/assets/stylesheets/bootstrap/_close.scss +51 -29
  48. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  49. data/assets/stylesheets/bootstrap/_dropdown.scss +131 -72
  50. data/assets/stylesheets/bootstrap/_forms.scss +9 -330
  51. data/assets/stylesheets/bootstrap/_functions.scss +244 -28
  52. data/assets/stylesheets/bootstrap/_grid.scss +18 -31
  53. data/assets/stylesheets/bootstrap/_helpers.scss +12 -0
  54. data/assets/stylesheets/bootstrap/_images.scss +3 -3
  55. data/assets/stylesheets/bootstrap/_list-group.scss +101 -53
  56. data/assets/stylesheets/bootstrap/_maps.scss +174 -0
  57. data/assets/stylesheets/bootstrap/_mixins.scss +13 -18
  58. data/assets/stylesheets/bootstrap/_modal.scss +120 -112
  59. data/assets/stylesheets/bootstrap/_nav.scss +113 -24
  60. data/assets/stylesheets/bootstrap/_navbar.scss +145 -150
  61. data/assets/stylesheets/bootstrap/_offcanvas.scss +146 -0
  62. data/assets/stylesheets/bootstrap/_pagination.scss +74 -38
  63. data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
  64. data/assets/stylesheets/bootstrap/_popover.scss +99 -74
  65. data/assets/stylesheets/bootstrap/_progress.scss +40 -15
  66. data/assets/stylesheets/bootstrap/_reboot.scss +342 -215
  67. data/assets/stylesheets/bootstrap/_root.scss +174 -9
  68. data/assets/stylesheets/bootstrap/_spinners.scss +52 -22
  69. data/assets/stylesheets/bootstrap/_tables.scss +101 -115
  70. data/assets/stylesheets/bootstrap/_toasts.scss +54 -25
  71. data/assets/stylesheets/bootstrap/_tooltip.scss +67 -63
  72. data/assets/stylesheets/bootstrap/_transitions.scss +8 -1
  73. data/assets/stylesheets/bootstrap/_type.scss +42 -61
  74. data/assets/stylesheets/bootstrap/_utilities.scss +806 -17
  75. data/assets/stylesheets/bootstrap/_variables-dark.scss +85 -0
  76. data/assets/stylesheets/bootstrap/_variables.scss +1235 -615
  77. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +19 -0
  78. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +94 -0
  79. data/assets/stylesheets/bootstrap/forms/_form-check.scss +188 -0
  80. data/assets/stylesheets/bootstrap/forms/_form-control.scss +214 -0
  81. data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
  82. data/assets/stylesheets/bootstrap/forms/_form-select.scss +80 -0
  83. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  84. data/assets/stylesheets/bootstrap/forms/_input-group.scss +132 -0
  85. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  86. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  87. data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +8 -0
  88. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +30 -0
  89. data/assets/stylesheets/bootstrap/helpers/_focus-ring.scss +5 -0
  90. data/assets/stylesheets/bootstrap/helpers/_icon-link.scss +25 -0
  91. data/assets/stylesheets/bootstrap/helpers/_position.scss +36 -0
  92. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
  93. data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -0
  94. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  95. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  96. data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
  97. data/assets/stylesheets/bootstrap/helpers/_vr.scss +8 -0
  98. data/assets/stylesheets/bootstrap/mixins/_alert.scss +11 -6
  99. data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
  100. data/assets/stylesheets/bootstrap/mixins/_banner.scss +7 -0
  101. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +37 -22
  102. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
  103. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +20 -16
  104. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +60 -97
  105. data/assets/stylesheets/bootstrap/mixins/_caret.scss +34 -27
  106. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  107. data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
  108. data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
  109. data/assets/stylesheets/bootstrap/mixins/_container.scss +11 -0
  110. data/assets/stylesheets/bootstrap/mixins/_forms.scss +77 -116
  111. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
  112. data/assets/stylesheets/bootstrap/mixins/_grid.scss +133 -33
  113. data/assets/stylesheets/bootstrap/mixins/_image.scss +0 -20
  114. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +7 -2
  115. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +7 -19
  116. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  117. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +24 -0
  118. data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
  119. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +97 -0
  120. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +33 -0
  121. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  122. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +276 -132
  123. data/bootstrap.gemspec +4 -6
  124. data/lib/bootstrap/version.rb +2 -2
  125. data/tasks/updater/js.rb +31 -7
  126. data/tasks/updater/network.rb +10 -4
  127. data/tasks/updater/scss.rb +1 -1
  128. data/tasks/updater.rb +2 -2
  129. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  130. data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
  131. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  132. data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
  133. data/test/dummy_rails/app/views/pages/root.html +89 -0
  134. data/test/dummy_rails/config/application.rb +0 -3
  135. data/test/gemfiles/rails_5_2.gemfile +8 -0
  136. data/test/gemfiles/rails_6_0.gemfile +7 -0
  137. data/test/gemfiles/rails_6_1.gemfile +7 -0
  138. data/test/gemfiles/rails_7_0.gemfile +7 -0
  139. data/test/support/dummy_rails_integration.rb +3 -1
  140. data/test/test_helper.rb +18 -12
  141. metadata +86 -84
  142. data/.travis.yml +0 -17
  143. data/assets/javascripts/bootstrap/util.js +0 -171
  144. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  145. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -507
  146. data/assets/stylesheets/bootstrap/_input-group.scss +0 -193
  147. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  148. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  149. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  150. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -21
  151. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  152. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  153. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -66
  154. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  155. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -10
  156. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -33
  157. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  158. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  159. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -16
  160. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  161. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  162. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  163. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  164. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  165. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  166. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  167. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  168. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  169. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  170. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  171. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  172. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  173. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  174. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  175. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  176. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  177. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
  178. data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
  179. /data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
@@ -1,37 +1,60 @@
1
- // Contents
2
- //
3
- // Navbar
4
- // Navbar brand
5
- // Navbar nav
6
- // Navbar text
7
- // Navbar divider
8
- // Responsive navbar
9
- // Navbar position
10
- // Navbar themes
11
-
12
-
13
1
  // Navbar
14
2
  //
15
3
  // Provide a static navbar from which we expand to create full-width, fixed, and
16
4
  // other navbar variations.
17
5
 
18
6
  .navbar {
7
+ // scss-docs-start navbar-css-vars
8
+ --#{$prefix}navbar-padding-x: #{if($navbar-padding-x == null, 0, $navbar-padding-x)};
9
+ --#{$prefix}navbar-padding-y: #{$navbar-padding-y};
10
+ --#{$prefix}navbar-color: #{$navbar-light-color};
11
+ --#{$prefix}navbar-hover-color: #{$navbar-light-hover-color};
12
+ --#{$prefix}navbar-disabled-color: #{$navbar-light-disabled-color};
13
+ --#{$prefix}navbar-active-color: #{$navbar-light-active-color};
14
+ --#{$prefix}navbar-brand-padding-y: #{$navbar-brand-padding-y};
15
+ --#{$prefix}navbar-brand-margin-end: #{$navbar-brand-margin-end};
16
+ --#{$prefix}navbar-brand-font-size: #{$navbar-brand-font-size};
17
+ --#{$prefix}navbar-brand-color: #{$navbar-light-brand-color};
18
+ --#{$prefix}navbar-brand-hover-color: #{$navbar-light-brand-hover-color};
19
+ --#{$prefix}navbar-nav-link-padding-x: #{$navbar-nav-link-padding-x};
20
+ --#{$prefix}navbar-toggler-padding-y: #{$navbar-toggler-padding-y};
21
+ --#{$prefix}navbar-toggler-padding-x: #{$navbar-toggler-padding-x};
22
+ --#{$prefix}navbar-toggler-font-size: #{$navbar-toggler-font-size};
23
+ --#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-light-toggler-icon-bg)};
24
+ --#{$prefix}navbar-toggler-border-color: #{$navbar-light-toggler-border-color};
25
+ --#{$prefix}navbar-toggler-border-radius: #{$navbar-toggler-border-radius};
26
+ --#{$prefix}navbar-toggler-focus-width: #{$navbar-toggler-focus-width};
27
+ --#{$prefix}navbar-toggler-transition: #{$navbar-toggler-transition};
28
+ // scss-docs-end navbar-css-vars
29
+
19
30
  position: relative;
20
31
  display: flex;
21
32
  flex-wrap: wrap; // allow us to do the line break for collapsing content
22
33
  align-items: center;
23
34
  justify-content: space-between; // space out brand from logo
24
- padding: $navbar-padding-y $navbar-padding-x;
35
+ padding: var(--#{$prefix}navbar-padding-y) var(--#{$prefix}navbar-padding-x);
36
+ @include gradient-bg();
25
37
 
26
38
  // Because flex properties aren't inherited, we need to redeclare these first
27
39
  // few properties so that content nested within behave properly.
28
- > .container,
29
- > .container-fluid {
40
+ // The `flex-wrap` property is inherited to simplify the expanded navbars
41
+ %container-flex-properties {
30
42
  display: flex;
31
- flex-wrap: wrap;
43
+ flex-wrap: inherit;
32
44
  align-items: center;
33
45
  justify-content: space-between;
34
46
  }
47
+
48
+ > .container,
49
+ > .container-fluid {
50
+ @extend %container-flex-properties;
51
+ }
52
+
53
+ @each $breakpoint, $container-max-width in $container-max-widths {
54
+ > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {
55
+ @extend %container-flex-properties;
56
+ }
57
+ }
35
58
  }
36
59
 
37
60
 
@@ -40,16 +63,18 @@
40
63
  // Used for brand, project, or site names.
41
64
 
42
65
  .navbar-brand {
43
- display: inline-block;
44
- padding-top: $navbar-brand-padding-y;
45
- padding-bottom: $navbar-brand-padding-y;
46
- margin-right: $navbar-padding-x;
47
- @include font-size($navbar-brand-font-size);
48
- line-height: inherit;
66
+ padding-top: var(--#{$prefix}navbar-brand-padding-y);
67
+ padding-bottom: var(--#{$prefix}navbar-brand-padding-y);
68
+ margin-right: var(--#{$prefix}navbar-brand-margin-end);
69
+ @include font-size(var(--#{$prefix}navbar-brand-font-size));
70
+ color: var(--#{$prefix}navbar-brand-color);
71
+ text-decoration: if($link-decoration == none, null, none);
49
72
  white-space: nowrap;
50
73
 
51
- @include hover-focus {
52
- text-decoration: none;
74
+ &:hover,
75
+ &:focus {
76
+ color: var(--#{$prefix}navbar-brand-hover-color);
77
+ text-decoration: if($link-hover-decoration == underline, none, null);
53
78
  }
54
79
  }
55
80
 
@@ -59,6 +84,16 @@
59
84
  // Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).
60
85
 
61
86
  .navbar-nav {
87
+ // scss-docs-start navbar-nav-css-vars
88
+ --#{$prefix}nav-link-padding-x: 0;
89
+ --#{$prefix}nav-link-padding-y: #{$nav-link-padding-y};
90
+ @include rfs($nav-link-font-size, --#{$prefix}nav-link-font-size);
91
+ --#{$prefix}nav-link-font-weight: #{$nav-link-font-weight};
92
+ --#{$prefix}nav-link-color: var(--#{$prefix}navbar-color);
93
+ --#{$prefix}nav-link-hover-color: var(--#{$prefix}navbar-hover-color);
94
+ --#{$prefix}nav-link-disabled-color: var(--#{$prefix}navbar-disabled-color);
95
+ // scss-docs-end navbar-nav-css-vars
96
+
62
97
  display: flex;
63
98
  flex-direction: column; // cannot use `inherit` to get the `.navbar`s value
64
99
  padding-left: 0;
@@ -66,13 +101,14 @@
66
101
  list-style: none;
67
102
 
68
103
  .nav-link {
69
- padding-right: 0;
70
- padding-left: 0;
104
+ &.active,
105
+ &.show {
106
+ color: var(--#{$prefix}navbar-active-color);
107
+ }
71
108
  }
72
109
 
73
110
  .dropdown-menu {
74
111
  position: static;
75
- float: none;
76
112
  }
77
113
  }
78
114
 
@@ -82,9 +118,15 @@
82
118
  //
83
119
 
84
120
  .navbar-text {
85
- display: inline-block;
86
121
  padding-top: $nav-link-padding-y;
87
122
  padding-bottom: $nav-link-padding-y;
123
+ color: var(--#{$prefix}navbar-color);
124
+
125
+ a,
126
+ a:hover,
127
+ a:focus {
128
+ color: var(--#{$prefix}navbar-active-color);
129
+ }
88
130
  }
89
131
 
90
132
 
@@ -106,16 +148,24 @@
106
148
 
107
149
  // Button for toggling the navbar when in its collapsed state
108
150
  .navbar-toggler {
109
- padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;
110
- @include font-size($navbar-toggler-font-size);
151
+ padding: var(--#{$prefix}navbar-toggler-padding-y) var(--#{$prefix}navbar-toggler-padding-x);
152
+ @include font-size(var(--#{$prefix}navbar-toggler-font-size));
111
153
  line-height: 1;
154
+ color: var(--#{$prefix}navbar-color);
112
155
  background-color: transparent; // remove default button style
113
- border: $border-width solid transparent; // remove default button style
114
- @include border-radius($navbar-toggler-border-radius);
156
+ border: var(--#{$prefix}border-width) solid var(--#{$prefix}navbar-toggler-border-color); // remove default button style
157
+ @include border-radius(var(--#{$prefix}navbar-toggler-border-radius));
158
+ @include transition(var(--#{$prefix}navbar-toggler-transition));
115
159
 
116
- @include hover-focus {
160
+ &:hover {
117
161
  text-decoration: none;
118
162
  }
163
+
164
+ &:focus {
165
+ text-decoration: none;
166
+ outline: 0;
167
+ box-shadow: 0 0 0 var(--#{$prefix}navbar-toggler-focus-width);
168
+ }
119
169
  }
120
170
 
121
171
  // Keep as a separate element so folks can easily override it with another icon
@@ -125,11 +175,18 @@
125
175
  width: 1.5em;
126
176
  height: 1.5em;
127
177
  vertical-align: middle;
128
- content: "";
129
- background: no-repeat center center;
130
- background-size: 100% 100%;
178
+ background-image: var(--#{$prefix}navbar-toggler-icon-bg);
179
+ background-repeat: no-repeat;
180
+ background-position: center;
181
+ background-size: 100%;
182
+ }
183
+
184
+ .navbar-nav-scroll {
185
+ max-height: var(--#{$prefix}scroll-height, 75vh);
186
+ overflow-y: auto;
131
187
  }
132
188
 
189
+ // scss-docs-start navbar-expand-loop
133
190
  // Generate series of `.navbar-expand-*` responsive classes for configuring
134
191
  // where your navbar collapses.
135
192
  .navbar-expand {
@@ -137,17 +194,10 @@
137
194
  $next: breakpoint-next($breakpoint, $grid-breakpoints);
138
195
  $infix: breakpoint-infix($next, $grid-breakpoints);
139
196
 
197
+ // stylelint-disable-next-line scss/selector-no-union-class-name
140
198
  &#{$infix} {
141
- @include media-breakpoint-down($breakpoint) {
142
- > .container,
143
- > .container-fluid {
144
- padding-right: 0;
145
- padding-left: 0;
146
- }
147
- }
148
-
149
199
  @include media-breakpoint-up($next) {
150
- flex-flow: row nowrap;
200
+ flex-wrap: nowrap;
151
201
  justify-content: flex-start;
152
202
 
153
203
  .navbar-nav {
@@ -158,137 +208,82 @@
158
208
  }
159
209
 
160
210
  .nav-link {
161
- padding-right: $navbar-nav-link-padding-x;
162
- padding-left: $navbar-nav-link-padding-x;
211
+ padding-right: var(--#{$prefix}navbar-nav-link-padding-x);
212
+ padding-left: var(--#{$prefix}navbar-nav-link-padding-x);
163
213
  }
164
214
  }
165
215
 
166
- // For nesting containers, have to redeclare for alignment purposes
167
- > .container,
168
- > .container-fluid {
169
- flex-wrap: nowrap;
216
+ .navbar-nav-scroll {
217
+ overflow: visible;
170
218
  }
171
219
 
172
220
  .navbar-collapse {
173
221
  display: flex !important; // stylelint-disable-line declaration-no-important
174
-
175
- // Changes flex-bases to auto because of an IE10 bug
176
222
  flex-basis: auto;
177
223
  }
178
224
 
179
225
  .navbar-toggler {
180
226
  display: none;
181
227
  }
228
+
229
+ .offcanvas {
230
+ // stylelint-disable declaration-no-important
231
+ position: static;
232
+ z-index: auto;
233
+ flex-grow: 1;
234
+ width: auto !important;
235
+ height: auto !important;
236
+ visibility: visible !important;
237
+ background-color: transparent !important;
238
+ border: 0 !important;
239
+ transform: none !important;
240
+ @include box-shadow(none);
241
+ @include transition(none);
242
+ // stylelint-enable declaration-no-important
243
+
244
+ .offcanvas-header {
245
+ display: none;
246
+ }
247
+
248
+ .offcanvas-body {
249
+ display: flex;
250
+ flex-grow: 0;
251
+ padding: 0;
252
+ overflow-y: visible;
253
+ }
254
+ }
182
255
  }
183
256
  }
184
257
  }
185
258
  }
186
-
259
+ // scss-docs-end navbar-expand-loop
187
260
 
188
261
  // Navbar themes
189
262
  //
190
263
  // Styles for switching between navbars with light or dark background.
191
264
 
192
- // Dark links against a light background
193
265
  .navbar-light {
194
- .navbar-brand {
195
- color: $navbar-light-brand-color;
196
-
197
- @include hover-focus {
198
- color: $navbar-light-brand-hover-color;
199
- }
200
- }
201
-
202
- .navbar-nav {
203
- .nav-link {
204
- color: $navbar-light-color;
205
-
206
- @include hover-focus {
207
- color: $navbar-light-hover-color;
208
- }
209
-
210
- &.disabled {
211
- color: $navbar-light-disabled-color;
212
- }
213
- }
214
-
215
- .show > .nav-link,
216
- .active > .nav-link,
217
- .nav-link.show,
218
- .nav-link.active {
219
- color: $navbar-light-active-color;
220
- }
221
- }
222
-
223
- .navbar-toggler {
224
- color: $navbar-light-color;
225
- border-color: $navbar-light-toggler-border-color;
226
- }
227
-
228
- .navbar-toggler-icon {
229
- background-image: $navbar-light-toggler-icon-bg;
230
- }
231
-
232
- .navbar-text {
233
- color: $navbar-light-color;
234
- a {
235
- color: $navbar-light-active-color;
236
-
237
- @include hover-focus {
238
- color: $navbar-light-active-color;
239
- }
240
- }
241
- }
266
+ @include deprecate("`.navbar-light`", "v5.2.0", "v6.0.0", true);
242
267
  }
243
268
 
244
- // White links against a dark background
245
- .navbar-dark {
246
- .navbar-brand {
247
- color: $navbar-dark-brand-color;
248
-
249
- @include hover-focus {
250
- color: $navbar-dark-brand-hover-color;
251
- }
252
- }
253
-
254
- .navbar-nav {
255
- .nav-link {
256
- color: $navbar-dark-color;
257
-
258
- @include hover-focus {
259
- color: $navbar-dark-hover-color;
260
- }
261
-
262
- &.disabled {
263
- color: $navbar-dark-disabled-color;
264
- }
265
- }
266
-
267
- .show > .nav-link,
268
- .active > .nav-link,
269
- .nav-link.show,
270
- .nav-link.active {
271
- color: $navbar-dark-active-color;
272
- }
273
- }
274
-
275
- .navbar-toggler {
276
- color: $navbar-dark-color;
277
- border-color: $navbar-dark-toggler-border-color;
278
- }
279
-
280
- .navbar-toggler-icon {
281
- background-image: $navbar-dark-toggler-icon-bg;
282
- }
283
-
284
- .navbar-text {
285
- color: $navbar-dark-color;
286
- a {
287
- color: $navbar-dark-active-color;
269
+ .navbar-dark,
270
+ .navbar[data-bs-theme="dark"] {
271
+ // scss-docs-start navbar-dark-css-vars
272
+ --#{$prefix}navbar-color: #{$navbar-dark-color};
273
+ --#{$prefix}navbar-hover-color: #{$navbar-dark-hover-color};
274
+ --#{$prefix}navbar-disabled-color: #{$navbar-dark-disabled-color};
275
+ --#{$prefix}navbar-active-color: #{$navbar-dark-active-color};
276
+ --#{$prefix}navbar-brand-color: #{$navbar-dark-brand-color};
277
+ --#{$prefix}navbar-brand-hover-color: #{$navbar-dark-brand-hover-color};
278
+ --#{$prefix}navbar-toggler-border-color: #{$navbar-dark-toggler-border-color};
279
+ --#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-dark-toggler-icon-bg)};
280
+ // scss-docs-end navbar-dark-css-vars
281
+ }
288
282
 
289
- @include hover-focus {
290
- color: $navbar-dark-active-color;
291
- }
283
+ @if $enable-dark-mode {
284
+ @include color-mode(dark) {
285
+ .navbar-toggler-icon {
286
+ --#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-dark-toggler-icon-bg)};
292
287
  }
293
288
  }
294
289
  }
@@ -0,0 +1,146 @@
1
+ // stylelint-disable function-disallowed-list
2
+
3
+ %offcanvas-css-vars {
4
+ // scss-docs-start offcanvas-css-vars
5
+ --#{$prefix}offcanvas-zindex: #{$zindex-offcanvas};
6
+ --#{$prefix}offcanvas-width: #{$offcanvas-horizontal-width};
7
+ --#{$prefix}offcanvas-height: #{$offcanvas-vertical-height};
8
+ --#{$prefix}offcanvas-padding-x: #{$offcanvas-padding-x};
9
+ --#{$prefix}offcanvas-padding-y: #{$offcanvas-padding-y};
10
+ --#{$prefix}offcanvas-color: #{$offcanvas-color};
11
+ --#{$prefix}offcanvas-bg: #{$offcanvas-bg-color};
12
+ --#{$prefix}offcanvas-border-width: #{$offcanvas-border-width};
13
+ --#{$prefix}offcanvas-border-color: #{$offcanvas-border-color};
14
+ --#{$prefix}offcanvas-box-shadow: #{$offcanvas-box-shadow};
15
+ --#{$prefix}offcanvas-transition: #{transform $offcanvas-transition-duration ease-in-out};
16
+ --#{$prefix}offcanvas-title-line-height: #{$offcanvas-title-line-height};
17
+ // scss-docs-end offcanvas-css-vars
18
+ }
19
+
20
+ @each $breakpoint in map-keys($grid-breakpoints) {
21
+ $next: breakpoint-next($breakpoint, $grid-breakpoints);
22
+ $infix: breakpoint-infix($next, $grid-breakpoints);
23
+
24
+ .offcanvas#{$infix} {
25
+ @extend %offcanvas-css-vars;
26
+ }
27
+ }
28
+
29
+ @each $breakpoint in map-keys($grid-breakpoints) {
30
+ $next: breakpoint-next($breakpoint, $grid-breakpoints);
31
+ $infix: breakpoint-infix($next, $grid-breakpoints);
32
+
33
+ .offcanvas#{$infix} {
34
+ @include media-breakpoint-down($next) {
35
+ position: fixed;
36
+ bottom: 0;
37
+ z-index: var(--#{$prefix}offcanvas-zindex);
38
+ display: flex;
39
+ flex-direction: column;
40
+ max-width: 100%;
41
+ color: var(--#{$prefix}offcanvas-color);
42
+ visibility: hidden;
43
+ background-color: var(--#{$prefix}offcanvas-bg);
44
+ background-clip: padding-box;
45
+ outline: 0;
46
+ @include box-shadow(var(--#{$prefix}offcanvas-box-shadow));
47
+ @include transition(var(--#{$prefix}offcanvas-transition));
48
+
49
+ &.offcanvas-start {
50
+ top: 0;
51
+ left: 0;
52
+ width: var(--#{$prefix}offcanvas-width);
53
+ border-right: var(--#{$prefix}offcanvas-border-width) solid var(--#{$prefix}offcanvas-border-color);
54
+ transform: translateX(-100%);
55
+ }
56
+
57
+ &.offcanvas-end {
58
+ top: 0;
59
+ right: 0;
60
+ width: var(--#{$prefix}offcanvas-width);
61
+ border-left: var(--#{$prefix}offcanvas-border-width) solid var(--#{$prefix}offcanvas-border-color);
62
+ transform: translateX(100%);
63
+ }
64
+
65
+ &.offcanvas-top {
66
+ top: 0;
67
+ right: 0;
68
+ left: 0;
69
+ height: var(--#{$prefix}offcanvas-height);
70
+ max-height: 100%;
71
+ border-bottom: var(--#{$prefix}offcanvas-border-width) solid var(--#{$prefix}offcanvas-border-color);
72
+ transform: translateY(-100%);
73
+ }
74
+
75
+ &.offcanvas-bottom {
76
+ right: 0;
77
+ left: 0;
78
+ height: var(--#{$prefix}offcanvas-height);
79
+ max-height: 100%;
80
+ border-top: var(--#{$prefix}offcanvas-border-width) solid var(--#{$prefix}offcanvas-border-color);
81
+ transform: translateY(100%);
82
+ }
83
+
84
+ &.showing,
85
+ &.show:not(.hiding) {
86
+ transform: none;
87
+ }
88
+
89
+ &.showing,
90
+ &.hiding,
91
+ &.show {
92
+ visibility: visible;
93
+ }
94
+ }
95
+
96
+ @if not ($infix == "") {
97
+ @include media-breakpoint-up($next) {
98
+ --#{$prefix}offcanvas-height: auto;
99
+ --#{$prefix}offcanvas-border-width: 0;
100
+ background-color: transparent !important; // stylelint-disable-line declaration-no-important
101
+
102
+ .offcanvas-header {
103
+ display: none;
104
+ }
105
+
106
+ .offcanvas-body {
107
+ display: flex;
108
+ flex-grow: 0;
109
+ padding: 0;
110
+ overflow-y: visible;
111
+ // Reset `background-color` in case `.bg-*` classes are used in offcanvas
112
+ background-color: transparent !important; // stylelint-disable-line declaration-no-important
113
+ }
114
+ }
115
+ }
116
+ }
117
+ }
118
+
119
+ .offcanvas-backdrop {
120
+ @include overlay-backdrop($zindex-offcanvas-backdrop, $offcanvas-backdrop-bg, $offcanvas-backdrop-opacity);
121
+ }
122
+
123
+ .offcanvas-header {
124
+ display: flex;
125
+ align-items: center;
126
+ justify-content: space-between;
127
+ padding: var(--#{$prefix}offcanvas-padding-y) var(--#{$prefix}offcanvas-padding-x);
128
+
129
+ .btn-close {
130
+ padding: calc(var(--#{$prefix}offcanvas-padding-y) * .5) calc(var(--#{$prefix}offcanvas-padding-x) * .5);
131
+ margin-top: calc(-.5 * var(--#{$prefix}offcanvas-padding-y));
132
+ margin-right: calc(-.5 * var(--#{$prefix}offcanvas-padding-x));
133
+ margin-bottom: calc(-.5 * var(--#{$prefix}offcanvas-padding-y));
134
+ }
135
+ }
136
+
137
+ .offcanvas-title {
138
+ margin-bottom: 0;
139
+ line-height: var(--#{$prefix}offcanvas-title-line-height);
140
+ }
141
+
142
+ .offcanvas-body {
143
+ flex-grow: 1;
144
+ padding: var(--#{$prefix}offcanvas-padding-y) var(--#{$prefix}offcanvas-padding-x);
145
+ overflow-y: auto;
146
+ }