Register VueList as a plugin in your Vue application:
main.js
import { createApp } from 'vue'import App from './App.vue'import VueList from '@7span/vue-list'const app = createApp(App)app.use(VueList, { requestHandler(context) { // Your API request logic here // See Configuration section below }})app.mount('#app')
The requestHandler receives a context object with all the list state and should return a Promise that resolves to an object with items and count:
app.use(VueList, { async requestHandler(context) { const { endpoint, // The endpoint name (e.g., "users", "products") page, // Current page number perPage, // Items per page search, // Search query sortBy, // Sort column sortOrder, // "asc" or "desc" filters, // Filter object meta, // Additional metadata passed from component isRefresh, // true if this is a refresh request version, // Version number for state management } = context // Make your API request const response = await axios.get(`/api/${endpoint}`, { params: { page, limit: perPage, search, sort_by: sortBy, sort_order: sortOrder, ...filters } }) // Return data in the required format return { items: response.data.items, // Array of items count: response.data.total // Total count for pagination } }})
import { createApp } from 'vue'import App from './App.vue'import router from './router'import VueList from '@7span/vue-list'import vueListOptions from './plugins/vue-list'const app = createApp(App)app.use(router)app.use(VueList, vueListOptions)app.mount('#app')