import React, { forwardRef, useEffect, useState } from "react"; import { UseSelectStateChange } from "downshift"; import { optionToValue, SubProps } from ":/components/Forms/Select/mono-common"; import { SelectMonoSearchable } from ":/components/Forms/Select/mono-searchable"; import { SelectMonoSimple } from ":/components/Forms/Select/mono-simple"; import { Option, SelectHandle, SelectProps } from ":/components/Forms/Select"; export const SelectMono = forwardRef( (props, ref) => { const defaultSelectedItem = props.defaultValue ? props.options.find( (option) => optionToValue(option) === props.defaultValue, ) : undefined; const [value, setValue] = useState( defaultSelectedItem ? optionToValue(defaultSelectedItem) : props.value, ); /** * This useEffect is used to update the local value when the component is controlled. * The defaultValue is used only on first render. */ useEffect(() => { if (props.defaultValue) { return; } setValue(props.value); }, [props.value, props.defaultValue]); const commonDownshiftProps: SubProps["downshiftProps"] = { initialSelectedItem: defaultSelectedItem, onSelectedItemChange: (e: UseSelectStateChange