Advanced Tables (formerly Filter Sets) plugin screenshot
Dark mode ready
Multilingual support
Supports v5.x

Advanced Tables (formerly Filter Sets)

Featured

Supercharge your tables with powerful features like user-customizable views, quick filters, multi-column sorting, advanced table searching, convenient view management, and more. Compatible with Resource Panel Tables, Relation Managers, Table Widgets, and Table Builder!

Tags: Tables Panels
Supported versions:
5.x 4.x 3.x 2.x
Kenneth Sese avatar Author: Kenneth Sese

Documentation

Version:

Advanced Tables with View Manager

#Introduction

Advanced Tables is a premium plugin for Filament that supercharges your tables with powerful features like user-customizable views, quick filters, multi-column sorting, advanced table searching, convenient view management, and more.

#Full Documentation

For complete documentation on all features, configuration options, and advanced usage, visit the Advanced Tables Documentation.

#Video

Check out a short video of some of the powerful features included in Advanced Tables Youtube video

#Demo

See all the functionality that Advanced Tables has to offer in an interactive demo. It also includes a Configuration Playground so you can see many of the configuration options you can use to adapt the plugin to your needs.

Visit the Demo

#Features

  • Allow your users to save their filters, toggled columns, grouping, and more in customizable User Views
  • Developers can create Preset Views in code and deploy them for their clients
  • Preset Views can also include filters, grouping, toggled columns, and column order
  • The Quick Save button means saving custom views is just one click away
  • (NEW) Managed Default Views
  • Create powerful queries with Advanced Filter Builder
  • Choose from six different themes
  • (NEW) Table loading skeleton overlay
  • (NEW) Sort by multiple table columns with Multi Sort
  • (NEW) Quickly access your filters with Quick Filters
  • (BETA) Powerful search with constraints and column selection using Advanced Search
  • Supports Multi-tenancy
  • Includes a User Views Resource so your admins can manage all user views
  • Admins can create global favorite views that will appear for all users
  • Powerful policy integration gives you complete control
  • Includes an approval system for User Views
  • More than 60 configuration options to completely customize Advanced Tables to your needs
  • Supports Panel Resource Tables, Relation Managers, Table Widgets, and Standalone Table Builder

#Screenshots

Favorites Bar Advanced Tables with Favorites Bar

View Manager Advanced Tables with View Manager

Quick Save Advanced Tables with Quick Save

User Views Resource with Approval System User Views Resource with Approval System

View Manager in Table Toolbar View Manager in Table Toolbar

Dark mode Dark mode

#Themes

Github theme (New) Github theme

Filament theme (New) Filament theme

Links theme Links theme

Links Simple theme Links Simple theme

Tabs theme Tabs theme

Tabs Simple theme Tabs Simple theme

#Installation

Thank you for purchasing Advanced Tables!

For complete documentation on all features, configuration options, and advanced usage, visit the Advanced Tables Documentation.

#Requirements

Advanced Tables requires PHP 8.2+, MySQL 5.7.8+ or Postgres, Filament 5.0.0+, and Laravel 11.28+.

#New Installation

#Purchasing a license

Advanced Tables has partnered with Privato to handle payment, licensing, and distribution. After purchase, you will receive an email from Privato with your license key.

#Installing with Composer

To install Advanced Tables you'll need to add the package to your composer.json file:

composer config repositories.archilex composer https://advancedtables.privato.pub/composer

or

{
    "repositories": [
        {
            "type": "composer",
            "url": "https://advancedtables.privato.pub/composer"
        }
    ],
}

Then configure authentication:

composer config --auth http-basic.advancedtables.privato.pub "[license-email]" "[license-key]"

Finally, install the package

composer require archilex/filament-filter-sets

#Setting up Advanced Tables in Filament Panels (including Relation Managers, Table Widgets, and Panel Pages)

