digital-creative / nova-pill-filter

A Laravel Nova filter that renders into clickable pills.

Stars
2

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(Request $request)
    {
        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(Request $request)
    {
        return [
            new MyFilter()
        ];
    }

}

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(Request $request)
    {
        return [
            (new MyFilter())->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 mode:

PillFilter in Action

class ExampleNovaResource extends Resource {

    public function filters(Request $request)
    {
        return [
            (new MyFilter())->dragMode()
        ];
    }

}

License

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