bootstrap 4.6.2 → 5.3.1

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 (175) 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 +50 -147
  5. data/assets/javascripts/bootstrap/base-component.js +83 -0
  6. data/assets/javascripts/bootstrap/button.js +40 -190
  7. data/assets/javascripts/bootstrap/carousel.js +282 -537
  8. data/assets/javascripts/bootstrap/collapse.js +166 -314
  9. data/assets/javascripts/bootstrap/dom/data.js +62 -0
  10. data/assets/javascripts/bootstrap/dom/event-handler.js +236 -0
  11. data/assets/javascripts/bootstrap/dom/manipulator.js +71 -0
  12. data/assets/javascripts/bootstrap/dom/selector-engine.js +103 -0
  13. data/assets/javascripts/bootstrap/dropdown.js +297 -455
  14. data/assets/javascripts/bootstrap/modal.js +223 -566
  15. data/assets/javascripts/bootstrap/offcanvas.js +245 -0
  16. data/assets/javascripts/bootstrap/popover.js +59 -208
  17. data/assets/javascripts/bootstrap/scrollspy.js +213 -276
  18. data/assets/javascripts/bootstrap/tab.js +222 -200
  19. data/assets/javascripts/bootstrap/toast.js +137 -206
  20. data/assets/javascripts/bootstrap/tooltip.js +403 -746
  21. data/assets/javascripts/bootstrap/util/backdrop.js +139 -0
  22. data/assets/javascripts/bootstrap/util/component-functions.js +41 -0
  23. data/assets/javascripts/bootstrap/util/config.js +67 -0
  24. data/assets/javascripts/bootstrap/util/focustrap.js +113 -0
  25. data/assets/javascripts/bootstrap/util/index.js +281 -0
  26. data/assets/javascripts/bootstrap/util/sanitizer.js +110 -0
  27. data/assets/javascripts/bootstrap/util/scrollbar.js +112 -0
  28. data/assets/javascripts/bootstrap/util/swipe.js +134 -0
  29. data/assets/javascripts/bootstrap/util/template-factory.js +150 -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 +21 -5
  33. data/assets/javascripts/bootstrap.js +3623 -3485
  34. data/assets/javascripts/bootstrap.min.js +3 -3
  35. data/assets/stylesheets/_bootstrap-grid.scss +53 -21
  36. data/assets/stylesheets/_bootstrap-reboot.scss +5 -7
  37. data/assets/stylesheets/_bootstrap.scss +21 -13
  38. data/assets/stylesheets/bootstrap/_accordion.scss +158 -0
  39. data/assets/stylesheets/bootstrap/_alert.scss +32 -16
  40. data/assets/stylesheets/bootstrap/_badge.scss +15 -31
  41. data/assets/stylesheets/bootstrap/_breadcrumb.scss +22 -24
  42. data/assets/stylesheets/bootstrap/_button-group.scss +27 -48
  43. data/assets/stylesheets/bootstrap/_buttons.scss +136 -71
  44. data/assets/stylesheets/bootstrap/_card.scss +66 -113
  45. data/assets/stylesheets/bootstrap/_carousel.scss +78 -34
  46. data/assets/stylesheets/bootstrap/_close.scss +51 -28
  47. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  48. data/assets/stylesheets/bootstrap/_dropdown.scss +129 -71
  49. data/assets/stylesheets/bootstrap/_forms.scss +9 -347
  50. data/assets/stylesheets/bootstrap/_functions.scss +135 -23
  51. data/assets/stylesheets/bootstrap/_grid.scss +18 -52
  52. data/assets/stylesheets/bootstrap/_helpers.scss +12 -0
  53. data/assets/stylesheets/bootstrap/_list-group.scss +77 -34
  54. data/assets/stylesheets/bootstrap/_maps.scss +174 -0
  55. data/assets/stylesheets/bootstrap/_mixins.scss +10 -15
  56. data/assets/stylesheets/bootstrap/_modal.scss +107 -110
  57. data/assets/stylesheets/bootstrap/_nav.scss +99 -27
  58. data/assets/stylesheets/bootstrap/_navbar.scss +129 -172
  59. data/assets/stylesheets/bootstrap/_offcanvas.scss +146 -0
  60. data/assets/stylesheets/bootstrap/_pagination.scss +72 -37
  61. data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
  62. data/assets/stylesheets/bootstrap/_popover.scss +99 -73
  63. data/assets/stylesheets/bootstrap/_progress.scss +35 -14
  64. data/assets/stylesheets/bootstrap/_reboot.scss +318 -192
  65. data/assets/stylesheets/bootstrap/_root.scss +174 -9
  66. data/assets/stylesheets/bootstrap/_spinners.scss +43 -23
  67. data/assets/stylesheets/bootstrap/_tables.scss +101 -115
  68. data/assets/stylesheets/bootstrap/_toasts.scss +54 -27
  69. data/assets/stylesheets/bootstrap/_tooltip.scss +67 -63
  70. data/assets/stylesheets/bootstrap/_transitions.scss +3 -2
  71. data/assets/stylesheets/bootstrap/_type.scss +40 -59
  72. data/assets/stylesheets/bootstrap/_utilities.scss +806 -18
  73. data/assets/stylesheets/bootstrap/_variables-dark.scss +85 -0
  74. data/assets/stylesheets/bootstrap/_variables.scss +1202 -606
  75. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +19 -0
  76. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +95 -0
  77. data/assets/stylesheets/bootstrap/forms/_form-check.scss +188 -0
  78. data/assets/stylesheets/bootstrap/forms/_form-control.scss +214 -0
  79. data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
  80. data/assets/stylesheets/bootstrap/forms/_form-select.scss +80 -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 +7 -0
  86. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +30 -0
  87. data/assets/stylesheets/bootstrap/helpers/_focus-ring.scss +5 -0
  88. data/assets/stylesheets/bootstrap/helpers/_icon-link.scss +25 -0
  89. data/assets/stylesheets/bootstrap/helpers/_position.scss +36 -0
  90. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
  91. data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -0
  92. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  93. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  94. data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
  95. data/assets/stylesheets/bootstrap/helpers/_vr.scss +8 -0
  96. data/assets/stylesheets/bootstrap/mixins/_alert.scss +11 -6
  97. data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
  98. data/assets/stylesheets/bootstrap/mixins/_banner.scss +7 -0
  99. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +10 -8
  100. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
  101. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +20 -16
  102. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +60 -100
  103. data/assets/stylesheets/bootstrap/mixins/_caret.scss +34 -27
  104. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  105. data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
  106. data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
  107. data/assets/stylesheets/bootstrap/mixins/_container.scss +11 -0
  108. data/assets/stylesheets/bootstrap/mixins/_forms.scss +54 -96
  109. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
  110. data/assets/stylesheets/bootstrap/mixins/_grid.scss +118 -36
  111. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  112. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +7 -2
  113. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  114. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +7 -19
  115. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  116. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +24 -0
  117. data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
  118. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +97 -0
  119. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +33 -0
  120. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  121. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +211 -91
  122. data/bootstrap.gemspec +3 -5
  123. data/lib/bootstrap/version.rb +2 -2
  124. data/tasks/updater/js.rb +17 -5
  125. data/tasks/updater/network.rb +2 -2
  126. data/tasks/updater/scss.rb +1 -1
  127. data/tasks/updater.rb +2 -2
  128. data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
  129. data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
  130. data/test/dummy_rails/app/views/pages/root.html +89 -0
  131. data/test/dummy_rails/config/application.rb +0 -3
  132. data/test/gemfiles/rails_5_2.gemfile +8 -0
  133. data/test/gemfiles/rails_6_1.gemfile +7 -0
  134. data/test/gemfiles/rails_7_0.gemfile +7 -0
  135. data/test/test_helper.rb +3 -2
  136. metadata +78 -82
  137. data/.travis.yml +0 -31
  138. data/assets/javascripts/bootstrap/util.js +0 -189
  139. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  140. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -526
  141. data/assets/stylesheets/bootstrap/_input-group.scss +0 -211
  142. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  143. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  144. data/assets/stylesheets/bootstrap/_print.scss +0 -132
  145. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
  146. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  147. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  148. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
  149. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  150. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  151. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
  152. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  153. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  154. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  155. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  156. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  157. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  158. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  159. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  160. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  161. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  162. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  163. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  164. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
  165. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  166. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  167. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  168. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  169. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  170. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  171. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  172. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  173. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
  174. data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
  175. /data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
