File tree Expand file tree Collapse file tree 5 files changed +88
-2
lines changed
docs/src/pages/components
packages/material-ui/src/Slider Expand file tree Collapse file tree 5 files changed +88
-2
lines changed Original file line number Diff line number Diff line change 1+ import React from 'react' ;
2+ import Typography from '@material-ui/core/Typography' ;
3+ import Slider from '@material-ui/core/Slider' ;
4+
5+ function valueLabelFormat ( value ) {
6+ const [ coefficient , exponent ] = value
7+ . toExponential ( )
8+ . split ( 'e' )
9+ . map ( item => Number ( item ) ) ;
10+ return `${ Math . round ( coefficient ) } e^${ exponent } ` ;
11+ }
12+
13+ export default function NonLinearSlider ( ) {
14+ const [ value , setValue ] = React . useState ( 1 ) ;
15+
16+ const handleChange = ( event , newValue ) => {
17+ setValue ( newValue ) ;
18+ } ;
19+
20+ return (
21+ < div >
22+ < Typography id = "non-linear-slider" gutterBottom >
23+ Temperature range
24+ </ Typography >
25+ < Slider
26+ value = { value }
27+ min = { 0 }
28+ step = { 0.1 }
29+ max = { 6 }
30+ scale = { x => x ** 10 }
31+ getAriaValueText = { valueLabelFormat }
32+ valueLabelFormat = { valueLabelFormat }
33+ onChange = { handleChange }
34+ valueLabelDisplay = "auto"
35+ aria-labelledby = "non-linear-slider"
36+ />
37+ </ div >
38+ ) ;
39+ }
Original file line number Diff line number Diff line change 1+ import React from 'react' ;
2+ import Typography from '@material-ui/core/Typography' ;
3+ import Slider from '@material-ui/core/Slider' ;
4+
5+ function valueLabelFormat ( value : number ) {
6+ const [ coefficient , exponent ] = value
7+ . toExponential ( )
8+ . split ( 'e' )
9+ . map ( item => Number ( item ) ) ;
10+ return `${ Math . round ( coefficient ) } e^${ exponent } ` ;
11+ }
12+
13+ export default function NonLinearSlider ( ) {
14+ const [ value , setValue ] = React . useState < number | number [ ] > ( 1 ) ;
15+
16+ const handleChange = ( event : any , newValue : number | number [ ] ) => {
17+ setValue ( newValue ) ;
18+ } ;
19+
20+ return (
21+ < div >
22+ < Typography id = "non-linear-slider" gutterBottom >
23+ Temperature range
24+ </ Typography >
25+ < Slider
26+ value = { value }
27+ min = { 0 }
28+ step = { 0.1 }
29+ max = { 6 }
30+ scale = { x => x ** 10 }
31+ getAriaValueText = { valueLabelFormat }
32+ valueLabelFormat = { valueLabelFormat }
33+ onChange = { handleChange }
34+ valueLabelDisplay = "auto"
35+ aria-labelledby = "non-linear-slider"
36+ />
37+ </ div >
38+ ) ;
39+ }
Original file line number Diff line number Diff line change @@ -64,6 +64,13 @@ The track can be inverted with `track="inverted"`.
6464
6565{{"demo": "pages/components/slider/TrackInvertedSlider.js"}}
6666
67+ ## Non-linear scale
68+
69+ You can use the ` scale ` prop to represent the ` value ` in a different scale.
70+ For instance, in the following demo, the value * x* represents the power of * 10^x* .
71+
72+ {{"demo": "pages/components/slider/NonLinearSlider.js"}}
73+
6774## Accessibility
6875
6976(WAI-ARIA: https://www.w3.org/TR/wai-aria-practices/#slider )
Original file line number Diff line number Diff line change @@ -50,13 +50,13 @@ determine when all steps are completed (or even if they need to be completed).
5050
5151{{"demo": "pages/components/steppers/HorizontalNonLinearStepper.js", "bg": true}}
5252
53- ### Non Linear - Alternative Label
53+ ### Non-linear - Alternative Label
5454
5555Labels can be placed below the step icon by setting the ` alternativeLabel ` prop on the ` Stepper ` component.
5656
5757{{"demo": "pages/components/steppers/HorizontalNonLinearAlternativeLabelStepper.js", "bg": true}}
5858
59- ### Non Linear - Error Step
59+ ### Non-kinear - Error Step
6060
6161{{"demo": "pages/components/steppers/HorizontalNonLinearStepperWithError.js", "bg": true}}
6262
Original file line number Diff line number Diff line change @@ -35,6 +35,7 @@ export interface SliderProps
3535 onChangeCommitted ?: ( event : React . ChangeEvent < { } > , value : number | number [ ] ) => void ;
3636 orientation ?: 'horizontal' | 'vertical' ;
3737 step ?: number | null ;
38+ scale ?: ( value : number ) => number ;
3839 ThumbComponent ?: React . ElementType < React . HTMLAttributes < HTMLSpanElement > > ;
3940 track ?: 'normal' | false | 'inverted' ;
4041 value ?: number | number [ ] ;
You can’t perform that action at this time.
0 commit comments