import { ColorPickerProps } from "@app/models/components"; import React, { CSSProperties, useEffect, useRef, useState } from "react"; import { HexColorPicker } from "react-colorful"; import "./color-picker-styles.scss"; const ColorPicker: React.FC = ({ name, label, placeholder, value, onChange, }) => { const [isPickerOpen, setIsPickerOpen] = useState(false); const colorPickerRef = useRef(null); const handleColorChange = (color: string) => { onChange?.(name, color); }; const handleClickOutside = (event: MouseEvent) => { if ( colorPickerRef.current && !colorPickerRef.current.contains(event.target as Node) ) { setIsPickerOpen(false); } }; useEffect(() => { document.addEventListener("mousedown", handleClickOutside); return () => { document.removeEventListener("mousedown", handleClickOutside); }; }, []); const pickerStyles: CSSProperties = { ...(!isPickerOpen && { display: "none" }), }; const previewStyles: CSSProperties = { ...(value && { backgroundColor: value }), }; return ( onChange && (
{label && }
) ); }; export default ColorPicker;