digital-creative/nova-slider-filter

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

Fund package maintenance!
milewski

Installs: 47 641

Dependents: 0

Suggesters: 0

Security: 0

Stars: 13

Watchers: 3

Forks: 3

Open Issues: 1

Language:Vue

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

This package is auto-updated.

Last update: 2024-10-28 10:59:24 UTC


README

Latest Version on Packagist Total Downloads License

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

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.