Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/webbingbrasil/filament-advancedfilter
A collection of easy-to-use filters with clause conditions to Filament
https://github.com/webbingbrasil/filament-advancedfilter
Last synced: about 6 hours ago
JSON representation
A collection of easy-to-use filters with clause conditions to Filament
- Host: GitHub
- URL: https://github.com/webbingbrasil/filament-advancedfilter
- Owner: webbingbrasil
- License: mit
- Created: 2022-04-06T23:37:18.000Z (over 2 years ago)
- Default Branch: 3.x
- Last Pushed: 2024-03-13T16:54:50.000Z (9 months ago)
- Last Synced: 2024-04-14T09:58:24.321Z (8 months ago)
- Language: PHP
- Homepage:
- Size: 134 KB
- Stars: 117
- Watchers: 4
- Forks: 28
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-filament - webbingbrasil/filament-advancedfilter - A collection of easy-to-use filters with clause conditions to Filament. (Filtering)
README
# Filament Advanced Filter
![AdvancedFilters](https://raw.githubusercontent.com/webbingbrasil/filament-advancedfilter/3.x/images/advancedfilters.png)
A collection of easy-to-use filters with clause conditions to [Filament](https://filamentphp.com)
> **Note**
> For **Filament 2.x** use **[2.x](https://github.com/webbingbrasil/filament-advancedfilter/tree/2.x)** branch## Installation
Install the package via composer (requires filament >= 3.x)
```bash
composer require webbingbrasil/filament-advancedfilter "^3.0"
```Optionally you can publish the translation files
```php
php artisan vendor:publish --tag="filament-advancedfilter-translations"
```## Available Filters
### BooleanFilter
Filter records by boolean column:
```php
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:
- Treats nulls as Unknown
- Treats nulls as True
- Treats nulls as Falseby default `nulls` are treated as unknown and hidden
```php
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();
```### DateFilter
Filter records by date/timestamp column:
```php
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:
- more than 3 days from now
- more than 4 months ago
- less than 5 weeks from now
- less than 6 days ago
- more than 1 year ago- Is between user's input
- Is set/not set### NumberFilter
Filter records by numeric column:
```php
use Webbingbrasil\FilamentAdvancedFilter\Filters\NumberFilter;NumberFilter::make('quantity')
```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 than/less than user's input
- Is between user's input
- Is set/not set### TextFilter
Filter records by text column:
```php
use Webbingbrasil\FilamentAdvancedFilter\Filters\TextFilter;TextFilter::make('name')
```This filter allows users to search records in the following conditions:
- Is equal/not equal to user's input
- Starts/not starts with user's input
- Ends/not ends with user's input
- Contains/not contains user's input
- Is set/not set## Set Default Clause
You can set a default clause condition for any filter, for example:
```php
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);
```## Enable Clause Label
By default the clause label is disabled, you can enable it by calling the `enableClauseLabel` method:
```php
use Webbingbrasil\FilamentAdvancedFilter\Filters\TextFilter;FilamentAdvancedFilter\Filters\TextFilter::make('brand')
->enableClauseLabel()
```## Fields Wrapper
You can change the wrapper for the filter fields, for example to use a Group component instead of Fieldset:
```php
use Webbingbrasil\FilamentAdvancedFilter\Filters\TextFilter;FilamentAdvancedFilter\Filters\TextFilter::make('brand')
->enableClauseLabel()
->wrapperUsing(fn () => Forms\Components\Group::make())
```## Field Debounce
You can set a custom debounce time for the filter fields, for example to wait 700ms before applying the filter:
```php
use Webbingbrasil\FilamentAdvancedFilter\Filters\TextFilter;FilamentAdvancedFilter\Filters\TextFilter::make('brand')
->debounce(700)
```By default the debounce time is 500ms.
## Credits
- [Danilo Andrade](https://github.com/dmandrade)
- [All Contributors](https://github.com/webbingbrasil/filament-advancedfilter/contributors)## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.