webbingbrasil/filament-advancedfilter

filament后台的高级筛选组件。

v3.0.1 2024-01-02 12:04 UTC

README

AdvancedFilters

一组易于使用的带有子句条件的筛选器,用于Filament

注意 对于 Filament 2.x,请使用 2.x 分支

安装

通过composer安装此包(需要filament >= 3.x)

composer require webbingbrasil/filament-advancedfilter "^3.0"

可选:您可以发布翻译文件

php artisan vendor:publish --tag="filament-advancedfilter-translations"

可用筛选器

布尔筛选器

根据布尔列筛选记录

use Webbingbrasil\FilamentAdvancedFilter\Filters\BooleanFilter;

BooleanFilter::make('is_active')

在某些情况下,您可能有一个 nullable 列,布尔筛选器可以以不同的方式处理null值

  • 将null视为未知
  • 将null视为真
  • 将null视为假

默认情况下,nulls 被视为未知且被隐藏

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();

日期筛选器

根据日期/时间戳列筛选记录

use Webbingbrasil\FilamentAdvancedFilter\Filters\DateFilter;

DateFilter::make('published_at')

此筛选器允许用户在以下条件下搜索记录

  • 等于/不等于用户的输入

  • 在或早于/晚于用户的输入

  • 大于/小于用户的输入

    用户可以选择在 未来/过去时间间隔(天、周、月、年),例如

    • 现在起3天以上
    • 6个月前
    • 现在起5周以内
    • 6天前
    • 1年前
  • 介于用户输入之间

  • 已设置/未设置

数字筛选器

根据数字列筛选记录

use Webbingbrasil\FilamentAdvancedFilter\Filters\NumberFilter;

NumberFilter::make('quantity')

此筛选器允许用户在以下条件下搜索记录

  • 等于/不等于用户的输入
  • 在或早于/晚于用户的输入
  • 大于/小于用户的输入
  • 介于用户输入之间
  • 已设置/未设置

文本筛选器

根据文本列筛选记录

use Webbingbrasil\FilamentAdvancedFilter\Filters\TextFilter;

TextFilter::make('name')

此筛选器允许用户在以下条件下搜索记录

  • 等于/不等于用户的输入
  • 以/不以用户的输入开头
  • 以/不以用户的输入结尾
  • 包含/不包含用户的输入
  • 已设置/未设置

设置默认子句

您可以为任何筛选器设置默认子句条件,例如

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);

启用子句标签

默认情况下,子句标签是禁用的,您可以通过调用enableClauseLabel方法来启用它

use Webbingbrasil\FilamentAdvancedFilter\Filters\TextFilter;

FilamentAdvancedFilter\Filters\TextFilter::make('brand')
    ->enableClauseLabel()

字段包装器

您可以更改筛选器字段的包装器,例如使用Group组件而不是Fieldset

use Webbingbrasil\FilamentAdvancedFilter\Filters\TextFilter;

FilamentAdvancedFilter\Filters\TextFilter::make('brand')
    ->enableClauseLabel()
    ->wrapperUsing(fn () => Forms\Components\Group::make())

字段防抖

您可以为筛选器字段设置自定义防抖时间,例如在应用筛选器之前等待700毫秒

use Webbingbrasil\FilamentAdvancedFilter\Filters\TextFilter;

FilamentAdvancedFilter\Filters\TextFilter::make('brand')
    ->debounce(700)

默认的防抖时间是500毫秒。

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件