Skip to content

A Laravel Nova filter that renders into clickable pills.

License

Notifications You must be signed in to change notification settings

dcasia/nova-pill-filter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f71a810 · Oct 28, 2023

History

17 Commits
Oct 21, 2023
Oct 2, 2023
Oct 2, 2023
Sep 29, 2023
Sep 29, 2023
Sep 29, 2023
Nov 24, 2019
Oct 28, 2023
Sep 29, 2023
Sep 29, 2023
Sep 29, 2023
Sep 29, 2023
Sep 29, 2023
Oct 2, 2023

Repository files navigation

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.