import { useRef, useState } from 'react'; import PlacesAutocomplete, { Suggestion } from 'react-places-autocomplete'; type Opts = Parameters['0']; function SuggestionsList({ suggestions, getSuggestionItemProps, }: { suggestions: readonly Suggestion[]; getSuggestionItemProps: Opts['getSuggestionItemProps']; }) { return (
{suggestions.map((suggestion) => (
{suggestion.description}
))}
); } export default function UIPlacesAutocomplete({ onSelected, placeholder = 'Enter a location', disabled = false, }: { onSelected?: (address: string, placeID: string) => void; placeholder?: string; disabled?: boolean; }) { const [location, setLocation] = useState(''); const suggestionsRef = useRef([]); return ( { setLocation(location); if (onSelected) { onSelected(null!, null!); } }} onSelect={(address, placeID) => { setLocation(address); if (onSelected) { onSelected(address, placeID); } }} value={location} > {({ getInputProps, getSuggestionItemProps, suggestions, loading }) => { if (!loading) { suggestionsRef.current = suggestions; } return (
{suggestionsRef.current.length > 0 && ( )}
); }}
); }