LaravelPackages.net
Acme Inc.
Toggle sidebar
optimistdigital/nova-multiselect-filter

Multiselect filter for Laravel Nova.

314.836
45
5.0.2
About optimistdigital/nova-multiselect-filter

optimistdigital/nova-multiselect-filter is a Laravel package for multiselect filter for laravel nova.. It currently has 45 GitHub stars and 314.836 downloads on Packagist (latest version 5.0.2). Install it with composer require optimistdigital/nova-multiselect-filter. Discover more Laravel packages by optimistdigital or browse all Laravel packages to compare alternatives.

Last updated

Nova Multiselect Filter

Latest Version on Packagist Total Downloads

This Laravel Nova package adds a multiselect to Nova's filters.

Requirements

  • php: >=8.0
  • laravel/nova: ^5.0

Features

  • Multi select
  • Single select
  • Group select
  • Search

Screenshots

Multiselect

Multiselect

Groupselect

Groupselect

Installation

Install the package in a Laravel Nova project via Composer:

composer require outl1ne/nova-multiselect-filter

Usage

The filter can be used when switching Filter class with MultiselectFilter.

use Outl1ne\NovaMultiselectFilter\MultiselectFilter;

class BooksByAuthorFilter extends MultiselectFilter
{
    public function apply(Request $request, $query, $value)
    {
        return $query->whereHas('books', function ($query) use ($value) {
            $query->whereIn('author_id', $value);
        });
    }

    public function options(Request $request)
    {
        return Authors::all()->pluck('name', 'id');
    }
}

Option groups

Option groups are supported. Their syntax is the same as Laravel's option group syntax.

In this example (from Nova docs), all values are grouped by the group key:

    public function options(Request $request)
    {
        return [
          'cat' => ['label' => 'Cat', 'group' => 'Pets'],
          'dog' => ['label' => 'Dog', 'group' => 'Pets'],
          'eagle' => ['label' => 'Eagle', 'group' => 'Birds'],
          'parrot' => ['label' => 'Parrot', 'group' => 'Birds'],
        ]
    }

Options

Possible options you can pass to the filter using the option name as a function, ie ->placeholder('Choose peanuts').

| Option | type | default | description | | -------------- | --------------- | ---------- | ------------------------------------------------------------------------------------------------------ | | options | Array|callable | [] | Options in an array as key-value pairs (['id' => 'value']). | | placeholder | String | Field name | The placeholder string for the input. | | max | Number | Infinite | The maximum number of options a user can select. | | groupSelect | Boolean | false | For use with option groups - allows the user to select whole groups at once | | singleSelect | Boolean | false | Makes the field act as a single select. The returned value will be an array with one element. | | optionsLimit | Number | 1000 | The maximum number of options displayed at once. Other options are still accessible through searching. |

Localization

The translations file can be published by using the following publish command:

php artisan vendor:publish --provider="Outl1ne\NovaMultiselectFilter\FieldServiceProvider" --tag="translations"

You can then edit the strings to your liking.

Credits

This package was inspired by klepak/nova-multiselect-filter

License

This project is open-sourced software licensed under the MIT license.

Star History Chart