laraning/nova-time-field

A Laravel Nova field.

Installs: 622 780

Dependents: 3

Suggesters: 0

Security: 0

Stars: 64

Watchers: 2

Forks: 26

Open Issues: 9

Language:Vue

v1.2 2020-11-29 17:27 UTC

This package is auto-updated.

Last update: 2024-11-06 04:19:22 UTC


README

Latest Version on Packagist StyleCI Total Downloads

This package contains a Nova field to allow you to store time values. Under the hood it uses the flatpickr default Laravel Nova Calendar library.

screenshot of the nova time field

Installation

You can install this package in your Laravel Nova app via composer:

composer require laraning/nova-time-field

Usage

You can use the Laraning\NovaTimeField\TimeField namespace in your Nova resource:

namespace App\Nova;

use Laraning\NovaTimeField\TimeField;

class BlogPost extends Resource
{
    // ...

    public function fields(Request $request)
    {
        return [
            // ...

            TimeField::make('Post start Time'),
            // ...
        ];
    }
}

By default the time component uses a 24 hour format. Still you can make it in 12h format like:

TimeField::make('Post start Time')->withTwelveHourTime(),

You can also change the default 5 minute increments to another number:

TimeField::make('Post start Time')->minuteIncrement(1),

You can make sure that all times entered are converted back to your base app timezone (set in config/app.php) by calling the withTimezoneAdjustments() method on your field.

TimeField::make('Post start Time')->withTimezoneAdjustments(),

An example of this would be when your app is set to GMT but your user is in BST (GMT+1). The user would still be able to interact with the timefield in their local time, but the time would be saved into the database in GMT.

E.G. The user may select 14:00. They will always see the time as 14:00, but the database will save it as 13:00 as it makes the BST -> GMT adjustments behind the scenes.

As well as handling switching the time to and from your base app timezone, you may also pass in a timezone offset (in minutes), such as the one returned by moment().utcOffset(). This will then adjust the time to display with the adjusted timezone rather than the users timezone. This is useful if you're saving the time in UTC along with the offset of the browser that was used to submit it.

Here you can see how we'd move UTC to BST by passing an offset of 60

TimeField::make('Post start Time')->withTimezoneAdjustments(60),

Current development status

  • Make release 0.1.0.
  • Add minimal test scenarios.
  • Add timezone support.

Changelog

Please see CHANGELOG for more information on what has changed recently.

License

The MIT License (MIT). Please see License File for more information.