Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: write "Basic configuration options" #402

Merged
merged 6 commits into from
Jan 26, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 50 additions & 12 deletions packages/website/docs/basic-options.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,56 @@ id: basic-options
title: Basic configuration options
---

:::note Draft
Everything you need to create fantastic autocomplete experiences.

This page needs to cover:
We've built Autocomplete to give you unlimited flexibility while freeing you from having to think about things like keyboard navigation, accessibility, or UI state. **The library offers a wide variety of APIs to let you fully customize the behavior and rendering of your autocomplete.**

- There are only two required params to create an autocomplete:
- You need to provide a selector for the **container** you want autocomplete to appear in.
- You need to define where to get the items to display using **getSources** (or a **plug-in** which provides **getSources**). Check our **Sources** core concept for more information.
- Beyond this, there are many parameters you can use to customize the experience and help you with development. Here are some commonly used ones:
- Use **placeholder** to define the text that appears in the input when a user hasn’t typed anything.
- Use **autoFocus** to focus on the search box when the page is loaded and **openOnFocus** to display items as soon as a user selects the autocomplete (without typing anything).
- Use the **onStateChange** hook to call a function whenever the state changes (see our **State** core concept for more info).
- Use **`debug: true`** to keep the autocomplete panel with items open, even when the blur event occurs. (This is only meant to be used during development. See our **Debugging guide** for more info.)
- Check out the **API reference** for a full list of params.
Yet, only two parameters are required to create an autocomplete:
- The **container** you want your autocomplete to go in.
- The **sources** from which to get the items to display (see more in [**Sources**](sources)).

:::
```js title="JavaScript"
import { autocomplete } from '@algolia/autocomplete-js';

autocomplete({
container: '#autocomplete',
getSources() {
sarahdayan marked this conversation as resolved.
Show resolved Hide resolved
return [
{
getItems({ query }) {
return [
{ label: 'Twitter', url: 'https://twitter.com' },
{ label: 'GitHub', url: 'https://github.com' },
].filter(({ label }) =>
label.toLowerCase().includes(query.toLowerCase())
);
sarahdayan marked this conversation as resolved.
Show resolved Hide resolved
},
getItemUrl({ item }) {
return item.url;
},
sarahdayan marked this conversation as resolved.
Show resolved Hide resolved
templates: {
item({ item }) {
return item.label;
},
},
},
];
},
});
```

The `container` options refers to where to inject the autocomplete in your HTML. It can be a [CSS selector](https://developer.mozilla.org/docs/Web/CSS/CSS_Selectors) or an [Element](https://developer.mozilla.org/docs/Web/API/HTMLElement). Make sure to provide a container (e.g., a `div`), not an `input`. Autocomplete generates a fully accessible search box for you.

```html title="HTML"
<div id="autocomplete"></div>
```

This is all you need to build a [fully functional, accessible, keyboard-navigable autocomplete](https://codesandbox.io/s/vigilant-dew-g2ezl).

Now, this is a great start, but **you can go much further**. Here are some of the options you'll probably want to use next:
- Use [`placeholder`](autocomplete-js#placeholder) to define the text that appears in the input before the user types anything.
- Use [`autoFocus`](autocomplete-js#autofocus) to focus on the search box on page load, and [`openOnFocus`](autocomplete-js#openonfocus) to display items as soon as a user selects the autocomplete, even without typing.
- Use the [`onStateChange`](autocomplete-js#onstatechange) lifecycle hook to execute code whenever the state changes.
- Use [`debug: true`](autocomplete-js#debug) to keep the autocomplete panel open even when the blur event occurs (see [**Debugging**](debugging)).

For a full list of all available parameters, check out the [API reference](autocomplete-js).