Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/labd/react-loqate
React implementation of the Loqate API.
https://github.com/labd/react-loqate
address-search loqate react
Last synced: about 2 months ago
JSON representation
React implementation of the Loqate API.
- Host: GitHub
- URL: https://github.com/labd/react-loqate
- Owner: labd
- License: mit
- Created: 2020-10-15T15:39:44.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-04-30T12:32:04.000Z (8 months ago)
- Last Synced: 2024-05-01T09:49:13.926Z (8 months ago)
- Topics: address-search, loqate, react
- Language: TypeScript
- Homepage: https://github.com/labd/react-loqate
- Size: 983 KB
- Stars: 8
- Watchers: 8
- Forks: 12
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# 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](https://www.npmjs.com/package/whatwg-fetch).
### Installation
```bash
npm install react-loqate
```### Example
```javascript
import AddressSearch from 'react-loqate';
// to use the default styles for the default components
import 'react-loqate/dist/index.css';// ...
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](#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!**
```javascript
import React from 'react';
import AddressSearch from 'react-loqate';(
)),
ListItem: ({ suggestion, ...rest }) => (
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}`
),
}}
classes={{ Input: classes.input }}
/>;
```
### Errors
Two types of errors can be thrown, LoqateError and ReactLoqateError.
Loqate Errors are errors from the Loqate API. Their structure, causes and resolutions can be [found in the loqate docs](https://www.loqate.com/developers/api/generic-errors/).
Currently only one ReactLoqateError can be thrown. This error occurs when the Retrieve API returns an empty Items array after querying it with an existing ID.
It is on you as the implementing party to catch and handle these errors.
### Contributing
This codebases use [@changesets](https://github.com/changesets/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.