import {Autocomplete, TextField} from "@mui/material"; import {useRef, useState} from "react"; function AutocompleteStop(params) { const [options, setOptions] = useState([]) const previousController = useRef() function onInputChange(event, value) { if (!value) { setOptions([]) return } if (previousController.current) previousController.current.abort() const controller = new AbortController() const signal = controller.signal previousController.current = controller fetch("/api/gtfs/stop/?location_type=1&search=" + value, {signal}) .then(response => response.json()) .then(data => data.results) .then(setOptions) .catch() } return <> x} getOptionKey={option => option.id} getOptionLabel={option => option.name} groupBy={option => getOptionGroup(option)} isOptionEqualToValue={(option, value) => option.id === value.id} renderInput={(params) => } {...params} /> } function getOptionGroup(option) { switch (option.transport_type) { case "TGV": case "IC": case "TER": return "TGV/TER/Intercités" case "TN": return "Transilien" case "ES": return "Eurostar" case "TI": return "Trenitalia France" case "RENFE": return "RENFE" case "OBB": return "ÖBB" default: return option.transport_type } } export default AutocompleteStop;