outl1ne/nova-multiselect-field
Laravel Nova multiselect field with searchable multi- and single-select, async resource querying, drag-and-drop reordering, option dependencies, distinct value groups, and on-the-fly tagging. Stores values as JSON and supports light and dark modes.
composer require. The decision to evaluate is not "can we build this?" but "is a multiselect a differentiator for us?" It almost never is, which makes the buy side easy.saveAsJSON() for a native JSON column, or belongsToMany() if you need a normalized pivot table. This is a real product/architecture fork: JSON is fast to ship but painful for reporting and referential integrity; pivot tables are query-friendly but add migration work. Choosing this package makes the JSON path the path of least resistance, so decide deliberately.optionsDependOn() (cascading selects like Country → Language), max(), and distinct() let you constrain what a user can pick and prevent duplicate choices across related fields. That's a data-quality decision — it trades operator flexibility for cleaner downstream data and fewer support tickets.taggable() enables on-the-fly values. Useful for long-tail cases, but it's the classic path to taxonomy sprawl. Roadmap implication: if you enable it, budget for a periodic cleanup/normalization job or an admin review queue.asyncResource() / api() decide whether the field can handle thousands of rows without freezing the browser. This is a gating criterion for using it against large catalogues (artists, products, customers) rather than just static enums.belongsToMany and belongsTo helpers mean you can ship relationship management in the admin without a custom pivot UI. Roadmap-friendly: lets you defer a dedicated "manage categories" screen.indexDelimiter, indexCharDisplayLimit) are all free. That removes a batch of small "nice-to-have" items from your backlog and lets you spend the time on actual product surface.Adopt when most of the following hold:
<select multiple>.Look elsewhere (or build) when:
belongsToMany or a proper pivot) from day one.For executives (one paragraph): We can add rich multi-value selection — searchable, drag-to-reorder, cascading, tag-enabled — to our admin panel for the cost of a single dependency install instead of a sprint of custom front-end work. It's MIT-licensed, actively versioned, and requires no new infrastructure, no new vendor contract, and no new data store. The main caveat is a data-design choice: the fast path stores selections as JSON/text, which is fine for admin editing but requires care if we later want to report on those values — that's a decision we can make now and revisit cheaply.
For engineering (bullet summary):
composer require outl1ne/nova-multiselect-field, one Multiselect::make() per field, ~10 lines each. No migrations required beyond the column you already intended.saveAsJSON() for JSON columns; belongsToMany() for real relationships. Pick per field, not per app.asyncResource() / api() do server-side search, so large option sets don't bloat page payloads. optionsLimit caps rendered items with search as the escape hatch. Avoid belongsToMany(..., false) on unbounded tables.app.js, so we're not boxed in on presentation.fields() methods — no data migration if we keep storage simple.How can I help you explore Laravel packages today?