If using Filament's standalone Table Builder, please refer to the Table Builder setup instructions

  1. Publish and run the migrations

    Important: If you are using a User class other than Laravel's default User::class or a user's table other than Laravel's default users you should update these configurations before migrating.

    php artisan vendor:publish --tag="advanced-tables-migrations"
    php artisan migrate
    
  2. Publish the language files

    Optionally, you may publish the language files:

    php artisan vendor:publish --tag="advanced-tables-translations"
    
  3. Add Advanced Tables to your Filament Panel

    Add Advanced Tables to a panel by instantiating the plugin class and passing it to the plugin() method of the configuration:

    use Archilex\AdvancedTables\Plugin\AdvancedTablesPlugin;
    
    public function panel(Panel $panel): Panel
    {
        return $panel
            ->plugins([
                AdvancedTablesPlugin::make()
            ])
    }
    
  4. Add the HasViews trait to your User::class

    use Archilex\AdvancedTables\Concerns\HasViews;
    
    class User
    {
        use HasViews;
    }
    
  5. Integrate Advanced Table's Tailwind and css files

    IMPORTANT: Filament v5 requires you create a custom theme to support a plugin's additional Tailwind classes. Be sure to follow those instructions before continuing with this step.

    After you have created your custom theme, add Advanced Tables' views to your new theme's theme.css file usually located in resources/css/filament/admin/theme.css:

    @import '../../../../vendor/filament/filament/resources/css/theme.css';
    @import '../../../../vendor/archilex/filament-filter-sets/resources/css/plugin.css'; // Add
    
    @source '../../../../app/Filament';
    @source '../../../../resources/views/filament';
    @source '../../../../vendor/archilex/filament-filter-sets'; // Add
    
  6. Compile

    Next, compile your theme:

    npm run build
    

    Finally, run the Filament upgrade command:

    php artisan filament:upgrade
    
  7. Setting up tenancy

    If you are installing Advanced Tables into a multi-tenancy application, please refer to the multi-tenancy documentation.

After you've successfully installed Advanced Tables, you may review the Getting Started guide to learn how to add Advanced Tables to your resources, relation managers, pages, and/or table widgets.

#Deploying

When deploying, it is not advised to store your auth.json file inside your project's version control repository. To store your credentials on your deployment server you may create a Composer auth.json file in your project directory using the following command:

composer config http-basic.advancedtables.privato.pub "[license-email]" "[license-key]"

Tip: Make sure the auth.json file is in .gitignore to avoid leaking credentials into your git history.

If you are using Laravel Forge, you don't need to create the auth.json file manually. Instead, you can set the credentials on the Composer Package Authentication screen of your server.

#Fixing deployment errors

  1. The most common mistake when deploying, is not adding the colon (:) followed by the domain you registered. license_key:domain. Please review the instructions above.

  2. If you have set up everything correctly and are getting the error: ../advanced-tables-for-filament-3.7.29.zip' URL required authentication (HTTP 401). You must be using the interactive console to authenticate error, you may need to ssh into your server and clear your composer global cache with composer clear-cache

#Upgrading to v5

If you are upgrading from a previous version, please refer to the upgrade guide.

#Getting started

#Adding Advanced Tables to your table

To use Advanced Tables you will need to add the AdvancedTables trait to the appropriate class depending on whether you intend to use it on a Resource Table, Simple Resource Table, Table Widget, or Panel Page.

Important: For standalone Table Builder users, please refer to the Table Builder documentation.

#Resource tables

To add Advanced Tables to a normal Resource table, add the AdvancedTables trait to the List page of your Resource:

use Archilex\AdvancedTables\AdvancedTables;

class ListProducts extends ListRecords
{
    use AdvancedTables;

#Simple (modal) resource tables

To add Advanced Tables to a Simple (modal) resource table, add the AdvancedTables trait to the Manage page:

use Archilex\AdvancedTables\AdvancedTables;

class ManagesCustomers extends ListRecords
{
    use AdvancedTables;

#Table Widgets

To add Advanced Tables to a Table Widget, add the AdvancedTables trait to the Table widget:

use Archilex\AdvancedTables\AdvancedTables;

class LatestOrders extends BaseWidget
{
    use AdvancedTables;

For Panel Pages, Custom Resource Pages, and Custom Pages, see the full getting started guide.

#User Views

User Views are the core feature of Advanced Tables. They allow your end-users to combine filters, toggled columns, column order, column sort, table grouping, and more into customizable views that are just one click away. Users no longer have to rebuild their views each time they need to focus on a certain subset of their data.

#Saving the current table configuration into a User View

To save a User View:

