import React from 'react'; import { withStyles, makeStyles, Theme, createStyles } from '@material-ui/core/styles'; import Slider from '@material-ui/core/Slider'; import Typography from '@material-ui/core/Typography'; import Tooltip from '@material-ui/core/Tooltip'; const useStyles = makeStyles((theme: Theme) => createStyles({ root: { width: 300 + theme.spacing(3) * 2, }, margin: { height: theme.spacing(3), }, }), ); interface Props { children: React.ReactElement; open: boolean; value: number; } function ValueLabelComponent(props: Props) { const { children, open, value } = props; return ( {children} ); } const iOSBoxShadow = '0 3px 1px rgba(0,0,0,0.1),0 4px 8px rgba(0,0,0,0.13),0 0 0 1px rgba(0,0,0,0.02)'; const marks = [ { value: 0, }, { value: 20, }, { value: 37, }, { value: 100, }, ]; const IOSSlider = withStyles({ root: { color: '#3880ff', height: 2, padding: '15px 0', }, thumb: { height: 28, width: 28, backgroundColor: '#fff', boxShadow: iOSBoxShadow, marginTop: -14, marginLeft: -14, '&:focus, &:hover, &$active': { boxShadow: '0 3px 1px rgba(0,0,0,0.1),0 4px 8px rgba(0,0,0,0.3),0 0 0 1px rgba(0,0,0,0.02)', // Reset on touch devices, it doesn't add specificity '@media (hover: none)': { boxShadow: iOSBoxShadow, }, }, }, active: {}, valueLabel: { left: 'calc(-50% + 12px)', top: -22, '& *': { background: 'transparent', color: '#000', }, }, track: { height: 2, }, rail: { height: 2, opacity: 0.5, backgroundColor: '#bfbfbf', }, mark: { backgroundColor: '#bfbfbf', height: 8, width: 1, marginTop: -3, }, markActive: { opacity: 1, backgroundColor: 'currentColor', }, })(Slider); const PrettoSlider = withStyles({ root: { color: '#52af77', height: 8, }, thumb: { height: 24, width: 24, backgroundColor: '#fff', border: '2px solid currentColor', marginTop: -8, marginLeft: -12, '&:focus, &:hover, &$active': { boxShadow: 'inherit', }, }, active: {}, valueLabel: { left: 'calc(-50% + 4px)', }, track: { height: 8, borderRadius: 4, }, rail: { height: 8, borderRadius: 4, }, })(Slider); const AirbnbSlider = withStyles({ root: { color: '#3a8589', height: 3, padding: '13px 0', }, thumb: { height: 27, width: 27, backgroundColor: '#fff', border: '1px solid currentColor', marginTop: -12, marginLeft: -13, boxShadow: '#ebebeb 0 2px 2px', '&:focus, &:hover, &$active': { boxShadow: '#ccc 0 2px 3px 1px', }, '& .bar': { // display: inline-block !important; height: 9, width: 1, backgroundColor: 'currentColor', marginLeft: 1, marginRight: 1, }, }, active: {}, track: { height: 3, }, rail: { color: '#d8d8d8', opacity: 1, height: 3, }, })(Slider); function AirbnbThumbComponent(props: any) { return ( ); } export default function CustomizedSlider() { const classes = useStyles(); return (
iOS
pretto.fr
Tooltip value label
Airbnb (index === 0 ? 'Minimum price' : 'Maximum price')} defaultValue={[20, 40]} />
); }