laraning/nova-time-field
A Laravel Nova custom field that adds a clean time picker to your resources, letting you store and edit time-only values with ease. Simple to install and configure, it integrates seamlessly with Nova forms, detail, and index views.
laravel/nova constraint against your Nova major version — Nova 4/5 will either block install at Composer or register-then-render-blank. That's a vendor and port signal, not a dead end.^1.2. Do not target dev-master on a package with a multi-year release gap.src/Time.php — the README is thin and the source is the real documentation.'' rather than null.dependsOn, readonly, or any reactive change-handling feature, test that path explicitly — v1.2's handleChange override is a known deviation from Nova's method signature.handleChange workaround. Re-test existing forms on upgrade even though no breaking changes are declared, and re-check these paths on every future Nova upgrade.DateTime field configured for time-only display, a small in-house Nova field, or a more actively maintained package. If time features are business-critical, or a Nova upgrade is within two quarters, skip straight to vendoring the PHP field and Vue component.Executives: This is a low-cost, MIT-licensed Nova field that saves engineering hours on simple internal time-entry screens — shift planning, appointment slots, operating hours, time logging. Approve it as a tactical dependency for non-critical workflows only. It is not a strategic platform investment: the package is small, has a 2020-era release cadence and an older Nova 3-era front end, and carries a known maintenance contingency. Budget the contingency now — a few hours of vendoring if time-based features become business-critical or the team upgrades Nova — rather than discovering it during an upgrade.
Engineering: The PHP side is a thin Laravel\Nova\Fields\Field subclass that takes minutes to read and a handful of lines to register in a resource. The real surface area is the shipped compiled front end: a pre-Vite, Vue 2 flatpickr bundle in dist/ with no reproducible build path for you, plus a v1.2 handleChange override that deliberately does not match Nova's method signature. Plan accordingly — pin ^1.2, verify Nova version compatibility before writing field code, read the source rather than the README, and add the one round-trip test that asserts the raw column value survives a save. If this lands on anything business-critical or a Nova upgrade is planned, vendor the PHP class and Vue component into nova-components/, rebuild against your own toolchain, and restore a standard handleChange — a few hours of work that removes the single largest ongoing risk. Treat dist/ as the shipped interface, not src/; and remember there is no config surface, so all behavior is configured per-field in the resource.
How can I help you explore Laravel packages today?