Skip to content

Commit f459539

Browse files
authored
[Slider][material-next] Add Slider component with Material You design (#37520)
1 parent b019b36 commit f459539

21 files changed

+3102
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import * as React from 'react';
2+
import MaterialYouUsageDemo from 'docs/src/modules/components/MaterialYouUsageDemo';
3+
import Slider from '@mui/material-next/Slider';
4+
import Box from '@mui/material/Box';
5+
6+
export default function ButtonUsage() {
7+
return (
8+
<MaterialYouUsageDemo
9+
componentName="Slider"
10+
data={[
11+
{
12+
propName: 'min',
13+
defaultValue: 0,
14+
},
15+
{
16+
propName: 'max',
17+
defaultValue: 10,
18+
},
19+
{
20+
propName: 'valueLabelDisplay',
21+
knob: 'select',
22+
options: ['auto', 'on', 'off'],
23+
defaultValue: 'off',
24+
},
25+
{
26+
propName: 'size',
27+
knob: 'select',
28+
options: ['small', 'medium'],
29+
defaultValue: 'medium',
30+
},
31+
{
32+
propName: 'marks',
33+
knob: 'switch',
34+
defaultValue: false,
35+
},
36+
{
37+
propName: 'disabled',
38+
knob: 'switch',
39+
defaultValue: false,
40+
},
41+
]}
42+
renderDemo={(props) => (
43+
<Box sx={{ width: 300 }}>
44+
<Slider {...props}>Hello world</Slider>
45+
</Box>
46+
)}
47+
/>
48+
);
49+
}

docs/data/material/components/slider/slider.md

+13
Original file line numberDiff line numberDiff line change
@@ -158,3 +158,16 @@ You can solve the issue with:
158158
left: calc(-50% - 4px);
159159
}
160160
```
161+
162+
## Experimental API
163+
164+
### Material You version
165+
166+
The default Slider component follows the Material Design 2 specs.
167+
For the Material Design 3 ([Material You](https://m3.material.io/)) version, you can use the new experimental `@mui/material-next` package:
168+
169+
```js
170+
import Slider from '@mui/material-next/Slider';
171+
```
172+
173+
{{"demo": "SliderMaterialYouPlayground.js", "hideToolbar": true}}

docs/pages/experiments/md3/index.tsx

+3
Original file line numberDiff line numberDiff line change
@@ -280,14 +280,17 @@ const customPalette = {
280280
neutral: {
281281
'0': '#000000',
282282
'10': '#201a1c',
283+
'17': '#2e282a',
283284
'20': '#352f30',
285+
'22': '#393335',
284286
'30': '#4c4546',
285287
'40': '#645c5e',
286288
'50': '#7e7577',
287289
'60': '#988e90',
288290
'70': '#b3a9aa',
289291
'80': '#cfc4c5',
290292
'90': '#ebe0e1',
293+
'92': '#f1e5e6',
291294
'95': '#faeef0',
292295
'99': '#fffbff',
293296
'100': '#ffffff',
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import * as React from 'react';
2+
import Slider from '@mui/material-next/Slider';
3+
import { SliderOwnerState } from './Slider.types';
4+
5+
function testOnChange() {
6+
function handleSliderChange(event: Event, value: unknown) {}
7+
function handleSliderChangeCommitted(event: React.SyntheticEvent | Event, value: unknown) {}
8+
<Slider onChange={handleSliderChange} onChangeCommitted={handleSliderChangeCommitted} />;
9+
10+
function handleElementChange(event: React.ChangeEvent) {}
11+
<Slider onChange={handleElementChange} onChangeCommitted={handleElementChange} />;
12+
}
13+
14+
<Slider track="inverted" />;
15+
16+
// slotProps as object
17+
<Slider
18+
slotProps={{
19+
root: { onMouseDown: () => 'onMouseDown event triggered' },
20+
input: { disabled: true },
21+
mark: { onClick: () => 'clicked' },
22+
markLabel: { className: 'markLabel' },
23+
rail: { className: 'rail' },
24+
thumb: { className: 'thumb' },
25+
valueLabel: { valueLabelDisplay: 'auto' },
26+
}}
27+
/>;
28+
29+
// slotProps as function
30+
<Slider
31+
slotProps={{
32+
root: ({ color }: SliderOwnerState) => ({
33+
className: color === 'primary' ? 'root_primary' : 'root_secondary',
34+
}),
35+
input: ({ size }: SliderOwnerState) => ({ disabled: size === 'medium' }),
36+
mark: ({ marked }: SliderOwnerState) => ({
37+
className: marked ? 'marked' : '',
38+
}),
39+
markLabel: ({ max }: SliderOwnerState) => ({
40+
className: max === 99 ? 'red' : 'normal',
41+
}),
42+
rail: ({ dragging }: SliderOwnerState) => ({
43+
className: dragging ? 'rail' : '',
44+
}),
45+
thumb: ({ orientation }: SliderOwnerState) => ({
46+
className: orientation === 'vertical' ? 'thumb_vertical' : '',
47+
}),
48+
}}
49+
/>;

0 commit comments

Comments
 (0)