@coreui/coreui 5.0.0-alpha.0 → 5.0.0-alpha.2

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 (207) hide show
  1. package/LICENSE +5 -5
  2. package/README.md +2 -2
  3. package/dist/css/coreui-grid.css +34 -192
  4. package/dist/css/coreui-grid.css.map +1 -1
  5. package/dist/css/coreui-grid.min.css +3 -3
  6. package/dist/css/coreui-grid.min.css.map +1 -1
  7. package/dist/css/coreui-grid.rtl.css +118 -275
  8. package/dist/css/coreui-grid.rtl.css.map +1 -1
  9. package/dist/css/coreui-grid.rtl.min.css +3 -3
  10. package/dist/css/coreui-grid.rtl.min.css.map +1 -1
  11. package/dist/css/coreui-reboot.css +166 -148
  12. package/dist/css/coreui-reboot.css.map +1 -1
  13. package/dist/css/coreui-reboot.min.css +3 -3
  14. package/dist/css/coreui-reboot.min.css.map +1 -1
  15. package/dist/css/coreui-reboot.rtl.css +170 -156
  16. package/dist/css/coreui-reboot.rtl.css.map +1 -1
  17. package/dist/css/coreui-reboot.rtl.min.css +3 -3
  18. package/dist/css/coreui-reboot.rtl.min.css.map +1 -1
  19. package/dist/css/coreui-utilities.css +653 -427
  20. package/dist/css/coreui-utilities.css.map +1 -1
  21. package/dist/css/coreui-utilities.min.css +3 -3
  22. package/dist/css/coreui-utilities.min.css.map +1 -1
  23. package/dist/css/coreui-utilities.rtl.css +824 -703
  24. package/dist/css/coreui-utilities.rtl.css.map +1 -1
  25. package/dist/css/coreui-utilities.rtl.min.css +3 -3
  26. package/dist/css/coreui-utilities.rtl.min.css.map +1 -1
  27. package/dist/css/coreui.css +2082 -1790
  28. package/dist/css/coreui.css.map +1 -1
  29. package/dist/css/coreui.min.css +3 -3
  30. package/dist/css/coreui.min.css.map +1 -1
  31. package/dist/css/coreui.rtl.css +2333 -2213
  32. package/dist/css/coreui.rtl.css.map +1 -1
  33. package/dist/css/coreui.rtl.min.css +3 -3
  34. package/dist/css/coreui.rtl.min.css.map +1 -1
  35. package/dist/js/coreui.bundle.js +313 -292
  36. package/dist/js/coreui.bundle.js.map +1 -1
  37. package/dist/js/coreui.bundle.min.js +2 -2
  38. package/dist/js/coreui.bundle.min.js.map +1 -1
  39. package/dist/js/coreui.esm.js +273 -246
  40. package/dist/js/coreui.esm.js.map +1 -1
  41. package/dist/js/coreui.esm.min.js +2 -2
  42. package/dist/js/coreui.esm.min.js.map +1 -1
  43. package/dist/js/coreui.js +276 -248
  44. package/dist/js/coreui.js.map +1 -1
  45. package/dist/js/coreui.min.js +2 -2
  46. package/dist/js/coreui.min.js.map +1 -1
  47. package/js/dist/alert.js +7 -6
  48. package/js/dist/alert.js.map +1 -1
  49. package/js/dist/base-component.js +8 -7
  50. package/js/dist/base-component.js.map +1 -1
  51. package/js/dist/button.js +7 -6
  52. package/js/dist/button.js.map +1 -1
  53. package/js/dist/carousel.js +8 -7
  54. package/js/dist/carousel.js.map +1 -1
  55. package/js/dist/collapse.js +7 -6
  56. package/js/dist/collapse.js.map +1 -1
  57. package/js/dist/dom/data.js +3 -3
  58. package/js/dist/dom/data.js.map +1 -1
  59. package/js/dist/dom/event-handler.js +7 -7
  60. package/js/dist/dom/event-handler.js.map +1 -1
  61. package/js/dist/dom/manipulator.js +4 -4
  62. package/js/dist/dom/manipulator.js.map +1 -1
  63. package/js/dist/dom/selector-engine.js +4 -3
  64. package/js/dist/dom/selector-engine.js.map +1 -1
  65. package/js/dist/dropdown.js +10 -9
  66. package/js/dist/dropdown.js.map +1 -1
  67. package/js/dist/modal.js +9 -10
  68. package/js/dist/modal.js.map +1 -1
  69. package/js/dist/navigation.js +7 -6
  70. package/js/dist/navigation.js.map +1 -1
  71. package/js/dist/offcanvas.js +11 -10
  72. package/js/dist/offcanvas.js.map +1 -1
  73. package/js/dist/popover.js +7 -6
  74. package/js/dist/popover.js.map +1 -1
  75. package/js/dist/scrollspy.js +9 -8
  76. package/js/dist/scrollspy.js.map +1 -1
  77. package/js/dist/sidebar.js +7 -6
  78. package/js/dist/sidebar.js.map +1 -1
  79. package/js/dist/tab.js +21 -12
  80. package/js/dist/tab.js.map +1 -1
  81. package/js/dist/toast.js +7 -6
  82. package/js/dist/toast.js.map +1 -1
  83. package/js/dist/tooltip.js +12 -11
  84. package/js/dist/tooltip.js.map +1 -1
  85. package/js/dist/util/backdrop.js +8 -7
  86. package/js/dist/util/backdrop.js.map +1 -1
  87. package/js/dist/util/component-functions.js +8 -7
  88. package/js/dist/util/component-functions.js.map +1 -1
  89. package/js/dist/util/config.js +8 -7
  90. package/js/dist/util/config.js.map +1 -1
  91. package/js/dist/util/focustrap.js +4 -3
  92. package/js/dist/util/focustrap.js.map +1 -1
  93. package/js/dist/util/index.js +3 -3
  94. package/js/dist/util/index.js.map +1 -1
  95. package/js/dist/util/sanitizer.js +28 -30
  96. package/js/dist/util/sanitizer.js.map +1 -1
  97. package/js/dist/util/scrollbar.js +8 -7
  98. package/js/dist/util/scrollbar.js.map +1 -1
  99. package/js/dist/util/swipe.js +8 -7
  100. package/js/dist/util/swipe.js.map +1 -1
  101. package/js/dist/util/template-factory.js +8 -7
  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 +3 -3
  106. package/js/src/base-component.js +3 -3
  107. package/js/src/button.js +4 -3
  108. package/js/src/carousel.js +6 -6
  109. package/js/src/collapse.js +4 -4
  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 +3 -3
  113. package/js/src/dom/selector-engine.js +2 -2
  114. package/js/src/dropdown.js +8 -8
  115. package/js/src/modal.js +8 -9
  116. package/js/src/navigation.js +3 -3
  117. package/js/src/offcanvas.js +11 -11
  118. package/js/src/popover.js +2 -2
  119. package/js/src/scrollspy.js +5 -5
  120. package/js/src/sidebar.js +4 -4
  121. package/js/src/tab.js +19 -9
  122. package/js/src/toast.js +3 -3
  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 +40 -43
  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 -5
  133. package/package.json +51 -45
  134. package/scss/_alert.scss +5 -5
  135. package/scss/_avatar.scss +4 -4
  136. package/scss/_badge.scss +11 -1
  137. package/scss/_breadcrumb.scss +9 -4
  138. package/scss/_button-group.scss +4 -4
  139. package/scss/_buttons.scss +38 -71
  140. package/scss/_callout.scss +2 -2
  141. package/scss/_card.scss +4 -3
  142. package/scss/_carousel.scss +9 -3
  143. package/scss/_close.scss +3 -0
  144. package/scss/_dropdown.scss +14 -14
  145. package/scss/_functions.scss +59 -0
  146. package/scss/_grid.scss +8 -0
  147. package/scss/_header.scss +186 -0
  148. package/scss/_helpers.scss +2 -0
  149. package/scss/_images.scss +3 -3
  150. package/scss/_list-group.scss +12 -19
  151. package/scss/_maps.scss +75 -21
  152. package/scss/_mixins.scss +6 -4
  153. package/scss/_modal.scss +2 -2
  154. package/scss/_nav.scss +8 -20
  155. package/scss/_navbar.scss +11 -8
  156. package/scss/_offcanvas.scss +8 -8
  157. package/scss/_pagination.scss +2 -2
  158. package/scss/_progress.scss +43 -0
  159. package/scss/_reboot.scss +23 -25
  160. package/scss/_root.scss +70 -63
  161. package/scss/_sidebar.scss +0 -11
  162. package/scss/_tables.scss +18 -11
  163. package/scss/_toasts.scss +2 -2
  164. package/scss/_tooltip.scss +14 -15
  165. package/scss/_type.scss +1 -1
  166. package/scss/_utilities.scss +117 -65
  167. package/scss/_variables-dark.scss +112 -61
  168. package/scss/_variables.scss +401 -268
  169. package/scss/coreui-grid.rtl.scss +4 -0
  170. package/scss/coreui-grid.scss +2 -5
  171. package/scss/coreui-reboot.rtl.scss +4 -0
  172. package/scss/coreui-reboot.scss +1 -1
  173. package/scss/coreui-utilities.rtl.scss +4 -0
  174. package/scss/coreui-utilities.scss +1 -1
  175. package/scss/coreui.rtl.scss +4 -0
  176. package/scss/coreui.scss +3 -3
  177. package/scss/forms/_floating-labels.scss +21 -16
  178. package/scss/forms/_form-check.scss +41 -20
  179. package/scss/forms/_form-control.scss +18 -5
  180. package/scss/forms/_form-range.scss +3 -3
  181. package/scss/forms/_form-select.scss +7 -8
  182. package/scss/forms/_input-group.scss +5 -5
  183. package/scss/helpers/_color-bg.scss +13 -4
  184. package/scss/helpers/_colored-links.scss +20 -2
  185. package/scss/helpers/_focus-ring.scss +5 -0
  186. package/scss/helpers/_icon-link.scss +25 -0
  187. package/scss/helpers/_ratio.scss +1 -1
  188. package/scss/helpers/_vr.scss +2 -1
  189. package/scss/mixins/_alert.scss +1 -1
  190. package/scss/mixins/_banner.scss +3 -3
  191. package/scss/mixins/_border-radius.scss +7 -7
  192. package/scss/mixins/_buttons.scss +53 -49
  193. package/scss/mixins/_caret.scss +3 -3
  194. package/scss/mixins/_forms.scss +7 -7
  195. package/scss/mixins/_grid.scss +1 -1
  196. package/scss/mixins/_list-group.scss +12 -20
  197. package/scss/mixins/_lists.scss +1 -1
  198. package/scss/mixins/_ltr-rtl.scss +87 -0
  199. package/scss/mixins/_utilities.scss +6 -1
  200. package/scss/mixins/_visually-hidden.scss +5 -1
  201. package/scss/sidebar/_sidebar-narrow.scss +37 -17
  202. package/scss/sidebar/_sidebar-nav.scss +115 -20
  203. package/scss/sidebar/_sidebar.scss +98 -139
  204. package/scss/vendor/_rfs.scss +24 -30
  205. package/scss/tests/mixins/_color-modes.test.scss +0 -69
  206. package/scss/tests/mixins/_utilities.test.scss +0 -393
  207. package/scss/tests/utilities/_api.test.scss +0 -75
