react-slider-kit
react-slider-kit is going to be a comprehensive solution to slider feature in react. This component was originally inspired by dribble concept design The Range Slider Component.
This slider components is going to include:
- 1D and 2D sliders
- Single and range sliders (
in progress
) - Horizontal and vertical sliders
Demo
The working demo of this component can be find at https://m-izadmehr.github.io/react-slider-kit/. An image of the original dribble design is shown below:
Installation
Using npm
(use --save
to include it in your package.json)
$ npm install react-slider-kit --save
Using yarn
(this command also adds react-rangeslider to your package.json dependencies)
$ yarn add react-slider-kit
Getting Started
react-slider-kit
is going to be a package of different sliders. In order to use a slider with a module bundler like webpack that supports either CommonJS or ES2015 modules, use as you would anything else:
// Using an ES6 transpiler like Babel
import {} from 'react-rangeslider'
// Not using an ES6 transpiler
var Slider = require('react-rangeslider')
Basic Example
import React, { Component } from 'react'
import {SingleSlider} from 'react-slider-kit';
export default class SimpleExample extends Component {
constructor(props, context) {
super(props, context)
this.state = {
value: 0
}
}
handleOnChange = (value) => {
this.setState({
value: value
})
}
render() {
return (
<SingleSlider
min={0}
max={100}
step={20}
start={80}
onChangeStart={() => console.log('start drag')}
onChange={(value)=>console.log('drag value: ', value)}
onChangeComplete={this.handleOnChange}
/>
)
}
}
API
React-Slider-Kit is bundled as a combination of multiple components, and by default the single slider is imported.
Component
import {SingleSlider} from 'react-slider-kit';
// inside render
<SingleSlider
min={Number}
max={Number}
step={Number}
start={Number}
sliderTo={Number}
prefix={String}
postfix={String}
labels={Array}
sticky={Boolean}
tooltip={String}
orientation={String}
// chart configs
chartData={Array}
chartTooltip={Boolean}
chartLength={Number}
// methods
onChangeStart={function}
onChange={function}
onChangeComplete={function}
/>
Props
Prop | Type | Default | Description |
---|---|---|---|
min |
number | 0 | minimum value the slider can hold |
max |
number | 100 | maximum value the slider can hold |
step |
number | 1 | step in which increments/decrements have to be made |
start |
number | 0 | starting value of slider |
sliderTo |
number | undefined | used to change the value of slider manually (componentWillReceiveProps is listening for changes in this value) |
tooltip |
string | 'always' | controls when slider tooltip is shown (always /onClick /never ) |
prefix |
string | '' | prefix in tooltip label (eg. '$') |
postfix |
string | '' | postfix in tooltip label (eg. 'kg') |
labels |
array | [] | custom labels to show on slider (eg. [{x:0,val:'Start'}, {x:50,val:'Middle'},] |
sticky |
boolean | false | controls whether slider handle can move smoothly or it can only sit on step values |
orientation |
string | 'horizontal' | slider orientation (eg. horizontal , vertical ) |
chartData |
array | - | used for showing 2D frequency graph on the slider (eg. [{ y: 0 }, { y: 0.1 }, { y: 1 }, { y: 1.5 }, { y: 3 }] ) |
chartTooltip |
boolean | false | controls whether chart tooltip is shown on hover on data points |
chartLength |
number | 200 | chart height (width) of chart in horizontal (vertical) orientation |
onChangeStart |
function | - | function called on starting to drag slider |
onChange |
function | - | function called during moving slider(on every pixel) |
onChangeComplete |
function | - | function called after finishing slider move (used to set slider value on state) |
License
MIT