Skip to content

ScottSavarie/react-canvas-color-picker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Image of Color Picker

React Canvas Color Picker

Simple, fast, customizable canvas based color picker built in React. Supports HSLA, HSVA color spectrums, and hsla, hsva, rgba, hex, and hex8 color formats.

Install

npm

npm install react-canvas-color-picker

yarn

yarn add react-canvas-color-picker

Basic Usage

import React, { useState, useRef, useCallback } from "react";
import { ColorPicker, ColorFormats } from "react-canvas-color-picker";

export default function App() {
  const [color, setColor] = useState({ r: 255, g: 255, b: 255, a: 1 });
  const formats = useRef<ColorFormats[]>(["rgba"]);

  const handleChange = useCallback(({ colors }) => {
    setColor({ ...colors.rgba });
  }, []);

  return (
    <ColorPicker
      spectrum="hsva"
      formats={formats.current}
      initialColor={color}
      onPanStart={handleChange}
      onPan={handleChange}
    />
  );
}

Props

Prop Required Type Default Description
initialColor no RGBA, HSLA, HSVA, HEX, CSS Color { r: 255, g: 255, b: 255, a: 1 } Color the color picker will mount with
formats no ColorFormats[] ex: ["rgba", hsla"] ["rgba"] Array of color formats sent in callback functions
spectrum no "hsva" or "hsla" hsva Specify which color spectrum to use
spectrumWidth no number 240 Sets width of color box and sliders
spectrumHeight no number 240 Sets height of color box
sliderHeight no number 14 Sets height of hue and alpha sliders
className no string undefined Additional classes for parent container
spectrumClasses no string undefined Additional classes for hsla / hsva spectrum container
hueClasses no string undefined Additional classes for hue slider container
alphaClasses no string undefined Additional classes for alpha slider container
handleClasses no string undefined Additional classes for slider and spectrum handles
hideAlpha no boolean false Removes the alpha selector
onPanStart no (event: colorPickerChangeEvent) => void undefined Callback function when pan starts
onPan no (event: colorPickerChangeEvent) => void undefined Callback function on pan
onPanEnd no (event: colorPickerChangeEvent) => void undefined Callback function when pan ends

Change Events

onPanStart, onPan, and onPanEnd all return an object containing the colors specified in the formats prop, and the id of the spectrum or slider that was panned with. Note: make sure to wrap handlers in useCallback.

{
  colors: object;
  canvasId: string;
}

setColor

Sometimes you'll want to set the color of the color picker after it's been mounted (imagine changing a hex input, or clicking a color swatch). For this use case there is a setColor method which can be access by passing a ref to the color picker.

import React, { useRef } from "react";
import { ColorPicker, SetColor } from "react-canvas-color-picker";

export default function App() {
  const colorPickerRef = useRef<SetColor>();

  const setRandomColor = () => {
    const newColor = {
      r: Math.random() * 255,
      g: Math.random() * 255,
      b: Math.random() * 255,
      a: 1
    };
    colorPickerRef.current?.setColor(newColor);
  };

  return (
    <>
      <ColorPicker ref={colorPickerRef} />
      <button onClick={setRandomColor}>Random Color</button>
    </>
  );
}

Advanced Example

About

HSVA / HSLA Color Picker

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published