import { useId } from "react";
import {
FormControl,
ListSubheader,
MenuItem,
TextField,
ThemeProvider,
createTheme,
} from "@mui/material";
import { DropdownOptionsInterface } from "../../utils/start-end-rules/start-end-options";
const CustomFontTheme = createTheme({
typography: {
fontFamily: "Lato Regular",
},
});
interface DropdownProps {
label: string;
options: DropdownOptionsInterface[];
onChange: (
selectedOption: DropdownOptionsInterface,
rule: "start" | "end"
) => void;
selectedOption: DropdownOptionsInterface | undefined;
rule: "start" | "end";
disabled?: boolean;
}
export default function Dropdown({
label,
onChange,
options,
selectedOption,
rule,
disabled = false,
}: DropdownProps) {
const reactId = useId();
const fieldId = `${rule}-rule-${reactId.replace(/:/g, "")}`;
const optionsByAddon: {
[whoAmI: string]: DropdownOptionsInterface[];
} = {};
for (const option of options) {
const whoAmI = option[0];
if (optionsByAddon.hasOwnProperty(whoAmI)) {
optionsByAddon[whoAmI].push(option);
} else {
optionsByAddon[whoAmI] = [option];
}
}
const optionElements: JSX.Element[] = [];
for (const [whoAmI, addonOptions] of Object.entries(optionsByAddon)) {
if (whoAmI !== "default") {
optionElements.push(
{whoAmI}
);
}
for (const option of addonOptions) {
optionElements.push(
);
}
}
return (
onChange(
(event.target.value as unknown) as DropdownOptionsInterface,
rule
)
}
size="small"
disabled={disabled}
sx={{
"& .MuiInputBase-root": {
minHeight: "4.4rem",
},
}}
SelectProps={{
inputProps: {
"aria-label": label,
},
}}
>
{optionElements}
);
}