Weave Code
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

Filament Timezone Field adds a timezone select component to Filament forms. Supports Filament 3/4/5, localized timezone labels, UTC or GMT display, and filtering options by country codes or region for cleaner, relevant timezone lists.

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.
cuci/prototurk-sdk-symfony
clementtalleu/easyadmin-markdown-bundle
codeflextech/permission-manager
karnoweb/livewire-datepicker
sayedenam/sayed-dashboard
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager