bootstrap 4.3.1 → 5.3.0

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 (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
+ }