PHPackages                             cooper/filament-dcat-filters - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. cooper/filament-dcat-filters

ActiveLibrary[Admin Panels](/categories/admin)

cooper/filament-dcat-filters
============================

Bring Dcat Admin's powerful filter features to Filament - including Scope filters, Range filters, SelectTable, and more quick filters

v2.1.2(2mo ago)0154↓34.4%1[1 PRs](https://github.com/myxiaoao/filament-dcat-filters/pulls)MITPHPPHP ^8.3CI passing

Since Jan 10Pushed 1w agoCompare

[ Source](https://github.com/myxiaoao/filament-dcat-filters)[ Packagist](https://packagist.org/packages/cooper/filament-dcat-filters)[ Docs](https://github.com/myxiaoao/filament-dcat-filters)[ GitHub Sponsors](https://github.com/myxiaoao)[ RSS](/packages/cooper-filament-dcat-filters/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (29)Versions (23)Used By (0)

Filament Dcat Filters
=====================

[](#filament-dcat-filters)

**Bring Dcat Admin's powerful filter features to Filament**

Built with PHP 8.3+ for Laravel 12/13 and Filament v4/v5

[![Latest Version on Packagist](https://camo.githubusercontent.com/36fa8f1fa6197676fc004de36909cb3b06624cb06ef958fb3ba6fee4aef17a46/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f636f6f7065722f66696c616d656e742d646361742d66696c746572732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/cooper/filament-dcat-filters)[![Total Downloads](https://camo.githubusercontent.com/6550ec8b72a95873c94b232c2d0b46c3a102774d589f4b2d4ca224976037ae39/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f636f6f7065722f66696c616d656e742d646361742d66696c746572732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/cooper/filament-dcat-filters)[![run-tests](https://github.com/myxiaoao/filament-dcat-filters/actions/workflows/run-tests.yml/badge.svg)](https://github.com/myxiaoao/filament-dcat-filters/actions/workflows/run-tests.yml)[![License](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](LICENSE)[![PHP](https://camo.githubusercontent.com/aa2a8ea32b8f0e9efd5be764cac6c75f680d08361c6865ce1d6a4c5fed720c5a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d382e332b2d707572706c652e737667)](https://www.php.net)[![Laravel](https://camo.githubusercontent.com/ec1d7556665d2e28598c74168c13aa5042ead46b8e8243462f719b5e60030cae/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c61726176656c2d31322e7825323025374325323031332e782d7265642e737667)](https://laravel.com)[![Filament](https://camo.githubusercontent.com/a07ebe62101aff9026f231b8b87b6a896a40a424d9e1b30d3d0b6eddda6a4952/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f66696c616d656e742d342e78253230253743253230352e782d6f72616e67652e737667)](https://filamentphp.com)

[![Filament Dcat Filters Screenshot](./art/filters.png)](./art/filters.png)---

A modern collection of enhanced filters inspired by [Dcat Admin](https://github.com/jqhph/dcat-admin), combining intuitive UI components with powerful filtering capabilities for [Filament](https://filamentphp.com) admin panels.

[English Documentation](#features) | [中文文档](README_CN.md)

Features
--------

[](#features)

### Core Filters

[](#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

[](#quick-filters)

- ⚡ **LIKE Filter** - Text search with wildcard control (supports NOT LIKE)
- 📋 **IN Filter** - Multiple value selection (supports NOT IN)
- 🔢 **Comparison Filter** - Comparison operators (&gt;, &lt;, &gt;=, &lt;=, =, !=)
- ✅ **Boolean Filter** - True/false/all toggle for boolean fields
- 🔘 **Null Filter** - NULL/NOT NULL value filtering
- 📝 **Enum Filter** - Auto-generate options from PHP 8.1+ Enum classes
- 🔍 **FullText Filter** - Search across multiple fields simultaneously
- 📆 **Relative Date Filter** - Pre-defined date range shortcuts

### Specialized Filters

[](#specialized-filters)

- 🗄️ **JSON Filter** - Query JSON/JSONB columns with path access
- 🏷️ **FindInSet Filter** - Query comma-separated values using FIND\_IN\_SET
- 🔤 **Regex Filter** - Pattern matching with regular expressions
- 📱 **InputMask Filter** - Formatted input with masks (phone, credit card, etc.)
- 📍 **GeoLocation Filter** - Geographic proximity filtering with Haversine formula
- 🔗 **Filter Group** - Combine filters with AND/OR logic

### New in v2.0

[](#new-in-v20)

- 🗑️ **SoftDelete Filter** - Built-in soft delete visibility control (withTrashed/onlyTrashed)
- 🔍 **Exists Filter** - Filter by relationship existence (whereHas/whereDoesntHave)
- 📊 **Aggregate Filter** - Filter by relationship aggregates (count, sum, avg, max, min + having)
- ⚖️ **Column Compare Filter** - Compare two database columns (whereColumn)
- 🧩 **Advanced JSON Filter** - Array contains, path exists, key exists for JSON columns
- 🕐 **Timezone Aware Date Filter** - Auto timezone conversion between user and database
- 🔀 **Morph Relation Filter** - MorphTo and MorphToMany polymorphic relationship filtering
- 📐 **Filter State Protocol** - Declarative `FilterStateDescriptor` for all 29 filters
- 🚦 **Database Driver Fail-Fast** - Runtime driver compatibility checks with clear errors
- 🔄 **Sort Presets** - Quick sort shortcuts with export/import support
- 🔗 **Nested Relationships** - Deep path filtering (`author.company.country`)
- 🔎 **Remote Search** - Server-side search for SelectTableFilter (large datasets)
- 📊 **Capability Matrix** - Auto-generated via `php artisan dcat-filters:matrix`

### Advanced Features

[](#advanced-features)

- 🔄 **Reset All Filters** - One-click reset button for all active filters
- 💾 **Filter State Persistence** - Remember filter states across sessions
- 🔗 **URL Query Parameter Sync** - Shareable filter URLs without page reload
- 🔗 **Cascading Select Filter** - Dynamic dependent dropdowns
- ♿ **Accessibility Support** - ARIA labels and keyboard navigation
- 📋 **Filter Presets** - Save and load filter combinations
- 🔢 **Scope Badge Counts** - Display record counts on scope tabs
- 📤 **Filter Export/Import** - Share filter configurations via URL or JSON
- 🔄 **Sort Presets** - Quick sort shortcuts with shareable state

### Additional Features

[](#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
- ✅ **Fully Tested** - Comprehensive test coverage with 1073 tests

Version Compatibility
---------------------

[](#version-compatibility)

FilamentFilament Dcat FiltersPHPLaravel5.x2.x^8.3^12.0 | ^13.04.x2.x^8.3^12.0 | ^13.0Installation
------------

[](#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
-----------

[](#quick-start)

### Scope Filter

[](#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 →](docs/en/scope-filter.md)**

### Range Filter

[](#range-filter)

Simplified date/number range filtering:

```
use Cooper\FilamentDcatFilters\Filters\RangeFilter;

RangeFilter::make('created_at')->datetime()
```

**[View detailed documentation →](docs/en/range-filter.md)**

### SelectTable Filter

[](#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 →](docs/en/select-table-filter.md)**

### Date Component Filter

[](#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 →](docs/en/date-component-filter.md)**

### Modal Select Filter

[](#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 →](docs/en/modal-select-filter.md)**

### Quick Filters

[](#quick-filters-1)

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 (>, =, gte()->label('Minimum Views'),

// Between (numeric range)
BetweenFilter::make('price')->label('Price Range'),
```

**[View detailed documentation →](docs/en/quick-filters.md)**

### Boolean Filter

[](#boolean-filter)

Dedicated true/false/all toggle for boolean fields:

```
use Cooper\FilamentDcatFilters\Filters\BooleanFilter;

BooleanFilter::make('is_active')
    ->label('Status')
    ->trueLabel('Active')
    ->falseLabel('Inactive')

// Quick presets
BooleanFilter::active()      // is_active field
BooleanFilter::published()   // is_published field
BooleanFilter::enabled()     // is_enabled field
```

### Null Filter

[](#null-filter)

Filter for NULL or NOT NULL values:

```
use Cooper\FilamentDcatFilters\Filters\NullFilter;

NullFilter::make('deleted_at')
    ->nullLabel('Not Deleted')
    ->notNullLabel('Deleted')

// Quick presets
NullFilter::deleted()    // deleted_at field
NullFilter::assigned()   // Check if field is assigned
NullFilter::empty()      // Check if field is empty/filled
```

### Enum Filter

[](#enum-filter)

Auto-generate options from PHP 8.1+ Enum classes:

```
use Cooper\FilamentDcatFilters\Filters\EnumFilter;

EnumFilter::make('status')
    ->enum(OrderStatus::class)
    ->multiple()
    ->exclude([OrderStatus::Cancelled])
```

### FullText Filter

[](#fulltext-filter)

Search across multiple fields simultaneously:

```
use Cooper\FilamentDcatFilters\Filters\FullTextFilter;

FullTextFilter::make('search')
    ->searchIn(['name', 'email', 'phone'])
    ->placeholder('Search users...')
    ->minLength(2)
    ->debounce(300)
```

### Relative Date Filter

[](#relative-date-filter)

Pre-defined date range shortcuts:

```
use Cooper\FilamentDcatFilters\Filters\RelativeDateFilter;

RelativeDateFilter::make('created_at')
    ->only(['today', 'yesterday', 'last_7_days', 'last_30_days', 'this_month'])

// Quick presets
RelativeDateFilter::common()     // Common date ranges
RelativeDateFilter::weekly()     // Week/month focused
RelativeDateFilter::reporting()  // Quarter/year focused
```

### Hidden Filter

[](#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 →](docs/en/advanced-features.md#hiddenfilter-usage-guide)**

### SoftDelete Filter

[](#softdelete-filter)

Control soft-deleted record visibility:

```
use Cooper\FilamentDcatFilters\Filters\SoftDeleteFilter;

SoftDeleteFilter::make('trashed')
// Or toggle mode:
SoftDeleteFilter::make('trashed')->toggle()
```

**[View detailed documentation →](docs/en/soft-delete-filter.md)**

### Exists Filter

[](#exists-filter)

Filter by relationship existence:

```
use Cooper\FilamentDcatFilters\Filters\ExistsFilter;

ExistsFilter::make('has_comments')->relationship('comments')
ExistsFilter::make('no_orders')->relationship('orders')->notExists()
```

**[View detailed documentation →](docs/en/exists-filter.md)**

### Aggregate Filter

[](#aggregate-filter)

Filter by relationship aggregate values:

```
use Cooper\FilamentDcatFilters\Filters\AggregateFilter;

AggregateFilter::make('order_count')
    ->relationship('orders')
    ->count()
    ->gte()
```

**[View detailed documentation →](docs/en/aggregate-filter.md)**

### Column Compare Filter

[](#column-compare-filter)

Compare two database columns:

```
use Cooper\FilamentDcatFilters\Filters\ColumnCompareFilter;

ColumnCompareFilter::make('profitable')
    ->leftColumn('price')
    ->rightColumn('cost')
    ->gt()
```

**[View detailed documentation →](docs/en/column-compare-filter.md)**

### Advanced JSON Filter

[](#advanced-json-filter)

Structural JSON queries:

```
use Cooper\FilamentDcatFilters\Filters\AdvancedJsonFilter;

AdvancedJsonFilter::make('tags')->arrayContains()
AdvancedJsonFilter::make('metadata')->pathExists('settings.theme')
AdvancedJsonFilter::make('config')->hasKey('notifications')
```

**[View detailed documentation →](docs/en/advanced-json-filter.md)**

### Timezone Aware Date Filter

[](#timezone-aware-date-filter)

Date range with automatic timezone conversion:

```
use Cooper\FilamentDcatFilters\Filters\TimezoneAwareDateFilter;

TimezoneAwareDateFilter::make('created_at')
    ->userTimezone('Asia/Shanghai')
```

**[View detailed documentation →](docs/en/timezone-aware-date-filter.md)**

### Morph Relation Filter

[](#morph-relation-filter)

Polymorphic relationship filtering:

```
use Cooper\FilamentDcatFilters\Filters\MorphRelationFilter;

// MorphTo mode
MorphRelationFilter::make('commentable')
    ->morphTo()
    ->types(['post' => Post::class, 'video' => Video::class])

// MorphToMany mode
MorphRelationFilter::make('tags')
    ->morphToMany()
    ->model(Tag::class)
    ->titleColumn('name')
```

**[View detailed documentation →](docs/en/morph-relation-filter.md)**

### Remote Search (Server-Side)

[](#remote-search-server-side)

For large datasets, use server-side search:

```
SelectTableFilter::make('user_id')
    ->model(User::class)
    ->remoteSearch()
    ->searchColumns(['name', 'email'])
    ->searchDebounce(300)
```

**[View detailed documentation →](docs/en/select-table-filter.md#remote-search-server-side)**

### Reset All Filters

[](#reset-all-filters)

Add a one-click reset button:

```
use Cooper\FilamentDcatFilters\Concerns\HasResetFilters;

class ListUsers extends ListRecords
{
    use HasResetFilters;

    protected function getHeaderActions(): array
    {
        return [
            $this->getResetFiltersAction(),
        ];
    }
}
```

**[View detailed documentation →](docs/en/reset-filters.md)**

### Filter State Persistence

[](#filter-state-persistence)

Remember filter states across sessions:

```
use Cooper\FilamentDcatFilters\Concerns\HasFilterPersistence;

class ListUsers extends ListRecords
{
    use HasFilterPersistence;

    protected string $filterPersistenceKey = 'users-list-filters';
}
```

**[View detailed documentation →](docs/en/filter-persistence.md)**

### URL Query Parameter Sync

[](#url-query-parameter-sync)

Shareable filter URLs:

```
use Cooper\FilamentDcatFilters\Concerns\SyncsFiltersToUrlWithoutHistory;

class ListUsers extends ListRecords
{
    use SyncsFiltersToUrlWithoutHistory;
}
```

**[View detailed documentation →](docs/en/url-sync.md)**

### Cascading Select Filter

[](#cascading-select-filter)

Dynamic dependent dropdowns:

```
use Cooper\FilamentDcatFilters\Filters\CascadingSelectFilter;

CascadingSelectFilter::make('location')
    ->levels([
        'country' => [
            'label' => 'Country',
            'options' => fn () => Country::pluck('name', 'id'),
        ],
        'state' => [
            'label' => 'State',
            'options' => fn ($country) => State::where('country_id', $country)->pluck('name', 'id'),
            'dependsOn' => 'country',
        ],
        'city' => [
            'label' => 'City',
            'options' => fn ($state) => City::where('state_id', $state)->pluck('name', 'id'),
            'dependsOn' => 'state',
        ],
    ])
```

**[View detailed documentation →](docs/en/cascading-filters.md)**

Documentation
-------------

[](#documentation)

### Core Filters

[](#core-filters-1)

- 📖 [Scope Filter](docs/en/scope-filter.md) - Tab-style quick filters
- 📖 [Range Filter](docs/en/range-filter.md) - Date/number range filtering
- 📖 [Date Component Filter](docs/en/date-component-filter.md) - Year/Month/Day filtering
- 📖 [SelectTable Filter](docs/en/select-table-filter.md) - Modal table selector
- 📖 [Modal Select Filter](docs/en/modal-select-filter.md) - Dcat Admin style modal table selector
- 📖 [Quick Filters](docs/en/quick-filters.md) - LIKE, IN, GT, LT, BETWEEN filters

### Specialized Filters

[](#specialized-filters-1)

- 📖 [JSON Filter](docs/en/json-filter.md) - Query JSON/JSONB columns with path access
- 📖 [FindInSet Filter](docs/en/find-in-set-filter.md) - Query comma-separated values
- 📖 [Regex Filter](docs/en/regex-filter.md) - Pattern matching with regular expressions
- 📖 [InputMask Filter](docs/en/input-mask-filter.md) - Formatted input with masks
- 📖 [GeoLocation Filter](docs/en/geo-location-filter.md) - Geographic proximity filtering
- 📖 [Filter Group](docs/en/filter-group.md) - Combine filters with AND/OR logic

### New Filter Types

[](#new-filter-types)

- 📖 [SoftDelete Filter](docs/en/soft-delete-filter.md) - Soft delete visibility control
- 📖 [Exists Filter](docs/en/exists-filter.md) - Relationship existence filtering
- 📖 [Aggregate Filter](docs/en/aggregate-filter.md) - Relationship aggregate filtering
- 📖 [Column Compare Filter](docs/en/column-compare-filter.md) - Column comparison
- 📖 [Advanced JSON Filter](docs/en/advanced-json-filter.md) - Structural JSON queries
- 📖 [Timezone Aware Date Filter](docs/en/timezone-aware-date-filter.md) - Timezone conversion
- 📖 [Morph Relation Filter](docs/en/morph-relation-filter.md) - Polymorphic relationships
- 📖 [Capability Matrix](docs/en/capability-matrix.md) - Auto-generated filter capabilities

### Advanced Features

[](#advanced-features-1)

- 📖 [Reset All Filters](docs/en/reset-filters.md) - One-click reset functionality
- 📖 [Filter State Persistence](docs/en/filter-persistence.md) - Session-based filter memory
- 📖 [URL Query Parameter Sync](docs/en/url-sync.md) - Shareable filter URLs
- 📖 [Cascading Select Filter](docs/en/cascading-filters.md) - Dynamic dependent dropdowns
- 📖 [Accessibility](docs/en/accessibility.md) - ARIA labels and keyboard support
- 📖 [Advanced Features](docs/en/advanced-features.md) - API support, Hidden filters
- 📖 [Concerns (Traits)](docs/en/concerns-traits.md) - Filter presets, badge counts, export/import

### Guides &amp; References

[](#guides--references)

- 📖 [Usage Examples](docs/en/usage-example.md) - Complete working examples
- 📖 [Demo Guide](docs/en/demo-guide.md) - Interactive demonstrations
- 📖 [Comparison with Dcat Admin](docs/en/comparison.md) - Feature comparison
- 📖 [Package Structure](docs/en/package-structure.md) - Package architecture
- 📖 [Documentation Structure](docs/en/documentation-structure.md) - Documentation organization
- 📖 [Future Improvements](docs/en/future-improvements.md) - Roadmap and planned features

Facade Usage
------------

[](#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();

// All available filter shortcuts
FilamentDcatFilters::booleanFilter('is_active');
FilamentDcatFilters::nullFilter('deleted_at');
FilamentDcatFilters::enumFilter('status');
FilamentDcatFilters::fullTextFilter('search');
FilamentDcatFilters::hiddenFilter('tenant_id');
FilamentDcatFilters::filterGroup('combined');
FilamentDcatFilters::softDeleteFilter('trashed');
FilamentDcatFilters::existsFilter('has_comments');
FilamentDcatFilters::aggregateFilter('order_count');
FilamentDcatFilters::columnCompareFilter('profitable');
FilamentDcatFilters::advancedJsonFilter('tags');
FilamentDcatFilters::timezoneAwareDateFilter('created_at');
FilamentDcatFilters::morphRelationFilter('commentable');
```

Artisan Command
---------------

[](#artisan-command)

Generate a custom filter class using the Artisan command:

```
php artisan make:dcat-filter MyCustom
```

This creates `app/Filament/Filters/MyCustomFilter.php`.

### Options

[](#options)

OptionDescriptionDefault`--type`Filter type to extend`basic``--force`Overwrite existing file`false`### Available Types

[](#available-types)

TypeBase Class`basic``Filament\Tables\Filters\Filter``like``LikeFilter``in``InFilter``comparison``ComparisonFilter``boolean``BooleanFilter``null``NullFilter``enum``EnumFilter``range``RangeFilter``between``BetweenFilter``scope``ScopeFilter``regex``RegexFilter``fulltext``FullTextFilter``json``JsonFilter``date-component``DateComponentFilter``select-table``SelectTableFilter``modal-select``ModalSelectFilter``hidden``HiddenFilter``relative-date``RelativeDateFilter``cascading-select``CascadingSelectFilter``find-in-set``FindInSetFilter``input-mask``InputMaskFilter``geo-location``GeoLocationFilter``filter-group``FilterGroup``soft-delete``SoftDeleteFilter``exists``ExistsFilter``aggregate``AggregateFilter``column-compare``ColumnCompareFilter``advanced-json``AdvancedJsonFilter``timezone-date``TimezoneAwareDateFilter``morph-relation``MorphRelationFilter`### Examples

[](#examples)

```
# Create a basic filter
php artisan make:dcat-filter ProductStatus

# Create a filter extending LikeFilter
php artisan make:dcat-filter ProductSearch --type=like

# Create a filter extending ComparisonFilter
php artisan make:dcat-filter MinPrice --type=comparison

# Overwrite existing
php artisan make:dcat-filter ProductStatus --force
```

Capability Matrix
-----------------

[](#capability-matrix)

Generate a capability matrix of all filters:

```
php artisan dcat-filters:matrix
php artisan dcat-filters:matrix --format=json
php artisan dcat-filters:matrix --output=docs/matrix.md
```

See the [full capability matrix](docs/en/capability-matrix.md).

Testing
-------

[](#testing)

```
composer test
```

Code Quality
------------

[](#code-quality)

```
# Format code
composer format

# Static analysis
composer analyse
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

If you discover any security-related issues, please email `myxiaoao@gmail.com`.

Credits
-------

[](#credits)

- [Cooper](https://github.com/myxiaoao)
- Inspired by [Dcat Admin](https://github.com/jqhph/dcat-admin)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE) for more information.

###  Health Score

47

—

FairBetter than 93% of packages

Maintenance93

Actively maintained with recent releases

Popularity14

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 92.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~6 days

Total

19

Last Release

66d ago

Major Versions

v1.3.0 → v2.0.02026-04-04

### Community

Maintainers

![](https://www.gravatar.com/avatar/f1a5cf1d598b649d03d3514155a1da4ff4c105c3173945e80298a07ccc077c5c?d=identicon)[huanghua581](/maintainers/huanghua581)

---

Top Contributors

[![myxiaoao](https://avatars.githubusercontent.com/u/1223134?v=4)](https://github.com/myxiaoao "myxiaoao (129 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (8 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (3 commits)")

---

Tags

dcat-adminfilament-pluginlaravel-packagelaravelfiltersfilamentfilament-pluginadmin-paneldcat adminfilament-filterscope-filterrange-filter

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/cooper-filament-dcat-filters/health.svg)

```
[![Health](https://phpackages.com/badges/cooper-filament-dcat-filters/health.svg)](https://phpackages.com/packages/cooper-filament-dcat-filters)
```

###  Alternatives

[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3914.6k](/packages/rawilk-profile-filament-plugin)[croustibat/filament-jobs-monitor

Background Jobs monitoring like Horizon for all drivers for FilamentPHP

274326.6k8](/packages/croustibat-filament-jobs-monitor)[mradder/filament-logger

Audit logging, activity tracking, exports, alerts, and dashboards for Filament admin panels.

2317.4k](/packages/mradder-filament-logger)[stephenjude/filament-jetstream

A Laravel starter kit built with Filament inspired by Jetstream.

17760.2k3](/packages/stephenjude-filament-jetstream)[stephenjude/filament-two-factor-authentication

Filament Two Factor Authentication: Google 2FA + Passkey Authentication

84215.9k9](/packages/stephenjude-filament-two-factor-authentication)[relaticle/custom-fields

User Defined Custom Fields for Laravel Filament

16354.2k](/packages/relaticle-custom-fields)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
