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

Filament Timezone Field Laravel Package

tapp/filament-timezone-field

A Filament form select field for picking timezones, with options to filter by country or region, switch display language, and use GMT instead of UTC. Install via Composer and add TimezoneSelect::make('timezone') to your resource schema. Compatible with Filament 3.x, 4.x and 5.x.

View on GitHub
Deep Wiki
Context7

Filament Timezone Field

Latest Version on Packagist Code Style Action Status Total Downloads

A timezone select field for Laravel Filament.

Version Compatibility

Filament Filament Timezone Field Documentation
3.x/4.x/5.x 3.x Current
2.x 2.x Check the docs

Installation

composer require tapp/filament-timezone-field:"^3.0"

Usage

Form Field

Add to your Filament resource:

use Tapp\FilamentTimezoneField\Forms\Components\TimezoneSelect;

public static function form(Form $form): Form
{
    return $form
        ->schema([
            // ...
            TimezoneSelect::make('timezone'),
            // ...
        ]);
}

Appareance

Filament Timezone Field

Options

To change the language of displayed timezones, use the ->language() method passing the ISO 639-1 language code:

->language('es')

To use GMT instead of UTC (default is UTC), add the ->timezoneType('GMT') method:

use Tapp\FilamentTimezoneField\Forms\Components\TimezoneSelect;

public static function form(Form $form): Form
{
    return $form
        ->schema([
            // ...
            TimezoneSelect::make('timezone')
                ->timezoneType('GMT'),
            // ...
        ]);
}
List timezones by country

To list only the timezones for a country, you can pass the country code to ->byCountry() method. For example, to list only United States timezones:

TimezoneSelect::make('timezone')
    ->byCountry('US')

You can also pass an array with more than one country code:

TimezoneSelect::make('timezone')
    ->byCountry(['US', 'AU'])
List timezones by region

To list the timezones for a region use the ->byRegion() method. You can specify a region with a Region enum value:

use Tapp\FilamentTimezoneField\Enums\Region;

TimezoneSelect::make('timezone')
    ->byRegion(Region::Australia)

or you can use one of the PHP's DateTimeZone predifined constants:

use DateTimeZone;

TimezoneSelect::make('timezone')
    ->byRegion(DateTimeZone::AUSTRALIA)

It's also possible to pass an array with more than one region:

use Tapp\FilamentTimezoneField\Enums\Region;

TimezoneSelect::make('timezone')
    ->byRegion([Region::Australia, Region::America])

[!TIP] All Filament select field methods are available to use:

use Tapp\FilamentTimezoneField\Forms\Components\TimezoneSelect;

public static function form(Form $form): Form
{
   return $form
       ->schema([
           // ...
           TimezoneSelect::make('timezone')
               ->searchable()
               ->required(),
           // ...
       ]);
}

Optionally, hide either timezone offsets or timezone names, depending on your use case:

Filament Timezone Display Options

use Tapp\FilamentTimezoneField\Forms\Components\TimezoneSelect;

public static function form(Form $form): Form
{
    return $form
        ->schema([
            // ...
            TimezoneSelect::make('timezone')
                ->hideNames(),
            // ...
        ]);
}
use Tapp\FilamentTimezoneField\Forms\Components\TimezoneSelect;

public static function form(Form $form): Form
{
    return $form
        ->schema([
            // ...
            TimezoneSelect::make('timezone')
                ->hideOffset(),
            // ...
        ]);
}

Optionally, hydrate the field with the timezone from the user's browser. If there is already a value, it will not be overridden.

use Tapp\FilamentTimezoneField\Forms\Components\TimezoneSelect;

public static function form(Form $form): Form
{
    return $form
        ->schema([
            // ...
            TimezoneSelect::make('timezone')
                ->getTimezoneFromBrowser()
            // ...
        ]);
}

Table Column

use Tapp\FilamentTimezoneField\Tables\Columns\TimezoneColumn;

public static function table(Table $table): Table
{
    return $table
        ->columns([
            //...
            TimezoneColumn::make('timezone')
                ->timezoneType('GMT')
                ->formattedOffsetAndTimezone(),
        ])
        // ...
}

Options

Method Description
->formattedTimezone() Show formatted timezone name
->formattedOffsetAndTimezone() Show formatted offset and timezone name
->timezoneType('GMT') Use GMT instead of UTC

Table Filter

use Tapp\FilamentTimezoneField\Tables\Filters\TimezoneSelectFilter;

public static function table(Table $table): Table
{
    return $table
        //...
        ->filters([
            TimezoneSelectFilter::make('timezone'),
            // ...
        ])
}
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.
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings