This example demonstrates how to configure the Places (New) Autocomplete Svelte component to keep the selected address visible in the input field after a suggestion is chosen. It utilizes the options.clear_input = false setting.
Copy and paste the following code into your Svelte application and replace ___YOUR_API_KEY___ with your actual API key to start using the Places Autocomplete Svelte component.
<script>
import { PlaceAutocomplete } from 'places-autocomplete-svelte';
import type {
PlaceResult,
ComponentOptions,
RequestParams
} from 'places-autocomplete-svelte/interfaces';
// Get API Key securely (e.g., from environment variables)
const PUBLIC_GOOGLE_MAPS_API_KEY = import.meta.env.VITE_PUBLIC_GOOGLE_MAPS_API_KEY;
let fullResponse: PlaceResult | null = $state(null);
let placesError = $state('');
// --- Event Handlers ---
const handleResponse = (response: PlaceResult) => {
console.log('Place Selected:', response);
fullResponse = response;
placesError = ''; // Clear previous errors
};
const handleError = (error: string) => {
console.error('Places Autocomplete Error:', error);
placesError = error;
fullResponse = null; // Clear previous results
};
// --- Configuration (Optional) ---
// Control API request parameters
const requestParams: Partial<RequestParams> = $state({
region: 'GB', // Example: Bias results to Great Britain
language: 'en-GB',
includedRegionCodes: ['GB'], // Example: Only show results in the specified regions,
origin: {
lat: 53.76538654312942,
lng: -3.0181503295898438
}, // Example: Bias results to a specific location
});
// Control which data fields are fetched for Place Details (affects cost!)
const fetchFields: string[] = $state(['formattedAddress', 'addressComponents']);
// Control component appearance and behavior
const options: Partial<ComponentOptions> = $state({
placeholder: 'Start typing your address',
distance: true,
distance_units: 'km',
clear_input: false, // Retain input value after selection
});
</script>
{#if placesError}
<div class="error-message" role="alert">
Error: {placesError}
</div>
{/if}
<PlaceAutocomplete
{PUBLIC_GOOGLE_MAPS_API_KEY}
{requestParams}
{fetchFields}
{options}
onResponse={handleResponse}
onError={handleError}
/>
{#if fullResponse}
<h2>Selected Place Details:</h2>
<pre>{JSON.stringify(fullResponse, null, 2)}</pre>
{/if}