import * as React from 'react'; import { styled } from '@mui/material/styles'; import Button from '@mui/material/Button'; import List from '@mui/material/List'; import ListItemButton from '@mui/material/ListItemButton'; import MuiListItemText from '@mui/material/ListItemText'; import Paper from '@mui/material/Paper'; import Collapse from '@mui/material/Collapse'; import Typography from '@mui/material/Typography'; import ExpandLess from '@mui/icons-material/ExpandLess'; import ExpandMore from '@mui/icons-material/ExpandMore'; import type { IStep } from '@automatisch/types'; const ListItemText = styled(MuiListItemText)``; type SuggestionsProps = { data: any[]; onSuggestionClick: (variable: any) => void; }; const SHORT_LIST_LENGTH = 4; const LIST_HEIGHT = 256; const getPartialArray = (array: any[], length = array.length) => { return array.slice(0, length); }; const Suggestions = (props: SuggestionsProps) => { const { data, onSuggestionClick = () => null } = props; const [current, setCurrent] = React.useState(0); const [listLength, setListLength] = React.useState(SHORT_LIST_LENGTH); const expandList = () => { setListLength(Infinity); }; const collapseList = () => { setListLength(SHORT_LIST_LENGTH); }; React.useEffect(() => { setListLength(SHORT_LIST_LENGTH); }, [current]); return ( Variables {data.map((option: IStep, index: number) => ( <> setCurrent((currentIndex) => currentIndex === index ? null : index ) } sx={{ py: 0.5 }} > {!!option.output?.length && (current === index ? : )} {getPartialArray((option.output as any) || [], listLength).map( (suboption: any, index: number) => ( onSuggestionClick(suboption)} data-test="power-input-suggestion-item" key={`suggestion-${suboption.name}`} > ) )} {(option.output?.length || 0) > listLength && ( )} {listLength === Infinity && ( )} ))} ); }; export default Suggestions;