PHPackages                             joe.szeto/tablelite - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. joe.szeto/tablelite

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

joe.szeto/tablelite
===================

filament like table lite

v3.0.14(9mo ago)04.9k↓50%1[1 PRs](https://github.com/joeszetocodeman/tablelite/pulls)Blade

Since Jun 13Pushed 9mo ago1 watchersCompare

[ Source](https://github.com/joeszetocodeman/tablelite)[ Packagist](https://packagist.org/packages/joe.szeto/tablelite)[ RSS](/packages/joeszeto-tablelite/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (2)Versions (47)Used By (0)

### This package is in development stage, please do not use it in production

[](#this-package-is-in-development-stage-please-do-not-use-it-in-production)

### install

[](#install)

```
composer require joe.szeto/tablelite
```

update your `app.php` file to include the service provider

```
\Tablelite\TablesliteServiceProvider::class
```

### Usage

[](#usage)

```
use Tablelite\Table as TableAlias;

class SomeComponent extends Component  {
    use \Tablelite\InteractsWithTablelite;

    public function table( TableAlias $table ){
        $table->schema([
            TextColumn::make('id'),
            TextColumn::make('name'),
        ])->records([
            [ 'id' => 1, 'name' => 'John'],
            [ 'id' => 2, 'name' => 'Doe'],
        ]);
    }
}
```

in view

```

    {{ $this->getTable() }}

```

#### KeyBy

[](#keyby)

if `id` not found in the records, you can use the `keyBy` method to specify the key

```
$table->keyBy('some_key');
```

#### Selecteable

[](#selecteable)

if you want to make the table selectable, you can use the `selectable` method

```
$table->selectable();
```

disable the select all checkbox

```
$table->selectable(false);
```

if you only want to make some of the records not selectable, you can use the `selectableRecord` method in the records closure

```
$table->selectableRecord(fn($record) => $record->slug === 'foo');
```

#### Searchable

[](#searchable)

if you want to make the Column searchable, you can use the `searchable` method

```
$table->schema(fn(ColumnBuilder $builder) => [
    $builder->text('code')->searchable(),
]);
```

and then you can use the keyword in records closure

```
->records(
    fn($keyword) => // do something with this keyword
)
```

#### Sortable

[](#sortable)

if you want to make the Column sortable, you can use the `sortable` method

```
$table->schema(fn(ColumnBuilder $builder) => [
    $builder->text('code')->sortable(),
]);
```

and then you can use the sort in records closure

```
->records(
    fn($sort) => // do something with this keyword
)
```

it will return an array with the key `column` and `direction`eg. `['code' => 'asc' ]`

#### Actions

[](#actions)

```
 $table->schema([
    TextColumn::make('id'),
    TextColumn::make('name'),
])
    ->records([
        ['id' => 1, 'name' => 'John'],
        ['id' => 2, 'name' => 'Doe'],
    ])->actions(fn(ActionFactory $actionFactory) => [
        $actionFactory->make('some_action')
            ->label('Action Label')
            ->action(function ($record) {
                // do something here
             })
    ]);
```

Text style action button

```
$actionFactory->make('some_action')->text()
```

if you want to make the whole row clickable you can use the `detail` method in action factory

```
$actionFactory->detail('some_action')->url()
```

#### Disable action

[](#disable-action)

```
$action->disabled()
// or
$action->disabled(function($record) : bool {} )
```

#### header actions

[](#header-actions)

```
 ->headerActions(fn(ActionFactory $actionFactory) => [
    $actionFactory->make('assign')
        ->label('Assign Coupon')
        ->slideover('some-livewire-component', [
            // params for the livewire component...
        ])
])
```

#### Slide Over

[](#slide-over)

use `IsSlideOver` in your livewire component when we want to do something when slide over open, we can use the `onSlideOver` method

```
$this->onSlideOver(
    'someMethod',
    loading: true,
    loadingPattern: 'cccb|accc'
)
```

#### pagination

[](#pagination)

```
$table->schema([
    TextColumn::make('id'),
    TextColumn::make('name'),
])
    ->records(
        function ($page) {
            // fetch api here
        }
    )
    ->paginateUsing(
        function ($records, PaginatorBuilder $builder) {
            // records is the response of the fetching
            return $builder
                ->items($records['data']) // the items
                ->total($records['total']) // total items
                ->perPage($records['per_page'])
                ->currentPage($records['current_page']);
        }
    );
```

### Development in local

[](#development-in-local)

#### clone the repository to your local machine

[](#clone-the-repository-to-your-local-machine)

#### add this to your composer.json file

[](#add-this-to-your-composerjson-file)

```
"repositories": [
    {
        "type": "path",
        "url": "path/to/tablelite"
    }
]
```

make sure update the path to the correct path

#### run

[](#run)

```
composer require joe.szeto/tablelite
```

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance58

Moderate activity, may be stable

Popularity23

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 86% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~11 days

Recently: every ~0 days

Total

39

Last Release

277d ago

Major Versions

v2.1.4 → v3.0.02024-07-04

v2.1.5 → v3.0.22024-07-08

v2.1.6 → v3.0.32024-07-11

v2.1.7 → v3.0.62024-07-19

v2.3.0 → v3.0.72025-07-25

### Community

Maintainers

![](https://www.gravatar.com/avatar/8236606e09aee05405be84a246f7471ed6af5390b3cbb8d8852ea21e167d990a?d=identicon)[jokersk](/maintainers/jokersk)

---

Top Contributors

[![joeszetocodeman](https://avatars.githubusercontent.com/u/5194890?v=4)](https://github.com/joeszetocodeman "joeszetocodeman (49 commits)")[![roxannekm](https://avatars.githubusercontent.com/u/108792856?v=4)](https://github.com/roxannekm "roxannekm (5 commits)")[![henry11996](https://avatars.githubusercontent.com/u/51729131?v=4)](https://github.com/henry11996 "henry11996 (2 commits)")[![winkywong2](https://avatars.githubusercontent.com/u/114455617?v=4)](https://github.com/winkywong2 "winkywong2 (1 commits)")

### Embed Badge

![Health badge](/badges/joeszeto-tablelite/health.svg)

```
[![Health](https://phpackages.com/badges/joeszeto-tablelite/health.svg)](https://phpackages.com/packages/joeszeto-tablelite)
```

###  Alternatives

[wireui/wireui

TallStack components

1.8k1.3M16](/packages/wireui-wireui)[livewire/volt

An elegantly crafted functional API for Laravel Livewire.

4195.3M84](/packages/livewire-volt)[ramonrietdijk/livewire-tables

Dynamic tables for models with Laravel Livewire

21147.4k](/packages/ramonrietdijk-livewire-tables)[asmit/resized-column

Resizeable column for filament

4857.4k1](/packages/asmit-resized-column)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
