@openeuropa/bcl-bootstrap 0.26.0 → 0.28.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 (98) hide show
  1. package/js/dist/alert.js +1 -1
  2. package/js/dist/alert.js.map +1 -1
  3. package/js/dist/base-component.js +2 -2
  4. package/js/dist/base-component.js.map +1 -1
  5. package/js/dist/button.js +1 -1
  6. package/js/dist/button.js.map +1 -1
  7. package/js/dist/carousel.js +1 -1
  8. package/js/dist/carousel.js.map +1 -1
  9. package/js/dist/collapse.js +1 -1
  10. package/js/dist/collapse.js.map +1 -1
  11. package/js/dist/dom/data.js +1 -1
  12. package/js/dist/dom/data.js.map +1 -1
  13. package/js/dist/dom/event-handler.js +1 -1
  14. package/js/dist/dom/event-handler.js.map +1 -1
  15. package/js/dist/dom/manipulator.js +1 -1
  16. package/js/dist/dom/manipulator.js.map +1 -1
  17. package/js/dist/dom/selector-engine.js +1 -1
  18. package/js/dist/dom/selector-engine.js.map +1 -1
  19. package/js/dist/dropdown.js +6 -4
  20. package/js/dist/dropdown.js.map +1 -1
  21. package/js/dist/modal.js +15 -12
  22. package/js/dist/modal.js.map +1 -1
  23. package/js/dist/offcanvas.js +1 -1
  24. package/js/dist/offcanvas.js.map +1 -1
  25. package/js/dist/popover.js +1 -1
  26. package/js/dist/popover.js.map +1 -1
  27. package/js/dist/scrollspy.js +15 -11
  28. package/js/dist/scrollspy.js.map +1 -1
  29. package/js/dist/tab.js +1 -1
  30. package/js/dist/tab.js.map +1 -1
  31. package/js/dist/toast.js +1 -1
  32. package/js/dist/toast.js.map +1 -1
  33. package/js/dist/tooltip.js +10 -6
  34. package/js/dist/tooltip.js.map +1 -1
  35. package/js/dist/util/backdrop.js +1 -1
  36. package/js/dist/util/backdrop.js.map +1 -1
  37. package/js/dist/util/component-functions.js +1 -1
  38. package/js/dist/util/component-functions.js.map +1 -1
  39. package/js/dist/util/config.js +1 -1
  40. package/js/dist/util/config.js.map +1 -1
  41. package/js/dist/util/focustrap.js +1 -1
  42. package/js/dist/util/focustrap.js.map +1 -1
  43. package/js/dist/util/index.js +1 -1
  44. package/js/dist/util/index.js.map +1 -1
  45. package/js/dist/util/sanitizer.js +1 -1
  46. package/js/dist/util/sanitizer.js.map +1 -1
  47. package/js/dist/util/scrollbar.js +1 -1
  48. package/js/dist/util/scrollbar.js.map +1 -1
  49. package/js/dist/util/swipe.js +1 -1
  50. package/js/dist/util/swipe.js.map +1 -1
  51. package/js/dist/util/template-factory.js +1 -1
  52. package/js/dist/util/template-factory.js.map +1 -1
  53. package/js/src/alert.js +1 -1
  54. package/js/src/base-component.js +2 -2
  55. package/js/src/button.js +1 -1
  56. package/js/src/carousel.js +1 -1
  57. package/js/src/collapse.js +1 -1
  58. package/js/src/dom/data.js +1 -1
  59. package/js/src/dom/event-handler.js +1 -1
  60. package/js/src/dom/manipulator.js +1 -1
  61. package/js/src/dom/selector-engine.js +1 -1
  62. package/js/src/dropdown.js +5 -3
  63. package/js/src/modal.js +17 -13
  64. package/js/src/offcanvas.js +1 -1
  65. package/js/src/popover.js +1 -1
  66. package/js/src/scrollspy.js +14 -10
  67. package/js/src/tab.js +1 -1
  68. package/js/src/toast.js +1 -1
  69. package/js/src/tooltip.js +10 -7
  70. package/js/src/util/backdrop.js +1 -1
  71. package/js/src/util/component-functions.js +1 -1
  72. package/js/src/util/config.js +1 -1
  73. package/js/src/util/focustrap.js +1 -1
  74. package/js/src/util/index.js +1 -1
  75. package/js/src/util/sanitizer.js +1 -1
  76. package/js/src/util/scrollbar.js +1 -1
  77. package/js/src/util/swipe.js +1 -1
  78. package/js/src/util/template-factory.js +1 -1
  79. package/package.json +3 -3
  80. package/scss/_accordion.scss +7 -4
  81. package/scss/_button-group.scss +1 -1
  82. package/scss/_buttons.scss +23 -8
  83. package/scss/_dropdown.scss +2 -1
  84. package/scss/_functions.scss +1 -1
  85. package/scss/_list-group.scss +6 -5
  86. package/scss/_modal.scss +1 -1
  87. package/scss/_nav.scss +2 -2
  88. package/scss/_navbar.scss +2 -0
  89. package/scss/_offcanvas.scss +5 -4
  90. package/scss/_pagination.scss +1 -1
  91. package/scss/_popover.scss +5 -5
  92. package/scss/_toasts.scss +3 -2
  93. package/scss/_variables.scss +17 -16
  94. package/scss/forms/_floating-labels.scss +1 -0
  95. package/scss/forms/_input-group.scss +7 -4
  96. package/scss/mixins/_banner.scss +2 -2
  97. package/scss/mixins/_forms.scss +10 -10
  98. package/scss/mixins/_utilities.scss +1 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * Bootstrap (v5.2.0): offcanvas.js
