@coreui/coreui 4.2.5 → 4.3.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/LICENSE +5 -6
  2. package/README.md +2 -2
  3. package/dist/css/coreui-grid.css +36 -83
  4. package/dist/css/coreui-grid.css.map +1 -1
  5. package/dist/css/coreui-grid.min.css +4 -6
  6. package/dist/css/coreui-grid.min.css.map +1 -1
  7. package/dist/css/coreui-grid.rtl.css +40 -89
  8. package/dist/css/coreui-grid.rtl.css.map +1 -1
  9. package/dist/css/coreui-grid.rtl.min.css +8 -12
  10. package/dist/css/coreui-grid.rtl.min.css.map +1 -1
  11. package/dist/css/coreui-reboot.css +176 -48
  12. package/dist/css/coreui-reboot.css.map +1 -1
  13. package/dist/css/coreui-reboot.min.css +4 -6
  14. package/dist/css/coreui-reboot.min.css.map +1 -1
  15. package/dist/css/coreui-reboot.rtl.css +180 -54
  16. package/dist/css/coreui-reboot.rtl.css.map +1 -1
  17. package/dist/css/coreui-reboot.rtl.min.css +8 -12
  18. package/dist/css/coreui-reboot.rtl.min.css.map +1 -1
  19. package/dist/css/coreui-utilities.css +1328 -95
  20. package/dist/css/coreui-utilities.css.map +1 -1
  21. package/dist/css/coreui-utilities.min.css +4 -6
  22. package/dist/css/coreui-utilities.min.css.map +1 -1
  23. package/dist/css/coreui-utilities.rtl.css +1237 -101
  24. package/dist/css/coreui-utilities.rtl.css.map +1 -1
  25. package/dist/css/coreui-utilities.rtl.min.css +8 -12
  26. package/dist/css/coreui-utilities.rtl.min.css.map +1 -1
  27. package/dist/css/coreui.css +2372 -889
  28. package/dist/css/coreui.css.map +1 -1
  29. package/dist/css/coreui.min.css +4 -6
  30. package/dist/css/coreui.min.css.map +1 -1
  31. package/dist/css/coreui.rtl.css +2295 -902
  32. package/dist/css/coreui.rtl.css.map +1 -1
  33. package/dist/css/coreui.rtl.min.css +8 -12
  34. package/dist/css/coreui.rtl.min.css.map +1 -1
  35. package/dist/js/coreui.bundle.js +289 -264
  36. package/dist/js/coreui.bundle.js.map +1 -1
  37. package/dist/js/coreui.bundle.min.js +4 -4
  38. package/dist/js/coreui.bundle.min.js.map +1 -1
  39. package/dist/js/coreui.esm.js +255 -230
  40. package/dist/js/coreui.esm.js.map +1 -1
  41. package/dist/js/coreui.esm.min.js +4 -4
  42. package/dist/js/coreui.esm.min.js.map +1 -1
  43. package/dist/js/coreui.js +258 -232
  44. package/dist/js/coreui.js.map +1 -1
  45. package/dist/js/coreui.min.js +4 -4
  46. package/dist/js/coreui.min.js.map +1 -1
  47. package/js/dist/alert.js +10 -9
  48. package/js/dist/alert.js.map +1 -1
  49. package/js/dist/base-component.js +11 -10
  50. package/js/dist/base-component.js.map +1 -1
  51. package/js/dist/button.js +10 -9
  52. package/js/dist/button.js.map +1 -1
  53. package/js/dist/carousel.js +11 -10
  54. package/js/dist/carousel.js.map +1 -1
  55. package/js/dist/collapse.js +10 -9
  56. package/js/dist/collapse.js.map +1 -1
  57. package/js/dist/dom/data.js +5 -5
  58. package/js/dist/dom/data.js.map +1 -1
  59. package/js/dist/dom/event-handler.js +9 -9
  60. package/js/dist/dom/event-handler.js.map +1 -1
  61. package/js/dist/dom/manipulator.js +5 -5
  62. package/js/dist/dom/manipulator.js.map +1 -1
  63. package/js/dist/dom/selector-engine.js +6 -5
  64. package/js/dist/dom/selector-engine.js.map +1 -1
  65. package/js/dist/dropdown.js +13 -12
  66. package/js/dist/dropdown.js.map +1 -1
  67. package/js/dist/modal.js +12 -13
  68. package/js/dist/modal.js.map +1 -1
  69. package/js/dist/navigation.js +10 -9
  70. package/js/dist/navigation.js.map +1 -1
  71. package/js/dist/offcanvas.js +13 -12
  72. package/js/dist/offcanvas.js.map +1 -1
  73. package/js/dist/popover.js +10 -9
  74. package/js/dist/popover.js.map +1 -1
  75. package/js/dist/scrollspy.js +14 -13
  76. package/js/dist/scrollspy.js.map +1 -1
  77. package/js/dist/sidebar.js +10 -9
  78. package/js/dist/sidebar.js.map +1 -1
  79. package/js/dist/tab.js +13 -12
  80. package/js/dist/tab.js.map +1 -1
  81. package/js/dist/toast.js +10 -9
  82. package/js/dist/toast.js.map +1 -1
  83. package/js/dist/tooltip.js +14 -13
  84. package/js/dist/tooltip.js.map +1 -1
  85. package/js/dist/util/backdrop.js +10 -9
  86. package/js/dist/util/backdrop.js.map +1 -1
  87. package/js/dist/util/component-functions.js +10 -9
  88. package/js/dist/util/component-functions.js.map +1 -1
  89. package/js/dist/util/config.js +10 -9
  90. package/js/dist/util/config.js.map +1 -1
  91. package/js/dist/util/focustrap.js +6 -5
  92. package/js/dist/util/focustrap.js.map +1 -1
  93. package/js/dist/util/index.js +5 -5
  94. package/js/dist/util/index.js.map +1 -1
  95. package/js/dist/util/sanitizer.js +10 -6
  96. package/js/dist/util/sanitizer.js.map +1 -1
  97. package/js/dist/util/scrollbar.js +10 -9
  98. package/js/dist/util/scrollbar.js.map +1 -1
  99. package/js/dist/util/swipe.js +10 -9
  100. package/js/dist/util/swipe.js.map +1 -1
  101. package/js/dist/util/template-factory.js +10 -9
  102. package/js/dist/util/template-factory.js.map +1 -1
  103. package/js/index.esm.js +21 -0
  104. package/js/index.umd.js +38 -0
  105. package/js/src/alert.js +4 -4
  106. package/js/src/base-component.js +4 -4
  107. package/js/src/button.js +4 -4
  108. package/js/src/carousel.js +7 -7
  109. package/js/src/collapse.js +5 -5
  110. package/js/src/dom/data.js +2 -2
  111. package/js/src/dom/event-handler.js +4 -5
  112. package/js/src/dom/manipulator.js +2 -2
  113. package/js/src/dom/selector-engine.js +2 -2
  114. package/js/src/dropdown.js +9 -9
  115. package/js/src/modal.js +9 -10
  116. package/js/src/navigation.js +4 -4
  117. package/js/src/offcanvas.js +11 -11
  118. package/js/src/popover.js +3 -3
  119. package/js/src/scrollspy.js +6 -6
  120. package/js/src/sidebar.js +5 -5
  121. package/js/src/tab.js +7 -7
  122. package/js/src/toast.js +4 -4
  123. package/js/src/tooltip.js +9 -9
  124. package/js/src/util/backdrop.js +3 -3
  125. package/js/src/util/component-functions.js +3 -3
  126. package/js/src/util/config.js +3 -3
  127. package/js/src/util/focustrap.js +2 -2
  128. package/js/src/util/index.js +2 -2
  129. package/js/src/util/sanitizer.js +6 -4
  130. package/js/src/util/scrollbar.js +3 -3
  131. package/js/src/util/swipe.js +3 -3
  132. package/js/src/util/template-factory.js +4 -4
  133. package/package.json +54 -44
  134. package/scss/_accordion.scss +9 -1
  135. package/scss/_alert.scss +6 -10
  136. package/scss/_badge.scss +2 -1
  137. package/scss/_button-group.scss +4 -4
  138. package/scss/_buttons.scss +23 -1
  139. package/scss/_card.scss +8 -3
  140. package/scss/_carousel.scss +24 -8
  141. package/scss/_close.scss +32 -9
  142. package/scss/_dropdown.scss +3 -3
  143. package/scss/_functions.scss +6 -22
  144. package/scss/_grid.scss +8 -0
  145. package/scss/_helpers.scss +2 -0
  146. package/scss/_list-group.scss +11 -2
  147. package/scss/_maps.scss +125 -0
  148. package/scss/_mixins.scss +1 -4
  149. package/scss/_nav.scss +7 -0
  150. package/scss/_navbar.scss +17 -4
  151. package/scss/_offcanvas.scss +4 -2
  152. package/scss/_pagination.scss +1 -1
  153. package/scss/_progress.scss +10 -1
  154. package/scss/_reboot.scss +2 -3
  155. package/scss/_root.scss +144 -16
  156. package/scss/_tables.scss +18 -15
  157. package/scss/_tooltip.scss +5 -6
  158. package/scss/_type.scss +3 -1
  159. package/scss/_utilities.scss +182 -23
  160. package/scss/_variables-dark.scss +169 -0
  161. package/scss/_variables.scss +357 -340
  162. package/scss/coreui-grid.rtl.scss +2 -7
  163. package/scss/coreui-grid.scss +3 -10
  164. package/scss/coreui-reboot.rtl.scss +2 -7
  165. package/scss/coreui-reboot.scss +4 -7
  166. package/scss/coreui-utilities.rtl.scss +2 -7
  167. package/scss/coreui-utilities.scss +3 -7
  168. package/scss/coreui.rtl.scss +2 -7
  169. package/scss/coreui.scss +3 -7
  170. package/scss/forms/_floating-labels.scss +23 -4
  171. package/scss/forms/_form-check.scss +22 -24
  172. package/scss/forms/_form-control.scss +33 -13
  173. package/scss/forms/_form-range.scss +8 -8
  174. package/scss/forms/_form-select.scss +19 -10
  175. package/scss/forms/_form-text.scss +1 -1
  176. package/scss/forms/_input-group.scss +1 -1
  177. package/scss/forms/_labels.scss +2 -2
  178. package/scss/helpers/_color-bg.scss +12 -2
  179. package/scss/helpers/_colored-links.scss +20 -2
  180. package/scss/helpers/_focus-ring.scss +5 -0
  181. package/scss/helpers/_icon-link.scss +25 -0
  182. package/scss/mixins/_alert.scss +4 -1
  183. package/scss/mixins/_banner.scss +7 -0
  184. package/scss/mixins/_breakpoints.scss +0 -13
  185. package/scss/mixins/_caret.scss +31 -26
  186. package/scss/mixins/_color-mode.scss +21 -0
  187. package/scss/mixins/_forms.scss +8 -7
  188. package/scss/mixins/_grid.scss +1 -1
  189. package/scss/mixins/_list-group.scss +3 -0
  190. package/scss/mixins/_utilities.scss +35 -15
  191. package/scss/mixins/_visually-hidden.scss +5 -1
  192. package/scss/sidebar/_sidebar.scss +10 -2
  193. package/scss/vendor/_rfs.scss +24 -30
  194. package/scss/mixins/_css-vars.scss +0 -87
