- How do I install oneduo/nova-time-field in a Laravel Nova project?
- Install it with composer require oneduo/nova-time-field, then register the field in your Nova service provider as described in the package README. After installing, confirm the real namespace inside vendor/oneduo/nova-time-field instead of guessing from the README. Budget about one hour for a source audit and roughly half a day for your first field, including migration, validation rules and a round-trip smoke test. Every field after that takes only minutes.
- Which Laravel Nova versions does oneduo/nova-time-field support?
- The README makes a compatibility claim, but the truth is the require block in the installed package composer.json. Check it against your actual Nova major, laravel/framework and PHP version before merging. A release dated 2026-05-06 suggests the single maintainer is still tracking Nova majors, but also scan the issue tracker for reports of Nova-major breakage. Treat any mismatch between the README and the installed constraint as a blocker.
- How do I use Time::make() in a Nova resource?
- Add a use statement for Oneduo\NovaTimeField\Time and then declare the field, for example Time::make('opens_at', 'opens_at')->nullable(). Verify the exact namespace from the installed vendor directory first, because an incorrect import is the most common setup mistake. Once wired, the field renders a time picker in forms and displays the stored value consistently in index and detail views.
- What storage format does oneduo/nova-time-field expect for time values?
- The intended model is a naive wall-clock time stored as HH:mm:ss, so add a nullable time column and enforce the contract with a validation rule such as nullable and date_format:H:i:s. Confirm the field behavior with an explicit round-trip test rather than assuming. Mixed formats, H:i rows sitting next to H:i:s rows, will silently break lexicographic sorting and whereBetween queries.
- Does oneduo/nova-time-field handle timezones or daylight saving time?
- No. It is a presentational Nova field that captures a naive wall-clock value and hands it to Nova's resolve and fill cycle; it performs no timezone interpretation. Timezone conversion, recurrence, duration and conflict logic belong in your application code where they can be tested and reasoned about. If you are backfilling legacy UTC datetimes into local wall-clock times, treat that conversion as lossy and DST-ambiguous and plan it deliberately.
- When a user clears the time field, does it persist NULL or 00:00:00?
- You must verify this on day one with a clear-and-save smoke test, because the answer is not something to assume. Midnight, 00:00:00, is falsy in PHP, so naive is-configured checks will silently drop a legitimate midnight value. Keep the column and the validation rule nullable, and assert in a test that clearing persists NULL rather than a zero time.
- Does the package ship prebuilt JS assets or require a Node build?
- Confirm this before merge, because it determines the entire upgrade risk profile. If compiled assets ship with the package, the main hazard is a Nova major upgrade breaking the bundled Vue and Tailwind output, which typically produces a blank or unstyled widget instead of a failing test. If it instead expects a Node build pinned to Nova's tooling, budget ongoing maintenance effort for rebuilds on every Nova upgrade.
- Is oneduo/nova-time-field safe to use in production?
- The popularity signal is weak: around 13 stars, zero dependents and a single maintainer, and that is the honest headline. It is offset by an MIT license that makes forking legally trivial, a surface area small enough to audit in an afternoon and reimplement in roughly half a day, and a recent release suggesting the maintainer is still active. The dominant failure vector is not abandonment but a Nova major upgrade breaking the compiled Vue assets, so name an internal owner and record the fork or vendor path in your dependency inventory.
- How should I validate a time field in Laravel when using this Nova field?
- Match the validation rule to the storage contract, for example nullable plus date_format:H:i:s, and back it with a nullable time column in the migration. Add a round-trip smoke test that covers creating, updating and clearing the value. Also test the midnight case explicitly, since 00:00:00 can disappear from truthiness-based checks.
- Should I build a custom Nova time field instead of using this package?
- This package is a thin presentational dependency: a Nova Field subclass plus a Vue component with no routes, services or persistence of its own. Its surface area is small enough to audit in an afternoon and to reimplement in about half a day if upstream goes quiet, which makes buying the form control a reasonable trade. Keep in mind that scheduling logic still belongs in your application code, and watch for a future Nova release shipping a native Time class that could collide with an unqualified import.