@@ -1,19 +1,184 @@
1
- :root {
2
- // Custom variable values only support SassScript inside `#{}`.
1
+ :root,
2
+ [data-bs-theme="light"] {
3
+ // Note: Custom variable values only support SassScript inside `#{}`.
4
+
5
+ // Colors
6
+ //
7
+ // Generate palettes for full colors, grays, and theme colors.
8
+
3
9
  @each $color, $value in $colors {
4
- --#{$color}: #{$value};
10
+ --#{$prefix}#{$color}: #{$value};
11
+ }
12
+
13
+ @each $color, $value in $grays {
14
+ --#{$prefix}gray-#{$color}: #{$value};
5
15
  }
6
16
 
7
17
  @each $color, $value in $theme-colors {
8
- --#{$color}: #{$value};
18
+ --#{$prefix}#{$color}: #{$value};
19
+ }
20
+
21
+ @each $color, $value in $theme-colors-rgb {
22
+ --#{$prefix}#{$color}-rgb: #{$value};
9
23
  }
10
24
 
11
- @each $bp, $value in $grid-breakpoints {
12
- --breakpoint-#{$bp}: #{$value};
25
+ @each $color, $value in $theme-colors-text {
26
+ --#{$prefix}#{$color}-text-emphasis: #{$value};
13
27
  }
14
28
 
15
- // Use `inspect` for lists so that quoted items keep the quotes.
29
+ @each $color, $value in $theme-colors-bg-subtle {
30
+ --#{$prefix}#{$color}-bg-subtle: #{$value};
31
+ }
32
+
33
+ @each $color, $value in $theme-colors-border-subtle {
34
+ --#{$prefix}#{$color}-border-subtle: #{$value};
35
+ }
36
+
37
+ --#{$prefix}white-rgb: #{to-rgb($white)};
38
+ --#{$prefix}black-rgb: #{to-rgb($black)};
39
+
40
+ // Fonts
41
+
42
+ // Note: Use `inspect` for lists so that quoted items keep the quotes.
16
43
  // See https://github.com/sass/sass/issues/2383#issuecomment-336349172
17
- --font-family-sans-serif: #{inspect($font-family-sans-serif)};
18
- --font-family-monospace: #{inspect($font-family-monospace)};
44
+ --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};
45
+ --#{$prefix}font-monospace: #{inspect($font-family-monospace)};
46
+ --#{$prefix}gradient: #{$gradient};
47
+
48
+ // Root and body
49
+ // scss-docs-start root-body-variables
50
+ @if $font-size-root != null {
51
+ --#{$prefix}root-font-size: #{$font-size-root};
52
+ }
53
+ --#{$prefix}body-font-family: #{inspect($font-family-base)};
54
+ @include rfs($font-size-base, --#{$prefix}body-font-size);
55
+ --#{$prefix}body-font-weight: #{$font-weight-base};
56
+ --#{$prefix}body-line-height: #{$line-height-base};
57
+ @if $body-text-align != null {
58
+ --#{$prefix}body-text-align: #{$body-text-align};
59
+ }
60
+
61
+ --#{$prefix}body-color: #{$body-color};
62
+ --#{$prefix}body-color-rgb: #{to-rgb($body-color)};
63
+ --#{$prefix}body-bg: #{$body-bg};
64
+ --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};
65
+
66
+ --#{$prefix}emphasis-color: #{$body-emphasis-color};
67
+ --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};
68
+
69
+ --#{$prefix}secondary-color: #{$body-secondary-color};
70
+ --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};
71
+ --#{$prefix}secondary-bg: #{$body-secondary-bg};
72
+ --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};
73
+
74
+ --#{$prefix}tertiary-color: #{$body-tertiary-color};
75
+ --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};
76
+ --#{$prefix}tertiary-bg: #{$body-tertiary-bg};
77
+ --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};
78
+ // scss-docs-end root-body-variables
79
+
80
+ --#{$prefix}heading-color: #{$headings-color};
81
+
82
+ --#{$prefix}link-color: #{$link-color};
83
+ --#{$prefix}link-color-rgb: #{to-rgb($link-color)};
84
+ --#{$prefix}link-decoration: #{$link-decoration};
85
+
86
+ --#{$prefix}link-hover-color: #{$link-hover-color};
87
+ --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};
88
+
89
+ @if $link-hover-decoration != null {
90
+ --#{$prefix}link-hover-decoration: #{$link-hover-decoration};
91
+ }
92
+
93
+ --#{$prefix}code-color: #{$code-color};
94
+ --#{$prefix}highlight-bg: #{$mark-bg};
95
+
96
+ // scss-docs-start root-border-var
97
+ --#{$prefix}border-width: #{$border-width};
98
+ --#{$prefix}border-style: #{$border-style};
99
+ --#{$prefix}border-color: #{$border-color};
100
+ --#{$prefix}border-color-translucent: #{$border-color-translucent};
101
+
102
+ --#{$prefix}border-radius: #{$border-radius};
103
+ --#{$prefix}border-radius-sm: #{$border-radius-sm};
104
+ --#{$prefix}border-radius-lg: #{$border-radius-lg};
105
+ --#{$prefix}border-radius-xl: #{$border-radius-xl};
106
+ --#{$prefix}border-radius-xxl: #{$border-radius-xxl};
107
+ --#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency
108
+ --#{$prefix}border-radius-pill: #{$border-radius-pill};
109
+ // scss-docs-end root-border-var
110
+
111
+ --#{$prefix}box-shadow: #{$box-shadow};
112
+ --#{$prefix}box-shadow-sm: #{$box-shadow-sm};
113
+ --#{$prefix}box-shadow-lg: #{$box-shadow-lg};
114
+ --#{$prefix}box-shadow-inset: #{$box-shadow-inset};
115
+
116
+ // Focus styles
117
+ // scss-docs-start root-focus-variables
118
+ --#{$prefix}focus-ring-width: #{$focus-ring-width};
119
+ --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};
120
+ --#{$prefix}focus-ring-color: #{$focus-ring-color};
121
+ // scss-docs-end root-focus-variables
122
+
123
+ // scss-docs-start root-form-validation-variables
124
+ --#{$prefix}form-valid-color: #{$form-valid-color};
125
+ --#{$prefix}form-valid-border-color: #{$form-valid-border-color};
126
+ --#{$prefix}form-invalid-color: #{$form-invalid-color};
127
+ --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color};
128
+ // scss-docs-end root-form-validation-variables
129
+ }
130
+
131
+ @if $enable-dark-mode {
132
+ @include color-mode(dark, true) {
133
+ color-scheme: dark;
134
+
135
+ // scss-docs-start root-dark-mode-vars
136
+ --#{$prefix}body-color: #{$body-color-dark};
137
+ --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};
138
+ --#{$prefix}body-bg: #{$body-bg-dark};
139
+ --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};
140
+
141
+ --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};
142
+ --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};
143
+
144
+ --#{$prefix}secondary-color: #{$body-secondary-color-dark};
145
+ --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};
146
+ --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};
147
+ --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};
148
+
149
+ --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};
150
+ --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};
151
+ --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};
152
+ --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};
153
+
154
+ @each $color, $value in $theme-colors-text-dark {
155
+ --#{$prefix}#{$color}-text-emphasis: #{$value};
156
+ }
157
+
158
+ @each $color, $value in $theme-colors-bg-subtle-dark {
159
+ --#{$prefix}#{$color}-bg-subtle: #{$value};
160
+ }
161
+
162
+ @each $color, $value in $theme-colors-border-subtle-dark {
163
+ --#{$prefix}#{$color}-border-subtle: #{$value};
164
+ }
165
+
166
+ --#{$prefix}heading-color: #{$headings-color-dark};
167
+
168
+ --#{$prefix}link-color: #{$link-color-dark};
169
+ --#{$prefix}link-hover-color: #{$link-hover-color-dark};
170
+ --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};
171
+ --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};
172
+
173
+ --#{$prefix}code-color: #{$code-color-dark};
174
+
175
+ --#{$prefix}border-color: #{$border-color-dark};
176
+ --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};
177
+
178
+ --#{$prefix}form-valid-color: #{$form-valid-color-dark};
179
+ --#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};
180
+ --#{$prefix}form-invalid-color: #{$form-invalid-color-dark};
181
+ --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color-dark};
182
+ // scss-docs-end root-dark-mode-vars
183
+ }
19
184
  }