@@ -1,10 +1,5 @@
1
- /*!
2
- * CoreUI - HTML, CSS, and JavaScript UI Components Library
3
- * @version v4.2.5
4
- * @link https://coreui.io/
5
- * Copyright (c) 2022 creativeLabs Łukasz Holeczek
6
- * License MIT (https://coreui.io/license/)
7
- */
1
+ @import "mixins/banner";
2
+ @include bsBanner("");
8
3
 
9
4
  $enable-ltr: false !default;
10
5
  $enable-rtl: true !default;
@@ -1,19 +1,14 @@
1
- /*!
2
- * CoreUI - HTML, CSS, and JavaScript UI Components Library
3
- * @version v4.2.5
4
- * @link https://coreui.io/
5
- * Copyright (c) 2022 creativeLabs Łukasz Holeczek
6
- * License MIT (https://coreui.io/license/)
7
- */
1
+ @import "mixins/banner";
2
+ @include bsBanner(Grid);
8
3
 
9
4
  $include-column-box-sizing: true !default;
10
5
 
11
6
  @import "functions";
12
7
  @import "variables";
8
+ @import "variables-dark";
13
9
  @import "maps";
14
10
 
15
11
  @import "mixins/ltr-rtl";
16
- @import "mixins/lists";
17
12
  @import "mixins/breakpoints";
