Lightweight typeahead / autocomplete component made with Svelte.js
- no dependencies
- can handle asynchronous data
- use plain lists or key / value pairs
Try the demo at http://svelte-autocomplete.surge.sh/
npm install svelte-autocomplete
Import the component directly in your Svelte project.
import AutoComplete from 'svelte-autocomplete'
export default {
components: {
AutoComplete,
...
}
}And then use it like so:
<AutoComplete class="input" name="fruits" items="{fruits}" minChar="1" />
<AutoComplete name="countries" items="{countries}" isAsync on:input="loadApiData(event)">
<div class="notification">Loading data from API...</div>
</AutoComplete>| Prop | Type | Default | Description |
|---|---|---|---|
| name | String | - | Form input name |
| class | String | - | Additional styles for input element |
| items | Array | - | Array with items, can be a plain list or key, value pairs |
| isAsync | Boolean | false | If retrieving API data asynchronously |
| minChar | Number | 2 | Min. characters to type before popup shows |
| maxItems | Number | 10 | Max. items to show in popup |
| fromStart | Boolean | true | Match from the start or anywhere in the string |
| Slot | Prop dependencies | Description |
|---|---|---|
| default | isAsync | custom loading indication |
It's made with Svelte, which means you don't need any JS framework. Just use the dist/index.js file in any Javascript project:
include the bundle:
<script src="svelte-autocomplete/dist/index.js"></script>create component like so:
const myComponent = new AutoComplete({
target: document.querySelector('#app'),
data: {
name: 'fruits',
itemStart: 1,
items: [...]
}
})