tranquil-tools / laravel-vue-table-builder
A VueJS/Inertia renderer for tranquil-tools/laravel-table-builder
Package info
github.com/ComfyCodersBV/laravel-vue-table-builder
Language:TypeScript
pkg:composer/tranquil-tools/laravel-vue-table-builder
Requires
- php: ^8.3
- illuminate/support: ^11.0||^12.0||^13.0
- tranquil-tools/laravel-table-builder: ^1.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-main
- 1.9.2
- 1.9.1
- 1.9.0
- 1.8.1
- 1.8.0
- 1.7.0
- 1.6.1
- 1.6.0
- 1.5.0
- 1.4.0
- 1.3.1
- 1.3.0
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.12
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.9
- 0.8
- 0.7
- 0.6
- 0.5
- 0.4
- 0.3
- 0.2
- 0.1
- dev-feature/test-hooks
- dev-fix/boolean-column-labels
- dev-fix/filter-url-query-params
This package is auto-updated.
Last update: 2026-10-14 14:52:34 UTC
README
A powerful and flexible table builder package for Laravel with Vue 3, Inertia.js, and shadcn-vue components.
CrudBuilder
Want a complete CRUD solution? Our CrudBuilder builds on top of this TableBuilder and the FormBuilder to give you full create, read, update, and delete flows without repetitive boilerplate.
- Docs: docs.comfycoders.nl/laravel-vue-crud-builder
- GitHub: github.com/ComfyCodersBV/laravel-vue-crud-builder
Installing the CrudBuilder pulls in this package automatically as a Composer dependency.
Installation
You can install the package via composer:
composer require tranquil-tools/laravel-vue-table-builder
Install the required npm packages:
npm install reka-ui @lucide/vue
Alter your vite.config.ts to add an @table-builder alias:
import {defineConfig} from 'vite'; import path from 'path'; export default defineConfig({ plugins: [ // ... ], resolve: { alias: { // Add this: '@table-builder': path.resolve(__dirname, 'vendor/tranquil-tools/laravel-vue-table-builder/resources/js'), }, }, });
You can publish the config file with:
php artisan vendor:publish --tag="table-builder-config"
The config ships with tranquil-tools/laravel-table-builder. An application that published config/vue-table-builder.php before 1.9 keeps working; rename the file when convenient.
Usage
Backend (Laravel)
Create a table class:
use App\Models\User; use Illuminate\Database\Eloquent\Builder; use TranquilTools\TableBuilder\AbstractTable; use TranquilTools\TableBuilder\TableBuilder; class UsersTable extends AbstractTable { public function for(): Builder { return User::query(); } public function configure(TableBuilder $table) { $table ->defaultSort('name') ->withGlobalSearch(columns: ['name', 'email']) ->column('id', 'ID') ->column('name', 'Name', sortable: true) ->column('email', 'Email', sortable: true) ->column('created_at', 'Created', sortable: true) ->paginate(25); } }
In your controller:
use Inertia\Inertia; public function index() { return Inertia::render('Users/Index', [ 'table' => \App\Tables\UsersTable::build(), ]); }
Frontend (Vue)
Import the TableBuilder component:
<script setup lang="ts"> import {TableBuilder} from '@/components' import type {TableData} from '@/types/table-builder' defineProps<{ table: TableData }>() </script> <template> <div> <h1>Users</h1> <TableBuilder :table="table"/> </div> </template>
Features
- 🎨 Beautiful UI with shadcn-vue table components
- 🔍 Sortable columns with visual indicators
- 📄 Pagination with Inertia.js optimization
- 🎯 Nested relationship support (e.g.,
user.company.name) - 🚀 Built with TypeScript for type safety
- ⚡ Optimized navigation with preserve-state and preserve-scroll
- 🔌 Optional HTTP transport to drive a table from an API instead of the Inertia page
- 🧩 Scoped slots for cells, row actions and extra toolbar controls
- ↕️ Drag-reorderable rows, per-row classes, a
row-clickevent and arow-afterslot for nested rows - 🔘 Row actions defined in the Table class, hidden or disabled per row
- 💾 Server-side reorder persistence on an order column
- 📅 Date and date range filters, configurable query keys and empty states
- 📱 Fully responsive design
Changelog
Please see CHANGELOG for more information on what has changed recently.
Credits
License
The MIT License (MIT). Please see License File for more information.