18
13
  @import "mixins/container";
19
14
  @import "mixins/grid";
@@ -21,8 +16,6 @@ $include-column-box-sizing: true !default;
21
16
 
22
17
  @import "vendor/rfs";
23
18
 
24
- @import "root";
25
-
26
19
  @import "containers";
27
20
  @import "grid";
28
21
 
@@ -1,10 +1,5 @@
1
- /*!
2
- * CoreUI - HTML, CSS, and JavaScript UI Components Library
3
- * @version v4.2.5
4
- * @link https://coreui.io/
5
- * Copyright (c) 2022 creativeLabs Łukasz Holeczek
6
- * License MIT (https://coreui.io/license/)
7
- */
1
+ @import "mixins/banner";
2
+ @include bsBanner("");
8
3
 
9
4
  $enable-ltr: false !default;
10
5
  $enable-rtl: true !default;
@@ -1,13 +1,10 @@
1
- /*!
2
- * CoreUI - HTML, CSS, and JavaScript UI Components Library
3
- * @version v4.2.5
4
- * @link https://coreui.io/
5
- * Copyright (c) 2022 creativeLabs Łukasz Holeczek
6
- * License MIT (https://coreui.io/license/)
7
- */
1
+ @import "mixins/banner";
2
+ @include bsBanner(Reboot);
8
3
 
9
4
  @import "functions";
10
5
  @import "variables";
6
+ @import "variables-dark";
7
+ @import "maps";
11
8
  @import "mixins";
12
9
  @import "root";
13
10
  @import "reboot";
@@ -1,10 +1,5 @@
1
- /*!
2
- * CoreUI - HTML, CSS, and JavaScript UI Components Library
3
- * @version v4.2.5
4
- * @link https://coreui.io/
5
- * Copyright (c) 2022 creativeLabs Łukasz Holeczek
6
- * License MIT (https://coreui.io/license/)
7
- */
1
+ @import "mixins/banner";
2
+ @include bsBanner("");
8
3
 
9
4
  $enable-ltr: false !default;
10
5
  $enable-rtl: true !default;
@@ -1,14 +1,10 @@
1
- /*!
2
- * CoreUI - HTML, CSS, and JavaScript UI Components Library
3
- * @version v4.2.5
4
- * @link https://coreui.io/
5
- * Copyright (c) 2022 creativeLabs Łukasz Holeczek
6
- * License MIT (https://coreui.io/license/)
7
- */
1
+ @import "mixins/banner";
2
+ @include bsBanner(Utilities);
8
3
 
