Skip to content

A Laravel Nova filter for picking range between a min/max value.

License

Notifications You must be signed in to change notification settings

dcasia/nova-slider-filter

Repository files navigation

Nova Slider Filter

Latest Version on Packagist Total Downloads License

A Laravel Nova filter for picking range between a min/max value.

SliderFilter in Action

Installation

You can install the package via composer:

composer require digital-creative/nova-slider-filter

Basic Usage

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

use DigitalCreative\SliderFilter\SliderFilter;

class MyFilter extends SliderFilter {

    public function apply(NovaRequest $request, $query, $values)
    {
        // $values will be an array when using ->range() and int when using ->single()
    }
    
}

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()->single(min: 0, max: 100),
        ];
    }

}

Calling the ->range() method will render a slider with two (or more) handles, while calling the single() method will render a slider with a single handle.

class ExampleNovaResource extends Resource {

    public function filters(NovaRequest $request): array
    {
        return [
            MyFilter::make()
                ->range(0, 500, 300)
                ->label('${value}')
                
            MyFilter::make()
                ->single(min: 0, max: 500)
                ->label('${value}')
        ];
    }

}

You can also set marks on the slider by using the ->marks() method. The method accepts an array of key/value pairs where the key is the value of the mark and the value is the label to be displayed.

class ExampleNovaResource extends Resource {

    public function filters(NovaRequest $request): array
    {
        return [
            MyFilter::make()
                ->single(0, 100)
                ->marks([
                    '0' => '🌑',
                    '50' => '🌓',
                    '100' => '🌕'
                ])
        ];
    }

}

⭐️ 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.