Infer JavaScript SDK

Adresautocomplete in elk HTML-invoerveld, zonder framework.

@pro6pp/infer-js0.1.0-beta.32MIT-licentie

attach

TypeScript
function attach(target: string | HTMLElement, config: InferJSConfig): InferJS

A helper to initialize the Pro6PP Infer SDK on a target element.

target string | HTMLElementA CSS selector string or HTMLElement.
config InferJSConfigConfiguration for the SDK.
RetourneertAn instance of InferJS.

ConfigInferJSConfig

Uit InferConfig in @pro6pp/infer-core

The country to perform address lookups in.

authKeystringAPI-parameter

Your Pro6PP Authorization Key. Optional if using a proxy.

limitnumberAPI-parameter

Number of suggestions to request per batch, at most 1000. 0 uses the default.

Standaard
20

Language code for response labels. Affects the language of returned address labels. Only applicable for BE country code.

Sort mixed address and place suggestions by relevance or distance. Distance sorting requires the Infer Extended (infer::location) capability. It measures from lat and lng when provided, otherwise from the approximate location of the request IP, and sorts by relevance when neither is available.

Standaard
'relevance'
latnumberAPI-parameter

Latitude of the origin used for distance sorting, sent only when sort is 'distance'. When provided, lng must also be provided.

lngnumberAPI-parameter

Longitude of the origin used for distance sorting, sent only when sort is 'distance'. When provided, lat must also be provided.

Suggestion types to request. Omit this to preserve the address-only default.

apiUrlstring

If provided, this URL is used as the API endpoint. The query params are appended, including country in lowercase.

  • If not provided, the SDK defaults to 'https://api.pro6pp.nl/v2/infer/{country}'.
fetcherFetcher

Custom fetch implementation for network requests.

Standaard
globalThis.fetch
debounceMsnumber

The delay in milliseconds before performing the API search. Note: A lower bound of 50ms is enforced to protect API stability.

Standaard
150
maxRetriesnumber

Maximum number of retry attempts after a network error or a 5xx or 429 response. Valid range: 0 to 10.

Standaard
0
onStateChange(state: InferState) => void

Callback triggered whenever the internal state (suggestions, loading status, etc.) updates.

onSelect(selection: AddressValue | string | null) => void

Callback triggered when an address selection completes or is cleared. Receives the AddressValue of the selected address, or its label as a string when the selection has no structured value. Receives null when the user edits a completed selection or selects a place after a structured address. Partial selections, such as a city or street, do not trigger it.

onPlaceSelect(selection: PlaceValue | null) => void

Callback triggered when a point of interest is selected, or with null when the user edits the selected place or selects an address instead.

Uit InferJSConfig in @pro6pp/infer-js
style'default' | 'none'

The styling theme to apply.

  • default: Injects the standard Pro6PP CSS theme.
  • none: Does not inject the default theme, allowing for custom CSS. The SDK still shows and hides elements with inline display styles, and a theme injected by an instance with default stays in the document.
Standaard
'default'
placeholderstring

Custom placeholder text for the input field.

inputClassstring

Additional CSS classes to add to the input element.

noResultsTextstring

The text to display when no suggestions are found.

Standaard
'No results found'
loadingTextstring

The text to show on the bottom loading indicator.

Standaard
'Loading more...'
searchingTextstring

Text displayed while the initial search is pending. Defaults to Searching....

clearInputLabelstring

Accessible name for the clear button. Defaults to Clear input.

showClearButtonboolean

If true, shows a clear button when the input is not empty.

Standaard
true

InstantieInferJS, geretourneerd door attach

new InferJS(target, config)

Initializes the Infer logic on a target element.

target string | HTMLElementEither a CSS selector string or a direct HTMLElement.
config InferJSConfigConfiguration options for the API and UI.
valueAddressValue | nullget, set

Retrieves the current selected address value if available.

Programmatically sets the address value.

placePlaceValue | nullalleen lezen

Retrieves the current selected place value if available.

setPlace(place)→ void

Programmatically selects a place value.

destroy()→ void

Destroys the InferJS instance, removing its event listeners and added elements and clearing the input value. An input created by the SDK is removed. An existing input keeps the attributes and inputClass classes the SDK added, and the injected theme stays in the document. Attaching to the same element again destroys the previous instance automatically.