9
4
  // Configuration
10
5
  @import "functions";
11
6
  @import "variables";
7
+ @import "variables-dark";
12
8
  @import "maps";
13
9
  @import "mixins";
14
10
  @import "utilities";
@@ -1,10 +1,5 @@
1
- /*!
2
- * CoreUI - HTML, CSS, and JavaScript UI Components Library
3
- * @version v4.2.5
4
- * @link https://coreui.io/
5
- * Copyright (c) 2022 creativeLabs Łukasz Holeczek
6
- * License MIT (https://coreui.io/license/)
7
- */
1
+ @import "mixins/banner";
2
+ @include bsBanner("");
8
3
 
9
4
  $enable-ltr: false !default;
10
5
  $enable-rtl: true !default;
package/scss/coreui.scss CHANGED
@@ -1,15 +1,11 @@
1
- /*!
2
- * CoreUI - HTML, CSS, and JavaScript UI Components Library
3
- * @version v4.2.5
4
- * @link https://coreui.io/
5
- * Copyright (c) 2022 creativeLabs Łukasz Holeczek
6
- * License MIT (https://coreui.io/license/)
7
- */
1
+ @import "mixins/banner";
2
+ @include bsBanner("");
8
3
 
9
4
  // scss-docs-start import-stack
10
5
  // Configuration
11
6
  @import "functions";
12
7
  @import "variables";
8
+ @import "variables-dark";
13
9
  @import "maps";
14
10
  @import "mixins";
15
11
  @import "utilities";
@@ -5,14 +5,15 @@
5
5
  > .form-control-plaintext,
6
6
  > .form-select {
7
7
  height: $form-floating-height;
8
+ min-height: $form-floating-height;
8
9
  line-height: $form-floating-line-height;
9
10
  }
10
11
 
11
12
  > label {
12
13
  position: absolute;
13
14
  top: 0;
14
- @include ltr-rtl("left", 0);
15
- width: 100%;
15
+ left: 0;
16
+ z-index: 2;
16
17
  height: 100%; // allow textareas
17
18
  padding: $form-floating-padding-y $form-floating-padding-x;
18
19
  overflow: hidden;
@@ -55,14 +56,24 @@
55
56
  > .form-control-plaintext,
56
57
  > .form-select {
57
58
  ~ label {
58
- opacity: $form-floating-label-opacity;
59
+ color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});
59
60
  transform: $form-floating-label-transform;
61
+
62
+ &::after {
63
+ position: absolute;
64
+ inset: $form-floating-padding-y ($form-floating-padding-x * .5);
65
+ z-index: -1;
66
+ height: $form-floating-label-height;
67
+ content: "";
68
+ background-color: $input-bg;
69
+ @include border-radius($input-border-radius);
70
+ }
60
71
  }
61
72
  }
62
73
  // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
63
74
  > .form-control:-webkit-autofill {
64
75
  ~ label {
65
- opacity: $form-floating-label-opacity;
76
+ color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});
66
77
  transform: $form-floating-label-transform;
67
78
  }
68
79
  }
@@ -72,4 +83,12 @@
72
83
  border-width: $input-border-width 0; // Required to properly position label text - as explained above
73
84
  }
74
85
  }
86
+
87
+ > :disabled ~ label {
88
+ color: $form-floating-label-disabled-color;
89
+
90
+ &::after {
91
+ background-color: $input-disabled-bg;
92
+ }
93
+ }
75
94
  }
@@ -9,8 +9,6 @@
9
9
  margin-bottom: $form-check-margin-bottom;
10
10
 
11
11
  .form-check-input {
12
- // float: left;
13
- // margin-left: $form-check-padding-start * -1;
14
12
  @include ltr-rtl("float", left);
15
13
  @include ltr-rtl("margin-left", $form-check-padding-start * -1);
16
14
  }
@@ -29,11 +27,14 @@
29
27
  }
30
28
 
