import { useMemo } from '@wordpress/element'; import Popover from './Popover'; type SelectOption = { value: string; label: string; disabled?: boolean; }; type SelectProps = { label?: string; labelTip?: React.ReactNode; value: string; options: SelectOption[]; onChange: ( value: string ) => void; placeholder?: string; help?: string; className?: string; disabled?: boolean; }; /** * Tailwind-styled select control. * * @param {SelectProps} props Component props. * @return {JSX.Element} Rendered select control. */ const Select = ( props: SelectProps ) => { const { label, labelTip, value, options, onChange, placeholder, help, className, disabled = false, } = props; const selectId = useMemo( () => `airygen-select-${ Math.random().toString( 36 ).slice( 2 ) }`, [], ); const handleChange = ( event: { target: HTMLSelectElement } ) => { onChange( event.target.value ); }; const wrapperClass = [ 'flex flex-col gap-2', className ] .filter( Boolean ) .join( ' ' ); const selectClass = [ 'airygen-field-select', disabled ? 'cursor-not-allowed' : '' ] .filter( Boolean ) .join( ' ' ); return (
{ label ? (
{ labelTip ? ( ? } > { labelTip } ) : null }
) : null } { help ? (

) : null }

); }; export type { SelectOption }; export default Select;