CSS-classes

18 classes
ClassOmschrijving
.pro6pp-wrapperThe container element wrapping the input and dropdown.
.pro6pp-inputThe input element itself.
.pro6pp-input-addonsThe container for the controls inside the input, such as the clear button.
.pro6pp-clear-buttonThe button that clears the input.
.pro6pp-dropdownThe panel containing the suggestion list and the loader.
.pro6pp-listThe <ul> list containing the suggestions.
.pro6pp-itemA single suggestion item (<li>).
.pro6pp-item--activeThe currently highlighted item (for keyboard navigation).
.pro6pp-item__labelThe main text/label of a suggestion.
.pro6pp-item--placeAn item for a point of interest rather than an address.
.pro6pp-item__label--matchThe part of a label that matches the query.
.pro6pp-item--fuzzyAn item for a close match rather than an exact one.
.pro6pp-item__label--unmatchedThe rest of the label.
.pro6pp-item__subtitleThe secondary text (e.g., city or result count).
.pro6pp-item__chevronThe icon indicating a folder/expandable result.
.pro6pp-no-resultsThe message shown while searching or when no suggestions are found.
.pro6pp-loader-itemThe element containing the loading spinner and text.
.pro6pp-mini-spinnerThe spinner icon inside the loader item.

Ook geëxporteerd

Opnieuw geëxporteerd uit @pro6pp/infer-core.

INFER_PLACES_COUNTRIESreadonly ["NL", "BE", "DE", "FR", "AT", "ES", "DK", "LU", "IT"]

Countries currently supported by the Infer API for place suggestions.

supportsInferPlaces(country)→ boolean

Returns whether the Infer API supports place suggestions for a country. Country codes are compared case-insensitively after trimming whitespace.

country string

Types

InferJSConfiginterface

Configuration options for the JS Infer SDK.

authKeystring

Your Pro6PP Authorization Key. Optional if using a proxy.

countryCountryCodeVereist

The country to perform address lookups in.

apiUrlstring

If provided, this URL is used as the API endpoint. The query params are appended, including country in lowercase.

  • If not provided, the SDK defaults to 'https://api.pro6pp.nl/v2/infer/{country}'.
fetcherFetcher

Custom fetch implementation for network requests.

Standaard
globalThis.fetch
limitnumber

Number of suggestions to request per batch, at most 1000. 0 uses the default.

Standaard
20
debounceMsnumber

The delay in milliseconds before performing the API search. Note: A lower bound of 50ms is enforced to protect API stability.

Standaard
150
maxRetriesnumber

Maximum number of retry attempts after a network error or a 5xx or 429 response. Valid range: 0 to 10.

Standaard
0
languageLanguageCode

Language code for response labels. Affects the language of returned address labels. Only applicable for BE country code.

Sort mixed address and place suggestions by relevance or distance. Distance sorting requires the Infer Extended (infer::location) capability. It measures from lat and lng when provided, otherwise from the approximate location of the request IP, and sorts by relevance when neither is available.

Standaard
'relevance'
latnumber

Latitude of the origin used for distance sorting, sent only when sort is 'distance'. When provided, lng must also be provided.

lngnumber

Longitude of the origin used for distance sorting, sent only when sort is 'distance'. When provided, lat must also be provided.

Suggestion types to request. Omit this to preserve the address-only default.

onStateChange(state: InferState) => void

Callback triggered whenever the internal state (suggestions, loading status, etc.) updates.

onSelect(selection: AddressValue | string | null) => void

Callback triggered when an address selection completes or is cleared. Receives the AddressValue of the selected address, or its label as a string when the selection has no structured value. Receives null when the user edits a completed selection or selects a place after a structured address. Partial selections, such as a city or street, do not trigger it.

onPlaceSelect(selection: PlaceValue | null) => void

Callback triggered when a point of interest is selected, or with null when the user edits the selected place or selects an address instead.

style'default' | 'none'

The styling theme to apply.

  • default: Injects the standard Pro6PP CSS theme.
  • none: Does not inject the default theme, allowing for custom CSS. The SDK still shows and hides elements with inline display styles, and a theme injected by an instance with default stays in the document.