3
+ * Bootstrap (v5.2.1): offcanvas.js
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  * --------------------------------------------------------------------------
6
6
  */
package/js/src/popover.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * Bootstrap (v5.2.0): popover.js
3
+ * Bootstrap (v5.2.1): popover.js
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  * --------------------------------------------------------------------------
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * Bootstrap (v5.2.0): scrollspy.js
3
+ * Bootstrap (v5.2.1): scrollspy.js
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  * --------------------------------------------------------------------------
6
6
  */
@@ -40,14 +40,16 @@ const Default = {
40
40
  offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons
41
41
  rootMargin: '0px 0px -25%',
42
42
  smoothScroll: false,
43
- target: null
43
+ target: null,
44
+ threshold: [0.1, 0.5, 1]
44
45
  }
45
46
 
46
47
  const DefaultType = {
47
48
  offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons
48
49
  rootMargin: 'string',
49
50
  smoothScroll: 'boolean',
50
- target: 'element'
51
+ target: 'element',
52
+ threshold: 'array'
51
53
  }
52
54
 
53
55
  /**
@@ -110,6 +112,13 @@ class ScrollSpy extends BaseComponent {
110
112
  // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case
111
113
  config.target = getElement(config.target) || document.body
112
114
 
115
+ // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only
116
+ config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin
117
+
118
+ if (typeof config.threshold === 'string') {
119
+ config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))
120
+ }
121
+
113
122
  return config
114
123
  }
115
124
 
@@ -141,8 +150,8 @@ class ScrollSpy extends BaseComponent {
141
150
  _getNewObserver() {
142
151
  const options = {
143
152
  root: this._rootElement,
144
- threshold: [0.1, 0.5, 1],
145
- rootMargin: this._getRootMargin()
153
+ threshold: this._config.threshold,
154
+ rootMargin: this._config.rootMargin
146
155
  }
147
156
 
148
157
  return new IntersectionObserver(entries => this._observerCallback(entries), options)
@@ -187,11 +196,6 @@ class ScrollSpy extends BaseComponent {
187
196
  }
188
197
  }
189
198
 
190
- // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only
191
- _getRootMargin() {
192
- return this._config.offset ? `${this._config.offset}px 0px -30%` : this._config.rootMargin
193
- }
194
-
195
199
  _initializeTargetsAndObservables() {
196
200
  this._targetLinks = new Map()
197
201
  this._observableSections = new Map()
package/js/src/tab.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * Bootstrap (v5.2.0): tab.js
3
+ * Bootstrap (v5.2.1): tab.js
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  * --------------------------------------------------------------------------
6
6
  */
