Slider component with multiple bars for React.
yarn add react-multi-bar-slider or npm install --save react-multi-bar-slider
See the demo repo.
import MultiSlider, { Progress } from 'react-multi-bar-slider';
export default class App extends Component {
  state = {
    progress: 10
  };
  handleSlide = newProgress => this.setState({ progress: newProgress });
  render() {
    return (
      <MultiSlider onSlide={this.handleSlide}>
        <Progress color="green" progress={this.state.progress} />
        <Progress color="purple" progress={45} />
      </MultiSlider>
    );
  }
}import MultiSlider, { Progress, Dot } from 'react-multi-bar-slider';
export default class App extends Component {
  state = {
    progress: 10
  };
  handleSlide = newProgress => this.setState({ progress: newProgress });
  render() {
    return (
      <MultiSlider
        width={600}
        height={20}
        slidableZoneSize={40}
        backgroundColor="bisque"
        equalColor="blue"
        style={{ marginBottom: 40 }}
        onSlide={this.handleSlide}
        onDragStart={progress => console.log(`Started dragging: ${progress}%`)}
        onDragStop={progress => console.log(`Stopped dragging: ${progress}%`)}
        roundedCorners
        reversed
      />
        <Progress color="green" progress={this.state.progress}>
          <Dot color="grey" />
        </Progress>
        <Progress color="purple" progress={45}>
          <Dot color="grey" />
        </Progress>
      </MultiSlider>
    );
  }
}* = Required
| Prop | Description | Type | Default | 
|---|---|---|---|
width | 
Width of the slider | number or string | 
100% | 
height | 
Height of the slider | number or string | 
14px | 
slidableZoneSize | 
Size of the zone in which sliders can be dragged | number or string | 
7px, | 
backgroundColor | 
Background color of the slider | string | 
#EEEEEE | 
equalColor | 
Color of all bars when their values are equal | string | 
|
style | 
Custom style for the slider  Signature: function(props: object) => object | 
object or function | 
{} | 
onSlide | 
Callback that is fired when the progress was set  Signature: function(progress: number) => void | 
function | 
|
onDragStart | 
Callback function that is fired when the slider has begun to move  Signature: function(progress: number) => void | 
function | 
|
onDragStop | 
Callback function that is fired when the slide has stopped moving  Signature: function(progress: number) => void | 
function | 
|
roundedCorners | 
When set to true, the slider has rounded corners | 
bool | 
false | 
reversed | 
When set to true, the slider is reversed | 
bool | 
false | 
readOnly | 
When set to true, the slider can't be updated | 
bool | 
false | 
children* | 
The progress bars that are shown in the slider (or any other children) | node | 
All other props (not documented here) will be passed on to the root element.
| Prop | Description | Type | Default | 
|---|---|---|---|
color* | 
Color of the progress bar | string | 
|
progress* | 
Progress of the progress bar | number | 
|
style | 
Custom style for the progress bar  Signature: function(props: object) => object | 
object or function | 
|
children | 
The slider dot (or any other children) | node | 
All other props (not documented here) will be passed on to the root element.
| Prop | Description | Type | Default | 
|---|---|---|---|
width | 
Width of the dot | number or string | 
50 when the dot has an icon, 28 if not | 
height | 
Height of the dot | number or string | 
50 when the dot has an icon, 28 if not | 
color | 
Color of the dot | string | 
|
icon | 
URL of the image to use as dot icon | string | 
|
style | 
Custom style for the dot  Signature: function(props: object) => object | 
object or function | 
|
iconStyle | 
Custom style for the dot icon  Signature: function(props: object) => object | 
object or function | 
|
children | 
Children of the dot | node | 
All other props (not documented here) will be passed on to the root element.
When a function is passed to a style prop rather than an object, it is expected to return an object.
The style function will be called with all props that that component has (except for the style and children props and any internal callbacks). The return value of the function will be used as style (see the demo repo for an example).
