Skip to content

Commit 0bbf362

Browse files
committed
fix(VSlider): respect disabled and readonly from form
fixes #22054
1 parent edb8532 commit 0bbf362

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ export const VSlider = genericComponent<VSliderSlots>()({
7676
trackContainerRef,
7777
position,
7878
hasLabels,
79+
disabled,
7980
readonly,
8081
noKeyboard,
8182
} = useSlider({
@@ -145,8 +146,8 @@ export const VSlider = genericComponent<VSliderSlots>()({
145146
<input
146147
id={ id.value }
147148
name={ props.name || id.value }
148-
disabled={ !!props.disabled }
149-
readonly={ !!props.readonly }
149+
disabled={ !!disabled.value }
150+
readonly={ !!readonly.value }
150151
tabindex="-1"
151152
value={ model.value }
152153
/>

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/* eslint-disable max-statements */
22
// Composables
33
import { makeElevationProps } from '@/composables/elevation'
4+
import { useForm } from '@/composables/form'
45
import { useRtl } from '@/composables/locale'
56
import { makeRoundedProps } from '@/composables/rounded'
67

@@ -189,6 +190,7 @@ export const useSlider = ({
189190
onSliderMove: (data: SliderData) => void
190191
getActiveThumb: (e: MouseEvent | TouchEvent) => HTMLElement
191192
}) => {
193+
const form = useForm(props)
192194
const { isRtl } = useRtl()
193195
const isReversed = toRef(() => props.reverse)
194196
const vertical = computed(() => props.direction === 'vertical')
@@ -200,12 +202,11 @@ export const useSlider = ({
200202
const tickSize = computed(() => parseInt(props.tickSize, 10))
201203
const trackSize = computed(() => parseInt(props.trackSize, 10))
202204
const numTicks = computed(() => (max.value - min.value) / step.value)
203-
const disabled = toRef(() => props.disabled)
204205

205-
const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color)
206-
const thumbLabelColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor)
207-
const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color)
208-
const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color)
206+
const thumbColor = computed(() => props.error || form.isDisabled.value ? undefined : props.thumbColor ?? props.color)
207+
const thumbLabelColor = computed(() => props.error || form.isDisabled.value ? undefined : props.thumbColor)
208+
const trackColor = computed(() => props.error || form.isDisabled.value ? undefined : props.trackColor ?? props.color)
209+
const trackFillColor = computed(() => props.error || form.isDisabled.value ? undefined : props.trackFillColor ?? props.color)
209210

210211
const mousePressed = shallowRef(false)
211212

@@ -346,7 +347,7 @@ export const useSlider = ({
346347
activeThumbRef,
347348
color: toRef(() => props.color),
348349
decimals,
349-
disabled,
350+
disabled: form.isDisabled,
350351
direction: toRef(() => props.direction),
351352
elevation: toRef(() => props.elevation),
352353
hasLabels,
@@ -362,7 +363,7 @@ export const useSlider = ({
362363
parsedTicks,
363364
parseMouseMove,
364365
position,
365-
readonly: toRef(() => props.readonly),
366+
readonly: form.isReadonly,
366367
rounded: toRef(() => props.rounded),
367368
roundValue,
368369
showTicks,

0 commit comments

Comments
 (0)