package/js/src/toast.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * Bootstrap (v5.2.0): toast.js
3
+ * Bootstrap (v5.2.1): toast.js
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  * --------------------------------------------------------------------------
6
6
  */
package/js/src/tooltip.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * Bootstrap (v5.2.0): tooltip.js
3
+ * Bootstrap (v5.2.1): tooltip.js
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  * --------------------------------------------------------------------------
6
6
  */
@@ -111,7 +111,7 @@ class Tooltip extends BaseComponent {
111
111
  // Private
112
112
  this._isEnabled = true
113
113
  this._timeout = 0
114
- this._isHovered = false
114
+ this._isHovered = null
115
115
  this._activeTrigger = {}
116
116
  this._popper = null
117
117
  this._templateFactory = null
@@ -185,6 +185,10 @@ class Tooltip extends BaseComponent {
185
185
  this.tip.remove()
186
186
  }
187
187
 
188
+ if (this._config.originalTitle) {
189
+ this._element.setAttribute('title', this._config.originalTitle)
190
+ }
191
+
188
192
  this._disposePopper()
189
193
  super.dispose()
190
194
  }
@@ -242,14 +246,13 @@ class Tooltip extends BaseComponent {
242
246
  }
243
247
 
244
248
  const complete = () => {
245
- const previousHoverState = this._isHovered
246
-
247
- this._isHovered = false
248
249
  EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))
249
250
 
250
- if (previousHoverState) {
251
+ if (this._isHovered === false) {
251
252
  this._leave()
252
253
  }
254
+
255
+ this._isHovered = false
253
256
  }
254
257
 
255
258
  this._queueCallback(complete, this.tip, this._isAnimated())
