## vue-dynamic-list

> Simple fixed size dynamically loading lists in Vue.js

This library allows you to create Google Contacts style dynamic lists, it is built upon Vue.js hence is easy to integrate into existing websites with or without Vue.

- [GitLab repository](https://gitlab.insrt.uk/insert/vue-dynamic-list)
- [NPM package](https://www.npmjs.com/package/vue-dynamic-list)
- [unpkg CDN link](https://unpkg.com/vue-dynamic-list@1.0.1/index.js)

### Usage
---

Include the library:
```html
<script src="https://unpkg.com/vue-dynamic-list@1.0.1/index.js"></script>
```

In your Vue.js application:
```html
<dynamic-list ref="myList">
	<template slot="entry" slot-scope="props">
		<div>{{props.entry}}</div>
	</template>
	<template slot="unloaded" slot-scope="props">
		<span>loading!</span>
	</template>
</dynamic-list>
```

Using the library:
```js
// create your Vue app, with dynamic-list nested in it
const app = new Vue({
	el: '#app'
});

new vDynamicList(app, {
	// reference to the <dynamic-list>
	ref: 'myList',
	// returns a promise which resolves with a section
	onLoad: (i, l) => {
		return new Promise((resolve, reject) => {
			let y = [];
			for (let j = 0; j < l; j++) y.push('hello!')
			setTimeout(() => resolve(y), 400);
		});
	},
	// you should load this first, and then create vDynamicList
	elements: 1400,
	// choose a suitable limit for each section
	limit: 100
});
```

### Comparison
---

> Vue Dynamic List on the left alongside Google Contacts

![Comparison between Google Contacts and Vue Dynamic List](https://owo.insrt.uk/500a5b64.png)

### Demo
---
![Demo Video](https://owo.insrt.uk/b9d1435e.mp4)

> Not embedding? [(Direct Link)](https://owo.insrt.uk/b9d1435e.mp4)