bootstrap 4.6.0 → 5.3.2

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