react-loqate
TypeScript icon, indicating that this package has built-in type declarations

2.0.2 • Public • Published

React-Loqate

This is a React implementation of the loqate APIs. It features an input, typing in which will result in a list of address options. Clicking an option will trigger your callback with that option.

Usage

Notes

You must polyfill fetch.

Installation

npm install react-loqate

Example

import AddressSearch from 'react-loqate';
// to use the default styles for the default components
import 'react-loqate/dist/index.css';

// ...
<AddressSearch
  locale="en-GB"
  apiKey="AA11-AA11-AA11-AA11"
  onSelect={(address) => console.log(address)}
/>;
// ...

Props

name type required example description
apiKey string yes "AA11-AA11-AA11-AA11" Loqate API key
locale string yes "en-GB" Language to be used
onSelect (address) => void yes address => console.log(address) Callback with for Loqate response
countries string[] no ["GB", "NL"] Countries to search in
limit number no 10 Number of options to show
classes { input?: string, list?: string, listItem?: string} no { list: 'list' } Classnames for the components
components see Customization no { Input: CustomInput, List: CustomList, ListItem: CustomListItem, } Components to overwrite the default ones
inline boolean no true Render results inline with the input
debounce number no 100 Debounce the calls to the Loqate API

Customization

You can either style the default input, list and listitem with their respective classes or replace them completely by passing in your own components in the components prop.

Custom Input and List components must forward a ref!

All custom components must pass down their props!

import React from 'react';
import AddressSearch from 'react-loqate';

<AddressSearch
  // ...
  components={{
    List: forwardRef(({ className, ...rest }, ref) => (
      <ul
        className={clsx('react-loqate-default-list', className)}
        ref={ref}
        // ...
        {...rest}
      />
    )),
    ListItem: ({ suggestion, ...rest }) => (
      <li
        onKeyDown={(e) => {
          if (e.key === 'ArrowDown') {
            e.preventDefault();
            const next = e.target.nextSibling;
            if (next) {
              next.focus();
            }
          }
          if (e.key === 'ArrowUp') {
            e.preventDefault();
            const previous = e.taget.previousSibling;
            if (previous) {
              previous.focus();
            }
          }
        }}
        {...rest}
      >
        `${suggestion.Text} ${suggestion.Description}`
      </li>
    ),
  }}
  classes={{ Input: classes.input }}
/>;

Contributing

This codebases use @changesets for release and version management

  • Create a feature branch with new features / fixes
  • When your code changes are complete, add a changeset file to your feature branch using pnpm changeset
  • Create a PR to request your changes to be merged to main
  • After your PR is merged, GitHub actions will create a release PR or add your changeset to an existing release PR
  • When the release is ready merge the release branch. A new version will automatically be released.

Readme

Keywords

Package Sidebar

Install

npm i react-loqate

Weekly Downloads

7,992

Version

2.0.2

License

MIT

Unpacked Size

68.7 kB

Total Files

11

Last publish

Collaborators

  • bramkaashoek