digital-creative/nova-pill-filter

A Laravel Nova filter that renders into clickable pills.

Fund package maintenance!
milewski

Installs: 45 905

Dependents: 1

Suggesters: 0

Security: 0

Stars: 17

Watchers: 4

Forks: 2

Open Issues: 0

Language:Vue

v1.0.1 2023-10-02 07:49 UTC

This package is auto-updated.

Last update: 2024-03-28 09:22:33 UTC


README

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
drag-light.png stack-light.png wrap-light.png
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.