dillingham/nova-grouped-field
A Laravel Nova field that groups multiple form fields into one visual panel, keeping long forms tidy and organized. Drop it into your resource, nest the fields, and Nova renders them together as a single grouped block.
Admin tooling vs. product roadmap — keep them separate. This is a presentation-layer convenience for Laravel Nova index and detail views: it merges related attributes (name + email, address parts, timestamps) into one labeled column with a configurable separator. It touches no domain model, no persistence, no customer-facing surface, and requires no data migration. The correct framing is "internal ops polish with near-zero exit cost," not "product capability" — which is itself a decision input. It should not consume roadmap capacity, launch risk, or product risk budget.
Build vs. buy — default to build unless a short spike proves otherwise. The underlying capability is roughly 30–50 lines: join attributes into a string and render through a Nova Text field with displayUsing. The package's differentiated value is declarative config plus the 0.11 correctness fixes. Against that: a single maintainer, last release January 2020, zero downstream dependents, pre-1.0 semantics. The defensible default is in-house unless a time-boxed compatibility spike shows the package works cleanly on your Nova major. Treat adoption as a reversible experiment, not a commitment.
Operational throughput decisions. Grouping reduces column sprawl and horizontal scrolling for support and ops staff reading tables at scale. The measurable outcome is fewer columns per index view and faster row scanning — a productivity gain, not a new workflow.
Use cases the 0.11 release history unlocks:
Acme — — Amsterdam, which read as corrupted data and generate internal support noise. This is the strongest single justification for taking the dependency rather than hand-rolling.Roadmap risk posture. All three shipped changes are cosmetic or correctness fixes with no API or schema implications. Nothing here alters integration cost, reporting, or downstream systems — precisely why it can be trialed and reversed inside a single sprint.
Consider it when all of the following hold:
Look elsewhere when:
TextColumn equivalents, or plain Blade plus Eloquent accessors — better maintained and first-party.One line: A small MIT-licensed add-on for the Nova admin panel that packs several related record attributes into a single table column, so ops and support staff read more per screen with fewer visual artifacts.
For executives: This is admin-panel polish, not a product capability. It touches no customer-facing code or data model and can be removed with a one-line change. The benefit is operational: faster row scanning for internal users, and the newest release fixes the dangling-separator rendering bug that makes partially filled records look corrupted — a recurring source of internal confusion and tickets. Important caveat: the package has not shipped a release since January 2020, has 40 stars and no downstream dependents, so the recommendation is a time-boxed spike first, not a standing commitment. If it does not cleanly support our Nova version, the fallback — a computed accessor plus a stock Nova field — is under a day of engineering. Treat the whole thing as a low-cost, reversible experiment with a fork contingency already priced in.
For engineering: Three formatting improvements landed in 0.11 — date formatting inside grouped values, newline separators for stacked layout, and suppression of separators around empty fields — all additive, no API or data changes. The real work is verification, not integration: confirm the package's declared Nova / Laravel / PHP support against ours (release notes are silent and 0.11 is from 2020); check that date formatting degrades safely on non-date values; confirm separator escaping behaves correctly in index versus detail renderers; and test all-empty groups (blank, placeholder, or stray separator?). Also confirm whether it supports detail and any inline-edit/preview contexts, or is display-only. Then: pin 0.11.x exactly, keep usage isolated inside resource definitions so a swap to a custom field stays contained, avoid grouping relationship-backed attributes unless eager-loaded (otherwise N+1 on index views), and record the pinned version plus separator/format conventions in the admin-panel docs. If any of those checks turns awkward, build the equivalent field in-house — the surface is small and we already understand it.
How can I help you explore Laravel packages today?