Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Nova Time Field Laravel Package

michielfb/laravel-nova-time-field

A Laravel Nova field that adds a time picker input for selecting times in Nova resources, with simple formatting and seamless integration into Nova forms and indexes.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • The real decision is schema, not UI. Adopting this field is the moment you decide a time-of-day attribute is a TIME value, not a DATETIME with a discarded date stapled to it. That choice propagates into reporting, duration math, cross-midnight handling, timezone interpretation, and migration cost. The package is a lever for making that schema call cheaply; it is not the deliverable.
  • Feature scoping for scheduling-adjacent roadmap items. Business hours, shift windows, opening/closing times, appointment slots, and class schedules are all wall-clock values. Shipping them behind a text field with a regex, or a datetime picker that forces operators to invent a date, is a scope decision disguised as an implementation detail. This lets you scope an MVP as "capture and display time-of-day" without pulling in a calendar or a scheduling engine.
  • Cheap demand validation before a roadmap commitment. A scheduling or workforce feature is expensive. This is a probe: if operators adopt the time fields and then ask for ranges, recurrence, or conflict detection, you have earned evidence for the real investment. If the fields sit unused, you avoided a sprint. Fund the probe, not the engine.
  • A genuine build vs. buy vs. fork call, with honest numbers. The artifact is roughly one Nova field class, one Vue component, and a service provider. The deciding factor is not effort — it is whether you want to track Nova's front-end toolchain across major versions or own ~100 lines locally. Either answer is defensible; drifting into it by default is not.
  • Consistency across the admin surface. Once two or three resources need time entry (locations, staff, services), each team solving it differently becomes a support and data-quality problem. Standardizing on one component is a product decision about operator experience, not a technical preference.
  • Dependency portfolio hygiene. Twenty stars, zero dependents, one maintainer, and no release since December 2024 means this belongs in your dependency inventory with a named owner and an exit plan. Silently absorbing a single-maintainer package into a revenue-adjacent admin workflow is how small risks become unowned ones.
  • Where to spend the saved time. Integration is hours, not a sprint. Reinvest that capacity in what the field deliberately does not do: server-side validation and range rules, round-trip testing against existing rows, seconds-truncation policy, and an explicit decision on the browser matrix your operators actually use.

When to Consider This Package

Consider it when:

  • You run Laravel Nova and have one or more genuine time-of-day attributes to edit in an internal admin panel. Without Nova in the estate, the package is not addressable — that is the first filter, not the last.
  • The Nova major you run has been verified against the package's declared laravel/nova constraint on a branch, rather than inferred from the release date. Nova's field API has moved across 3 → 4 → 5; a recent release does not mean it names your version.
  • The value is a wall-clock time — a shift start, a location's opening hour — with no timezone semantics at the field level. If you need an instant, you need something else entirely.
  • The surface is internal-facing, so browser-native <input type="time"> rendering differences (12h vs. 24h by locale, Safari quirks) are tolerable and the people who hit them are on your team.
  • Your team will pin the version, read the source, wrap it in an app-local field class, and fork into app/Nova/Fields if upstream goes quiet. If that posture is unacceptable, stop here.
  • You want the smallest artifact that satisfies the need rather than pulling in a broader field suite for one input type.

Look elsewhere, or build in-house, when:

  • Requirements include timezones, durations, validated start/end ranges, recurrence, or a calendar view. This is a single-value input, not a scheduling primitive, and extending it in that direction is the wrong shape of work.
  • The surface is customer-facing or brand-sensitive. Native control styling and locale behaviour vary enough that you will end up designing a component anyway.
  • Procurement requires vendor support, an SLA, security review artifacts, or a maintained release cadence. A single-maintainer package with no dependents will not clear a regulated review, and starting that process costs more than the fork.
  • A Nova major upgrade is imminent or in flight. Adopting compatibility risk at the moment it is most likely to bite is a sequencing error.
  • You already maintain an internal field kit. A second convention costs more in coordination than a local field costs to write.
  • You cannot get Nova credentials into CI. Resolve that on its own merits before it becomes a package-adoption blocker.

How to Pitch It (Stakeholders)

To executives: This is a small, free, open-source admin component that lets our internal operations tool capture time-of-day values — opening hours, shift starts, appointment slots — without anyone building custom UI. It unblocks scheduling-adjacent roadmap work for roughly a day of integration instead of a sprint, and it forces a schema decision we will have to make anyway: whether these values are true times-of-day or datetimes with a meaningless date attached. The honest caveats are that it is a single-maintainer package with negligible adoption and no support contract, so we adopt it deliberately, pin the version, own a thin wrapper around it, and record it in our dependency inventory with an exit plan. The failure mode is not a security or cost risk; it is stewardship risk at the next Nova major, which is hours to resolve because of how we will wrap it.

To engineering: Treat this as ~100 lines of vendored code you happen to install via Composer, not as a supported product. Verify the declared laravel/nova constraint against our version, confirm dist/js assets are committed, and read resolve/fill handling of empty input before shipping. Subclass it once into App\Nova\Fields\TimeOfDay, put our conventions and validation there, and let resources stay declarative — that wrapper is the single seam that makes a future fork a one-line namespace edit. Own the things the field does not: date_format:H:i server-side, explicit range validation (note after: misbehaves across midnight), null-vs-empty-string normalization in a mutator, and a deliberate decision on seconds truncation before anyone edits a legacy row. It is not timezone-aware by design, so keep it away from anything requiring conversion or DST handling.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
cgv/localized-resource