diff --git a/packages/color-compact/README.md b/packages/color-compact/README.md index 25e40c5b5..3c490c4df 100644 --- a/packages/color-compact/README.md +++ b/packages/color-compact/README.md @@ -26,24 +26,59 @@ export default function Demo() { return ( { + setHex(color.hex); + }} + /> + ); +} +``` + +Add clear button + +```jsx mdx:preview +import React, { useState } from 'react'; +import Compact from '@uiw/react-color-compact'; + +export default function Demo() { + const [hex, setHex] = useState("#fff"); + return ( + { setHex(color.hex); }} + rectRender={(props) => { + console.log(props.key) + if (props.key == 35) { + return + } + }} /> ); } ``` + ## Props ```ts import React from 'react'; import { ColorResult, HsvaColor } from '@uiw/color-convert'; +import { type SwatchProps, type SwatchRectRenderProps } from '@uiw/react-color-swatch'; export interface CompactProps extends Omit, 'onChange' | 'color'> { prefixCls?: string; color?: string | HsvaColor; colors?: string[]; onChange?: (color: ColorResult, evn?: T) => void; + rectRender?: (props: SwatchRectRenderProps) => JSX.Element | undefined; + rectProps?: SwatchProps['rectProps']; } declare const Compact: React.ForwardRefExoticComponent> & React.RefAttributes>; export default Compact; diff --git a/packages/color-compact/src/index.tsx b/packages/color-compact/src/index.tsx index 7e8e1949a..eaa12206e 100644 --- a/packages/color-compact/src/index.tsx +++ b/packages/color-compact/src/index.tsx @@ -10,13 +10,15 @@ import { } from '@uiw/color-convert'; import EditableInput from '@uiw/react-color-editable-input'; import RGBA from '@uiw/react-color-editable-input-rgba'; -import Swatch from '@uiw/react-color-swatch'; +import Swatch, { type SwatchProps, type SwatchRectRenderProps } from '@uiw/react-color-swatch'; export interface CompactProps extends Omit, 'onChange' | 'color'> { prefixCls?: string; color?: string | HsvaColor; colors?: string[]; onChange?: (color: ColorResult, evn?: T) => void; + rectRender?: (props: SwatchRectRenderProps) => JSX.Element | undefined; + rectProps?: SwatchProps['rectProps']; } const COLORS = [ @@ -73,7 +75,17 @@ function Point(props: { color?: string; checked?: boolean }) { } const Compact = React.forwardRef>>((props, ref) => { - const { prefixCls = 'w-color-compact', className, style, onChange, color, colors = COLORS, ...other } = props; + const { + prefixCls = 'w-color-compact', + className, + style, + onChange, + color, + colors = COLORS, + rectProps, + rectRender, + ...other + } = props; const hsva = (typeof color === 'string' && validHex(color) ? hexToHsva(color) : color) as HsvaColor; const hex = color ? hsvaToHex(hsva).replace(/^#/, '') : ''; const handleChangeCallback = useCallback((hsv: HsvaColor) => onChange && onChange(handleColor(hsv)), []); @@ -104,12 +116,15 @@ const Compact = React.forwardRef, + ...rectProps, style: { display: 'flex', alignItems: 'center', justifyContent: 'center', + ...rectProps?.style, }, }} onChange={(hsvColor) => handleChangeCallback(hsvColor)}