From 57d9667b2d0e483399ccf97eb3c44cf48c82f07f Mon Sep 17 00:00:00 2001 From: Karol Janyst Date: Tue, 25 Oct 2016 19:39:31 +0900 Subject: [PATCH] Add definitions for react-color (#12117) --- react-color/react-color-tests.tsx | 54 +++++++ react-color/react-color.d.ts | 250 ++++++++++++++++++++++++++++++ 2 files changed, 304 insertions(+) create mode 100644 react-color/react-color-tests.tsx create mode 100644 react-color/react-color.d.ts diff --git a/react-color/react-color-tests.tsx b/react-color/react-color-tests.tsx new file mode 100644 index 0000000000..5cc201c4f7 --- /dev/null +++ b/react-color/react-color-tests.tsx @@ -0,0 +1,54 @@ +// React Color Test +// ================================================================================ +/// +/// +/// + +// Imports +// -------------------------------------------------------------------------------- +import * as React from "react" +import { StatelessComponent } from "react" +import { render } from "react-dom" +import { + AlphaPicker, BlockPicker, ChromePicker, CirclePicker, + CompactPicker, GithubPicker, HuePicker, MaterialPicker, + PhotoshopPicker, SketchPicker, SliderPicker, SwatchesPicker, + TwitterPicker, CustomPicker +} from "react-color" +import { Alpha, Checkboard, EditableInput, Hue, Saturation } from "react-color/lib/components/common" + +interface CustomProps extends ReactColor.InjectedColorProps { + color?: ReactColor.Color +} + +var CustomComponent: StatelessComponent = (props: CustomProps) => { + function onChange (color: ReactColor.ColorResult) {} + + return ( +
+ + + + + +
+ ) +} +var Custom = CustomPicker(CustomComponent) + +var colors: Array = ["#000", "#333"] + +render(, document.getElementById("main")) +render(, document.getElementById("main")) +render(, document.getElementById("main")) +render(, document.getElementById("main")) +render(, document.getElementById("main")) +render(, document.getElementById("main")) +render(, document.getElementById("main")) +render(, document.getElementById("main")) +render(, document.getElementById("main")) +render(, document.getElementById("main")) +render(, document.getElementById("main")) +render(, document.getElementById("main")) +render(, document.getElementById("main")) +render(, document.getElementById("main")) diff --git a/react-color/react-color.d.ts b/react-color/react-color.d.ts new file mode 100644 index 0000000000..a771ca445f --- /dev/null +++ b/react-color/react-color.d.ts @@ -0,0 +1,250 @@ +// Type definitions for react-color v2.3.4 +// Project: https://casesandberg.github.io/react-color/ +// Definitions by: Karol Janyst +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +declare namespace ReactColor { + import React = __React + + interface HSLColor { + a?: number + h: number + l: number + s: number + } + + interface RGBColor { + a?: number + b: number + g: number + r: number + } + + type Color = string | HSLColor | RGBColor + + interface ColorResult { + hex: string + hsl: HSLColor + rgb: RGBColor + } + + type ColorChangeHandler = (color: ColorResult) => void + + interface ColorPickerProps extends React.ClassAttributes { + color?: Color + onChange?: ColorChangeHandler + onChangeComplete?: ColorChangeHandler + } + + /* Predefined pickers */ + interface AlphaPickerProps extends ColorPickerProps { + height?: string + width?: string + } + interface AlphaPicker extends React.ComponentClass {} + const AlphaPicker: AlphaPicker + + interface BlockPickerProps extends ColorPickerProps { + colors?: Array + width?: string + } + interface BlockPicker extends React.ComponentClass {} + const BlockPicker: BlockPicker + + interface ChromePickerProps extends ColorPickerProps { + disableAlpha?: boolean + } + interface ChromePicker extends React.ComponentClass {} + const ChromePicker: ChromePicker + + interface CirclePickerProps extends ColorPickerProps { + colors?: Array + width?: string + } + interface CirclePicker extends React.ComponentClass {} + const CirclePicker: CirclePicker + + interface CompactPickerProps extends ColorPickerProps { + colors?: Array + } + interface CompactPicker extends React.ComponentClass {} + const CompactPicker: CompactPicker + + interface GithubPickerProps extends ColorPickerProps { + colors?: Array + width?: string + } + interface GithubPicker extends React.ComponentClass {} + const GithubPicker: GithubPicker + + interface HuePickerProps extends ColorPickerProps { + height?: string + width?: string + } + interface HuePicker extends React.ComponentClass {} + const HuePicker: HuePicker + + interface MaterialPickerProps extends ColorPickerProps {} + interface MaterialPicker extends React.ComponentClass {} + const MaterialPicker: MaterialPicker + + interface PhotoshopPickerProps extends ColorPickerProps { + header?: string + onAccept?: ColorChangeHandler + onCancel?: ColorChangeHandler + } + interface PhotoshopPicker extends React.ComponentClass {} + const PhotoshopPicker: PhotoshopPicker + + interface SketchPickerProps extends ColorPickerProps { + disableAlpha?: boolean + presetColors?: Array + width?: string + } + interface SketchPicker extends React.ComponentClass {} + const SketchPicker: SketchPicker + + interface SliderPickerProps extends ColorPickerProps {} + interface SliderPicker extends React.ComponentClass {} + const SliderPicker: SliderPicker + + interface SwatchesPickerProps extends ColorPickerProps { + colors?: Array> + height?: number + width?: number + } + interface SwatchesPicker extends React.ComponentClass {} + const SwatchesPicker: SwatchesPicker + + interface TwitterPickerProps extends ColorPickerProps {} + interface TwitterPicker extends React.ComponentClass {} + const TwitterPicker: TwitterPicker + + /* For custom picker */ + interface InjectedColorProps { + hex?: string + hsl?: HSLColor + rgb?: RGBColor + onChange?: ColorChangeHandler + } + + function CustomPicker(component: React.ComponentClass | React.StatelessComponent): React.ComponentClass + + interface CustomPickerProps extends React.ClassAttributes { + color?: Color + pointer?: React.ReactNode + onChange?: ColorChangeHandler + } + + interface AlphaProps extends CustomPickerProps {} + interface Alpha extends React.ComponentClass {} + const Alpha: Alpha + + interface EditableInputStyles { + input?: React.CSSProperties + label?: React.CSSProperties + wrap?: React.CSSProperties + } + interface EditableInputProps extends React.ClassAttributes { + color?: Color + label?: string + onChange?: ColorChangeHandler + styles?: EditableInputStyles + value?: any + } + interface EditableInput extends React.ComponentClass {} + const EditableInput: EditableInput + + interface HueProps extends CustomPickerProps { + direction?: "horizontal" | "vertical" + } + interface Hue extends React.ComponentClass {} + const Hue: Hue + + interface SaturationProps extends CustomPickerProps {} + interface Saturation extends React.ComponentClass {} + const Saturation: Saturation + + interface CheckboardProps extends React.ClassAttributes { + grey?: string + size?: number + white?: string + } + interface Checkboard extends React.ComponentClass {} + const Checkboard: Checkboard +} + +declare module "react-color/lib/components/common/Alpha" { export default ReactColor.Alpha } +declare module "react-color/lib/components/common/Checkboard" { export default ReactColor.Checkboard } +declare module "react-color/lib/components/common/EditableInput" { export default ReactColor.EditableInput } +declare module "react-color/lib/components/common/Hue" { export default ReactColor.Hue } +declare module "react-color/lib/components/common/Saturation" { export default ReactColor.Saturation } +declare module "react-color/lib/components/common/ColorWrap" { export default ReactColor.CustomPicker } + +declare module "react-color/lib/components/common" { + import Alpha from "react-color/lib/components/common/Alpha" + import Checkboard from "react-color/lib/components/common/Checkboard" + import EditableInput from "react-color/lib/components/common/EditableInput" + import Hue from "react-color/lib/components/common/Hue" + import Saturation from "react-color/lib/components/common/Saturation" + + export { + Alpha, + Checkboard, + EditableInput, + Hue, + Saturation + } +} + +declare module "react-color/lib/components/alpha/Alpha" { export default ReactColor.AlphaPicker } +declare module "react-color/lib/components/block/Block" { export default ReactColor.BlockPicker } +declare module "react-color/lib/components/chrome/Chrome" { export default ReactColor.ChromePicker } +declare module "react-color/lib/components/circle/Circle" { export default ReactColor.CirclePicker } +declare module "react-color/lib/components/compact/Compact" { export default ReactColor.CompactPicker } +declare module "react-color/lib/components/github/Github" { export default ReactColor.GithubPicker } +declare module "react-color/lib/components/hue/Hue" { export default ReactColor.HuePicker } +declare module "react-color/lib/components/meterial/Material" { export default ReactColor.MaterialPicker } +declare module "react-color/lib/components/photoshop/Photoshop" { export default ReactColor.PhotoshopPicker } +declare module "react-color/lib/components/sketch/Sketch" { export default ReactColor.SketchPicker } +declare module "react-color/lib/components/slider/Slider" { export default ReactColor.SliderPicker } +declare module "react-color/lib/components/swatches/Swatches" { export default ReactColor.SwatchesPicker } +declare module "react-color/lib/components/twitter/Twitter" { export default ReactColor.TwitterPicker } + +declare module "react-color" { + import AlphaPicker from "react-color/lib/components/alpha/Alpha" + import BlockPicker from "react-color/lib/components/block/Block" + import ChromePicker from "react-color/lib/components/chrome/Chrome" + import CirclePicker from "react-color/lib/components/circle/Circle" + import CompactPicker from "react-color/lib/components/compact/Compact" + import GithubPicker from "react-color/lib/components/github/Github" + import HuePicker from "react-color/lib/components/hue/Hue" + import MaterialPicker from "react-color/lib/components/meterial/Material" + import PhotoshopPicker from "react-color/lib/components/photoshop/Photoshop" + import SketchPicker from "react-color/lib/components/sketch/Sketch" + import SliderPicker from "react-color/lib/components/slider/Slider" + import SwatchesPicker from "react-color/lib/components/swatches/Swatches" + import TwitterPicker from "react-color/lib/components/twitter/Twitter" + import CustomPicker from "react-color/lib/components/common/ColorWrap" + + export type CustomPickerProps = ReactColor.CustomPickerProps + + export { + AlphaPicker, + BlockPicker, + ChromePicker, + CirclePicker, + CompactPicker, + GithubPicker, + HuePicker, + MaterialPicker, + PhotoshopPicker, + SketchPicker, + SliderPicker, + SwatchesPicker, + TwitterPicker, + CustomPicker + } +}