A custom vue component that fully supports filtering over a range of values based on Vue Slider Component
You can install the package into a Laravel application that uses Nova via composer:
composer require oleksiypetlyuk/nova-range-filter
Just use the Oleksiypetlyuk\NovaRangeFilter\NovaRangeFilter
field in your Nova filter:
<?php
namespace App\Nova\Filters\Profile;
use App\Models\Profile\Profile;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use Oleksiypetlyuk\NovaRangeFilter\NovaRangeFilter;
class HourlyPriceFilter extends NovaRangeFilter
{
public $name = 'Price range';
public function __construct()
{
$this->min = floor(Profile::min('hourly_price'));
$this->max = ceil(Profile::max('hourly_price'));
parent::__construct();
}
/**
* Apply the filter to the given query.
*
* @param Request $request
* @param Builder $query
* @param mixed $value
* @return Builder
*/
public function apply(Request $request, $query, $value)
{
return $query->whereBetween('hourly_price', $value)
->orWhereNull('hourly_price');
}
}
All contributions (big or small) are highly welcomed. Send a PR
- Oleksiy Petlyuk [email protected]
If you would love to support the continuous development and maintenance of this package, please consider buying me a coffee.
This package is open-sourced software licensed under the MIT License