@fseehawer/react-circular-slider
v3.2.7
Published
A customizable circular slider with no dependencies.
Downloads
19,436
Maintainers
Readme
react-circular-slider
A highly customizable circular slider with zero dependencies. Check out the live demos!
TypeScript Support
This component now has full TypeScript support! Enjoy full IntelliSense and strong type-checking out of the box.
JavaScript users: No worries – the published output is plain JavaScript and works exactly as before.
Installation
npm install @fseehawer/react-circular-sliderexample
import React from 'react';
import CircularSlider from '@fseehawer/react-circular-slider';
const App: React.FC = () => (
<>
<CircularSlider onChange={value => console.log(value)} />
</>
);
export default App;Custom Configuration
Customize properties such as the label, colors, data set, and more:
import React from 'react';
import CircularSlider from '@fseehawer/react-circular-slider';
const App: React.FC = () => (
<>
<CircularSlider
label="savings"
labelColor="#005a58"
knobColor="#005a58"
progressColorFrom="#00bfbd"
progressColorTo="#009c9a"
progressSize={24}
trackColor="#eeeeee"
trackSize={24}
data={['1€', '2€']} // Custom data array
dataIndex={10}
onChange={value => console.log(value)}
/>
</>
);
export default App;Props
The table below lists all available props along with their TypeScript types, default values, and descriptions.
| Prop | Type | Default | Description |
|---------------------------|---------------------------------------------------------|-------------------------------------------|----------------------------------------------------------------------------------------------------------|
| width | number | 280 | Width of the slider in pixels. |
| direction | 1 \| -1 | 1 | Rotation direction: 1 for clockwise, -1 for anticlockwise. |
| min | number | 0 | Minimum value. |
| max | number | 360 | Maximum value. |
| initialValue | number | 0 | Initial value for the label. |
| data | (string \| number)[] | [] | Array of values or labels, evenly spread over 360°. |
| dataIndex | number | 0 | Initial index position in the data array. |
| knobColor | string | "#4e63ea" | Color of the knob. |
| knobSize | number | 32 | Diameter of the knob in pixels. |
| hideKnob | boolean | false | If true, the knob is hidden. |
| hideKnobRing | boolean | false | If true, the translucent ring around the knob is hidden. |
| knobDraggable | boolean | true | If true, the knob is draggable. |
| knobPosition | string \| number | "top" | Starting position: accepts "top", "right", "bottom", "left" or an angle (in degrees). |
| label | string | "ANGLE" | Text label displayed on the slider. |
| labelColor | string | "#272b77" | Color of the label and value text. |
| labelBottom | boolean | false | If true, the label is positioned below the slider. |
| labelFontSize | string | "1rem" | Font size of the label. |
| valueFontSize | string | "4rem" | Font size of the displayed value. |
| appendToValue | string | "" | Text appended to the value. |
| prependToValue | string | "" | Text prepended to the value. |
| renderLabelValue | React.ReactNode | null | Custom JSX for rendering the label and value. |
| verticalOffset | string | "2rem" | Vertical offset for the label/value display. |
| hideLabelValue | boolean | false | If true, both the label and value are hidden. |
| progressColorFrom | string | "#80C3F3" | Start color for the progress gradient. |
| progressColorTo | string | "#4990E2" | End color for the progress gradient. |
| progressSize | number | 8 | Thickness of the progress track. |
| progressLineCap | "round" \| "butt" | "round" | Cap style for the progress track. |
| trackColor | string | "#DDDEFB" | Color of the background track. |
| trackSize | number | 8 | Thickness of the background track. |
| trackDraggable | boolean | false | If true, allows dragging the background track. |
| onChange | (value: string \| number) => void | () => {} | Callback fired when the value changes. |
| isDragging | (dragging: boolean) => void | () => {} | Callback to signal whether the slider is being dragged. |
Donation
If you find this component useful, please consider a small donation. Even one dollar helps maintain and develop new features!
You can find the donate button on the bottom of the example page