Standaard
'default'
placeholderstring

Custom placeholder text for the input field.

inputClassstring

Additional CSS classes to add to the input element.

noResultsTextstring

The text to display when no suggestions are found.

Standaard
'No results found'
loadingTextstring

The text to show on the bottom loading indicator.

Standaard
'Loading more...'
searchingTextstring

Text displayed while the initial search is pending. Defaults to Searching....

clearInputLabelstring

Accessible name for the clear button. Defaults to Clear input.

showClearButtonboolean

If true, shows a clear button when the input is not empty.

Standaard
true
AddressSuggestioninterface

A regular address or partial-address suggestion.

labelstringVereist

The text to display in the UI (e.g. "Main Street").

subtitlestring | null

Secondary information (e.g. city name when suggesting a street).

countnumber | string

Number of underlying results found for this suggestion.

exactboolean

False for close (fuzzy) matches that top up the exact matches.

matched_valuestring | null

The lowercase name the fuzzy pass matched, for close matches.

diff_positionsnumber[] | null

0-based query positions that differ from the match, for close matches.

valueAddressValue | string

The actual address data, when this result completes an address.

type'address'

Address suggestions may omit this field, as in existing API responses.

AddressValueinterface

The standardized address object returned upon a successful final selection.

streetstringVereist

The name of the street.

citystringVereist

The name of the city/locality.

latnumber | null

Latitude of the address location.

lngnumber | null

Longitude of the address location.

street_numberstring | number

The street number.

postcodestring

The postal code.

additionstring | null

The street number addition or suffix.

[key: string]unknown

Allow for extra fields if API expands.

CountryCodetype

Supported ISO 3166-1 alpha-2 country codes.

TypeScript
type CountryCode = 'NL'
  | 'DE'
  | 'BE'
  | 'AT'
  | 'DK'
  | 'CH'
  | 'LU'
  | 'FR'
  | 'ES'
  | 'GB'
  | 'IT'
  | (string & {});
Fetchertype

Custom fetch implementation, compatible with the Web Fetch API.

Custom fetch implementation, compatible with the Web Fetch API. Useful for Node.js environments or proxying requests.

TypeScript
type Fetcher = (input: RequestInfo
  | URL, init?: RequestInit) => Promise<Response>;
InferConfiginterface

Configuration options for the Infer engine.

authKeystring

Your Pro6PP Authorization Key. Optional if using a proxy.

countryCountryCodeVereist

The country to perform address lookups in.

apiUrlstring

If provided, this URL is used as the API endpoint. The query params are appended, including country in lowercase.

  • If not provided, the SDK defaults to 'https://api.pro6pp.nl/v2/infer/{country}'.
fetcherFetcher

Custom fetch implementation for network requests.

Standaard
globalThis.fetch
limitnumber

Number of suggestions to request per batch, at most 1000. 0 uses the default.

Standaard
20
debounceMsnumber

The delay in milliseconds before performing the API search. Note: A lower bound of 50ms is enforced to protect API stability.

Standaard
150
maxRetriesnumber

Maximum number of retry attempts after a network error or a 5xx or 429 response. Valid range: 0 to 10.

Standaard
0
languageLanguageCode

Language code for response labels. Affects the language of returned address labels. Only applicable for BE country code.

Sort mixed address and place suggestions by relevance or distance. Distance sorting requires the Infer Extended (infer::location) capability. It measures from lat and lng when provided, otherwise from the approximate location of the request IP, and sorts by relevance when neither is available.

Standaard
'relevance'
latnumber

Latitude of the origin used for distance sorting, sent only when sort is 'distance'. When provided, lng must also be provided.

lngnumber

Longitude of the origin used for distance sorting, sent only when sort is 'distance'. When provided, lat must also be provided.

Suggestion types to request. Omit this to preserve the address-only default.

onStateChange(state: InferState) => void

Callback triggered whenever the internal state (suggestions, loading status, etc.) updates.

onSelect(selection: AddressValue | string | null) => void

Callback triggered when an address selection completes or is cleared. Receives the AddressValue of the selected address, or its label as a string when the selection has no structured value. Receives null when the user edits a completed selection or selects a place after a structured address. Partial selections, such as a city or street, do not trigger it.