  1. On your table, apply any combination of filters, toggled columns, sort order, grouping, etc.
  2. After customizing your table, click the + in the top right corner of the table.
  3. Choose a name, icon, and color for the view.
  4. Choose if you want the view to be added to your favorite views, made public for other users, or be a global favorite.
  5. Save the view

When creating a user view the following configurations will be saved:

  • current filters,
  • table search query,
  • column search queries (if enabled)
  • column sort order
  • toggled columns
  • column order
  • grouping

After creation, the View Manager allows a user to sort, edit, replace, or delete a User View.

#User View Highlights

Advanced Tables provides extensive configuration options for User Views:

  • Icons and colors: Users can personalize views with custom icons and colors
  • Public views: Users can share views with others, with an optional approval system
  • Global favorites: Admins can create views that appear for all users
  • Approval system: Admins can approve/reject public and global views before they're visible
  • Session persistence: Optionally persist the active view across page navigations

For the full list of 60+ configuration options, see the User Views documentation.

#Preset Views

In addition to User Views, developers can programmatically create Preset Views in code that are available to all users. Preset Views expose a query() api to modify the underlying eloquent query, and a defaultFilters() api to apply values to your table filters (which shows filter indicators for a better UX).

#Creating a Preset View

use Archilex\AdvancedTables\Components\PresetView;
use Archilex\AdvancedTables\AdvancedTables;

class ListOrders extends ListRecords
{
    use AdvancedTables;

    public function getPresetViews(): array
    {
        return [
            'processing' => PresetView::make()
                ->modifyQueryUsing(fn ($query) => $query->where('status', 'processing'))
                ->favorite(),
            'delivered' => PresetView::make()
                ->modifyQueryUsing(fn ($query) => $query->where('status', 'delivered')),
        ];
    }
}

Preset Views support labels, icons, colors, badges, tooltips, visibility controls, default filters, default grouping, toggled/reordered columns, default sorting (including multi-sort), and more.

For full Preset View configuration, see the Preset Views documentation.

#Favorites Bar

The Favorites Bar is home to all of a user's favorite views as well as Quick Save and View Manager. It includes six different themes (Github, Filament, Links, Links Simple, Tabs, Tabs Simple) and can be customized with different sizes, icon positions, dividers, loading indicators, and more.

For full configuration options, see the Favorites Bar documentation.

#Quick Save

Quick Save provides a convenient button for end-users to save User Views with one click. It can be displayed in the Favorites Bar or table toolbar, shown as a slideOver or modal, and fully customized.

For full configuration options, see the Quick Save documentation.

#View Manager

The View Manager gives end-users an easy and convenient way to manage all available views. Users can search, apply, sort, edit, delete, add to favorites, and more. It supports display as a dropdown or slideOver, and offers extensive customization options.

For full configuration options, see the View Manager documentation.

#Managed Default Views

Default Views

Advanced Tables allows your users to manage which view they would like to be their default view for each table. When a view is set as default, it will be automatically loaded when the resource/table is first opened.

To enable, add managedDefaultViewsEnabled() to your panel provider:

AdvancedTablesPlugin::make()
    ->managedDefaultViewsEnabled()

For more details, see the Managed Default Views documentation.

#Multi-Sort

Multi-Sort

Advanced Tables allows your users to sort their tables by multiple columns. Using the Multi-Sort dropdown, users can add columns, change sort direction, and reorder sort priority. Multi-Sort is fully integrated with Preset Views and User Views.

For full configuration options, see the Multi-Sort documentation.

#Quick Filters

Quick filters

Quick Filters gives your users quick access to their filters through Filament's indicator system. When enabled, each indicator can be clicked to access that filter's settings. Filters can also be favorited and "pinned" so they always appear, even when not active.

For setup and configuration, see the Quick Filters documentation.

#Advanced Search

Advanced Search

Advanced Search replaces Filament's search field with powerful search constraints and column selection. Users can search using eight different constraints like "starts with", "matches", "ends with", and more. Users can also select which columns to search, and use keyboard syntax shortcuts to quickly change search behavior. Fully integrated with Preset Views, User Views, and Quick Filters.

For setup and configuration, see the Advanced Search documentation.

#Advanced Filter Builder

Advanced filter builder

Advanced Filter Builder is a custom filtering system that gives your users a simple, yet powerful way to build custom queries. Each filter can be used multiple times and grouped into or groups. It automatically generates text, numeric, date, boolean, and select filters from your table columns, and seamlessly integrates your existing Filament filters.

To enable:

return $table
    ->filters([
        AdvancedFilter::make(),
    ])

For full setup and configuration, see the Advanced Filter Builder documentation.

#Additional Topics