@@ -2,32 +2,50 @@
2
2
  // Rotating border
3
3
  //
4
4
 
5
+ .spinner-grow,
6
+ .spinner-border {
7
+ display: inline-block;
8
+ width: var(--#{$prefix}spinner-width);
9
+ height: var(--#{$prefix}spinner-height);
10
+ vertical-align: var(--#{$prefix}spinner-vertical-align);
11
+ // stylelint-disable-next-line property-disallowed-list
12
+ border-radius: 50%;
13
+ animation: var(--#{$prefix}spinner-animation-speed) linear infinite var(--#{$prefix}spinner-animation-name);
14
+ }
15
+
16
+ // scss-docs-start spinner-border-keyframes
5
17
  @keyframes spinner-border {
6
- to { transform: rotate(360deg); }
18
+ to { transform: rotate(360deg) #{"/* rtl:ignore */"}; }
7
19
  }
20
+ // scss-docs-end spinner-border-keyframes
8
21
 
9
22
  .spinner-border {
10
- display: inline-block;
11
- width: $spinner-width;
12
- height: $spinner-height;
13
- vertical-align: $spinner-vertical-align;
14
- border: $spinner-border-width solid currentcolor;
23
+ // scss-docs-start spinner-border-css-vars
24
+ --#{$prefix}spinner-width: #{$spinner-width};
25
+ --#{$prefix}spinner-height: #{$spinner-height};
26
+ --#{$prefix}spinner-vertical-align: #{$spinner-vertical-align};
27
+ --#{$prefix}spinner-border-width: #{$spinner-border-width};
28
+ --#{$prefix}spinner-animation-speed: #{$spinner-animation-speed};
29
+ --#{$prefix}spinner-animation-name: spinner-border;
30
+ // scss-docs-end spinner-border-css-vars
31
+
32
+ border: var(--#{$prefix}spinner-border-width) solid currentcolor;
15
33
  border-right-color: transparent;
16
- // stylelint-disable-next-line property-disallowed-list
17
- border-radius: 50%;
18
- animation: .75s linear infinite spinner-border;
19
34
  }
20
35
 
21
36
  .spinner-border-sm {
22
- width: $spinner-width-sm;
23
- height: $spinner-height-sm;
24
- border-width: $spinner-border-width-sm;
37
+ // scss-docs-start spinner-border-sm-css-vars
38
+ --#{$prefix}spinner-width: #{$spinner-width-sm};
39
+ --#{$prefix}spinner-height: #{$spinner-height-sm};
40
+ --#{$prefix}spinner-border-width: #{$spinner-border-width-sm};
41
+ // scss-docs-end spinner-border-sm-css-vars
25
42
  }
26
43
 
27
44
  //
28
45
  // Growing circle
29
46
  //
30
47
 
48
+ // scss-docs-start spinner-grow-keyframes
31
49
  @keyframes spinner-grow {
32
50
  0% {
33
51
  transform: scale(0);
@@ -37,29 +55,31 @@
37
55
  transform: none;
38
56
  }
39
57
  }
58
+ // scss-docs-end spinner-grow-keyframes
40
59
 
41
60
  .spinner-grow {
42
- display: inline-block;
43
- width: $spinner-width;
44
- height: $spinner-height;
45
- vertical-align: $spinner-vertical-align;
61
+ // scss-docs-start spinner-grow-css-vars
62
+ --#{$prefix}spinner-width: #{$spinner-width};
63
+ --#{$prefix}spinner-height: #{$spinner-height};
64
+ --#{$prefix}spinner-vertical-align: #{$spinner-vertical-align};
65
+ --#{$prefix}spinner-animation-speed: #{$spinner-animation-speed};
66
+ --#{$prefix}spinner-animation-name: spinner-grow;
67
+ // scss-docs-end spinner-grow-css-vars
68
+
46
69
  background-color: currentcolor;
47
- // stylelint-disable-next-line property-disallowed-list
48
- border-radius: 50%;
49
70
  opacity: 0;
50
- animation: .75s linear infinite spinner-grow;
51
71
  }
52
72
 
53
73
  .spinner-grow-sm {
54
- width: $spinner-width-sm;
55
- height: $spinner-height-sm;
74
+ --#{$prefix}spinner-width: #{$spinner-width-sm};
75
+ --#{$prefix}spinner-height: #{$spinner-height-sm};
56
76
  }
57
77
 
58
- @if $enable-prefers-reduced-motion-media-query {
78
+ @if $enable-reduced-motion {
59
79
  @media (prefers-reduced-motion: reduce) {
60
80
  .spinner-border,
61
81
  .spinner-grow {
62
- animation-duration: 1.5s;
82
+ --#{$prefix}spinner-animation-speed: #{$spinner-animation-speed * 2};
63
83
  }
64
84
  }
65
85
  }
@@ -3,37 +3,72 @@
3
3
  //
4
4
 
5
5
  .table {
6
+ // Reset needed for nesting tables
7
+ --#{$prefix}table-color-type: initial;
8
+ --#{$prefix}table-bg-type: initial;
9
+ --#{$prefix}table-color-state: initial;
10
+ --#{$prefix}table-bg-state: initial;
11
+ // End of reset
12
+ --#{$prefix}table-color: #{$table-color};
13
+ --#{$prefix}table-bg: #{$table-bg};
14
+ --#{$prefix}table-border-color: #{$table-border-color};
15
+ --#{$prefix}table-accent-bg: #{$table-accent-bg};
16
+ --#{$prefix}table-striped-color: #{$table-striped-color};
17
+ --#{$prefix}table-striped-bg: #{$table-striped-bg};
18
+ --#{$prefix}table-active-color: #{$table-active-color};
19
+ --#{$prefix}table-active-bg: #{$table-active-bg};
20
+ --#{$prefix}table-hover-color: #{$table-hover-color};
21
+ --#{$prefix}table-hover-bg: #{$table-hover-bg};
22
+
6
23
  width: 100%;
7
24
  margin-bottom: $spacer;
8
- color: $table-color;
9
- background-color: $table-bg; // Reset for nesting within parents with `background-color`.
10
-
11
- th,
12
- td {
13
- padding: $table-cell-padding;
14
- vertical-align: top;
15
- border-top: $table-border-width solid $table-border-color;
25
+ vertical-align: $table-cell-vertical-align;
26
+ border-color: var(--#{$prefix}table-border-color);
27
+
28
+ // Target th & td
29
+ // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class.
30
+ // We use the universal selectors here to simplify the selector (else we would need 6 different selectors).
31
+ // Another advantage is that this generates less code and makes the selector less specific making it easier to override.
32
+ // stylelint-disable-next-line selector-max-universal
33
+ > :not(caption) > * > * {
34
+ padding: $table-cell-padding-y $table-cell-padding-x;
35
+ // Following the precept of cascades: https://codepen.io/miriamsuzanne/full/vYNgodb
36
+ color: var(--#{$prefix}table-color-state, var(--#{$prefix}table-color-type, var(--#{$prefix}table-color)));
37
+ background-color: var(--#{$prefix}table-bg);
38
+ border-bottom-width: $table-border-width;
39
+ box-shadow: inset 0 0 0 9999px var(--#{$prefix}table-bg-state, var(--#{$prefix}table-bg-type, var(--#{$prefix}table-accent-bg)));
16
40
  }
17
41
 
18
- thead th {
19
- vertical-align: bottom;
20
- border-bottom: (2 * $table-border-width) solid $table-border-color;
42
+ > tbody {
43
+ vertical-align: inherit;
21
44
  }
22
45
 
23
- tbody + tbody {
24
- border-top: (2 * $table-border-width) solid $table-border-color;
46
+ > thead {
47
+ vertical-align: bottom;
25
48
  }
26
49
  }
27
50
 
51
+ .table-group-divider {
52
+ border-top: calc(#{$table-border-width} * 2) solid $table-group-separator-color; // stylelint-disable-line function-disallowed-list
53
+ }
54
+
55
+ //
56
+ // Change placement of captions with a class
57
+ //
58
+
59
+ .caption-top {
60
+ caption-side: top;
61
+ }
62
+
28
63
 
29
64
  //
30
65
  // Condensed table w/ half padding
31
66
  //
32
67
 
33
68
  .table-sm {
34
- th,
35
- td {
36
- padding: $table-cell-padding-sm;
69
+ // stylelint-disable-next-line selector-max-universal
70
+ > :not(caption) > * > * {
71
+ padding: $table-cell-padding-y-sm $table-cell-padding-x-sm;
37
72
  }
38
73
  }
39
74
 
@@ -41,29 +76,31 @@
41
76
  // Border versions
42
77
  //
43
78
  // Add or remove borders all around the table and between all the columns.
79
+ //
80
+ // When borders are added on all sides of the cells, the corners can render odd when
81
+ // these borders do not have the same color or if they are semi-transparent.
82
+ // Therefor we add top and border bottoms to the `tr`s and left and right borders
83
+ // to the `td`s or `th`s
44
84
 
45
85
  .table-bordered {
46
- border: $table-border-width solid $table-border-color;
86
+ > :not(caption) > * {
87
+ border-width: $table-border-width 0;
47
88
 
48
- th,
49
- td {
50
- border: $table-border-width solid $table-border-color;
51
- }
52
-
53
- thead {
54
- th,
55
- td {
56
- border-bottom-width: 2 * $table-border-width;
89
+ // stylelint-disable-next-line selector-max-universal
90
+ > * {
91
+ border-width: 0 $table-border-width;
57
92
  }
58
93
  }
59
94
  }
60
95
 
61
96
  .table-borderless {
62
- th,
63
- td,
64
- thead th,
65
- tbody + tbody {
66
- border: 0;
97
+ // stylelint-disable-next-line selector-max-universal
98
+ > :not(caption) > * > * {
99
+ border-bottom-width: 0;
100
+ }
101
+
102
+ > :not(:first-child) {
103
+ border-top-width: 0;
67
104
  }
68
105
  }
69
106
 
@@ -71,115 +108,64 @@
71
108
  //
72
109
  // Default zebra-stripe styles (alternating gray and transparent backgrounds)
73
110
 
111
+ // For rows
74
112
  .table-striped {
75
- tbody tr:nth-of-type(#{$table-striped-order}) {
76
- background-color: $table-accent-bg;
113
+ > tbody > tr:nth-of-type(#{$table-striped-order}) > * {
114
+ --#{$prefix}table-color-type: var(--#{$prefix}table-striped-color);
115
+ --#{$prefix}table-bg-type: var(--#{$prefix}table-striped-bg);
77
116
  }
78
117
  }
79
118
 
80
-
81
- // Hover effect
82
- //
83
- // Placed here since it has to come after the potential zebra striping
84
-
85
- .table-hover {
86
- tbody tr {
87
- @include hover() {
88
- color: $table-hover-color;
89
- background-color: $table-hover-bg;
90
- }
119
+ // For columns
120
+ .table-striped-columns {
121
+ > :not(caption) > tr > :nth-child(#{$table-striped-columns-order}) {
122
+ --#{$prefix}table-color-type: var(--#{$prefix}table-striped-color);
123
+ --#{$prefix}table-bg-type: var(--#{$prefix}table-striped-bg);
91
124
  }
92
125
  }
93
126
 
94
-
95
- // Table backgrounds
127
+ // Active table
96
128
  //
97
- // Exact selectors below required to override `.table-striped` and prevent
98
- // inheritance to nested tables.
129
+ // The `.table-active` class can be added to highlight rows or cells
99
130
 
100
- @each $color, $value in $theme-colors {
101
- @include table-row-variant($color, theme-color-level($color, $table-bg-level), theme-color-level($color, $table-border-level));
131
+ .table-active {
132
+ --#{$prefix}table-color-state: var(--#{$prefix}table-active-color);
133
+ --#{$prefix}table-bg-state: var(--#{$prefix}table-active-bg);
102
134
  }
103
135
 
104
- @include table-row-variant(active, $table-active-bg);
105
-
106
-
107
- // Dark styles
136
+ // Hover effect
108
137
  //
109
- // Same table markup, but inverted color scheme: dark background and light text.
110
-
111
- // stylelint-disable-next-line no-duplicate-selectors
112
- .table {
113
- .thead-dark {
114
- th {
115
- color: $table-dark-color;
116
- background-color: $table-dark-bg;
117
- border-color: $table-dark-border-color;
118
- }
119
- }
138
+ // Placed here since it has to come after the potential zebra striping
120
139
 
121
- .thead-light {
122
- th {
123
- color: $table-head-color;
124
- background-color: $table-head-bg;
125
- border-color: $table-border-color;
126
- }
140
+ .table-hover {
141
+ > tbody > tr:hover > * {
142
+ --#{$prefix}table-color-state: var(--#{$prefix}table-hover-color);
143
+ --#{$prefix}table-bg-state: var(--#{$prefix}table-hover-bg);
127
144
  }
128
145
  }
129
146
 
130
- .table-dark {
131
- color: $table-dark-color;
132
- background-color: $table-dark-bg;
133
147
 
134
- th,
135
- td,
136
- thead th {
137
- border-color: $table-dark-border-color;
138
- }
139
-
140
- &.table-bordered {
141
- border: 0;
142
- }
143
-
144
- &.table-striped {
145
- tbody tr:nth-of-type(#{$table-striped-order}) {
146
- background-color: $table-dark-accent-bg;
147
- }
148
- }
148
+ // Table variants
149
+ //
150
+ // Table variants set the table cell backgrounds, border colors
151
+ // and the colors of the striped, hovered & active tables
149
152
 
150
- &.table-hover {
151
- tbody tr {
152
- @include hover() {
153
- color: $table-dark-hover-color;
154
- background-color: $table-dark-hover-bg;
155
- }
156
- }
157
- }
153
+ @each $color, $value in $table-variants {
154
+ @include table-variant($color, $value);
158
155
  }
159
156
 
160
-
161
157
  // Responsive tables
162
158
  //
163
159
  // Generate series of `.table-responsive-*` classes for configuring the screen
164
160
  // size of where your table will overflow.
165
161
 
166
- .table-responsive {
167
- @each $breakpoint in map-keys($grid-breakpoints) {
168
- $next: breakpoint-next($breakpoint, $grid-breakpoints);
169
- $infix: breakpoint-infix($next, $grid-breakpoints);
170
-
171
- &#{$infix} {
172
- @include media-breakpoint-down($breakpoint) {
173
- display: block;
174
- width: 100%;
175
- overflow-x: auto;
176
- -webkit-overflow-scrolling: touch;
177
-
178
- // Prevent double border on horizontal scroll due to use of `display: block;`
179
- > .table-bordered {
180
- border: 0;
181
- }
182
- }
162
+ @each $breakpoint in map-keys($grid-breakpoints) {
163
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
164
+
165
+ @include media-breakpoint-down($breakpoint) {
166
+ .table-responsive#{$infix} {
167
+ overflow-x: auto;
168
+ -webkit-overflow-scrolling: touch;
183
169
  }
184
170
  }
185
171
  }
@@ -1,46 +1,73 @@
1
1
  .toast {
2
- // Prevents from shrinking in IE11, when in a flex container
3
- // See https://github.com/twbs/bootstrap/issues/28341
4
- flex-basis: $toast-max-width;
5
- max-width: $toast-max-width;
6
- @include font-size($toast-font-size);
7
- color: $toast-color;
8
- background-color: $toast-background-color;
9
- background-clip: padding-box;
10
- border: $toast-border-width solid $toast-border-color;
11
- box-shadow: $toast-box-shadow;
12
- opacity: 0;
13
- @include border-radius($toast-border-radius);
2
+ // scss-docs-start toast-css-vars
3
+ --#{$prefix}toast-zindex: #{$zindex-toast};
4
+ --#{$prefix}toast-padding-x: #{$toast-padding-x};
5
+ --#{$prefix}toast-padding-y: #{$toast-padding-y};
6
+ --#{$prefix}toast-spacing: #{$toast-spacing};
7
+ --#{$prefix}toast-max-width: #{$toast-max-width};
8
+ @include rfs($toast-font-size, --#{$prefix}toast-font-size);
9
+ --#{$prefix}toast-color: #{$toast-color};
10
+ --#{$prefix}toast-bg: #{$toast-background-color};
11
+ --#{$prefix}toast-border-width: #{$toast-border-width};
12
+ --#{$prefix}toast-border-color: #{$toast-border-color};
13
+ --#{$prefix}toast-border-radius: #{$toast-border-radius};
14
+ --#{$prefix}toast-box-shadow: #{$toast-box-shadow};
15
+ --#{$prefix}toast-header-color: #{$toast-header-color};
16
+ --#{$prefix}toast-header-bg: #{$toast-header-background-color};
17
+ --#{$prefix}toast-header-border-color: #{$toast-header-border-color};
18
+ // scss-docs-end toast-css-vars
14
19
 
15
- &:not(:last-child) {
16
- margin-bottom: $toast-padding-x;
17
- }
20
+ width: var(--#{$prefix}toast-max-width);
21
+ max-width: 100%;
22
+ @include font-size(var(--#{$prefix}toast-font-size));
23
+ color: var(--#{$prefix}toast-color);
24
+ pointer-events: auto;
25
+ background-color: var(--#{$prefix}toast-bg);
26
+ background-clip: padding-box;
27
+ border: var(--#{$prefix}toast-border-width) solid var(--#{$prefix}toast-border-color);
28
+ box-shadow: var(--#{$prefix}toast-box-shadow);
29
+ @include border-radius(var(--#{$prefix}toast-border-radius));
18
30
 
19
31
  &.showing {
20
- opacity: 1;
32
+ opacity: 0;
21
33
  }
22
34
 
23
- &.show {
24
- display: block;
25
- opacity: 1;
35
+ &:not(.show) {
36
+ display: none;
26
37
  }
38
+ }
27
39
 
28
- &.hide {
29
- display: none;
40
+ .toast-container {
41
+ --#{$prefix}toast-zindex: #{$zindex-toast};
42
+
43
+ position: absolute;
44
+ z-index: var(--#{$prefix}toast-zindex);
45
+ width: max-content;
46
+ max-width: 100%;
47
+ pointer-events: none;
48
+
49
+ > :not(:last-child) {
50
+ margin-bottom: var(--#{$prefix}toast-spacing);
30
51
  }
31
52
  }
32
53
 
33
54
  .toast-header {
34
55
  display: flex;
35
56
  align-items: center;
36
- padding: $toast-padding-y $toast-padding-x;
37
- color: $toast-header-color;
38
- background-color: $toast-header-background-color;
57
+ padding: var(--#{$prefix}toast-padding-y) var(--#{$prefix}toast-padding-x);
58
+ color: var(--#{$prefix}toast-header-color);
59
+ background-color: var(--#{$prefix}toast-header-bg);
39
60
  background-clip: padding-box;
40
- border-bottom: $toast-border-width solid $toast-header-border-color;
41
- @include border-top-radius(subtract($toast-border-radius, $toast-border-width));
61
+ border-bottom: var(--#{$prefix}toast-border-width) solid var(--#{$prefix}toast-header-border-color);
62
+ @include border-top-radius(calc(var(--#{$prefix}toast-border-radius) - var(--#{$prefix}toast-border-width)));
63
+
64
+ .btn-close {
65
+ margin-right: calc(-.5 * var(--#{$prefix}toast-padding-x)); // stylelint-disable-line function-disallowed-list
66
+ margin-left: var(--#{$prefix}toast-padding-x);
67
+ }
42
68
  }
43
69
 
44
70
  .toast-body {
45
- padding: $toast-padding-x; // apply to both vertical and horizontal
71
+ padding: var(--#{$prefix}toast-padding-x);
72
+ word-wrap: break-word;
46
73
  }