@@ -4,87 +4,91 @@
4
4
  // and disabled options for all buttons
5
5
 
6
6
  // scss-docs-start btn-variant-mixin
7
- @mixin button-variant(
8
- $background,
9
- $border,
10
- $color: color-contrast($background),
11
- $hover-background: if($color == $color-contrast-light, shade-color($background, $btn-hover-bg-shade-amount), tint-color($background, $btn-hover-bg-tint-amount)),
12
- $hover-border: if($color == $color-contrast-light, shade-color($border, $btn-hover-border-shade-amount), tint-color($border, $btn-hover-border-tint-amount)),
13
- $hover-color: color-contrast($hover-background),
14
- $active-background: if($color == $color-contrast-light, shade-color($background, $btn-active-bg-shade-amount), tint-color($background, $btn-active-bg-tint-amount)),
15
- $active-border: if($color == $color-contrast-light, shade-color($border, $btn-active-border-shade-amount), tint-color($border, $btn-active-border-tint-amount)),
16
- $active-color: color-contrast($active-background),
17
- $disabled-background: $background,
18
- $disabled-border: $border,
19
- $disabled-color: color-contrast($disabled-background)
20
- ) {
7
+ @mixin button-variant($variant) {
8
+ $background: map-get($variant, "bg");
9
+ $border-color: map-get($variant, "border-color");
10
+ $color: map-get($variant, "color");
11
+ $hover-background: map-get($variant, "hover-bg");
12
+ $hover-border-color: map-get($variant, "hover-border-color");
13
+ $hover-color: map-get($variant, "hover-color");
14
+ $active-background: map-get($variant, "active-bg");
15
+ $active-border-color: map-get($variant, "active-border-color");
16
+ $active-color: map-get($variant, "active-color");
17
+ $disabled-background: map-get($variant, "disabled-bg");
18
+ $disabled-border-color: map-get($variant, "disabled-border-color");
19
+ $disabled-color: map-get($variant, "disabled-color");
20
+ $shadow: map-get($variant, "shadow");
21
+
21
22
  --#{$prefix}btn-color: #{$color};
22
23
  --#{$prefix}btn-bg: #{$background};
23
- --#{$prefix}btn-border-color: #{$border};
24
+ --#{$prefix}btn-border-color: #{$border-color};
24
25
  --#{$prefix}btn-hover-color: #{$hover-color};
25
26
  --#{$prefix}btn-hover-bg: #{$hover-background};
26
- --#{$prefix}btn-hover-border-color: #{$hover-border};
27
- --#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix($color, $border, 15%))};
27
+ --#{$prefix}btn-hover-border-color: #{$hover-border-color};
28
+ --#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix($color, $border-color, 15%))};
28
29
  --#{$prefix}btn-active-color: #{$active-color};
29
30
  --#{$prefix}btn-active-bg: #{$active-background};
30
- --#{$prefix}btn-active-border-color: #{$active-border};
31
+ --#{$prefix}btn-active-border-color: #{$active-border-color};
31
32
  --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
32
33
  --#{$prefix}btn-disabled-color: #{$disabled-color};
33
34
  --#{$prefix}btn-disabled-bg: #{$disabled-background};
34
- --#{$prefix}btn-disabled-border-color: #{$disabled-border};
35
+ --#{$prefix}btn-disabled-border-color: #{$disabled-border-color};
35
36
  }
36
37
  // scss-docs-end btn-variant-mixin
37
38
 
38
39
  // scss-docs-start btn-outline-variant-mixin
39
- @mixin button-outline-variant(
40
- $color,
41
- $color-hover: color-contrast($color),
42
- $active-background: $color,
43
- $active-border: $color,
44
- $active-color: color-contrast($active-background)
45
- ) {
40
+ @mixin button-outline-variant($variant) {
41
+ $color: map-get($variant, "color");
42
+ $hover-background: map-get($variant, "hover-bg");
43
+ $hover-border-color: map-get($variant, "hover-border-color");
44
+ $hover-color: map-get($variant, "hover-color");
45
+ $active-background: map-get($variant, "active-bg");
46
+ $active-border-color: map-get($variant, "active-border-color");
47
+ $active-color: map-get($variant, "active-color");
48
+ $disabled-color: map-get($variant, "disabled-color");
49
+ $shadow: map-get($variant, "shadow");
50
+
46
51
  --#{$prefix}btn-color: #{$color};
47
52
  --#{$prefix}btn-border-color: #{$color};
48
- --#{$prefix}btn-hover-color: #{$color-hover};
53
+ --#{$prefix}btn-hover-color: #{$hover-color};
49
54
  --#{$prefix}btn-hover-bg: #{$active-background};
50
- --#{$prefix}btn-hover-border-color: #{$active-border};
55
+ --#{$prefix}btn-hover-border-color: #{$active-border-color};
51
56
  --#{$prefix}btn-focus-shadow-rgb: #{to-rgb($color)};
52
57
  --#{$prefix}btn-active-color: #{$active-color};
53
58
  --#{$prefix}btn-active-bg: #{$active-background};
54
- --#{$prefix}btn-active-border-color: #{$active-border};
59
+ --#{$prefix}btn-active-border-color: #{$active-border-color};
55
60
  --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
56
61
  --#{$prefix}btn-disabled-color: #{$color};
57
62
  --#{$prefix}btn-disabled-bg: transparent;
58
- --#{$prefix}btn-disabled-border-color: #{$color};
59
63
  --#{$prefix}gradient: none;
60
64
  }
61
65
  // scss-docs-end btn-outline-variant-mixin
62
66
 
63
67
  // scss-docs-start btn-ghost-variant-mixin
64
- @mixin button-ghost-variant(
65
- $color,
66
- $color-hover: color-contrast($color),
67
- $active-background: $color,
68
- $active-border: $color,
69
- $active-color: color-contrast($active-background)
70
- ) {
68
+ @mixin button-ghost-variant($variant) {
69
+ $color: map-get($variant, "color");
70
+ $hover-background: map-get($variant, "hover-bg");
71
+ $hover-border-color: map-get($variant, "hover-border-color");
72
+ $hover-color: map-get($variant, "hover-color");
73
+ $active-background: map-get($variant, "active-bg");
74
+ $active-border-color: map-get($variant, "active-border-color");
75
+ $active-color: map-get($variant, "active-color");
76
+ $disabled-color: map-get($variant, "disabled-color");
77
+ $shadow: map-get($variant, "shadow");
78
+
71
79
  --#{$prefix}btn-color: #{$color};
72
- --#{$prefix}btn-hover-color: #{$color-hover};
73
- --#{$prefix}btn-hover-bg: #{$active-background};
74
- --#{$prefix}btn-hover-border-color: #{$active-border};
75
- --#{$prefix}btn-focus-shadow-rgb: #{to-rgb($color)};
76
- --#{$prefix}btn-active-color: #{$active-color};
80
+ --#{$prefix}btn-hover-bg: #{$hover-background};
81
+ --#{$prefix}btn-hover-border-color: #{$hover-border-color};
82
+ --#{$prefix}btn-hover-color: #{$hover-color};
77
83
  --#{$prefix}btn-active-bg: #{$active-background};
78
- --#{$prefix}btn-active-border-color: #{$active-border};
79
- --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
80
- --#{$prefix}btn-disabled-color: #{$color};
81
- --#{$prefix}btn-disabled-bg: transparent;
82
- --#{$prefix}btn-disabled-border-color: #{$color};
83
- --#{$prefix}gradient: none;
84
+ --#{$prefix}btn-active-border-color: #{$active-border-color};
85
+ --#{$prefix}btn-active-color: #{$active-color};
86
+ --#{$prefix}btn-disabled-color: #{$disabled-color};
87
+ --#{$prefix}btn-shadow: #{$shadow};
84
88
  }
85
89
  // scss-docs-end btn-ghost-variant-mixin
86
90
 
87
-
91
+ // Button sizes
88
92
  // scss-docs-start btn-size-mixin
89
93
  @mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {
90
94
  --#{$prefix}btn-padding-y: #{$padding-y};
@@ -35,7 +35,7 @@
35
35
  @if $enable-caret {
36
36
  &::after {
37
37
  display: inline-block;
38
- margin-left: $spacing;
38
+ @include ltr-rtl("margin-left", $spacing);
39
39
  vertical-align: $vertical-align;
40
40
  content: "";
41
41
  @if $direction == down {
@@ -54,7 +54,7 @@
54
54
 
55
55
  &::before {
56
56
  display: inline-block;
57
- margin-right: $spacing;
57
+ @include ltr-rtl("margin-right", $spacing);
58
58
  vertical-align: $vertical-align;
59
59
  content: "";
60
60
  @include caret-start($width);
@@ -62,7 +62,7 @@
62
62
  }
63
63
 
64
64
  &:empty::after {
65
- margin-left: 0;
65
+ @include ltr-rtl("margin-left", 0);
66
66
  }
67
67
  }
68
68
  }
@@ -60,10 +60,10 @@
60
60
  border-color: $border-color;
61
61
 
62
62
  @if $enable-validation-icons {
63
- padding-right: $input-height-inner;
63
+ @include ltr-rtl("padding-right", $input-height-inner);
64
64
  background-image: escape-svg($icon);
65
65
  background-repeat: no-repeat;
66
- background-position: right $input-height-inner-quarter center;
66
+ @include ltr-rtl-value-only("background-position", right $input-height-inner-quarter center, left $input-height-inner-quarter center);
67
67
  background-size: $input-height-inner-half $input-height-inner-half;
68
68
  }
69
69
 
@@ -78,8 +78,8 @@
78
78
  textarea.form-control {
79
79
  @include form-validation-state-selector($state) {
80
80
  @if $enable-validation-icons {
81
- padding-right: $input-height-inner;
82
- background-position: top $input-height-inner-quarter right $input-height-inner-quarter;
81
+ @include ltr-rtl("padding-right", $input-height-inner);
82
+ @include ltr-rtl-value-only("background-position", top $input-height-inner-quarter right $input-height-inner-quarter, top $input-height-inner-quarter left $input-height-inner-quarter);
83
83
  }
84
84
  }
85
85
  }
@@ -92,8 +92,8 @@
92
92
  &:not([multiple]):not([size]),
93
93
  &:not([multiple])[size="1"] {
94
94
  --#{$prefix}form-select-bg-icon: #{escape-svg($icon)};
95
- padding-right: $form-select-feedback-icon-padding-end;
96
- background-position: $form-select-bg-position, $form-select-feedback-icon-position;
95
+ @include ltr-rtl("padding-right", $form-select-feedback-icon-padding-end);
96
+ @include ltr-rtl-value-only("background-position", #{$form-select-bg-position, $form-select-feedback-icon-position});
97
97
  background-size: $form-select-bg-size, $form-select-feedback-icon-size;
98
98
  }
99
99
  }
@@ -132,7 +132,7 @@
132
132
  }
133
133
  .form-check-inline .form-check-input {
134
134
  ~ .#{$state}-feedback {
135
- margin-left: .5em;
135
+ @include ltr-rtl("margin-left", .5em);
136
136
  }
137
137
  }
138
138
 
@@ -45,7 +45,7 @@
45
45
 
46
46
  @mixin make-col-offset($size, $columns: $grid-columns) {
47
47
  $num: divide($size, $columns);
48
- margin-left: if($num == 0, 0, percentage($num));
48
+ @include ltr-rtl("margin-left", if($num == 0, 0, percentage($num)));
49
49
  }
50
50
 
51
51
  // Row columns
@@ -1,27 +1,19 @@
1
- @include deprecate("`list-group-item-variant()`", "v5.0.0", "v6.0.0");
2
-
1
+ @include deprecate("`list-group-item-variant()`", "v4.3.0", "v6.0.0");
3
2
 
4
3
  // List Groups
5
4
 
6
5
  // scss-docs-start list-group-mixin
7
- @mixin list-group-item-variant($state, $background, $color) {
8
- .list-group-item-#{$state} {
9
- color: $color;
10
- background-color: $background;
11
-
12
- &.list-group-item-action {
13
- &:hover,
14
- &:focus {
15
- color: $color;
16
- background-color: shade-color($background, 10%);
17
- }
6
+ @mixin list-group-item-variant($state, $variant) {
7
+ $background: map-get($variant, "bg");
8
+ $background-hover: map-get($variant, "bg-hover");
9
+ $color: contrast-ratio-correction(map-get($variant, "color"), map-get($variant, "bg"), abs($alert-color-scale), $state);
18
10
 
19
- &.active {
20
- color: $white;
21
- background-color: $color;
22
- border-color: $color;
23
- }
24
- }
25
- }
11
+ --#{$prefix}list-group-color: #{$color};
12
+ --#{$prefix}list-group-bg: #{$background};
13
+ --#{$prefix}list-group-hover-bg: #{$background-hover};
14
+ --#{$prefix}list-group-action-hover-color: #{$color};
15
+ --#{$prefix}list-group-action-active-color: #{$white};
16
+ --#{$prefix}list-group-action-active-bg: #{$color};
17
+ --#{$prefix}list-group-action-active-border-color: #{$color};
26
18
  }
27
19
  // scss-docs-end list-group-mixin
@@ -2,6 +2,6 @@
2
2
 
3
3
  // Unstyled keeps list items block level, just removes default browser padding and list-style
4
4
  @mixin list-unstyled {
5
- padding-left: 0;
5
+ @include ltr-rtl("padding-left", 0);
6
6
  list-style: none;
7
7
  }
@@ -0,0 +1,87 @@
1
+ @mixin ltr {
2
+ @if $enable-ltr {
3
+ html:not([dir="rtl"]) & {
4
+ @content;
5
+ }
6
+ }
7
+ }
8
+
9
+ @mixin rtl {
10
+ @if $enable-rtl {
11
+ *[dir="rtl"] & {
12
+ @content;
13
+ }
14
+ }
15
+ }
16
+
17
+ @function reflect($element) {
18
+ $string: #{$element};
19
+ @if str-index($string, "left") {
20
+ @return str-replace($string, "left", "right");
21
+ }
22
+ @if str-index($string, "right") {
23
+ @return str-replace($string, "right", "left");
24
+ }
25
+
26
+ @return unquote($string);
27
+ }
28
+
29
+ @mixin ltr-rtl($property, $value, $property-rtl: null, $value-rtl: null, $important: null) {
30
+ $property-reflected: reflect($property);
31
+ $value-reflected: reflect($value);
32
+
33
+ @if $enable-ltr and $enable-rtl {
34
+ @include ltr() {
35
+ #{$property}: $value $important;
36
+ }
37
+ @include rtl() {
38
+ @if $value-rtl {
39
+ #{$property-reflected}: $value-rtl $important;
40
+ }
41
+ @else {
42
+ #{$property-reflected}: $value-reflected $important;
43
+ }
44
+ }
45
+ }
46
+ @else {
47
+ @if $enable-rtl {
48
+ @if $value-rtl {
49
+ #{$property-reflected}: $value-rtl $important;
50
+ }
51
+ @else {
52
+ #{$property-reflected}: $value-reflected $important;
53
+ }
54
+ }
55
+ @else {
56
+ #{$property}: $value $important;
57
+ }
58
+ }
59
+ }
60
+
61
+ @mixin ltr-rtl-value-only($property, $value, $value-rtl: null, $important: null) {
62
+ $value-reflected: reflect($value);
63
+
64
+ @if $enable-ltr and $enable-rtl {
65
+ @include ltr() {
66
+ #{$property}: $value $important;
67
+ }
68
+ @include rtl() {
69
+ @if $value-rtl {
70
+ #{$property}: $value-rtl $important;
71
+ } @else {
72
+ #{$property}: $value-reflected $important;
73
+ }
74
+ }
75
+ }
76
+ @else {
77
+ @if $enable-rtl {
78
+ @if $value-rtl {
79
+ #{$property}: $value-rtl $important;
80
+ } @else {
81
+ #{$property}: $value-reflected $important;
82
+ }
83
+ } @else {
84
+ #{$property}: $value $important;
85
+ }
86
+ }
87
+ }
@@ -92,7 +92,12 @@
92
92
  --#{$prefix}#{$local-var}: #{$variable};
93
93
  }
94
94
  }
95
- #{$property}: $value if($enable-important-utilities, !important, null);
95
+ @if $is-rtl == true {
96
+ @include ltr-rtl($property, $value, null, null, if($enable-important-utilities, !important, null));
97
+ } @else {
98
+ #{$property}: $value if($enable-important-utilities, !important, null);
99
+ }
100
+
96
101
  }
