frontend/app/DeliverableTypeSelector.tsx (47 lines of code) (raw):
import React, { ReactComponentElement, useState } from "react";
import { RouteComponentProps } from "react-router";
import { useHistory, useLocation } from "react-router-dom";
import Select from "@material-ui/core/Select";
import { MenuItem, ListSubheader } from "@material-ui/core";
import FormControl from "@material-ui/core/FormControl";
import FormHelperText from "@material-ui/core/FormHelperText";
interface DeliverableTypeSelectorProps {
content: DeliverableTypes;
value: number | null;
onChange: (newvalue: number) => void;
showTip: boolean;
}
const DeliverableTypeSelector: React.FC<DeliverableTypeSelectorProps> = (
props
) => {
const [deliverableType, setDeliverableType] = useState<number | null>(
props.value
);
const renderMenuGroups = (section: string) => {
const items = props.content[section].map((entry) => (
<MenuItem key={entry[0]} value={entry[0]} style={{ marginLeft: "20px" }}>
{entry[1]}
</MenuItem>
));
return [<ListSubheader>{section}</ListSubheader>, items];
};
return (
<FormControl>
<Select
value={deliverableType ?? ""}
onChange={(evt) => {
const type = parseInt(evt.target.value as string);
props.onChange(type);
setDeliverableType(type);
}}
>
{Object.keys(props.content).map((section_name) =>
renderMenuGroups(section_name)
)}
</Select>
{props.showTip ? (
<FormHelperText>Select a type to begin media ingest</FormHelperText>
) : (
""
)}
</FormControl>
);
};
export default DeliverableTypeSelector;