@@ -279,7 +282,7 @@ class Tooltip extends BaseComponent {
279
282
  this._activeTrigger[TRIGGER_CLICK] = false
280
283
  this._activeTrigger[TRIGGER_FOCUS] = false
281
284
  this._activeTrigger[TRIGGER_HOVER] = false
282
- this._isHovered = false
285
+ this._isHovered = null // it is a trick to support manual triggering
283
286
 
284
287
  const complete = () => {
285
288
  if (this._isWithActiveTrigger()) {
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * Bootstrap (v5.2.0): util/backdrop.js
3
+ * Bootstrap (v5.2.1): util/backdrop.js
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  * --------------------------------------------------------------------------
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * Bootstrap (v5.2.0): util/component-functions.js
3
+ * Bootstrap (v5.2.1): util/component-functions.js
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  * --------------------------------------------------------------------------
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * Bootstrap (v5.2.0): util/config.js
3
+ * Bootstrap (v5.2.1): util/config.js
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  * --------------------------------------------------------------------------
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * Bootstrap (v5.2.0): util/focustrap.js
3
+ * Bootstrap (v5.2.1): util/focustrap.js
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  * --------------------------------------------------------------------------
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * Bootstrap (v5.2.0): util/index.js
3
+ * Bootstrap (v5.2.1): util/index.js
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  * --------------------------------------------------------------------------
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * Bootstrap (v5.2.0): util/sanitizer.js
3
+ * Bootstrap (v5.2.1): util/sanitizer.js
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  * --------------------------------------------------------------------------
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * Bootstrap (v5.2.0): util/scrollBar.js
3
+ * Bootstrap (v5.2.1): util/scrollBar.js
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  * --------------------------------------------------------------------------
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * Bootstrap (v5.2.0): util/swipe.js
3
+ * Bootstrap (v5.2.1): util/swipe.js
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  * --------------------------------------------------------------------------
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * Bootstrap (v5.2.0): util/template-factory.js
3
+ * Bootstrap (v5.2.1): util/template-factory.js
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  * --------------------------------------------------------------------------
6
6
  */
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@openeuropa/bcl-bootstrap",
3
3
  "author": "European Commission",
4
4
  "license": "EUPL-1.2",
5
- "version": "0.26.0",
5
+ "version": "0.28.0",
6
6
  "description": "OE - BCL bootstrap 5 sources",
7
7
  "bin": {
8
8
  "plugins-builder": "./bin/build-plugins.js"
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "devDependencies": {
20
20
  "@rollup/plugin-babel": "5.3.1",
21
- "bootstrap": "5.2.0",
21
+ "bootstrap": "5.2.1",
22
22
  "bootstrap-icons": "1.9.1",
23
23
  "copyfiles": "2.4.1",
24
24
  "npm-run-all": "4.1.5",
@@ -41,5 +41,5 @@
41
41
  "design-system",
42
42
  "twig"
43
43
  ],
44
- "gitHead": "94d89cc379780cfce06178959194b3bc1b4c5eda"
44
+ "gitHead": "9ceb916258c8c7331f37bbb7c4380a2121440e12"
45
45
  }
@@ -4,7 +4,7 @@
4
4
 
5
5
  .accordion {
6
6
  // scss-docs-start accordion-css-vars
7
- --#{$prefix}accordion-color: #{color-contrast($accordion-bg)};
7
+ --#{$prefix}accordion-color: #{$accordion-color};
8
8
  --#{$prefix}accordion-bg: #{$accordion-bg};
9
9
  --#{$prefix}accordion-transition: #{$accordion-transition};
10
10
  --#{$prefix}accordion-border-color: #{$accordion-border-color};
@@ -13,7 +13,7 @@
13
13
  --#{$prefix}accordion-inner-border-radius: #{$accordion-inner-border-radius};
14
14
  --#{$prefix}accordion-btn-padding-x: #{$accordion-button-padding-x};
15
15
  --#{$prefix}accordion-btn-padding-y: #{$accordion-button-padding-y};
16
- --#{$prefix}accordion-btn-color: #{$accordion-color};
16
+ --#{$prefix}accordion-btn-color: #{$accordion-button-color};
17
17
  --#{$prefix}accordion-btn-bg: #{$accordion-button-bg};
18
18
  --#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon)};
19
19
  --#{$prefix}accordion-btn-icon-width: #{$accordion-icon-width};
@@ -47,7 +47,7 @@
47
47
  &:not(.collapsed) {
48
48
  color: var(--#{$prefix}accordion-active-color);
49
49
  background-color: var(--#{$prefix}accordion-active-bg);
50
- box-shadow: inset 0 calc(var(--#{$prefix}accordion-border-width) * -1) 0 var(--#{$prefix}accordion-border-color); // stylelint-disable-line function-disallowed-list
50
+ box-shadow: inset 0 calc(-1 * var(--#{$prefix}accordion-border-width)) 0 var(--#{$prefix}accordion-border-color); // stylelint-disable-line function-disallowed-list
51
51
 
52
52
  &::after {
53
53
  background-image: var(--#{$prefix}accordion-btn-active-icon);
@@ -140,7 +140,10 @@
140
140
  &:last-child { border-bottom: 0; }
141
141
 
142
142
  .accordion-button {
143
- @include border-radius(0);
143
+ &,
144
+ &.collapsed {
145
+ @include border-radius(0);
146
+ }
144
147
  }
145
148
  }
146
149
  }
@@ -37,7 +37,7 @@
37
37
  @include border-radius($btn-border-radius);
38
38
 
39
39
  // Prevent double borders when buttons are next to each other
40
- > .btn:not(:first-child),
40
+ > :not(.btn-check:first-child) + .btn,
41
41
  > .btn-group:not(:first-child) {
42
42
  margin-left: -$btn-border-width;
43
43
  }
@@ -15,6 +15,7 @@
15
15
  --#{$prefix}btn-border-width: #{$btn-border-width};
16
16
  --#{$prefix}btn-border-color: transparent;
17
17
  --#{$prefix}btn-border-radius: #{$btn-border-radius};
18
+ --#{$prefix}btn-hover-border-color: transparent;
18
19
  --#{$prefix}btn-box-shadow: #{$btn-box-shadow};
19
20
  --#{$prefix}btn-disabled-opacity: #{$btn-disabled-opacity};
20
21
  --#{$prefix}btn-focus-box-shadow: 0 0 0 #{$btn-focus-width} rgba(var(--#{$prefix}btn-focus-shadow-rgb), .5);
@@ -39,15 +40,15 @@
39
40
  @include box-shadow(var(--#{$prefix}btn-box-shadow));
40
41
  @include transition($btn-transition);
41
42
 
42
- &:hover {
43
+ :not(.btn-check) + &:hover,
44
+ &:first-child:hover {
43
45
  color: var(--#{$prefix}btn-hover-color);
44
46
  text-decoration: if($link-hover-decoration == underline, none, null);
45
47
  background-color: var(--#{$prefix}btn-hover-bg);
46
48
  border-color: var(--#{$prefix}btn-hover-border-color);
47
49
  }
48
50
 
49
- .btn-check:focus + &,
50
- &:focus {
51
+ &:focus-visible {
51
52
  color: var(--#{$prefix}btn-hover-color);
52
53
  @include gradient-bg(var(--#{$prefix}btn-hover-bg));
53
54
  border-color: var(--#{$prefix}btn-hover-border-color);
@@ -60,9 +61,20 @@
60
61
  }
61
62
  }
62
63
 
64
+ .btn-check:focus-visible + & {
65
+ border-color: var(--#{$prefix}btn-hover-border-color);
66
+ outline: 0;
67
+ // Avoid using mixin so we can pass custom focus shadow properly
68
+ @if $enable-shadows {
69
+ box-shadow: var(--#{$prefix}btn-box-shadow), var(--#{$prefix}btn-focus-box-shadow);
70
+ } @else {
71
+ box-shadow: var(--#{$prefix}btn-focus-box-shadow);
72
+ }
73
+ }
74
+
63
75
  .btn-check:checked + &,
64
- .btn-check:active + &,
65
- &:active,
76
+ :not(.btn-check) + &:active,
77
+ &:first-child:active,
66
78
  &.active,
67
79
  &.show {
68
80
  color: var(--#{$prefix}btn-active-color);
@@ -72,7 +84,7 @@
72
84
  border-color: var(--#{$prefix}btn-active-border-color);
73
85
  @include box-shadow(var(--#{$prefix}btn-active-shadow));
74
86
 
75
- &:focus {
87
+ &:focus-visible {
76
88
  // Avoid using mixin so we can pass custom focus shadow properly
77
89
  @if $enable-shadows {
78
90
  box-shadow: var(--#{$prefix}btn-active-shadow), var(--#{$prefix}btn-focus-box-shadow);
@@ -155,13 +167,16 @@
155
167
  --#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix(color-contrast($primary), $primary, 15%))};
156
168
 
157
169
  text-decoration: $link-decoration;
170
+ @if $enable-gradients {
171
+ background-image: none;
172
+ }
158
173
 
159
174
  &:hover,
160
- &:focus {
175
+ &:focus-visible {
161
176
  text-decoration: $link-hover-decoration;
162
177
  }
163
178
 
164
- &:focus {
179
+ &:focus-visible {
165
180
  color: var(--#{$prefix}btn-color);
166
181
  }
167
182
 
@@ -18,6 +18,7 @@
18
18
  // The dropdown menu
19
19
  .dropdown-menu {
20
20
  // scss-docs-start dropdown-css-vars
21
+ --#{$prefix}dropdown-zindex: #{$zindex-dropdown};
21
22
  --#{$prefix}dropdown-min-width: #{$dropdown-min-width};
22
23
  --#{$prefix}dropdown-padding-x: #{$dropdown-padding-x};
23
24
  --#{$prefix}dropdown-padding-y: #{$dropdown-padding-y};
@@ -46,7 +47,7 @@
46
47
  // scss-docs-end dropdown-css-vars
47
48
 
48
49
  position: absolute;
49
- z-index: $zindex-dropdown;
50
+ z-index: var(--#{$prefix}dropdown-zindex);
50
51
  display: none; // none by default, but block on "open" of the menu
51
52
  min-width: var(--#{$prefix}dropdown-min-width);
52
53
  padding: var(--#{$prefix}dropdown-padding-y) var(--#{$prefix}dropdown-padding-x);
@@ -109,7 +109,7 @@
109
109
  // Replace `$search` with `$replace` in `$string`
110
110
  // Used on our SVG icon backgrounds for custom forms.
111
111
  //
112
- // @author Hugo Giraudel
112
+ // @author Kitty Giraudel
113
113
  // @param {String} $string - Initial string
114
114
  // @param {String} $search - Substring to replace
115
115
  // @param {String} $replace ('') - New value
@@ -104,11 +104,12 @@
104
104
  border-color: var(--#{$prefix}list-group-active-border-color);
105
105
  }
106
106
 
107
- & + & {
107
+ // stylelint-disable-next-line scss/selector-no-redundant-nesting-selector
108
+ & + .list-group-item {
108
109
  border-top-width: 0;
109
110
 
110
111
  &.active {
111
- margin-top: calc(var(--#{$prefix}list-group-border-width) * -1); // stylelint-disable-line function-disallowed-list
112
+ margin-top: calc(-1 * var(--#{$prefix}list-group-border-width)); // stylelint-disable-line function-disallowed-list
112
113
  border-top-width: var(--#{$prefix}list-group-border-width);
113
114
  }
114
115
  }
@@ -126,12 +127,12 @@
126
127
  flex-direction: row;
127
128
 
128
129
  > .list-group-item {
129
- &:first-child {
130
+ &:first-child:not(:last-child) {
130
131
  @include border-bottom-start-radius(var(--#{$prefix}list-group-border-radius));
131
132
  @include border-top-end-radius(0);
132
133
  }
133
134
 
134
- &:last-child {
135
+ &:last-child:not(:first-child) {
135
136
  @include border-top-end-radius(var(--#{$prefix}list-group-border-radius));
136
137
  @include border-bottom-start-radius(0);
137
138
  }
@@ -145,7 +146,7 @@
145
146
  border-left-width: 0;
146
147
 
147
148
  &.active {
148
- margin-left: calc(var(--#{$prefix}list-group-border-width) * -1); // stylelint-disable-line function-disallowed-list
149
+ margin-left: calc(-1 * var(--#{$prefix}list-group-border-width)); // stylelint-disable-line function-disallowed-list
149
150
  border-left-width: var(--#{$prefix}list-group-border-width);
150
151
  }
151
152
  }
package/scss/_modal.scss CHANGED
@@ -133,7 +133,7 @@
133
133
 
134
134
  .btn-close {
135
135
  padding: calc(var(--#{$prefix}modal-header-padding-y) * .5) calc(var(--#{$prefix}modal-header-padding-x) * .5);
136
- margin: calc(var(--#{$prefix}modal-header-padding-y) * -.5) calc(var(--#{$prefix}modal-header-padding-x) * -.5) calc(var(--#{$prefix}modal-header-padding-y) * -.5) auto;
136
+ margin: calc(-.5 * var(--#{$prefix}modal-header-padding-y)) calc(-.5 * var(--#{$prefix}modal-header-padding-x)) calc(-.5 * var(--#{$prefix}modal-header-padding-y)) auto;
137
137
  }
138
138
  }
139
139
 
package/scss/_nav.scss CHANGED
@@ -62,7 +62,7 @@
62
62
  border-bottom: var(--#{$prefix}nav-tabs-border-width) solid var(--#{$prefix}nav-tabs-border-color);
63
63
 
64
64
  .nav-link {
65
- margin-bottom: calc(var(--#{$prefix}nav-tabs-border-width) * -1); // stylelint-disable-line function-disallowed-list
65
+ margin-bottom: calc(-1 * var(--#{$prefix}nav-tabs-border-width)); // stylelint-disable-line function-disallowed-list
66
66
  background: none;
67
67
  border: var(--#{$prefix}nav-tabs-border-width) solid transparent;
68
68
  @include border-top-radius(var(--#{$prefix}nav-tabs-border-radius));
@@ -91,7 +91,7 @@
91
91
 
92
92
  .dropdown-menu {
93
93
  // Make dropdown border overlap tab border
94
- margin-top: calc(var(--#{$prefix}nav-tabs-border-width) * -1); // stylelint-disable-line function-disallowed-list
94
+ margin-top: calc(-1 * var(--#{$prefix}nav-tabs-border-width)); // stylelint-disable-line function-disallowed-list
95
95
  // Remove the top rounded corners here since there is a hard edge above the menu
96
96
  @include border-top-radius(0);
97
97
  }
package/scss/_navbar.scss CHANGED
@@ -265,6 +265,7 @@
265
265
  }
266
266
 
267
267
  .navbar-dark {
268
+ // scss-docs-start navbar-dark-css-vars
268
269
  --#{$prefix}navbar-color: #{$navbar-dark-color};
269
270
  --#{$prefix}navbar-hover-color: #{$navbar-dark-hover-color};
270
271
  --#{$prefix}navbar-disabled-color: #{$navbar-dark-disabled-color};
@@ -273,4 +274,5 @@
273
274
  --#{$prefix}navbar-brand-hover-color: #{$navbar-dark-brand-hover-color};
274
275
  --#{$prefix}navbar-toggler-border-color: #{$navbar-dark-toggler-border-color};
275
276
  --#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-dark-toggler-icon-bg)};
277
+ // scss-docs-end navbar-dark-css-vars
276
278
  }
@@ -2,6 +2,7 @@
2
2
 
3
3
  %offcanvas-css-vars {
4
4
  // scss-docs-start offcanvas-css-vars
5
+ --#{$prefix}offcanvas-zindex: #{$zindex-offcanvas};
5
6
  --#{$prefix}offcanvas-width: #{$offcanvas-horizontal-width};
6
7
  --#{$prefix}offcanvas-height: #{$offcanvas-vertical-height};
7
8
  --#{$prefix}offcanvas-padding-x: #{$offcanvas-padding-x};
@@ -31,7 +32,7 @@
31
32
  @include media-breakpoint-down($next) {
32
33
  position: fixed;
33
34
  bottom: 0;
34
- z-index: $zindex-offcanvas;
35
+ z-index: var(--#{$prefix}offcanvas-zindex);
35
36
  display: flex;
36
37
  flex-direction: column;
37
38
  max-width: 100%;
@@ -125,9 +126,9 @@
125
126
 
126
127
  .btn-close {
127
128
  padding: calc(var(--#{$prefix}offcanvas-padding-y) * .5) calc(var(--#{$prefix}offcanvas-padding-x) * .5);
128
- margin-top: calc(var(--#{$prefix}offcanvas-padding-y) * -.5);
129
- margin-right: calc(var(--#{$prefix}offcanvas-padding-x) * -.5);
130
- margin-bottom: calc(var(--#{$prefix}offcanvas-padding-y) * -.5);
129
+ margin-top: calc(-.5 * var(--#{$prefix}offcanvas-padding-y));
130
+ margin-right: calc(-.5 * var(--#{$prefix}offcanvas-padding-x));
131
+ margin-bottom: calc(-.5 * var(--#{$prefix}offcanvas-padding-y));
131
132
  }
132
133
  }
133
134
 
@@ -75,7 +75,7 @@
75
75
  margin-left: $pagination-margin-start;
76
76
  }
77
77
 
78
- @if $pagination-margin-start == (calc($pagination-border-width * -1)) {
78
+ @if $pagination-margin-start == ($pagination-border-width * -1) {
79
79
  &:first-child {
80
80
  .page-link {
81
81
  @include border-start-radius(var(--#{$prefix}pagination-border-radius));
@@ -56,7 +56,7 @@
56
56
 
57
57
  .bs-popover-top {
58
58
  > .popover-arrow {
59
- bottom: calc((var(--#{$prefix}popover-arrow-height) * -1) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
59
+ bottom: calc(-1 * (var(--#{$prefix}popover-arrow-height)) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
60
60
 
61
61
  &::before,
62
62
  &::after {
@@ -78,7 +78,7 @@
78
78
  /* rtl:begin:ignore */
79
79
  .bs-popover-end {
80
80
  > .popover-arrow {
81
- left: calc((var(--#{$prefix}popover-arrow-height) * -1) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
81
+ left: calc(-1 * (var(--#{$prefix}popover-arrow-height)) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
82
82
  width: var(--#{$prefix}popover-arrow-height);
83
83
  height: var(--#{$prefix}popover-arrow-width);
84
84
 
@@ -103,7 +103,7 @@
103
103
 
104
104
  .bs-popover-bottom {
105
105
  > .popover-arrow {
106
- top: calc((var(--#{$prefix}popover-arrow-height) * -1) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
106
+ top: calc(-1 * (var(--#{$prefix}popover-arrow-height)) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
107
107
 
108
108
  &::before,
109
109
  &::after {
@@ -128,7 +128,7 @@
128
128
  left: 50%;
129
129
  display: block;
130
130
  width: var(--#{$prefix}popover-arrow-width);
131
- margin-left: calc(var(--#{$prefix}popover-arrow-width) * -.5); // stylelint-disable-line function-disallowed-list
131
+ margin-left: calc(-.5 * var(--#{$prefix}popover-arrow-width)); // stylelint-disable-line function-disallowed-list
132
132
  content: "";
133
133
  border-bottom: var(--#{$prefix}popover-border-width) solid var(--#{$prefix}popover-header-bg);
134
134
  }
@@ -137,7 +137,7 @@
137
137
  /* rtl:begin:ignore */
138
138
  .bs-popover-start {
139
139
  > .popover-arrow {
140
- right: calc((var(--#{$prefix}popover-arrow-height) * -1) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
140
+ right: calc(-1 * (var(--#{$prefix}popover-arrow-height)) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
141
141
  width: var(--#{$prefix}popover-arrow-height);
142
142
  height: var(--#{$prefix}popover-arrow-width);
143
143
 
package/scss/_toasts.scss CHANGED
@@ -1,5 +1,6 @@
1
1
  .toast {
2
2
  // scss-docs-start toast-css-vars
3
+ --#{$prefix}toast-zindex: #{$zindex-toast};
3
4
  --#{$prefix}toast-padding-x: #{$toast-padding-x};
4
5
  --#{$prefix}toast-padding-y: #{$toast-padding-y};
5
6
  --#{$prefix}toast-spacing: #{$toast-spacing};
@@ -38,7 +39,7 @@
38
39
 
39
40
  .toast-container {
40
41
  position: absolute;
41
- z-index: $zindex-toast;
42
+ z-index: var(--#{$prefix}toast-zindex);
42
43
  width: max-content;
43
44
  max-width: 100%;
44
45
  pointer-events: none;
@@ -59,7 +60,7 @@
59
60
  @include border-top-radius(calc(var(--#{$prefix}toast-border-radius) - var(--#{$prefix}toast-border-width)));
60
61
 
61
62
  .btn-close {
62
- margin-right: calc(var(--#{$prefix}toast-padding-x) * -.5); // stylelint-disable-line function-disallowed-list
63
+ margin-right: calc(-.5 * var(--#{$prefix}toast-padding-x)); // stylelint-disable-line function-disallowed-list
63
64
  margin-left: var(--#{$prefix}toast-padding-x);
64
65
  }
65
66
  }