Skip to content

Commit b207522

Browse files
authored
fix(VSlider): correctly apply thumb-color (#21833)
fixes #21832
1 parent 5423fbf commit b207522

File tree

3 files changed

+19
-19
lines changed

3 files changed

+19
-19
lines changed

packages/vuetify/src/components/VSlider/VSliderThumb.sass

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
background: rgba(var(--v-theme-surface-variant), .7)
1919
color: rgb(var(--v-theme-on-surface-variant))
2020

21-
&::before
22-
color: rgba(var(--v-theme-surface-variant), .7)
21+
> .v-slider-thumb__label-wedge
22+
background: inherit
2323

2424
// Block
2525
.v-slider-thumb
@@ -78,10 +78,9 @@
7878
user-select: none
7979
transition: $slider-thumb-label-transition
8080

81-
&::before
82-
content: ''
83-
width: 0
84-
height: 0
81+
> .v-slider-thumb__label-wedge
82+
width: $slider-thumb-label-wedge-size * 2
83+
height: $slider-thumb-label-wedge-size * 2
8584
position: absolute
8685

8786
.v-slider-thumb__ripple
@@ -111,10 +110,8 @@
111110
@include tools.rtl()
112111
transform: translateX(50%)
113112

114-
&::before
115-
border-left: $slider-thumb-label-wedge-size solid transparent
116-
border-right: $slider-thumb-label-wedge-size solid transparent
117-
border-top: $slider-thumb-label-wedge-size solid currentColor
113+
> .v-slider-thumb__label-wedge
114+
clip-path: polygon(50% 100%, 0 50%, 100% 50%)
118115
bottom: -$slider-thumb-label-wedge-size
119116

120117
// Vertical
@@ -130,10 +127,8 @@
130127
top: math.div($slider-thumb-label-height, -2)
131128
left: $slider-thumb-label-offset
132129

133-
&::before
134-
border-right: $slider-thumb-label-wedge-size solid currentColor
135-
border-top: $slider-thumb-label-wedge-size solid transparent
136-
border-bottom: $slider-thumb-label-wedge-size solid transparent
130+
> .v-slider-thumb__label-wedge
131+
clip-path: polygon(0 50%, 50% 0, 50% 100%)
137132
left: -$slider-thumb-label-wedge-size
138133

139134
// Modifiers

packages/vuetify/src/components/VSlider/VSliderThumb.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { VSliderSymbol } from './slider'
66
import { VScaleTransition } from '../transitions'
77

88
// Composables
9-
import { useTextColor } from '@/composables/color'
9+
import { useBackgroundColor, useTextColor } from '@/composables/color'
1010
import { makeComponentProps } from '@/composables/component'
1111
import { useElevation } from '@/composables/elevation'
1212
import { useRtl } from '@/composables/locale'
@@ -74,6 +74,7 @@ export const VSliderThumb = genericComponent<VSliderThumbSlots>()({
7474
min,
7575
max,
7676
thumbColor,
77+
thumbLabelColor,
7778
step,
7879
disabled,
7980
thumbSize,
@@ -91,6 +92,7 @@ export const VSliderThumb = genericComponent<VSliderThumbSlots>()({
9192
const elevationProps = computed(() => !disabled.value ? elevation.value : undefined)
9293
const { elevationClasses } = useElevation(elevationProps)
9394
const { textColorClasses, textColorStyles } = useTextColor(thumbColor)
95+
const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(thumbLabelColor)
9496

9597
const { pageup, pagedown, end, home, left, right, down, up } = keyValues
9698
const relevantKeys = [pageup, pagedown, end, home, left, right, down, up]
@@ -175,9 +177,7 @@ export const VSliderThumb = genericComponent<VSliderThumbSlots>()({
175177
textColorClasses.value,
176178
elevationClasses.value,
177179
]}
178-
style={{
179-
...textColorStyles.value,
180-
}}
180+
style={ textColorStyles.value }
181181
/>
182182
<div
183183
class={[
@@ -195,12 +195,14 @@ export const VSliderThumb = genericComponent<VSliderThumbSlots>()({
195195
<div
196196
class={[
197197
'v-slider-thumb__label',
198-
textColorClasses.value,
198+
backgroundColorClasses.value,
199199
]}
200+
style={ backgroundColorStyles.value }
200201
>
201202
<div>
202203
{ slots['thumb-label']?.({ modelValue: props.modelValue }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1) }
203204
</div>
205+
<div class="v-slider-thumb__label-wedge" />
204206
</div>
205207
</div>
206208
</VScaleTransition>

packages/vuetify/src/components/VSlider/slider.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ type SliderProvide = {
4343
step: Ref<number>
4444
thumbSize: Ref<number>
4545
thumbColor: Ref<string | undefined>
46+
thumbLabelColor: Ref<string | undefined>
4647
trackColor: Ref<string | undefined>
4748
trackFillColor: Ref<string | undefined>
4849
trackSize: Ref<number>
@@ -202,6 +203,7 @@ export const useSlider = ({
202203
const disabled = toRef(() => props.disabled)
203204

204205
const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color)
206+
const thumbLabelColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor)
205207
const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color)
206208
const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color)
207209

@@ -368,6 +370,7 @@ export const useSlider = ({
368370
step,
369371
thumbSize,
370372
thumbColor,
373+
thumbLabelColor,
371374
thumbLabel: toRef(() => props.thumbLabel),
372375
ticks: toRef(() => props.ticks),
373376
tickSize,

0 commit comments

Comments
 (0)