  • Action Customization - Customize trigger buttons, icons, labels, tooltips, and colors for all Advanced Tables actions. Includes support for Filament's icon alias system.
  • Multi-Tenancy - Built-in support for Filament's multi-tenancy, simple one-to-many tenancy, Spatie Multi-tenancy, and Tenancy for Laravel.
  • Authorization - Control access with Laravel policies. Includes methods for makePublic, makeFavorite, makeGlobalFavorite, selectIcon, selectColor, and more.
  • User Views Resource - A Filament resource for admins to manage all User Views, approve/reject public views, and toggle settings.
  • Filament Table Builder - Full support for Filament's standalone Table Builder.
  • Additional Configurations - Table loading indicators, User::class configuration, language files, authentication guard settings, and more.

#Support

Question? Bug? Feature request? Comment or suggestion? Email me at advancedtables@gmail.com or join us on #advanced-tables on Discord. I'd love to hear from you.

#Changelog

Please see CHANGELOG for more information on what has changed recently.

#Contributing

Users with active licenses may access the private repo to contribute by visiting the Licenses tab of your Privato account.

#Credits

#License

#Single License

The Single License grants the Licensee permission to use Advanced Tables in a single project hosted on a single domain or subdomain. Examples include a personal website or a website for a single client.

If you would like to implement Advanced Tables in a SaaS application, you will need an Unlimited or Lifetime license.

The single license grants permission for up to 5 Employees and Contractors (i.e. developers) of the Licensee to access and use Advanced Tables.

You will receive updates and bug fixes for one year from the date of purchase. Should you decide not to renew your license, you will only be able to install the package up to the last version available before the license expired. You can renew the license at a discounted price to continue receiving updates and new features.

#Unlimited License

The Unlimited License grants the Licensee permission to use Advanced Tables on unlimited domains and subdomains, including SaaS applications.

The unlimited license grants permission for up to 25 Employees and Contractors (i.e. developers) of the Licensee to access and use Advanced Tables. There is no limit on the amount of end-users your app may have.

You will receive updates and bug fixes for one year from the date of purchase. Should you decide not to renew your license, you will only be able to install the package up to the last version available before the license expired. You can renew the license at a discounted price to continue receiving updates and new features.

#Lifetime License

The Lifetime License grants the Licensee permission the same benefits as the Unlimited License.

You will receive updates for the lifetime of the product.

The unlimited license grants permission for up to 25 Employees and Contractors (i.e. developers) of the Licensee to access and use Advanced Tables. There is no limit on the amount of end-users your app may have.

#Code Distribution

None of Advanced Tables' licenses allow the public distribution of its source code. So, you may not build an application using Advanced Tables and distribute that application publicly via an open source repository, hosting platforms, or any other code distribution platform.

#Questions?

Email me at advancedtables@gmail.com or join us on #advanced-tables on Discord.

The author

Kenneth Sese avatar Author: Kenneth Sese

Kenneth Sese has been working in software development for more than 10 years. He is driven by a passion to help organizations that serve developing communities to utilize technology to fulfill their missions. He is currently a developer at Padmission building software that is helping end homelessness for families across the United States. He is also the author of Advanced Tables, Toggle Icon Column, and Stacked Image Column.

Plugins
3
Stars
605

From the same author