import { Avatar, MenuItem, Select, SelectChangeEvent, Typography, useMediaQuery, useTheme, } from "@mui/material"; import Box from "@mui/material/Box"; import { useCallback, useEffect, useRef, useState } from "react"; import "./CustomSelect.css"; import arrow_down from "../../assets/icons/arrow_down.svg"; type CustomSelectProps = { items: string[]; selectedItem: number | null; setSelectedItem: (num: number) => void; }; export const CustomSelect = ({ items, selectedItem, setSelectedItem, }: CustomSelectProps) => { const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down(600)); const [opened, setOpened] = useState(false); const [currentValue, setCurrentValue] = useState(null); const [placeholder, setPlaceholder] = useState(null); const ref = useRef(null); useEffect(() => { setCurrentValue(selectedItem !== null ? items[selectedItem] : null); setPlaceholder( selectedItem === null ? "Выберите ответственного за сделку" : null, ); }, [selectedItem, items]); const selectItem = useCallback( (event: SelectChangeEvent) => { setCurrentValue(items[Number(event.target.value)]); setSelectedItem(Number(event.target.value)); setPlaceholder(null); }, [items, setSelectedItem], ); const toggleOpened = useCallback(() => { setOpened((isOpened) => !isOpened); }, []); return ( ref.current?.click()} > {placeholder || currentValue} check ); };