# react-native-rectangle-color-picker

> A color picker on diamond or rectangle palette

Latest version **2.0.2** (published 2023-04-04) · MIT license · 0 weekly downloads

## Install

```sh
npm install react-native-rectangle-color-picker
pnpm add react-native-rectangle-color-picker
yarn add react-native-rectangle-color-picker
bun add react-native-rectangle-color-picker
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.2 |
| Published | 2023-04-04 |
| First published | 2020-04-23 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 4 |
| Unpacked size | 713.4 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 2 |
| Author | Li Zheng |
| Maintainers | flyskywhy |
| Keywords | android, color, color-picker, colour, diamond, ios, palette, react-native, rectangle, rgb |

## Links

- npm: https://www.npmjs.com/package/react-native-rectangle-color-picker
- Repository: https://github.com/flyskywhy/react-native-rectangle-color-picker
- Homepage: https://github.com/flyskywhy/react-native-rectangle-color-picker#readme
- Issues: https://github.com/flyskywhy/react-native-rectangle-color-picker/issues
- Funding: https://Alipay/flyskywhy@gmail.com
- npm.io page: https://npm.io/package/react-native-rectangle-color-picker

## Dependencies (4)

- [immutable](https://npm.io/package/immutable.md) ^3.8.2
- [prop-types](https://npm.io/package/prop-types.md) ^15.5.10
- [tinycolor2](https://npm.io/package/tinycolor2.md) ^1.4.1
- [react-native-smooth-slider](https://npm.io/package/react-native-smooth-slider.md) 1.3.9

## Alternatives

- [postcss-color-hex-alpha](https://npm.io/package/postcss-color-hex-alpha.md) — 6.4M weekly downloads
- [randomcolor](https://npm.io/package/randomcolor.md) — 348.0K weekly downloads
- [bows](https://npm.io/package/bows.md) — 1.3K weekly downloads
- [ep_prefer_color_scheme](https://npm.io/package/ep_prefer_color_scheme.md) — 260 weekly downloads
- [coc-yank](https://npm.io/package/coc-yank.md) — 61 weekly downloads

## Recent versions

- 2.0.2 (latest) — 2023-04-04
- 2.0.1 — 2023-04-04
- 2.0.0 — 2023-01-03
- 1.0.2 — 2021-05-29
- 1.0.1 — 2020-08-17
- 1.0.0 — 2020-04-23

## README

## react-native-rectangle-color-picker

[![npm version](http://img.shields.io/npm/v/react-native-rectangle-color-picker.svg?style=flat-square)](https://npmjs.org/package/react-native-rectangle-color-picker "View this project on npm")
[![npm downloads](http://img.shields.io/npm/dm/react-native-rectangle-color-picker.svg?style=flat-square)](https://npmjs.org/package/react-native-rectangle-color-picker "View this project on npm")
[![npm licence](http://img.shields.io/npm/l/react-native-rectangle-color-picker.svg?style=flat-square)](https://npmjs.org/package/react-native-rectangle-color-picker "View this project on npm")
[![Platform](https://img.shields.io/badge/platform-ios%20%7C%20android-989898.svg?style=flat-square)](https://npmjs.org/package/react-native-rectangle-color-picker "View this project on npm")

A color picker on diamond or rectangle palette.

<img src="https://raw.githubusercontent.com/flyskywhy/react-native-rectangle-color-picker/master/Screenshots/android_diamond_with_staticPalette.png" width="375">
<img src="https://raw.githubusercontent.com/flyskywhy/react-native-rectangle-color-picker/master/Screenshots/android_rectangle_with_staticPalette.png" width="375">
<img src="https://raw.githubusercontent.com/flyskywhy/react-native-rectangle-color-picker/master/Screenshots/android_rectangle_without_staticPalette.png" width="375">

## Install

For RN >= 0.60
```shell
npm i --save react-native-rectangle-color-picker react-native-gesture-handler
```

For RN < 0.60
```shell
npm i --save react-native-rectangle-color-picker@1.x react-native-gesture-handler@1.2.2
```

And be aware of https://github.com/software-mansion/react-native-gesture-handler/issues/1164 if you use react-native-web and want to slide on web.

## Usage

```jsx
import React from 'react';
import tinycolor from 'tinycolor2';
import ColorPicker from 'react-native-rectangle-color-picker';

// if react-native-gesture-handler@1.x, no need <GestureHandlerRootView />
// but just <View />, ref to
// https://docs.swmansion.com/react-native-gesture-handler/docs/guides/migrating-off-rnghenabledroot/
// You should put <GestureHandlerRootView /> in your root component,
// example below is just playing the role of a root component
import {GestureHandlerRootView} from 'react-native-gesture-handler';

export default class SliderColorPickerExample extends React.Component {
    constructor(props) {
        super(props);
        this.state = { oldColor: '#dc402b' };
    }

    componentDidMount() {
        setTimeout(() => this.setState({ oldColor: '#fde200' }), 1000);
    }

    changeColor = colorHsv => this.setState({ oldColor: tinycolor(colorHsv).toHexString() })

    render() {
        return (
            <GestureHandlerRootView style={{alignItems: 'center'}}>
                <ColorPicker
                    ref={view => {this.colorPicker = view;}}
                    oldColor={this.state.oldColor}
                    onColorChange={this.changeColor}
                    textSaturation={'Saturation'}
                    diamond={true}
                    staticPalette={true}/>
            </GestureHandlerRootView>
        );
    }
}
```

## Props

Prop                  | Type     | Optional | Default                   | Description
--------------------- | -------- | -------- | ------------------------- | -----------
oldColor              | [Color string](https://github.com/bgrins/TinyColor#accepted-string-input) | Yes      | undefined                 | Initial positon of the picker indicator
onColorChange         | function | Yes      |                           | Callback called while the user click a color or release the slider. The 1st argument is color in HSV representation (see below). The 2nd string argument is always 'end'.
hideSliders           | bool     | Yes      | false                     | Set this to true to hide the saturation sliders.
textSaturation        | string   | Yes      | 'Saturation'              | Set the title text of the saturation slider.
diamond               | bool     | Yes      | true                      | Show diamond or rectangle palette.
staticPalette         | bool     | Yes      | true                      | Set this to false to let the slider change the saturation of palette.

HSV color representation is an object literal with properties:

```javascript
{
    h: number, // <0, 360>
    s: number, // <0, 1>
    v: number, // <0, 1>
}

```

## Donate
To support my work, please consider donate.

- ETH: 0xd02fa2738dcbba988904b5a9ef123f7a957dbb3e

- <img src="https://raw.githubusercontent.com/flyskywhy/flyskywhy/main/assets/alipay_weixin.png" width="500">

---
_Source: https://npm.io/package/react-native-rectangle-color-picker · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
