codicastudio/mega-filter

一个随机的Codica Studio包。

1.0.0 2020-09-25 01:53 UTC

This package is auto-updated.

Last update: 2024-09-25 13:42:10 UTC


README

此包允许您控制nova资源上显示的列和过滤器。

安装

您可以通过composer安装此包

composer require digital-creative/nova-mega-filter

基本用法

基本演示展示了该字段的强大功能

use DigitalCreative\MegaFilter\MegaFilter;
use DigitalCreative\MegaFilter\HasMegaFilterTrait;
use DigitalCreative\MegaFilter\Column;

class ExampleNovaResource extends Resource {

    use HasMegaFilterTrait; // Important!!

    public function cards(Request $request)
    {
        return [
            MegaFilter::make([
                'filters' => [
                    new DateOfBirthFilter(),
                    new UserTypeFilter()
                ],
                'columns' => [
                    Column::make('Customer Name', 'name')->addFilter(new ActiveFilter()),
                    Column::make('Assets'),
                    Column::make('Payments')
                ]
            ])
        ];
    }

}

列反映了您表资源上通常显示的每一列,但是您可以自由地让用户能够切换开启或关闭

Columns in Action

use DigitalCreative\MegaFilter\Column;
use DigitalCreative\MegaFilter\HasMegaFilterTrait;
use DigitalCreative\MegaFilter\MegaFilter;

MegaFilter::make([
    'columns' => [
        Column::make($label),
        Column::make($label, $attribute),
        Column::make($label, $attribute, $filters),
        new Column($label, $attribute, $filters),
    ],
])

您可以在启用所需的列时添加额外的过滤器

MegaFilter::make([
    'columns' => [
        Column::make('Gender')->addFilter(new GenderFilter())
    ],
])

Columns in Action

如果您想始终显示过滤器,请使用下面的'filters'选项

您还可以定义用户不能切换的列,并将它们始终显示在表资源上

MegaFilter::make([
    'columns' => [
        Column::make('Name')->permanent()
    ],
])

当使用->permanent()时,列可能定义的每个过滤器也将存在

其他列方法包括使列默认选中

MegaFilter::make([
    'columns' => [
        Column::make('Name')->checked() // Checked by default
    ],
])

过滤器

filters键接受默认Nova过滤器类或第三方类的任何实例数组。

MegaFilter::make([
    'filters' => [
       new BirthdayFilter(),
       new UserTypeFilter(),
       new GenderFilter(),
    ],
])

操作

操作将使用相同的Nova操作机制

MegaFilter::make([
    'actions' => [
       new ExportClientAsExcell(),
    ],
])

Columns in Action

如果您定义了多个操作,将显示一个下拉菜单

Columns in Action

选定的列也将提供给您的操作,您可以直接从请求中访问它们

public function handle(ActionFields $fields, Collection $models)
{

    $columns = json_decode(request()->input('columns'));

    dd($columns);

}

设置

设置键是可选的,因为它包含一些好的默认值,但您可以随时覆盖它以满足您的需求。

MegaFilter::make([
    'settings' => [

        /**
         * Tailwind width classes: w-full w-1/2 w-1/3 w-1/4 etc.
         */
        'columnsWidth' => 'w-1/4',
        'filtersWidth' => 'w-1/2',
        
        /**
         * The default state of the main toggle buttons
         */
        'columnsActive' => false,
        'filtersActive' => true,
        'actionsActive' => true,
        
        /**
         * Labels
         */
        'headerLabel' => 'Menu',
        'columnsLabel' => 'Columns',
        'filtersLabel' => 'Filters',
        'actionsLabel' => 'Actions',
        'columnsSectionTitle' => 'Additional Columns',
        'filtersSectionTitle' => 'Filters',
        'actionsSectionTitle' => 'Actions',
        'columnsResetLinkTitle' => 'Reset Columns',
        'filtersResetLinkTitle' => 'Reset Filters',

    ],
])

许可证

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