Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Nova Multiselect Filter

Nova Multiselect Filter Laravel Package

klepak/nova-multiselect-filter

A Laravel Nova filter package that adds a multiselect filter, letting users filter resource listings by multiple values in one control. Useful for narrowing index views by several categories, statuses, or related options without adding separate filters.

View on GitHub
Deep Wiki
Context7

Multiselect filter for Laravel Nova

Frequently asked questions about Nova Multiselect Filter
How do I install klepak/nova-multiselect-filter?
Install it with composer require klepak/nova-multiselect-filter inside your Laravel application, then register or publish the package's compiled frontend asset as described in its README. Because the last release was in December 2020, confirm which Nova major you are running before you commit. On Nova 4 or 5 you should expect to rebuild or replace the shipped Vue component rather than rely on it.
Does this multiselect filter work with Laravel Nova 4 or Nova 5?
There is no official support signal beyond the December 2020 release, which predates Nova 4's move to Vue 3. The PHP filter class is likely still fine because the filter contract is stable, but the compiled Vue component is the probable break point. Treat the PHP side and the frontend asset as two separate compatibility risks and test both on staging before adopting it.
How do I add the multiselect filter to a Nova resource?
Add the filter class to the filters() array returned by your Nova resource, just like any other Nova filter. The filter returns multiple selected values instead of a single one, so your apply() implementation should hand them to a whereIn clause. Keep the Nova major pinned in composer.json so an upgrade cannot silently change the filter contract underneath you.
How does the apply() method handle multiple selected values?
Instead of receiving a scalar, the filter's value argument arrives as an array of the option keys the user selected. Pass that array to whereIn on an indexed column so the query stays cheap even with several values. Always handle the empty-array case first, otherwise an untouched filter returns zero rows instead of all rows.
How do I set default selected values on the multiselect filter?
Set the filter's default value property to an array of option keys, matching exactly what your options() method returns. That default is loaded into the component's initial state and applied to the index query on first render. If the keys do not match the option list, the filter will appear active but match nothing.
What is the difference between this package and Nova's built-in SelectFilter?
Nova's built-in SelectFilter accepts a single value, so multi-value filtering usually means stacking several filters or writing a combined custom one. This package exists to give you one control that returns many selections at once. If your real need is only two or three status or category fields, a small SelectFilter variant may be cheaper than carrying an unmaintained dependency.
The multiselect filter renders but no longer narrows results, how do I debug it?
This is the typical failure mode: the dropdown still draws, but the index query quietly stops being constrained. Check the browser console for Vue or asset errors first, then log the value arriving in apply() to confirm it is an array and not null. An empty value almost always means the frontend component is not submitting state, which usually traces back to a compiled asset mismatch with your Nova version.
Is klepak/nova-multiselect-filter still maintained and safe for production?
It has not had a release since December 2020, has around 14 GitHub stars, and appears to be a single-maintainer project with no CI or Nova version support matrix. The blast radius is low because it only affects admin index filtering, with no data mutation, auth surface, or customer-facing path. Still, treat it as unmaintained and either pin your Nova major or own the code yourself.
Should I fork or vendor the package instead of requiring it with Composer?
Vendoring is the safer long-term option for a package this stale. Copy the filter class into app/Nova/Filters and the Vue component into your own asset pipeline, keeping the upstream attribution and license terms, then patch it yourself on Nova upgrades. That converts a five-year-old dependency into a few hundred lines of code your team controls.
How do I test a Nova multiselect filter?
Cover the PHP side with a feature test that hits the Nova index endpoint and asserts the query is constrained when multiple values are selected. Add cases for a single selection and for an empty selection, since the empty case is where filters most often break silently. The Vue component itself needs a browser test or a manual check against the exact Nova version you run in production.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
dbravoan/dbcms-admin-theme-dbcms
dbravoan/dbcms-theme-db-cyber
dbravoan/dbcms-blocks-basic
dbravoan/dbcms-module-content-audit
dbravoan/dbcms-module-ai-assistant
paygate-to/paygate-php
padosoft/askmydocs-connector-base
defstudio/supercharged-carbon
bernskioldmedia/laravel-matomo
bernskioldmedia/laravel-harvest
bernskiold/laravel-data-scrubber
bernskiold/laravel-currency-converter
bernskiold/laravel-campaign-monitor
bernskioldmedia/laravel-autotranslate
siberfx/telegram-bot
roy-sandip/laravel-view-extended
gregsphotography/site-builder-core
roy-sandip/laravel-view
anodyne/blade-fluentui-icons
webx-ui/module-catalog-collections