li-grid

Lightweight Vue 3 data grid with server-side filtering, sorting, pagination, column toggling and translations.
346
Install
npm install li-grid
Latest Version:0.2.0
Vue:3
License:Apache-2.0
Last Updated:Oct 9, 2026
Links: GitHub  ·  npm
Maintainer: denyskoronets

LiGrid

npm CI License

Lightweight Vue 3 data grid with server-side filtering, sorting, pagination, column toggling and translations.

๐Ÿ“– Documentation ยท ๐ŸŽฎ Live demo

LiGrid demo: users table with avatars, role badges, status indicators, links, tags and action buttons

Features

  • One async dataLoader works with any backend
  • Text, select, number range and date range filters
  • Sortable columns and pagination
  • Users can hide columns, and the choice is saved in localStorage
  • Light, dark and auto (OS-following) themes, customizable via CSS variables
  • Responsive: fits its container, with optional card layout on narrow screens
  • Sticky first/last columns
  • Custom cell and header slots
  • English and Ukrainian built in, or bring your own translation
  • TypeScript types included

Installation

npm install li-grid

Requires Vue 3.4+.

Quick start

<script setup lang="ts">
import {LiGrid} from "li-grid";
import type {GridConfig} from "li-grid";
import "li-grid/style.css";

const config: GridConfig = {
    columns: [
        {label: "ID", value: "id", sortable: "id"},
        {label: "Name", value: "name", sortable: "name"},
        {label: "Actions", slotName: "actions"},
    ],
    filters: [
        {label: "Name", inputName: "name", type: "text"},
    ],
    dataLoader: async (filters, sort, page) => {
        const response = await fetch("/api/users", {
            method: "POST",
            headers: {"Content-Type": "application/json"},
            body: JSON.stringify({filters, sort, page}),
        });

        return response.json(); // { rows: [...], pagination: {...} }
    },
};
</script>

<template>
    <li-grid :config="config">
        <template #actions="{ row }">
            <a :href="https://github.com/deniskoronets/li-grid/blob/HEAD/`/users/${row.id}`">Edit</a>
        </template>
    </li-grid>
</template>

Have all your data in memory already? Use the built-in helper:

import {wrapObjectArrayWithGrid} from "li-grid";

dataLoader: (filters, sort, page) => wrapObjectArrayWithGrid(filters, sort, page, rows)

See the documentation for columns, filters, translations, styling and the full API.

Development

npm install
npm test           # run tests
npm run build      # build the library into dist/
npm run docs:dev   # run the docs site locally

Our sponsors

Mobicard BusyB PC-Info LinkTrust

Author

Created and maintained by Denys Koronets.

Have a project? Hire me!

Need a custom data grid, a Vue 3 app, or help integrating LiGrid into your product? I'm open to freelance and contract work.

๐Ÿ‘‰ Get in touch via GitHub.

License

Apache License 2.0. Copyright ยฉ 2026 Denys Koronets.

If you redistribute this code, keep the LICENSE and NOTICE files, as the license requires.

Related Packages

gridvuejs

A reusable Vue 3 data grid component with filtering, sorting, grouping, and pagi...

0
@trapezium/vue

A data table for Vue 3 that looks right out of the box: zero-config columns, fil...

257 2
@querry-kit/nuxt-ui

Customizable Nuxt UI table components for Query Kit

3,466 0
@bhplugin/vue3-datatable

Vue3 Datatable - fully customizable & easy to use datatable library

236,629 193

Version History

Version Released Vue License
0.2.0 ^3.4.0 Apache-2.0
0.1.0 ^3.4.0 Apache-2.0