import { type FC, type InputHTMLAttributes, useState, useRef, useEffect } from 'react' import { clx } from '../helpers/utils' import Error from './Error' import ColorfilterIcon from '@/assets/images/color.png' type Props = { label?: string className?: string error_text?: string isNotRequired?: boolean value?: string onChange?: (value: string) => void } & Omit, 'onChange' | 'value'> const ColorPicker: FC = (props: Props) => { const [color, setColor] = useState(props.value || '#000000') const colorInputRef = useRef(null) const inputClass = clx( 'w-full bg-white h-10 text-black block pl-10 pr-10 text-xs rounded-xl border border-border', props.readOnly && 'bg-gray-100 border-0 text-description', props.className ) const handleColorChange = (event: React.ChangeEvent) => { const newColor = event.target.value setColor(newColor) props.onChange?.(newColor) } const handleTextChange = (event: React.ChangeEvent) => { const value = event.target.value if (/^#[0-9A-Fa-f]{0,6}$/.test(value) || value === '') { const finalColor = value || '#000000' setColor(finalColor) props.onChange?.(finalColor) } } const handleColorIconClick = () => { if (!props.readOnly) { colorInputRef.current?.click() } } useEffect(() => { if (props.value !== undefined) { setColor(props.value) } }, [props.value]) return (
{props.error_text && ( )}
) } export default ColorPicker