import * as React from "react"; import { FC, useCallback, useMemo, useRef, useState } from "react"; import { Avatar, MenuItem, Select, SelectChangeEvent, Typography, useMediaQuery, useTheme, Box } from "@mui/material"; import arrow_down from "@/assets/icons/arrow_down.svg"; import { MinifiedData } from "@/pages/IntegrationsPage/IntegrationsModal/Amo/types"; import { throttle } from "@frontend/kitui"; import { determineScrollBottom } from "@/utils/throttle"; type CustomSelectProps = { items: MinifiedData[] | []; selectedItemId: string | null; setSelectedItem: (value: string | null) => void; handleScroll: () => void; }; export const CustomSelect: FC = ({ items, selectedItemId, setSelectedItem, handleScroll }) => { const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down(600)); const ref = useRef(null); const [opened, setOpened] = useState(false); const toggleOpened = useCallback(() => { setOpened((isOpened) => !isOpened); }, []); const currentItem = useMemo(() => items.find((item) => item.id === selectedItemId) || null, [selectedItemId, items]); const menuItems = useMemo(() => { if (items.length !== 0) { return items.map((item) => ( {item.title} {item.subTitle} )); } return ( нет данных ); }, [items, selectedItemId]); return ( { if (ref.current !== null) ref.current?.click(); }} > {currentItem?.title || "Выберите ответственного за сделку"} check ); };