onPlaceSelect(selection: PlaceValue | null) => void

Callback triggered when a point of interest is selected, or with null when the user edits the selected place or selects an address instead.

InferPlacesCountryCodetype
TypeScript
type InferPlacesCountryCode = (typeof INFER_PLACES_COUNTRIES)[number];
InferResulttype

A single item in the suggestion list.

TypeScript
type InferResult = AddressSuggestion
  | PlaceSuggestion;
InferStateinterface

The complete UI state managed by InferCore.

querystringVereist

The current text value of the search input.

stageStage | nullVereist

The current logical stage of the address lookup.

citiesInferResult[]Vereist

List of city suggestions (used in mixed stage).

streetsInferResult[]Vereist

List of street suggestions (used in mixed stage).

suggestionsInferResult[]Vereist

General list of suggestions for the current stage.

placesPlaceSuggestion[]Vereist

Place suggestions: the separate places list of the API response, or otherwise the place suggestions in suggestions.

isValidbooleanVereist

Flag indicating if the current selection is complete and valid.

valueAddressValue | nullVereist

The selected address value, otherwise null (places use selectedPlace).

selectedPlacePlaceValue | nullVereist

The selected place object, otherwise null.

isErrorbooleanVereist

Flag indicating if the last API request failed.

isLoadingbooleanVereist

Flag indicating if a network request is currently in progress.

hasMorebooleanVereist

Flag indicating if more results are available to load.

selectedSuggestionIndexnumberVereist

The index of the currently highlighted suggestion.

  • 0 to n: An item is highlighted via keyboard navigation.
  • -1: No item is highlighted.
InferTypestype

The kinds of suggestions requested from the Infer API.

The kinds of suggestions requested from the Infer API.

When omitted, the API keeps its address-only default.

TypeScript
type InferTypes = 'address'
  | 'place'
  | 'address,place';
LanguageCodetype

Supported language codes for address labels.

TypeScript
type LanguageCode = 'nl'
  | 'fr'
  | 'de'
  | (string & {});
PlaceSuggestioninterface

A suggestion that represents a point of interest rather than an address.

labelstringVereist

The text to display in the UI (e.g. "Main Street").

subtitlestring | null

Secondary information (e.g. city name when suggesting a street).

countnumber | string

Number of underlying results found for this suggestion.

exactboolean

False for close (fuzzy) matches that top up the exact matches.

matched_valuestring | null

The lowercase name the fuzzy pass matched, for close matches.

diff_positionsnumber[] | null

0-based query positions that differ from the match, for close matches.

type'place'Vereist

Marks the suggestion as a point of interest.

valuePlaceValueVereist

The place data.

PlaceValueinterface

A point of interest returned by the Infer API.

place_idstringVereist

Stable identifier of the place in the source dataset.

namestringVereist

Display name of the place.

categorystringVereist

Primary place category.

formatted_addressstring | nullVereist

Human-readable address, when available.

streetstring | nullVereist

Street name, when available.

street_numbernumber | nullVereist

Street number, when available.

additionstring | nullVereist

Street number addition, when available.

postcodestring | nullVereist

Postal code, when available.

citystring | nullVereist

City name, when available.

latnumberVereist

Latitude of the place.

lngnumberVereist

Longitude of the place.

SortOrdertype

The ordering applied to mixed address and place suggestions.

TypeScript
type SortOrder = 'relevance'
  | 'distance';
Stagetype

The current step in the address inference process.

The current step in the address inference process.

  • empty: No input yet.
  • mixed: User is prompted to choose between cities and streets.
  • place: User is selecting a point of interest.
  • street: User is selecting a street.
  • city: User is selecting a city.
  • postcode: User is entering a postcode.
  • street_number: User is entering a street number.
  • street_number_first: Specialized mode where number is entered before street.
  • addition: Selecting a street number addition (e.g., 'A', 'III').
  • direct: Direct address hit (often via postcode).
  • final: A complete, valid address has been identified.
TypeScript
type Stage = 'empty'
  | 'mixed'
  | 'place'
  | 'street'
  | 'city'
  | 'postcode'
  | 'street_number'
  | 'street_number_first'
  | 'addition'
  | 'direct'
  | 'final';