Skip to content

joshjg/react-canvas-knob

Repository files navigation

react-canvas-knob

jQuery Knob rebuilt with React (no jQuery). This is an HTML5 Canvas-based component that serves as a circular range input. Accepts mouse, touch, scrollwheel, and keyboard input.

Installation

npm install react-canvas-knob --save

Example usage

Please note that react-canvas-knob must be used as a controlled input.

import React from 'react';
import Knob from 'react-canvas-knob';

class MyComponent extends React.Component {
  state = {value: 50};

  handleChange = (newValue) => {
    this.setState({value: newValue});
  };

  render() {
    return (
      <Knob
        value={this.state.value}
        onChange={this.handleChange}
      />
    );
  }
}

Properties

name description default
value numeric value of knob n/a
onChange function to be called on user input with the current numerical value n/a
onChangeEnd function to be called on mouseUp or touchEnd with the current numerical value n/a
min min value 0
max max value 100
step step size 1
log enable logarithmic scale (must use non-zero min and max, step > 1) false
width or height dimension of square (px) 200
thickness gauge thickness 0.35
lineCap gauge stroke ending style (butt or round) 'butt'
bgColor background color '#EEE'
fgColor foreground color '#EA2'
inputColor text color fgColor
font font family 'Arial'
fontWeight font weight 'bold'
clockwise direction of progression true
cursor use cursor display mode - give width value or true which uses the default cursor width (30) false
stopper stop at min & max on keydown/mousewheel true
readOnly disable all user input false
disableTextInput disable manual text input only false
displayInput show numeric input box true
displayCustom function that will render your custom component in the centre. (Make sure to set displayInput as false, as that takes priority) n/a
angleArc arc size in degrees 360
angleOffset starting angle in degrees 0
disableMouseWheel disable changes on mouse wheel use false
title adds title attribute to the wheel value
className custom className to be applied to the container element null
canvasClassName custom className to be applied to the canvas element null

Contributing

  • Make changes to Knob.js, then run npm run babel to transpile.

Todo

  • Fix for height > width condition
  • Port displayPrevious feature
  • Downwards compatibility
  • Implement some of the existing pull requests
  • Improve manual text input

About

Flexible knob/dial input component

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published