digital-creative/nova-pill-filter

A Laravel Nova filter that renders into clickable pills.

Downloads

45914

Stars

17

Version

v1.0.1

Nova Pill Filter

Latest Version on Packagist Total Downloads License

A Laravel Nova filter that renders into clickable pills.

PillFilter in Action

Installation

You can install the package via composer:

composer require digital-creative/nova-pill-filter

Basic Usage

Create a filter as usual and extend the DigitalCreative\PillFilter\PillFilter class

use DigitalCreative\PillFilter\PillFilter;

class MyFilter extends PillFilter {

    public function apply(Request $request, $query, $values)
    {
        // $values will always be an array
    }
    
    public function options(NovaRequest $request): array
    {
        return [
           'Display Text 1' => 'value-1',
           'Display Text 2' => 'value-2'
        ];
    }

}

and use it as usual on the filters methods within your resource class:

class ExampleNovaResource extends Resource {

    public function filters(NovaRequest $request): array
    {
        return [
            MyFilter::make()
        ];
    }

}

By default, multiple items can be selected, you can restrict it to a single item at time by calling ->single()

class ExampleNovaResource extends Resource {

    public function filters(NovaRequest $request): array
    {
        return [
            MyFilter::make()->single()
        ];
    }

}

Additionally, you can customize the mode the filter is displayed, by default it wraps to show all pills at once, however there is also a drag and stack mode:

Drag Mode Stack Mode Wrap Mode
class ExampleNovaResource extends Resource {

    public function filters(NovaRequest $request): array
    {
        return [
            MyFilter::make()->dragMode(),
            MyFilter::make()->stackMode(),
            MyFilter::make()->wrapMode(),
        ];
    }

}

⭐️ Show Your Support

Please give a ⭐️ if this project helped you!

Other Packages You Might Like

License

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

dcasia

Author

dcasia