marshmallow/nova-resource-click
Make Laravel Nova resource index rows clickable. Click anywhere on a row to open its detail page, with configurable behavior, without writing custom JavaScript. A small, focused Nova extension for faster navigation.
Architecture fit. The package targets a narrow, well-defined seam in Laravel Nova: the index-row click behaviour of a resource. Implementation is almost certainly a service provider registering a Nova asset (a small JS/CSS bundle) plus a static property or macro on Laravel\Nova\Resource that lets a resource declare its click handler. This is idiomatic for Nova extensions and does not touch application domain code, Eloquent models, or routing. Fit with a standard Laravel + Nova stack is therefore high in principle — the blast radius is a single UI interaction on one screen type.
Integration feasibility. Low effort, non-trivial friction. Two blockers dominate:
vcs repository entry pinned to a commit SHA rather than a stable, audited Packagist release.Technical risk — high, and mostly non-technical in nature. The functional risk is small (a row-click handler is a few dozen lines of JS). The portfolio risk is not:
$clickAction property on resources (navigate, select, ignore, preview), which covers the majority of the stated use case. Adopting an archived third-party shim for behaviour the framework now ships is a net-negative trade.Key questions.
$clickAction property already satisfy the requirement? If yes, the package is unnecessary.Stack fit. Requires Laravel with Nova installed and a licence — this is a Nova-only package with no utility outside that context. Any Laravel app without Nova gets zero value. Confirm the PHP/Laravel/Nova version matrix by inspecting composer.json in the repo directly; the archived state means no ^ constraints will have been widened for current releases, and a hard nova version pin is likely.
Migration path. Recommended sequence, in preference order:
public static $clickAction (plus $clickActionModal or a custom fields() link on the first column) delivers the requirement. This resolves most cases at zero dependency cost.nova-components/ or a small resources/js extension). The code volume is small enough that the reimplementation cost is measured in hours, not days, and it removes the archived dependency entirely.Direct composer require of the archived upstream is not recommended at any step.
Compatibility. Three axes to test explicitly: Nova major version (asset registration and Resource static-property resolution differ), the front-end build pipeline (Mix vs Vite — an old asset bundle may not survive an upgrade), and coexistence with other index-row customisations (link-to-detail defaults, inline editing, row selection). Because the package is archived, none of this will be validated by anyone but us.
Sequencing. Gate adoption behind the native-capability check. If a build is still warranted: reproduce the requirement in a spike branch against the current Nova version → confirm behaviour → decide vendor vs fork → only then wire into the application. Budget roughly 1–2 developer-days end to end, of which the majority is compatibility verification rather than integration.
Maintenance. Effectively total ownership transfer. Archived means no upstream patches, no security advisories, no Nova-version compatibility work. Any breakage from a Nova or Laravel upgrade lands entirely on our team, and the fix will require reading unfamiliar (if small) source. This must be recorded as an owned exception, not a normal dependency.
Support. None. No maintainer response, no issue triage, no documentation updates. Internal engineers become the de facto maintainers, and knowledge will concentrate in whoever performs the initial integration — a bus-factor of one unless the work is documented at handoff.
Scaling. Negligible. The runtime footprint is a small client-side asset scoped to index views; no database, queue, or API surface is involved. The package will not be a performance or capacity constraint at any realistic scale. The scaling concern is organisational, not technical: the cost grows with every Nova major upgrade rather than with traffic.
Failure modes. Ranked by likelihood:
composer update resolution.role handling makes index rows unreachable via keyboard. Worth checking explicitly, as this is a common failure in small Nova UI packages.Ramp-up. Low technical ramp-up, meaningful governance ramp-up. A Laravel/Nova-fluent engineer can read the source and reproduce the behaviour in well under a day. The slower part is process: adding an archived dependency requires an exception, an owner, a retirement plan, and a documented rationale — overhead that is disproportionate to the ~9.47 opportunity score and the functional value on offer.
Recommendation. Do not adopt as a dependency. The package solves a real but narrow problem that current Nova releases largely solve first-party, and it does so from an archived, unvalidated source. Reimplement the behaviour natively or vendor the MIT-licensed logic into the application, capturing the requirement in a UI test so future Nova upgrades surface regressions loudly.
How can I help you explore Laravel packages today?