import FormControl from "@material-ui/core/FormControl"; import FormHelperText from "@material-ui/core/FormHelperText"; import { InputProps } from "@material-ui/core/Input"; import InputLabel from "@material-ui/core/InputLabel"; import MenuItem from "@material-ui/core/MenuItem"; import OutlinedInput from "@material-ui/core/OutlinedInput"; import Select, { SelectProps } from "@material-ui/core/Select"; import { makeStyles } from "@material-ui/core/styles"; import classNames from "classnames"; import React from "react"; import { FormattedMessage } from "react-intl"; const useStyles = makeStyles( theme => ({ formControl: { "& label": { top: "-3px" }, width: "100%" }, noLabel: { padding: theme.spacing(2, 1.5) } }), { name: "SingleSelectField" } ); interface SingleSelectFieldProps { choices: Array<{ value: string; label: string | React.ReactNode; }>; className?: string; disabled?: boolean; error?: boolean; hint?: string; label?: string; name?: string; selectProps?: SelectProps; placeholder?: string; value?: string; InputProps?: InputProps; onChange(event: any); } export const SingleSelectField: React.FC = props => { const { className, disabled, error, label, choices, value, onChange, name, hint, selectProps, placeholder, InputProps } = props; const classes = useStyles(props); const choicesByKey: { [key: string]: string } = choices === undefined ? {} : choices.reduce((prev, curr) => { prev[curr.value] = curr.label; return prev; }, {}); return ( {label} {hint && {hint}} ); }; SingleSelectField.displayName = "SingleSelectField"; export default SingleSelectField;