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

dev-master 2025-11-18 06:00 UTC

This package is auto-updated.

Last update: 2025-11-18 06:00:55 UTC


README

Latest Version on Packagist Total Downloads

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

Guides & References

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

License

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