webbingbrasil/filament-advancedfilter

A collection of easy-to-use filters with clause conditions to Filament
Note For Filament 2.x use 2.x branch
Install the package via composer (requires filament >= 3.x)
composer require webbingbrasil/filament-advancedfilter "^3.0"
Optionally you can publish the translation files
php artisan vendor:publish --tag="filament-advancedfilter-translations"
Filter records by boolean column:
use Webbingbrasil\FilamentAdvancedFilter\Filters\BooleanFilter;
BooleanFilter::make('is_active')
In some cases you can have a nullable column, the BooleanFilter can handle nulls in different ways:
by default nulls are treated as unknown and hidden
BooleanFilter::make('is_active')->nullsAreUnknown();
BooleanFilter::make('is_active')->nullsAreTrue();
BooleanFilter::make('is_active')->nullsAreFalse();
BooleanFilter::make('is_active')->showUnknowns();
BooleanFilter::make('is_active')->hideUnknowns();
Filter records by date/timestamp column:
use Webbingbrasil\FilamentAdvancedFilter\Filters\DateFilter;
DateFilter::make('published_at')
This filter allows users to search records in the following conditions:
Is equal/not equal to user's input
Is on or after/before user's input
Is more/less than user's input
the user has the option to choose a time interval (day, week, month, year) in the future/past, for example:
Is between user's input
Is set/not set
Filter records by numeric column:
use Webbingbrasil\FilamentAdvancedFilter\Filters\NumberFilter;
NumberFilter::make('quantity')
This filter allows users to search records in the following conditions:
Filter records by text column:
use Webbingbrasil\FilamentAdvancedFilter\Filters\TextFilter;
TextFilter::make('name')
This filter allows users to search records in the following conditions:
You can set a default clause condition for any filter, for example:
use Webbingbrasil\FilamentAdvancedFilter\Filters\TextFilter;
use Webbingbrasil\FilamentAdvancedFilter\Filters\BooleanFilter;
FilamentAdvancedFilter\Filters\TextFilter::make('brand')
->relationship('brand', 'name')
->default(FilamentAdvancedFilter\Filters\TextFilter::CLAUSE_CONTAIN);
FilamentAdvancedFilter\Filters\BooleanFilter::make('is_visible')
->default(FilamentAdvancedFilter\Filters\BooleanFilter::CLAUSE_IS_FALSE);
By default the clause label is disabled, you can enable it by calling the enableClauseLabel method:
use Webbingbrasil\FilamentAdvancedFilter\Filters\TextFilter;
FilamentAdvancedFilter\Filters\TextFilter::make('brand')
->enableClauseLabel()
You can change the wrapper for the filter fields, for example to use a Group component instead of Fieldset:
use Webbingbrasil\FilamentAdvancedFilter\Filters\TextFilter;
FilamentAdvancedFilter\Filters\TextFilter::make('brand')
->enableClauseLabel()
->wrapperUsing(fn () => Forms\Components\Group::make())
You can set a custom debounce time for the filter fields, for example to wait 700ms before applying the filter:
use Webbingbrasil\FilamentAdvancedFilter\Filters\TextFilter;
FilamentAdvancedFilter\Filters\TextFilter::make('brand')
->debounce(700)
By default the debounce time is 500ms.
The MIT License (MIT). Please see License File for more information.
How can I help you explore Laravel packages today?