bootstrap 4.5.3 → 5.2.3

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