From 2747d5603cbbac9e8e04df4b7e5aa24552c3f182 Mon Sep 17 00:00:00 2001 From: Zeeshan Tamboli Date: Tue, 21 Feb 2023 19:36:45 +0530 Subject: [PATCH] [Slider] Miscellaneous improvements (#35941) --- packages/mui-joy/src/Slider/Slider.tsx | 5 +- packages/mui-material/src/Slider/Slider.js | 83 +++++++++++----------- 2 files changed, 41 insertions(+), 47 deletions(-) diff --git a/packages/mui-joy/src/Slider/Slider.tsx b/packages/mui-joy/src/Slider/Slider.tsx index e576c99d6f663e..bdbb4936940a3c 100644 --- a/packages/mui-joy/src/Slider/Slider.tsx +++ b/packages/mui-joy/src/Slider/Slider.tsx @@ -6,7 +6,7 @@ import { unstable_capitalize as capitalize, } from '@mui/utils'; import { OverridableComponent } from '@mui/types'; -import useSlider from '@mui/base/useSlider'; +import useSlider, { valueToPercent } from '@mui/base/useSlider'; import { isHostComponent } from '@mui/base/utils'; import { useThemeProps, styled, Theme } from '../styles'; import { useColorInversion } from '../styles/ColorInversion'; @@ -14,9 +14,6 @@ import useSlot from '../utils/useSlot'; import sliderClasses, { getSliderUtilityClass } from './sliderClasses'; import { SliderTypeMap, SliderOwnerState } from './SliderProps'; -const valueToPercent = (value: number, min: number, max: number) => - ((value - min) * 100) / (max - min); - function Identity(x: any) { return x; } diff --git a/packages/mui-material/src/Slider/Slider.js b/packages/mui-material/src/Slider/Slider.js index 258354b3a7f285..8d4c869a9a320a 100644 --- a/packages/mui-material/src/Slider/Slider.js +++ b/packages/mui-material/src/Slider/Slider.js @@ -7,7 +7,7 @@ import { useSlotProps, unstable_composeClasses as composeClasses, } from '@mui/base'; -import useSlider from '@mui/base/useSlider'; +import useSlider, { valueToPercent } from '@mui/base/useSlider'; import { alpha, lighten, darken } from '@mui/system'; import useThemeProps from '../styles/useThemeProps'; import styled, { slotShouldForwardProp } from '../styles/styled'; @@ -17,8 +17,6 @@ import capitalize from '../utils/capitalize'; import SliderValueLabel from './SliderValueLabel'; import sliderClasses, { getSliderUtilityClass } from './sliderClasses'; -const valueToPercent = (value, min, max) => ((value - min) * 100) / (max - min); - function Identity(x) { return x; } @@ -739,49 +737,48 @@ const Slider = React.forwardRef(function Slider(inputProps, ref) { const ValueLabelComponent = valueLabelDisplay === 'off' ? Forward : ValueLabelSlot; return ( - - {/* TODO v6: Change component structure. It will help in avoiding the complicated React.cloneElement API added in SliderValueLabel component. Should be: Thumb -> Input, ValueLabel. Follow Joy UI's Slider structure. */} - Input, ValueLabel. Follow Joy UI's Slider structure. */ + + - - - - - + aria-label={getAriaLabel ? getAriaLabel(index) : ariaLabel} + aria-valuenow={scale(value)} + aria-labelledby={ariaLabelledby} + aria-valuetext={ + getAriaValueText ? getAriaValueText(scale(value), index) : ariaValuetext + } + value={values[index]} + {...inputSliderProps} + /> + + ); })}