Spaces:
Running
Running
import React, { ChangeEvent, useEffect } from 'react' | |
interface DropdownProps { | |
label: string | |
options: string[] | |
state: string | |
setState: (state: string) => void | |
} | |
const Dropdown = ({ options, label, state, setState }: DropdownProps) => { | |
const handleChange = (event: ChangeEvent<HTMLSelectElement>) => { | |
setState(event.target.value) | |
} | |
useEffect(() => { | |
if (options.length > 0) { | |
setState(options[0]) | |
} | |
}, [options, setState]) | |
return ( | |
<div className='flex flex-row items-center'> | |
<label htmlFor='dropdown' className='whitespace-nowrap mr-4'> | |
{label}: | |
</label> | |
<select id='dropdown' className='dropdown-input' value={state} onChange={handleChange}> | |
{options.length === 0 && <option value=''>Loading options...</option>} | |
{options.map((option) => ( | |
<option key={option} value={option}> | |
{option} | |
</option> | |
))} | |
</select> | |
</div> | |
) | |
} | |
export default Dropdown | |