UNPKG

react-toggle-slider

Version:
119 lines (86 loc) 4.15 kB
# react-toggle-slider [![npm version](https://badge.fury.io/js/react-toggle-slider.svg)](https://www.npmjs.com/package/react-toggle-slider) A highly customizable React toggle slider component. ![default](https://user-images.githubusercontent.com/20135416/122633007-293cda80-d0a4-11eb-90e9-86b1cce29061.gif) ![square](https://user-images.githubusercontent.com/20135416/122632977-03173a80-d0a4-11eb-9ada-ba742ddf5aba.gif) ## Installation Install using NPM: `npm install react-toggle-slider` Or install using Yarn: `yarn add react-toggle-slider` ## Usage To add the component, simply import `ToggleSlider` and use it in your app. ```tsx import { ToggleSlider } from "react-toggle-slider"; function App() { return ( <div> <ToggleSlider/> </div> ); } ``` The slider works without any options, but it can be heavily customized. ### Options | Option | Default | Description | | ------------- | ------------- | ------------- | | `active` | `false` | Initial state | | `draggable` | `true` | Whether or not the handle can be dragged | | `onToggle` | `undefined` | Function to call when slider is toggled, passes active state as parameter | | `padding` | `5` | Padding between the handle and the sides of the bar | | `flip` | `false` | Handle starts of right instead of left | | `transitionDuration` | `100ms` | Transition duration of the slider | | `handleSize` | `18` | Diameter of the handle | | `handleBorderRadius` | `16` | Border radius of the handle | | `handleBackgroundColor` | `#ffffff` | Background color of the handle | | `handleBackgroundColorActive` | `undefined` | Background color of the handle while active | | `handleStyles` | `undefined` | Extra styles object to be applied to the handle | | `handleStylesActive` | `undefined` | Extra styles object to be applied to the handle while active | | `handleTransitionDuration` | `undefined` | Transition duration of the handle (overrides `transitionDuration`) | | `handleRenderer` | `undefined` | React node to completely replace the handle | | `handleRendererActive` | `undefined` | React node to completely replace the handle while active | | `barHeight` | `26` | Height of the bar | | `barWidth` | `48` | Width of the bar | | `barBorderRadius` | `16` | Border radius of the bar | | `barBackgroundColor` | `#dedede` | Background color of the bar | | `barBackgroundColorActive` | `#06b7e7` | Background color of the bar while active | | `barTransitionDuration` | `undefined` | Transition duration of the bar (overrides `transitionDuration`) | | `barTransitionType` | `fade` | Specify if the bar should `fade` or `slide` | | `barStyles` | `undefined` | Extra styles object to be applied to the bar | | `barStylesActive` | `undefined` | Extra styles object to be applied to the bar while active | | `barRenderer` | `undefined` | React node to completely replace the bar | | `barRendererActive` | `undefined` | React node to completely replace the bar while active | If any options which refer to the active state of the slider are undefined, it will default to the inactive value. ## Accessing the state of the slider ### Callback The slider's state can be accessed using a callback. This can be used with `useState` or something similar to represent the status on the page. ```tsx import { ToggleSlider } from "react-toggle-slider"; function App() { const [active, setActive] = useState(false); return ( <div> <ToggleSlider onToggle={state => setActive(state)}/> Slider is {active ? "active" : "inactive"} </div> ); } ``` ### Hook The slider can also be used as a hook. This can be used to access the state of the slider without a callback. To do this, import the `useToggleSlider` function. Options can be passed into the function as an object. ```tsx import { useToggleSlider } from "react-toggle-slider" function App() { const [toggleSlider, active] = useToggleSlider({barBackgroundColorActive: "red"}); return ( <div> { toggleSlider } Slider is {active ? "active" : "inactive"} </div> ); } ```