outl1ne/nova-input-filter
A Laravel Nova filter that adds a free-text input field to the filters panel, letting users type a value to filter resource listings without building a custom filter class each time.
Filter class. It does not ship search, ranking, or query logic — you still write apply(). The decision it informs is therefore small on both sides: buy a filter input control versus roughly a day of bespoke Nova component work. Decide it quickly at the team level rather than escalating it.composer require, one filter class, one line in filters().app/Nova/Filters contingency is agreed before adoption, not after something breaks.where('name', 'like', "%{$value}%") copied from an example is an injection path from an authenticated admin surface. This is the highest-severity failure mode in the whole evaluation and it lives inside our review boundary. Budget review time and a written rule (bound parameters only, grouped orWhere closures) as part of the adoption cost, not as a follow-up.inputmode, and type="number" are not exposed in the PHP config — customizing them means overriding the Vue component and pulling yourself back into the frontend build you were avoiding. Nova's built-in date/number filters are the right call there.LIKE cannot use a B-tree index; it is a sequential scan. Past low-hundreds-of-thousands of rows, use prefix matching, add a trigram/fulltext index, or pair the input with a narrowing date/status/tenant filter so the LIKE runs over a pre-filtered set. Run EXPLAIN against production-like row counts during the spike, not after rollout."1.x" or an exact tag) and treating the version as deliberate. The entire package is a base class plus a component — small enough to copy into app/Nova/Filters and drop the dependency in an afternoon. Agree that fork path now.blank($value) guard in every apply(). Users cannot distinguish "filter applied, no matches" from "filter didn't apply," and that erodes trust in the admin panel faster than a missing feature.For executives: This is a one-command, MIT-licensed add-on that turns our admin panel into a self-serve lookup tool. Support and ops stop filing tickets to engineering for "find this order by email," and we retire the unwieldy dropdown filters that no one uses. No database changes, no customer-facing surface, no migration, no data risk. Total cost is hours, not weeks, and the primary investment is a code review of the queries we write — which is work we would have to do anyway.
For engineering: It is a base Filter subclass plus a compiled Vue input component; there is no service provider, no publish step, no asset build. We own apply() entirely, so the query shape is our decision and our review: bound parameters only, grouped orWhere closures, and an explicit blank($value) guard for the empty case. It is only useful inside a licensed Nova install, so Nova's major version is the compatibility ceiling, and the compiled asset can fail silently on upgrade — we add an "open every filter on staging" step to the Nova upgrade checklist.
What we are asking for: approval to add it as a pinned admin-only dependency, with a named owner, a documented query-review rule, and a pre-agreed contingency to fork the two files into app/Nova/Filters if upstream goes quiet. Pilot it on the highest-volume resource index first, measure time-to-find and engineering interrupts avoided, and roll it out to further resources if those numbers hold. If it only ever lands on one resource, we build the filter in-house instead — that is the threshold we are holding ourselves to.
How can I help you explore Laravel packages today?