cooper / filament-dcat-filters
Bring Dcat Admin's powerful filter features to Filament - including Scope filters, Range filters, SelectTable, and more quick filters
Fund package maintenance!
myxiaoao
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/cooper/filament-dcat-filters
Requires
- php: ^8.3
- filament/filament: ^4.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/larastan: ^3.0
- orchestra/testbench: ^10.0
- pestphp/pest: ^4.0
- pestphp/pest-plugin-arch: ^4.0
- pestphp/pest-plugin-laravel: ^4.0
- phpstan/phpstan: ^2.0
- phpstan/phpstan-deprecation-rules: ^2.0
This package is auto-updated.
Last update: 2025-11-18 06:00:55 UTC
README
Bring Dcat Admin's powerful filter features to Filament. This package provides a collection of enhanced filters that make building admin panels faster and more intuitive.
English Documentation | δΈζζζ‘£
Features
Core Filters
- π― Scope Filter - Tab-style quick filters for common queries
- π Range Filter - Simplified date/number range filtering (3 lines of code!)
- π Date Component Filter - Filter by year, month, or day separately
- π SelectTable Filter - Modal table selector with search and pagination
- π Modal Select Filter - Dcat Admin style modal with full table display
- π’ Between Filter - Numeric range filtering shortcut
- π Hidden Filter - URL parameter-based filtering without UI
Quick Filters
- β‘ LIKE Filter - Text search with wildcard control (supports NOT LIKE)
- π IN Filter - Multiple value selection (supports NOT IN)
- π’ Comparison Filter - Comparison operators (>, <, >=, <=, =, !=)
Additional Features
- π¨ Highly Customizable - Extensive customization options for each filter
- π± Mobile Friendly - Responsive design for all screen sizes
- π Bilingual Docs - Complete English and Chinese documentation
Version Compatibility
| Filament | Filament Dcat Filters | PHP | Laravel |
|---|---|---|---|
| 4.x | 1.x | ^8.3 | ^12.0 |
Installation
You can install the package via composer:
composer require cooper/filament-dcat-filters
Optionally, you can publish the config file:
php artisan vendor:publish --tag="filament-dcat-filters-config"
Optionally, you can publish the views:
php artisan vendor:publish --tag="filament-dcat-filters-views"
Quick Start
Scope Filter
Perfect for quick filtering with tab-style buttons:
use Cooper\FilamentDcatFilters\Filters\ScopeFilter; ScopeFilter::make('status') ->scopes([ 'all' => 'All', 'active' => 'Active', 'inactive' => 'Inactive', ])
View detailed documentation β
Range Filter
Simplified date/number range filtering:
use Cooper\FilamentDcatFilters\Filters\RangeFilter; RangeFilter::make('created_at')->datetime()
View detailed documentation β
SelectTable Filter
Modal table selector with search and pagination:
use Cooper\FilamentDcatFilters\Filters\SelectTableFilter; SelectTableFilter::make('user_id') ->relationship('user', 'name') ->multiple()
View detailed documentation β
Date Component Filter
Filter by year, month, or day components:
use Cooper\FilamentDcatFilters\Filters\DateComponentFilter; DateComponentFilter::make('created_at')->year() DateComponentFilter::make('birth_date')->month() DateComponentFilter::make('published_at')->day()
View detailed documentation β
Modal Select Filter
Dcat Admin style modal with full table display:
use Cooper\FilamentDcatFilters\Filters\ModalSelectFilter; ModalSelectFilter::make('user_id') ->model(User::class, 'name', 'id') ->dialogTitle('Select User') ->displayColumns(['id' => 'ID', 'name' => 'Name', 'email' => 'Email']) ->searchable(['name', 'email']) ->multiple()
View detailed documentation β
Quick Filters
Built-in filters for common operations:
use Cooper\FilamentDcatFilters\Filters\{LikeFilter, InFilter, ComparisonFilter, BetweenFilter}; // LIKE search (with NOT LIKE support) LikeFilter::make('title'), LikeFilter::make('spam_keywords')->notLike(), // Exclude matches // IN array (with NOT IN support) InFilter::make('category_id') ->options(Category::pluck('name', 'id')->toArray()), InFilter::make('blocked_users')->notIn(), // Exclude selected // Comparison (>, <, =, >=, <=, !=) ComparisonFilter::make('views')->gte()->label('Minimum Views'), // Between (numeric range) BetweenFilter::make('price')->label('Price Range'),
View detailed documentation β
Hidden Filter
URL parameter-based filtering (no UI):
use Cooper\FilamentDcatFilters\Filters\HiddenFilter; // Pre-filter by tenant HiddenFilter::make('tenant_id') ->default(auth()->user()->tenant_id) ->eq()
View detailed documentation β
Documentation
Core Filters
- π Scope Filter - Tab-style quick filters
- π Range Filter - Date/number range filtering
- π Date Component Filter - Year/Month/Day filtering
- π SelectTable Filter - Modal table selector
- π Modal Select Filter - Dcat Admin style modal table selector
- π Quick Filters - LIKE, IN, GT, LT, BETWEEN filters
Guides & References
- π Usage Examples - Complete working examples
- π Demo Guide - Interactive demonstrations
- π Advanced Features - API support, InputMask, FindInSet, Hidden filters
- π Comparison with Dcat Admin - Feature comparison
- π Package Structure - Package architecture
- π Documentation Structure - Documentation organization
Facade Usage
You can also use the Facade for quick access:
use Cooper\FilamentDcatFilters\Facades\FilamentDcatFilters; FilamentDcatFilters::scopeFilter('status')->scopes([...]); FilamentDcatFilters::rangeFilter('created_at')->datetime();
Testing
composer test
Code Quality
# Format code composer format # Static analysis composer analyse
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
If you discover any security-related issues, please email myxiaoao@gmail.com.
Credits
- Cooper
- Inspired by Dcat Admin
- All Contributors
License
The MIT License (MIT). Please see License File for more information.