Download the PHP package inertify/table without Composer
On this page you can find all versions of the php package inertify/table. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package table
inertify/table
Headless table tooling for Laravel + Inertia + Vue with:
- Pagination
- Sorting
- Filtering
- Multi-table support on one page (query keys are table-scoped)
- No UI opinions (you render your own markup)
Install
If you publish config:
Optional Vue package build output:
Publish to Packagist
- Make sure your package name in
composer.jsonis final (already set toinertify/table). - Commit and push
mainto a public Git repository. -
Create a semantic version tag and push it:
- Sign in to Packagist, click Submit, and paste your repository URL.
- In repository settings (GitHub/GitLab), add Packagist webhook so updates happen automatically.
- After indexing, install with Composer:
Recommended release flow
- Merge changes to
main - Run tests (
composer test) - Tag release (
vX.Y.Z) - Push tag (
git push origin vX.Y.Z) - Verify package page on Packagist
Publish Vue package to npm (automated)
This repository includes GitHub Actions workflow at .github/workflows/publish-npm.yml.
It publishes @inertify/table-vue when you push a tag v*.
One-time setup
- In npm org
inertify, create a granular access token with publish permissions for@inertify/table-vueand 2FA bypass for automation. - In GitHub repo settings, add secret
NPM_TOKENwith that token value.
Release commands
The workflow validates that tag version matches package.json version, builds package, and publishes to npm.
Laravel API
Filter inference from column type
When filters([...]) receives a string key, the package infers the filter type from Column::type(...):
number/int/float/decimal=>Filter::numberRange(...)date/datetime/timestamp=>Filter::dateRange(...)boolean/bool=>Filter::exact(...)- everything else =>
Filter::partial(...)
Use explicit Filter::... entries in filters([...]) when you need custom behavior (for example Filter::select(...) with options or callback filters).
Inertia macro shortcut
The package registers a Inertia::tablePayload(...) macro:
Vue Headless API
Composables-first (recommended)
Each composable also supports inject fallback when used inside HeadlessTableProvider:
Provider/inject (optional)
Direct table API
Row selection
Use HeadlessTableSelection for renderless row-selection state and helpers:
Selection state is client-side and automatically clears when table meta is refreshed.
Column-based head/cell rendering
HeadlessTableHeads and HeadlessTableCells support slot overrides by:
- Column name:
column-{key}(example:column-created_at) - Column type:
type-{type}(example:type-date,type-number)
Precedence is: column-name slot → type slot → default slot.
Column type is resolved from column.meta.type first, then inferred from filter input (date-range => date, number-range => number).
Renderless components
HeadlessTable and HeadlessPagination expose slot props only, so you can build any UI design system.
Example app (shadcn-vue)
A complete usage example with Laravel + Inertia + shadcn-vue components is available in:
examples/laravel-vue-shadcn
Query format
For table name users, the default query keys are:
users_pageusers_per_pageusers_sort(nameor-name)users_filters[name]=...
Range filters use nested from / to values:
users_filters[age][from]=18users_filters[age][to]=65users_filters[created_at][from]=2026-01-01users_filters[created_at][to]=2026-01-31
Filter::numberRange(...) and Filter::dateRange(...) apply inclusive bounds (>= from, <= to).
Customize this in config/inertify-table.php.
All versions of table with dependencies
illuminate/database Version ^10.0|^11.0|^12.0
illuminate/http Version ^10.0|^11.0|^12.0
illuminate/support Version ^10.0|^11.0|^12.0
inertiajs/inertia-laravel Version ^2.0
spatie/laravel-query-builder Version ^7.0