97
102
  }
98
103
  }
@@ -6,7 +6,6 @@
6
6
  // See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/
7
7
 
8
8
  @mixin visually-hidden() {
9
- position: absolute !important;
10
9
  width: 1px !important;
11
10
  height: 1px !important;
12
11
  padding: 0 !important;
@@ -15,6 +14,11 @@
15
14
  clip: rect(0, 0, 0, 0) !important;
16
15
  white-space: nowrap !important;
17
16
  border: 0 !important;
17
+
18
+ // Fix for positioned table caption that could become anonymous cells
19
+ &:not(caption) {
20
+ position: absolute !important;
21
+ }
18
22
  }
19
23
 
20
24
  // Use to only display content when it's focused, or one of its child elements is focused
@@ -1,4 +1,13 @@
1
1
  %sidebar-narrow {
2
+ // scss-docs-start sidebar-narrow-css-vars
3
+ --#{$prefix}sidebar-narrow-width: #{$sidebar-narrow-width};
4
+ // scss-docs-end sidebar-narrow-css-vars
5
+
6
+ .sidebar-nav {
7
+ --#{$prefix}sidebar-nav-link-padding-x: #{$sidebar-narrow-nav-link-padding-x};
8
+ --#{$prefix}sidebar-nav-link-padding-y: #{$sidebar-narrow-nav-link-padding-y};
9
+ }
10
+
2
11
  @include media-breakpoint-up($mobile-breakpoint) {
3
12
  z-index: $zindex-fixed + 1;
4
13
  flex: 0 0 var(--#{$prefix}sidebar-narrow-width);
@@ -19,14 +28,22 @@
19
28
  display: block;
20
29
  }
21
30
 
31
+ .sidebar-header {
32
+ justify-content: center;
33
+ padding-right: 0;
34
+ padding-left: 0;
35
+ }
36
+
37
+ .nav-icon {
38
+ flex: 0 0 calc(var(--#{$prefix}sidebar-narrow-width) - (var(--#{$prefix}sidebar-nav-padding-x) * 2) - (var(--#{$prefix}sidebar-nav-link-padding-x) * 2)); // stylelint-disable-line function-disallowed-list
39
+ }
40
+
22
41
  .d-narrow-none,
23
42
  .nav-label,
24
43
  .nav-title,
25
44
  .nav-group-items,
26
45
  .nav-group.show .nav-group-items,
27
- .sidebar-footer,
28
- .sidebar-form,
29
- .sidebar-header {
46
+ .sidebar-form {
30
47
  height: 0 !important; // stylelint-disable-line declaration-no-important
31
48
  padding: 0;
32
49
  margin: 0;
@@ -35,16 +52,11 @@
35
52
  }
36
53
 
37
54
  .sidebar-toggler {
38
- position: fixed;
39
- bottom: 0;
40
-
41
- &::before {
42
- transform: rotate(180deg) #{"/* rtl:rotate(0deg) */"};
43
- }
55
+ @include ltr-rtl("transform", rotate(-180deg), null, rotate(0deg));
44
56
  }
45
57
 
46
58
  &.sidebar-end .sidebar-toggler::before {
47
- transform: rotate(0deg) #{"/* rtl:rotate(180deg) */"};
59
+ transform: rotate(0deg);
48
60
  }
49
61
  }
50
62
  }
@@ -57,6 +69,10 @@
57
69
  &.sidebar-end ~ * {
58
70
  --#{$prefix}sidebar-occupy-end: #{$sidebar-narrow-width};
59
71
  }
72
+
73
+ .nav-link {
74
+ overflow: hidden;
75
+ }
60
76
  }
61
77
 
62
78
  .sidebar-narrow-unfoldable {
@@ -75,16 +91,20 @@
75
91
  }
76
92
 
77
93
  &:hover {
94
+ box-shadow: $box-shadow;
95
+
78
96
  .sidebar-toggler {
79
- &::before {
80
- transform: rotate(-180deg) #{"/* rtl:rotate(0deg) */"};
81
- }
97
+ @include ltr-rtl("transform", rotate(-180deg), null, rotate(0deg));
82
98
  }
83
99
 
84
- &.sidebar-end .sidebar-toggler::before {
85
- transform: rotate(0deg) #{"/* rtl:rotate(180deg) */"};
100
+ &.sidebar-end .sidebar-toggler {
101
+ transform: rotate(0deg);
86
102
  }
87
103
  }
104
+
105
+ .nav-link {
106
+ overflow: hidden;
107
+ }
88
108
  }
89
109
 
90
110
  // Responsive behavior
@@ -95,10 +115,10 @@
95
115
  &.sidebar-narrow,
96
116
  &.sidebar-narrow-unfoldable {
97
117
  &:not(.sidebar-end) {
98
- margin-left: calc(var(--#{$prefix}sidebar-narrow-width) * -1); // stylelint-disable-line function-disallowed-list
118
+ @include ltr-rtl("margin-left", calc(var(--#{$prefix}sidebar-narrow-width) * -1));
99
119
  }
100
120
  &.sidebar-end {
101
- margin-right: calc(var(--#{$prefix}sidebar-narrow-width) * -1); // stylelint-disable-line function-disallowed-list
121
+ @include ltr-rtl("margin-right", calc(var(--#{$prefix}sidebar-narrow-width) * -1));
102
122
  }
103
123
  }
104
124
  }