import React from 'react'; import { AddressAutofillOptions, AddressAutofillSuggestionResponse, AddressAutofillRetrieveResponse } from '@mapbox/search-js-core'; import { MapboxAddressAutofill, Theme, AddressConfirmOptions, PopoverOptions } from '@mapbox/search-js-web'; declare global { namespace JSX { interface IntrinsicElements { 'mapbox-address-autofill': any; } } } /** * Methods available on a `ref` when attached to the {@link AddressAutofill} component. * @typedef AddressAutofillRefType */ export interface AddressAutofillRefType { /** * @see {@link MapboxAddressAutofill#focus} */ focus: typeof MapboxAddressAutofill.prototype.focus; } /** * Props for the {@link AddressAutofill} component * @typedef AddressAutofillProps */ export interface AddressAutofillProps { /** * The [Mapbox access token](https://docs.mapbox.com/help/glossary/access-token/) to use for all requests. */ accessToken: string; /** * Options to pass to the underlying {@link AddressAutofillCore} interface. * @example * ```typescript * * ``` */ options?: Partial; /** * The {@link Theme} to use for styling the autofill and confirmation dialog * components. * @example * ```typescript * * ``` */ theme?: Theme; /** * The {@link PopoverOptions} to define popover positioning. * @example * ```typescript * * ``` */ popoverOptions?: Partial; /** * If true, forms autofilled by the browser will prompt the * {@link confirmAddress} dialog for user confirmation. * An {@link AddressConfirmOptions} object can also be passed * to prompt {@link confirmAddress} with custom options. * Defaults to false. * @example * ```typescript * * ['exact', 'high'].includes( * feature.properties.match_code.confidence * ) * }}> * ``` */ confirmOnBrowserAutofill?: boolean | AddressConfirmOptions; /** * Enables the browser's autocomplete popup to show during the first two typed characters while Mapbox results are suppressed. Defaults to false. * * **Note:** Due to varying specifications, efforts to suppress browser autocomplete behavior may not work on all browsers. */ browserAutofillEnabled?: boolean; /** * Children to render inside the autofill component. This **must** include * an [``](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/text) element * with either autocomplete type `"street-address"` or `"address-line1"`. */ children: React.ReactChild; /** * Callback for when the `` value changes. */ onChange?: (value: string) => void; /** * Fired when the user is typing in the input and provides a list of suggestions. * The underlying response from {@link AddressAutofillCore} is passed. */ onSuggest?: (res: AddressAutofillSuggestionResponse) => void; /** * Fired when {@link AddressAutofillCore} has errored providing a list of suggestions. * The underlying error is passed. */ onSuggestError?: (error: Error) => void; /** * Fired when the user has selected a suggestion, before the form is autofilled. * The underlying response from {@link AddressAutofillCore} is passed. */ onRetrieve?: (res: AddressAutofillRetrieveResponse) => void; /** * A callback providing the opportunity to validate and/or manipulate the input text before it triggers a search, for example by using a regular expression. * If a truthy string value is returned, it will be passed into the underlying search API. If `null`, `undefined` or empty string is returned, no search request will be performed. */ interceptSearch?: (value: string) => string; } /** * `` is a React component that wraps an address * [``](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/text) element with intelligent, location-aware autocomplete functionality. * * To use this element, you must have a [Mapbox access token](https://www.mapbox.com/help/create-api-access-token/). * * This component must be a descendant of a [`
`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form), and the form * must have inputs with proper HTML `autocomplete` attributes. If your application works with browser autofill, you may already have * this functionality. * - [The HTML autocomplete attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) * - [Autofill](https://web.dev/learn/forms/autofill/) * * @function AddressAutofill * @param {AddressAutofillProps} props * @example * ```typescript * export function Component() { * const [value, setValue] = React.useState(''); * * const handleChange = (e) => { * setValue(e.target.value); * }; * * return ( * * * * *
* ); * } * ``` */ export declare const AddressAutofill: React.ForwardRefExoticComponent>;