Skip to content

Commit ac58df1

Browse files
[Slider] Major upgrade
1 parent 4fccafb commit ac58df1

40 files changed

+1616
-1444
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import React from 'react';
2+
import { makeStyles } from '@material-ui/core/styles';
3+
import Grid from '@material-ui/core/Grid';
4+
import Typography from '@material-ui/core/Typography';
5+
import Slider from '@material-ui/lab/Slider';
6+
import VolumeDown from '@material-ui/icons/VolumeDown';
7+
import VolumeUp from '@material-ui/icons/VolumeUp';
8+
9+
const useStyles = makeStyles({
10+
root: {
11+
width: 200,
12+
},
13+
});
14+
15+
export default function ContinuousSlider() {
16+
const classes = useStyles();
17+
18+
return (
19+
<div className={classes.root}>
20+
<Typography id="continuous-slider" gutterBottom>
21+
Volume
22+
</Typography>
23+
<Grid container spacing={2}>
24+
<Grid item>
25+
<VolumeDown />
26+
</Grid>
27+
<Grid item xs>
28+
<Slider defaultValue={30} thumbLabelDisplay="off" aria-labelledby="continuous-slider" />
29+
</Grid>
30+
<Grid item>
31+
<VolumeUp />
32+
</Grid>
33+
</Grid>
34+
<Slider disabled defaultValue={30} aria-labelledby="continuous-slider" />
35+
</div>
36+
);
37+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import React from 'react';
2+
import { makeStyles } from '@material-ui/core/styles';
3+
import Grid from '@material-ui/core/Grid';
4+
import Typography from '@material-ui/core/Typography';
5+
import Slider from '@material-ui/lab/Slider';
6+
import VolumeDown from '@material-ui/icons/VolumeDown';
7+
import VolumeUp from '@material-ui/icons/VolumeUp';
8+
9+
const useStyles = makeStyles({
10+
root: {
11+
width: 200,
12+
},
13+
});
14+
15+
export default function ContinuousSlider() {
16+
const classes = useStyles();
17+
18+
return (
19+
<div className={classes.root}>
20+
<Typography id="continuous-slider" gutterBottom>
21+
Volume
22+
</Typography>
23+
<Grid container spacing={2}>
24+
<Grid item>
25+
<VolumeDown />
26+
</Grid>
27+
<Grid item xs>
28+
<Slider defaultValue={30} thumbLabelDisplay="off" aria-labelledby="continuous-slider" />
29+
</Grid>
30+
<Grid item>
31+
<VolumeUp />
32+
</Grid>
33+
</Grid>
34+
<Slider disabled defaultValue={30} aria-labelledby="continuous-slider" />
35+
</div>
36+
);
37+
}

docs/src/pages/components/slider/CustomIconSlider.js

-72
This file was deleted.

docs/src/pages/components/slider/CustomValueReducerSlider.js

-77
This file was deleted.

docs/src/pages/components/slider/CustomizedSlider.js

+48-19
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import React from 'react';
2+
import PropTypes from 'prop-types';
23
import { withStyles, makeStyles } from '@material-ui/core/styles';
34
import Paper from '@material-ui/core/Paper';
45
import Slider from '@material-ui/lab/Slider';
56
import { fade } from '@material-ui/core/styles/colorManipulator';
7+
import Tooltip from '@material-ui/core/Tooltip';
68

79
const useStyles = makeStyles({
810
root: {
@@ -11,45 +13,72 @@ const useStyles = makeStyles({
1113
},
1214
});
1315

16+
function ThumbLabelComponent(props) {
17+
const { children, value } = props;
18+
19+
const popperRef = React.useRef(null);
20+
React.useEffect(() => {
21+
if (popperRef.current) {
22+
popperRef.current.update();
23+
}
24+
});
25+
26+
return (
27+
<Tooltip
28+
PopperProps={{
29+
popperRef,
30+
}}
31+
enterTouchDelay={0}
32+
placement="top"
33+
title={value}
34+
>
35+
{children}
36+
</Tooltip>
37+
);
38+
}
39+
40+
ThumbLabelComponent.propTypes = {
41+
children: PropTypes.element.isRequired,
42+
value: PropTypes.number.isRequired,
43+
};
44+
1445
const StyledSlider = withStyles({
46+
root: {
47+
color: '#de235b',
48+
height: 8,
49+
},
1550
thumb: {
1651
height: 24,
1752
width: 24,
1853
backgroundColor: '#fff',
1954
border: '2px solid #de235b',
20-
'&$focused, &:hover': {
21-
boxShadow: `0px 0px 0px ${8}px ${fade('#de235b', 0.16)}`,
22-
},
23-
'&$activated': {
24-
boxShadow: `0px 0px 0px ${8 * 1.5}px ${fade('#de235b', 0.16)}`,
55+
marginTop: -8,
56+
marginLeft: -12,
57+
'&:focus,&:hover': {
58+
boxShadow: `0px 0px 0px 8px ${fade('#de235b', 0.16)}`,
2559
},
26-
'&$jumped': {
27-
boxShadow: `0px 0px 0px ${8 * 1.5}px ${fade('#de235b', 0.16)}`,
60+
'&:active:focus': {
61+
boxShadow: `0px 0px 0px 14px ${fade('#de235b', 0.16)}`,
2862
},
2963
},
64+
thumbLabel: {
65+
left: 'calc(-50% + 4px)',
66+
},
3067
track: {
31-
backgroundColor: '#de235b',
3268
height: 8,
3369
},
34-
trackAfter: {
35-
backgroundColor: '#d0d7dc',
70+
rail: {
71+
height: 8,
3672
},
37-
focused: {},
38-
activated: {},
39-
jumped: {},
4073
})(Slider);
4174

4275
function CustomizedSlider() {
4376
const classes = useStyles();
44-
const [value, setValue] = React.useState(50);
45-
46-
const handleChange = (event, newValue) => {
47-
setValue(newValue);
48-
};
4977

5078
return (
5179
<Paper className={classes.root}>
52-
<StyledSlider value={value} aria-labelledby="label" onChange={handleChange} />
80+
<StyledSlider aria-label="Random" defaultValue={20} />
81+
<Slider ThumbLabelComponent={ThumbLabelComponent} aria-label="Random" defaultValue={20} />
5382
</Paper>
5483
);
5584
}

0 commit comments

Comments
 (0)