31
29
  .form-check-input {
30
+ --#{$prefix}form-check-bg: #{$form-check-input-bg};
31
+
32
32
  width: $form-check-input-width;
33
33
  height: $form-check-input-width;
34
34
  margin-top: ($line-height-base - $form-check-input-width) * .5; // line-height minus check height
35
35
  vertical-align: top;
36
- background-color: var(--#{$prefix}form-check-input-bg, $form-check-input-bg);
36
+ background-color: var(--#{$prefix}form-check-bg);
37
+ background-image: var(--#{$prefix}form-check-bg-image);
37
38
  background-repeat: no-repeat;
38
39
  background-position: center;
39
40
  background-size: contain;
@@ -67,17 +68,17 @@
67
68
 
68
69
  &[type="checkbox"] {
69
70
  @if $enable-gradients {
70
- background-image: escape-svg($form-check-input-checked-bg-image), var(--#{$prefix}gradient);
71
+ --#{$prefix}form-check-bg-image: #{escape-svg($form-check-input-checked-bg-image)}, var(--#{$prefix}gradient);
71
72
  } @else {
72
- background-image: var(--#{$prefix}form-check-input-checked-bg-image, escape-svg($form-check-input-checked-bg-image));
73
+ --#{$prefix}form-check-bg-image: #{escape-svg($form-check-input-checked-bg-image)};
73
74
  }
74
75
  }
75
76
 
76
77
  &[type="radio"] {
77
78
  @if $enable-gradients {
78
- background-image: escape-svg($form-check-radio-checked-bg-image), var(--#{$prefix}gradient);
79
+ --#{$prefix}form-check-bg-image: #{escape-svg($form-check-radio-checked-bg-image)}, var(--#{$prefix}gradient);
79
80
  } @else {
80
- background-image: var(--#{$prefix}form-check-radio-checked-bg-image, escape-svg($form-check-radio-checked-bg-image));
81
+ --#{$prefix}form-check-bg-image: #{escape-svg($form-check-radio-checked-bg-image)};
81
82
  }
82
83
  }
83
84
  }
@@ -87,9 +88,9 @@
87
88
  border-color: $form-check-input-indeterminate-border-color;
88
89
 
89
90
  @if $enable-gradients {
90
- background-image: escape-svg($form-check-input-indeterminate-bg-image), var(--#{$prefix}gradient);
91
+ --#{$prefix}form-check-bg-image: #{escape-svg($form-check-input-indeterminate-bg-image)}, var(--#{$prefix}gradient);
91
92
  } @else {
92
- background-image: var(--#{$prefix}form-check-input-indeterminate-bg-image, escape-svg($form-check-input-indeterminate-bg-image));
93
+ --#{$prefix}form-check-bg-image: #{escape-svg($form-check-input-indeterminate-bg-image)};
93
94
  }
94
95
  }
95
96
 
@@ -123,24 +124,26 @@
123
124
  @include ltr-rtl("padding-left", $form-switch-padding-start);
124
125
 
125
126
  .form-check-input {
127
+ --#{$prefix}form-switch-bg: #{escape-svg($form-switch-bg-image)};
128
+
126
129
  width: $form-switch-width;
127
- @include ltr-rtl("margin-left", $form-switch-padding-start * -1);
128
- background-image: var(--#{$prefix}form-switch-bg-image, escape-svg($form-switch-bg-image));
130
+ margin-left: $form-switch-padding-start * -1;
131
+ background-image: var(--#{$prefix}form-switch-bg);
129
132
  background-position: left center;
130
133
  @include border-radius($form-switch-border-radius);
131
134
  @include transition($form-switch-transition);
132
135
 
133
136
  &:focus {
134
- background-image: var(--#{$prefix}form-switch-focus-bg-image, escape-svg($form-switch-focus-bg-image));
137
+ --#{$prefix}form-switch-bg: #{escape-svg($form-switch-focus-bg-image)};
135
138
  }
136
139
 
137
140
  &:checked {
138
141
  background-position: $form-switch-checked-bg-position;
139
142
 
140
143
  @if $enable-gradients {
141
- background-image: escape-svg($form-switch-checked-bg-image), var(--#{$prefix}gradient);
144
+ --#{$prefix}form-switch-bg: #{escape-svg($form-switch-checked-bg-image)}, var(--#{$prefix}gradient);
142
145
  } @else {
143
- background-image: var(--#{$prefix}form-switch-checked-bg-image, escape-svg($form-switch-checked-bg-image));
146
+ --#{$prefix}form-switch-bg: #{escape-svg($form-switch-checked-bg-image)};
144
147
  }
145
148
  }
146
149
  }
@@ -197,15 +200,10 @@
197
200
  }
198
201
  }
199
202
 
200
- //
201
- // Alternate form checks
202
- //
203
-
204
- @each $state, $color in $theme-colors {
205
- .form-check-#{$state} {
206
- --#{$prefix}form-check-input-checked-bg-color: #{$color};
207
- --#{$prefix}form-check-input-checked-border-color: #{$color};
208
- --#{$prefix}form-check-input-indeterminate-bg-color: #{$color};
209
- --#{$prefix}form-check-input-indeterminate-border-color: #{$color};
203
+ @if $enable-dark-mode {
204
+ @include color-mode(dark) {
205
+ .form-switch .form-check-input:not(:checked):not(:focus) {
206
+ --#{$prefix}form-switch-bg: #{escape-svg($form-switch-bg-image-dark)};
207
+ }
210
208
  }
211
209
  }
@@ -10,10 +10,10 @@
10
10
  @include font-size($input-font-size);
11
11
  font-weight: $input-font-weight;
12
12
  line-height: $input-line-height;
13
- color: var(--#{$prefix}input-color, $input-color);
14
- background-color: var(--#{$prefix}input-bg, $input-bg);
13
+ color: $input-color;
14
+ background-color: $input-bg;
15
15
  background-clip: padding-box;
16
- border: $input-border-width solid var(--#{$prefix}input-border-color, $input-border-color);
16
+ border: $input-border-width solid $input-border-color;
17
17
  appearance: none; // Fix appearance for date inputs in Safari
18
18
 
19
19
  // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.
@@ -32,9 +32,9 @@
32
32
 
33
33
  // Customize the `:focus` state to imitate native WebKit styles.
34
34
  &:focus {
35
- color: var(--#{$prefix}input-focus-color, $input-focus-color);
36
- background-color: var(--#{$prefix}input-focus-bg, $input-focus-bg);
37
- border-color: var(--#{$prefix}input-focus-border-color, $input-focus-border-color);
35
+ color: $input-focus-color;
36
+ background-color: $input-focus-bg;
37
+ border-color: $input-focus-border-color;
38
38
  outline: 0;
39
39
  @if $enable-shadows {
40
40
  @include box-shadow($input-box-shadow, $input-focus-box-shadow);
@@ -44,12 +44,31 @@
44
44
  }
45
45
  }
46
46
 
47
- // Add some height to date inputs on iOS
48
- // https://github.com/twbs/bootstrap/issues/23307
49
- // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved
50
47
  &::-webkit-date-and-time-value {
48
+ // On Android Chrome, form-control's "width: 100%" makes the input width too small
49
+ // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109
50
+ //
51
+ // On iOS Safari, form-control's "appearance: none" + "width: 100%" makes the input width too small
52
+ // Tested under iOS 16.2 / Safari 16.2
53
+ min-width: 85px; // Seems to be a good minimum safe width
54
+
55
+ // Add some height to date inputs on iOS
56
+ // https://github.com/twbs/bootstrap/issues/23307
57
+ // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved
51
58
  // Multiply line-height by 1em if it has no unit
52
59
  height: if(unit($input-line-height) == "", $input-line-height * 1em, $input-line-height);
60
+
61
+ // Android Chrome type="date" is taller than the other inputs
62
+ // because of "margin: 1px 24px 1px 4px" inside the shadow DOM
63
+ // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109
64
+ margin: 0;
65
+ }
66
+
67
+ // Prevent excessive date input height in Webkit
68
+ // https://github.com/twbs/bootstrap/issues/34433
69
+ &::-webkit-datetime-edit {
70
+ display: block;
71
+ padding: 0;
53
72
  }
54
73
 
55
74
  // Placeholder
@@ -77,8 +96,8 @@
77
96
  padding: $input-padding-y $input-padding-x;
78
97
  margin: (-$input-padding-y) (-$input-padding-x);
79
98
  margin-inline-end: $input-padding-x;
80
- color: var(--#{$prefix}form-file-button-color, $form-file-button-color);
81
- @include gradient-bg(var(--#{$prefix}form-file-button-bg, $form-file-button-bg));
99
+ color: $form-file-button-color;
100
+ @include gradient-bg($form-file-button-bg);
82
101
  pointer-events: none;
83
102
  border-color: inherit;
84
103
  border-style: solid;
@@ -89,7 +108,7 @@
89
108
  }
90
109
 
91
110
  &:hover:not(:disabled):not([readonly])::file-selector-button {
92
- background-color: var(--#{$prefix}form-file-button-hover-bg, $form-file-button-hover-bg);
111
+ background-color: $form-file-button-hover-bg;
93
112
  }
94
113
  }
95
114
 
@@ -104,7 +123,7 @@
104
123
  padding: $input-padding-y 0;
105
124
  margin-bottom: 0; // match inputs if this class comes on inputs with default margins
106
125
  line-height: $input-line-height;
107
- color: var(--#{$prefix}input-plaintext-color, $input-plaintext-color);
126
+ color: $input-plaintext-color;
108
127
  background-color: transparent;
109
128
  border: solid transparent;
110
129
  border-width: $input-border-width 0;
@@ -186,6 +205,7 @@ textarea {
186
205
  }
187
206
 
188
207
  &::-webkit-color-swatch {
208
+ border: 0 !important; // stylelint-disable-line declaration-no-important
189
209
  @include border-radius($input-border-radius);
190
210
  }
191
211
 
@@ -28,7 +28,7 @@
28
28
  width: $form-range-thumb-width;
29
29
  height: $form-range-thumb-height;
30
30
  margin-top: ($form-range-track-height - $form-range-thumb-height) * .5; // Webkit specific
31
- @include gradient-bg(var(--#{$prefix}form-range-thumb-bg, $form-range-thumb-bg));
31
+ @include gradient-bg($form-range-thumb-bg);
32
32
  border: $form-range-thumb-border;
33
33
  @include border-radius($form-range-thumb-border-radius);
34
34
  @include box-shadow($form-range-thumb-box-shadow);
@@ -36,7 +36,7 @@
36
36
  appearance: none;
37
37
 
38
38
  &:active {
39
- @include gradient-bg(var(--#{$prefix}form-range-thumb-active-bg, $form-range-thumb-active-bg));
39
+ @include gradient-bg($form-range-thumb-active-bg);
40
40
  }
41
41
  }
42
42
 
@@ -45,7 +45,7 @@
45
45
  height: $form-range-track-height;
46
46
  color: transparent; // Why?
47
47
  cursor: $form-range-track-cursor;
48
- background-color: var(--#{$prefix}form-range-track-bg, $form-range-track-bg);
48
+ background-color: $form-range-track-bg;
49
49
  border-color: transparent;
50
50
  @include border-radius($form-range-track-border-radius);
51
51
  @include box-shadow($form-range-track-box-shadow);
@@ -54,7 +54,7 @@
54
54
  &::-moz-range-thumb {
55
55
  width: $form-range-thumb-width;
56
56
  height: $form-range-thumb-height;
57
- @include gradient-bg(var(--#{$prefix}form-range-thumb-bg, $form-range-thumb-bg));
57
+ @include gradient-bg($form-range-thumb-bg);
58
58
  border: $form-range-thumb-border;
59
59
  @include border-radius($form-range-thumb-border-radius);
60
60
  @include box-shadow($form-range-thumb-box-shadow);
@@ -62,7 +62,7 @@
62
62
  appearance: none;
63
63
 
64
64
  &:active {
65
- @include gradient-bg(var(--#{$prefix}form-range-thumb-active-bg, $form-range-thumb-active-bg));
65
+ @include gradient-bg($form-range-thumb-active-bg);
66
66
  }
67
67
  }
68
68
 
@@ -71,7 +71,7 @@
71
71
  height: $form-range-track-height;
72
72
  color: transparent;
73
73
  cursor: $form-range-track-cursor;
74
- background-color: var(--#{$prefix}form-range-track-bg, $form-range-track-bg);
74
+ background-color: $form-range-track-bg;
75
75
  border-color: transparent; // Firefox specific?
76
76
  @include border-radius($form-range-track-border-radius);
77
77
  @include box-shadow($form-range-track-box-shadow);
@@ -81,11 +81,11 @@
81
81
  pointer-events: none;
82
82
 
83
83
  &::-webkit-slider-thumb {
84
- background-color: var(--#{$prefix}form-range-thumb-disabled-bg, $form-range-thumb-disabled-bg);
84
+ background-color: $form-range-thumb-disabled-bg;
85
85
  }
86
86
 
87
87
  &::-moz-range-thumb {
88
- background-color: var(--#{$prefix}form-range-thumb-disabled-bg, $form-range-thumb-disabled-bg);
88
+ background-color: $form-range-thumb-disabled-bg;
89
89
  }
90
90
  }
91
91
  }
@@ -4,28 +4,29 @@
4
4
  // https://primer.github.io/.
5
5
 
6
6
  .form-select {
7
+ --#{$prefix}form-select-bg-img: #{escape-svg($form-select-indicator)};
8
+
7
9
  display: block;
8
10
  width: 100%;
9
11
  @include ltr-rtl-value-only("padding", $form-select-padding-y $form-select-indicator-padding $form-select-padding-y $form-select-padding-x, $form-select-padding-y $form-select-padding-x $form-select-padding-y $form-select-indicator-padding);
10
- -moz-padding-start: subtract($form-select-padding-x, 3px); // See https://github.com/twbs/bootstrap/issues/32636
11
12
  font-family: $form-select-font-family;
12
13
  @include font-size($form-select-font-size);
13
14
  font-weight: $form-select-font-weight;
14
15
  line-height: $form-select-line-height;
15
- color: var(--#{$prefix}form-select-color, $form-select-color);
16
- background-color: var(--#{$prefix}form-select-bg, $form-select-bg);
17
- background-image: escape-svg($form-select-indicator);
16
+ color: $form-select-color;
17
+ background-color: $form-select-bg;
18
+ background-image: var(--#{$prefix}form-select-bg-img), var(--#{$prefix}form-select-bg-icon, none);
18
19
  background-repeat: no-repeat;
19
20
  @include ltr-rtl-value-only("background-position", $form-select-bg-position);
20
21
  background-size: $form-select-bg-size;
21
- border: $form-select-border-width solid var(--#{$prefix}form-select-border-color, $form-select-border-color);
22
+ border: $form-select-border-width solid $form-select-border-color;
22
23
  @include border-radius($form-select-border-radius, 0);
23
24
  @include box-shadow($form-select-box-shadow);
24
25
  @include transition($form-select-transition);
25
26
  appearance: none;
26
27
 
27
28
  &:focus {
28
- border-color: var(--#{$prefix}form-select-focus-border-color, $form-select-focus-border-color);
29
+ border-color: var($form-select-focus-border-color);
29
30
  outline: 0;
30
31
  @if $enable-shadows {
31
32
  @include box-shadow($form-select-box-shadow, $form-select-focus-box-shadow);
@@ -42,15 +43,15 @@
42
43
  }
43
44
 
44
45
  &:disabled {
45
- color: var(--#{$prefix}form-select-disabled-color, $form-select-disabled-color);
46
- background-color: var(--#{$prefix}form-select-disabled-bg, $form-select-disabled-bg);
47
- border-color: var(--#{$prefix}form-select-disabled-border-color, $form-select-disabled-border-color);
46
+ color: $form-select-disabled-color;
47
+ background-color: $form-select-disabled-bg;
48
+ border-color: $form-select-disabled-border-color;
48
49
  }
49
50
 
50
51
  // Remove outline from select box in FF
51
52
  &:-moz-focusring {
52
53
  color: transparent;
53
- text-shadow: 0 0 0 var(--#{$prefix}form-select-color, $form-select-color);
54
+ text-shadow: 0 0 0 $form-select-color;
54
55
  }
55
56
  }
56
57
 
@@ -69,3 +70,11 @@
69
70
  @include font-size($form-select-font-size-lg);
70
71
  @include border-radius($form-select-border-radius-lg);
71
72
  }
73
+
74
+ @if $enable-dark-mode {
75
+ @include color-mode(dark) {
76
+ .form-select {
77
+ --#{$prefix}form-select-bg-img: #{escape-svg($form-select-indicator-dark)};
78
+ }
79
+ }
80
+ }
@@ -7,5 +7,5 @@
7
7
  @include font-size($form-text-font-size);
8
8
  font-style: $form-text-font-style;
9
9
  font-weight: $form-text-font-weight;
10
- color: var(--#{$prefix}form-text-color, $form-text-color);
10
+ color: $form-text-color;
11
11
  }
@@ -121,7 +121,7 @@
121
121
  }
122
122
 
123
123
  > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {
124
- @include ltr-rtl("margin-left", -$input-border-width);
124
+ @include ltr-rtl("margin-left", calc(#{$input-border-width} * -1));
125
125
  @include border-start-radius(0);
126
126
  }
127
127
 
@@ -7,7 +7,7 @@
7
7
  @include font-size($form-label-font-size);
8
8
  font-style: $form-label-font-style;
9
9
  font-weight: $form-label-font-weight;
10
- color: var(--#{$prefix}form-label-color, $form-label-color);
10
+ color: $form-label-color;
11
11
  }
12
12
 
13
13
  // For use with horizontal and inline forms, when you need the label (or legend)
@@ -20,7 +20,7 @@
20
20
  font-style: $form-label-font-style;
21
21
  font-weight: $form-label-font-weight;
22
22
  line-height: $input-line-height;
23
- color: var(--#{$prefix}form-label-color, $form-label-color);
23
+ color: $form-label-color;
24
24
  }
25
25
 
26
26
  .col-form-label-lg {
@@ -1,5 +1,3 @@
1
- // stylelint-disable function-name-case
2
-
3
1
  // All-caps `RGBA()` function used because of this Sass bug: https://github.com/sass/node-sass/issues/2251
4
2
  @each $color, $value in $theme-colors {
5
3
  $color-rgb: to-rgb($value);
@@ -8,3 +6,15 @@
8
6
  background-color: RGBA($color-rgb, var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null);
9
7
  }
10
8
  }
9
+
10
+ @if $enable-dark-mode {
11
+ @include color-mode(dark) {
12
+ @each $color, $value in $theme-colors-dark {
13
+ $color-rgb: to-rgb($value);
14
+ .text-bg-#{$color} {
15
+ color: color-contrast($value) if($enable-important-utilities, !important, null);
16
+ background-color: RGBA($color-rgb, var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null);
17
+ }
18
+ }
19
+ }
20
+ }
@@ -1,12 +1,30 @@
1
+ // All-caps `RGBA()` function used because of this Sass bug: https://github.com/sass/node-sass/issues/2251
1
2
  @each $color, $value in $theme-colors {
2
3
  .link-#{$color} {
3
- color: $value !important; // stylelint-disable-line declaration-no-important
4
+ color: RGBA(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}link-opacity, 1)) if($enable-important-utilities, !important, null);
5
+ text-decoration-color: RGBA(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}link-underline-opacity, 1)) if($enable-important-utilities, !important, null);
4
6
 
5
7
  @if $link-shade-percentage != 0 {
6
8
  &:hover,
7
9
  &:focus {
8
- color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage)) !important; // stylelint-disable-line declaration-no-important
10
+ $hover-color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage));
11
+ color: RGBA(#{to-rgb($hover-color)}, var(--#{$prefix}link-opacity, 1)) if($enable-important-utilities, !important, null);
12
+ text-decoration-color: RGBA(to-rgb($hover-color), var(--#{$prefix}link-underline-opacity, 1)) if($enable-important-utilities, !important, null);
9
13
  }
10
14
  }
11
15
  }
12
16
  }
17
+
18
+ // One-off special link helper as a bridge until v6
19
+ .link-body-emphasis {
20
+ color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-opacity, 1)) if($enable-important-utilities, !important, null);
21
+ text-decoration-color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-underline-opacity, 1)) if($enable-important-utilities, !important, null);
22
+
23
+ @if $link-shade-percentage != 0 {
24
+ &:hover,
25
+ &:focus {
26
+ color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-opacity, .75)) if($enable-important-utilities, !important, null);
27
+ text-decoration-color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-underline-opacity, .75)) if($enable-important-utilities, !important, null);
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,5 @@
1
+ .focus-ring:focus {
2
+ outline: 0;
3
+ // By default, there is no `--cui-focus-ring-x`, `--cui-focus-ring-y`, or `--cui-focus-ring-blur`, but we provide CSS variables with fallbacks to initial `0` values
4
+ box-shadow: var(--#{$prefix}focus-ring-x, 0) var(--#{$prefix}focus-ring-y, 0) var(--#{$prefix}focus-ring-blur, 0) var(--#{$prefix}focus-ring-width) var(--#{$prefix}focus-ring-color);
5
+ }