React Bootstrap Range Slider
A range slider with tooltips for React Bootstrap v1.0.0+ / Bootstrap 4 that extends the HTML <input type="range">
element.
Check out the Examples Page for live demos of all main slider features.
Installation
yarn add react-bootstrap-range-slider
or
npm install react-bootstrap-range-slider
Prerequisites
React Bootstrap must be installed and the Bootstrap CSS imported (or included).
Usage
In your index.js
or similar:
import 'bootstrap/dist/css/bootstrap.css';
import 'react-bootstrap-range-slider/dist/react-bootstrap-range-slider.css';
Your component:
import React, { useState } from 'react';
import RangeSlider from 'react-bootstrap-range-slider';
const MyComponent = () => {
const [ value, setValue ] = useState(0);
return (
<RangeSlider
value={value}
onChange={changeEvent => setValue(changeEvent.target.value)}
/>
);
};
Features
- Compatible with React Bootstrap v1.0.0+ and Bootstrap 4+;
- Implemented using HTML5
<input type="range">
element; - A tooltip can be configured to automatically display on hover or be constantly visible;
- A custom tooltip formatter function can be provided.
- Aligns horizontally with Bootstrap form controls;
- Bootstrap small (
sm
) and large (lg
) sizes are supported; - Bootstrap button color variants such as 'primary' and 'secondary' are supported;
Options (as React props)
Property | Type | Default | Description |
---|
value | number | | The current value of the slider. |
onChange | function | | A callback fired when the range slider's value changes. The callback's first argument is a React.ChangeEvent . The second argument is the slider's new value as a number . |
onAfterChange | function | | A callback fired after interaction with the slider has finished if the value has changed. The callback function's signature is the same as for onChange . |
min | number | 0 | The minimum value of the slider. |
max | number | 100 | The maximum value of the slider. |
step | number | 1 | The granularity with which the slider can step through values. |
disabled | boolean | false | Disables the slider. |
size | 'sm' | 'lg' | | Input size variants, for compatibility with other Bootstrap form components. |
variant | string | 'primary' | Color variant, equivalent to the Bootstrap Button color variant. One of: 'primary' , 'secondary' , 'success' , 'danger' , 'warning' , 'info' , 'dark' , 'light' |
tooltip | 'auto' | 'on' | 'off' | 'auto' | If 'auto' the tooltip will be visible only when hovered. If 'on' the tooltip will always be visible. If 'off' no tooltip will be displayed. |
tooltipPlacement | 'top' | 'bottom' | 'bottom' | Placement of tooltip relative to slider thumb. |
tooltipLabel | function | | A function that returns the tooltip's content (either a string or element). The function's first argument is the current slider value. |
tooltipStyle | object | | Style to be applied to tooltip div. |
tooltipProps | object | | Properties applied to the tooltip's <div> element. |
inputProps | object | | Properties applied to the <input> element. DEPRECATED: additional props added to the RangeSlider component's props will be passed to the underlying <input> element. |
ref | React.Ref<HTMLInputElement> | | If provided, ref will be forwarded to the underlying <input> element. |
bsPrefix | string | 'range-slider' | Change the underlying component CSS base class name and modifier class names prefix. This is an escape hatch for working with heavily customized bootstrap css. |
Sass / Customizing Bootstrap
If you have set custom theme colors using $theme-colors
as described in the React Bootstrap documentation and would like them to apply to the range slider, include the React Bootstrap Range Slider's Sass/SCSS like so:
$theme-colors: (
"info": tomato,
"danger": teal
);
@import "react-bootstrap-range-slider/dist/react-bootstrap-range-slider.scss";
@import "~bootstrap/scss/bootstrap";
Browser Compatibility
React Bootstrap Range Slider works in most modern web browsers and in Internet Explorer 10+ (with polyfills required for React to work).
Browser | Supported |
---|
Chrome | Yes |
Edge | Yes |
Firefox | Yes |
Internet Explorer | 10, 11 |
Opera | Yes |
Safari | Yes |
Samsung Internet | Yes |
UC | Yes |
Yandex | Yes |
License
Copyright (c) 2020 Jason Wilson
MIT License