Laravel Community Tools by Tighten
Laravel Nova icon Nova Packages
N

Multiselect Filter

Readme

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.

Reviews

By fergus-ugle on January 24, 2025

Works great. Only problem is the select drop down disappears if it overflows small screensizes and this makes it appear as though it isn't working.

By Max on August 11, 2022

just great, thanks

Back to Top
Added 5 years ago
Last updated 1 Year Ago
Version 5.0.1
Nova Version ^5.0
Composer
outl1ne/nova-multiselect-filter
GitHub stars 45
Packagist downloads 757,446

Favorites

11 users favorited

Rating

4.50
(out of 5)
★★★★★
★★★★
★★★
★★
2 ratings

Author

Contributors

Brought to you by Tighten

Issues/Feature Requests Stats Package Ideas