TableKit plugin screenshot
Dark mode ready
Multilingual support
Supports v5.x

TableKit by Maytham Mahdi

Community

Saved views and power tools for Filament tables: save filters, sorts and columns as views, add presets, a view manager, multi-sort, quick filter chips and column order. Works with Filament 3, 4 and 5.

Tags: Tables
Supported versions:
5.x 4.x 3.x
Maytham Mahdi avatar Author: Maytham Mahdi

Package health

Automated checks of this plugin's Composer package

92 / 100
Security 85
Maintenance 100
Ecosystem 100
15 checks
  • Skipped: GitHub Actions pinned to SHA
  • Skipped: GitLab CI includes pinned to SHA
  • Passed: Open security advisories
  • Passed: Dependabot PR responsiveness — No open Dependabot PRs.
  • Skipped: Renovate MR responsiveness
  • Skipped: Dependabot or Renovate configured
  • Skipped: Dependency update cooldown configured
  • Failed: Provides a security policy — View details on Plumb
  • Passed: Abandoned or archived — No consulted source marks the package abandoned (packagist, github).
  • Passed: Commit and release recency — Active: last commit 0 days ago; last release 1 days ago.
  • Passed: composer.lock not committed by library — composer.lock is absent from the released dist archive.
  • Passed: Dist archive is lean
  • Passed: Current Laravel version supported — Package dependencies resolve together with current Laravel 13.0.
  • Passed: Current PHP version supported — Constraint ^8.2 supports current PHP 8.5.
  • Skipped: Current Symfony version supported
Third-party plugin. This is built by the community, not the Filament team. Filament does not review, endorse, or vet the security of plugins outside the filament/ namespace. Review the source and install at your own risk. Found malware or an unresolved security issue the author won't address? Report it .
Powered by Plumb Last scanned 10 hours ago

Documentation

Version:

Saved views and power tools for Filament tables.

TableKit demo

Watch the full demo on YouTube (77 s, with sound)

Website and full documentation: https://maytham553.github.io/filament-tablekit/

TableKit (tablekit/filament-tablekit) lets your users save the state of a table as a named view and open it again in one click. A bar above the table shows their favorite views. You can also ship ready-made views of your own.

You are reading the docs for Filament 5. See Which version? for the other branches.

#What you get

  • Saved views: save filters, search, column searches, sort, visible columns, column order and grouping under a name.
  • Preset views: views you define in code, with an optional hidden query, a badge and a tooltip.
  • View manager: a list to open, favorite, reorder, edit, delete and mark views as default.
  • Default view: each user can pick one start view per table, and you can set a default in code.
  • Multi-sort: sort by several columns, with a priority for each.
  • Quick filters: clickable filter chips, with favorite filters that stay visible.
  • Column order: the order from Filament's column manager is saved in views.
  • Color and icon pickers: about 120 icons and 24 colors for your views.
  • RTL and translations: English and Arabic included.
  • Multi-tenancy: views are scoped by user, table and tenant.

#Which version?

Use the TableKit version that matches your Filament version. Composer picks it for you from the Filament you have installed.

Filament Livewire TableKit Branch Laravel
5 4 ^5.0 main 11.28+, 12, 13
4 3 ^4.0 filament-v4 11.28+, 12, 13
3 3 ^3.0 filament-v3 11.28+, 12

All versions need PHP 8.2 or newer. Filament 5.0.0, 5.5.0, 5.7.0 and 5.8.0 fail the package tests before they reach plugin code, so they are excluded. The package is tested with Filament 5.10.1 and Livewire 4.4.7.

#Installation

You need an existing Filament 5 panel.

  1. Install the package.

    composer require tablekit/filament-tablekit
    

    Not on Packagist yet, or want a branch? See Install from GitHub.

  2. Run the migrations. They load by themselves. If your app owns its migrations, see Database.

    php artisan migrate
    
  3. Add the trait to a list page, a relation manager or a table widget, for example app/Filament/Resources/Orders/Pages/ListOrders.php.

    use TableKit\Concerns\HasTableKit;
    
    class ListOrders extends ListRecords
    {
        use HasTableKit;
    }
    

    Open the table. The bar with Default and Save view is now above it. No theme or CSS step is needed.

  4. Optional: register the plugin in your panel provider (app/Providers/Filament/AdminPanelProvider.php, inside panel()). You only need it to change options. Everything works without it.

    use TableKit\TableKitPlugin;
    
    $panel->plugin(TableKitPlugin::make());
    

#Your first preset

Return presets from the same class. Make the method protected. This one assumes a status filter and a sortable ordered_at column. A filter or column that does not exist is ignored.

use TableKit\Presets\PresetTableView;

protected function getPresetTableViews(): array
{
    return [
        'shipped' => PresetTableView::make()
            ->label('Shipped')
            ->icon('truck')
            ->color('success')
            ->favorite()
            ->defaultFilters(['status' => ['value' => 'shipped']])
            ->defaultSort('ordered_at', 'desc'),
    ];
}

#Documentation

Page What is in it
Installation Composer, GitHub, publish tags
Configuration Every config key and plugin option
Views Saved views, the bar, the manager, defaults, reload and the URL
Presets Every preset method, with examples
Multi-sort Sort by several columns
Quick filters Filter chips and favorite filters
Columns Column order in views and presets
Colors and icons Pickers, icon aliases, Tabler remap, translations
Database Tables, connection, tenancy, user keys, stored state
Limits Known limits
Testing Livewire test examples
Upgrading Upgrade notes

#Security and privacy

  • A preset's hidden query is a filter, not access control. Users can drop it at any time. Put real rules in your resource query, policies or global scopes.
  • A view stores the search text and filter values the user typed. This can be personal data. Views are not deleted with the user, so delete them when you delete the account. See Database.
  • The server checks ownership on every action. View ids and preset keys that come from the browser are checked again on the server.
  • Views are scoped by user type, user id, tenant and table. Users never see each other's views.

#License

MIT. See LICENSE.

The author

Maytham Mahdi avatar Author: Maytham Mahdi

Maytham Mahdi is a full-stack developer from Iraq with 5+ years of experience building web applications, admin panels and backend systems. He has led development teams, shipped products from idea to launch, and enjoys turning complex problems into simple tools.

Plugins
1
Stars
1