/* eslint-disable react/jsx-no-leaked-render */ /* eslint-disable jsx-a11y/no-static-element-interactions */ import React, { useState } from 'react' import { SlidersIcon, InputsIcon, PaletteIcon } from './icon.js' import { usePicker } from '../context.js' import EyeDropper from './EyeDropper.js' import AdvancedControls from './AdvancedControls.js' import ComparibleColors from './ComparibleColors.js' import GradientControls from './GradientControls.js' import { LocalesProps } from '../shared/types.js' import { colorTypeBtnStyles, controlBtnStyles, modalBtnStyles } from '../styles/styles.js' const ColorTypeBtns = ({ hideColorTypeBtns, setGradient, isGradient, setSolid, locales, }: { hideColorTypeBtns?: boolean isGradient?: boolean setSolid: () => void setGradient: () => void locales?: LocalesProps }) => { const { defaultStyles, pickerIdSuffix } = usePicker() if (hideColorTypeBtns) { return
} else { return (
{locales?.CONTROLS?.SOLID}
{locales?.CONTROLS?.GRADIENT}
) } } const InputTypeDropdown = ({ openInputType, setOpenInputType, }: { openInputType?: boolean setOpenInputType: (arg0: boolean) => void }) => { const { inputType, setInputType, defaultStyles, pickerIdSuffix } = usePicker() const vTrans = openInputType ? 'visibility 0ms linear' : 'visibility 100ms linear 150ms' const zTrans = openInputType ? 'z-index 0ms linear' : 'z-index 100ms linear 150ms' const oTrans = openInputType ? 'opacity 120ms linear' : 'opacity 150ms linear 50ms' const handleInputType = (e: any, val: string) => { if (openInputType) { e.stopPropagation() setInputType(val) setOpenInputType(false) } } return (
handleInputType(e, 'rgb')} style={modalBtnStyles(inputType === 'rgb', defaultStyles)} > RGB
handleInputType(e, 'hsl')} style={modalBtnStyles(inputType === 'hsl', defaultStyles)} > HSL
handleInputType(e, 'hsv')} style={modalBtnStyles(inputType === 'hsv', defaultStyles)} > HSV
handleInputType(e, 'cmyk')} style={modalBtnStyles(inputType === 'cmyk', defaultStyles)} > CMYK
) } const Controls = ({ locales, hideEyeDrop = false, hideAdvancedSliders = false, hideColorGuide = false, hideInputType = false, hideColorTypeBtns = false, hideGradientControls = false, hideGradientType = false, hideGradientAngle = false, hideGradientStop = false, }: { locales?: LocalesProps hideEyeDrop?: boolean hideAdvancedSliders?: boolean hideColorGuide?: boolean hideInputType?: boolean hideColorTypeBtns?: boolean hideGradientControls?: boolean hideGradientType?: boolean hideGradientAngle?: boolean hideGradientStop?: boolean }) => { const { config, onChange, isGradient, handleChange, previous, defaultStyles, pickerIdSuffix } = usePicker() const { defaultColor, defaultGradient } = config const [openComparibles, setOpenComparibles] = useState(false) const [openInputType, setOpenInputType] = useState(false) const [openAdvanced, setOpenAdvanced] = useState(false) const noTools = hideEyeDrop && hideAdvancedSliders && hideColorGuide && hideInputType const solidColor = previous?.color ?? defaultColor const gradientColor = previous?.gradient ?? defaultGradient const setSolid = () => { onChange(solidColor) } const setGradient = () => { onChange(gradientColor) } const allRightControlsHidden = hideEyeDrop && hideAdvancedSliders && hideColorGuide && hideInputType const allControlsHidden = allRightControlsHidden && hideColorTypeBtns if (allControlsHidden) { if (isGradient && !hideGradientControls) { return ( ) } else { return null } } else { return (
{!allRightControlsHidden && (
{!hideEyeDrop && } {!hideAdvancedSliders && (
setOpenAdvanced(!openAdvanced)} // className="rbgcp-control-btn rbgcp-advanced-btn" style={controlBtnStyles(openAdvanced, defaultStyles)} >
)} {!hideColorGuide && (
setOpenComparibles(!openComparibles)} // className="rbgcp-control-btn rbgcp-comparibles-btn" id={`rbgcp-comparibles-btn${pickerIdSuffix}`} >
)} {!hideInputType && (
setOpenInputType(!openInputType)} // className="rbgcp-control-btn rbgcp-color-model-btn" style={controlBtnStyles(openInputType, defaultStyles)} >
)}
)}
{!hideAdvancedSliders && ( )} {!hideColorGuide && ( )} {isGradient && !hideGradientControls && ( )}
) } } export default Controls;