A timezone select field for Laravel Filament.
composer require tapp/filament-timezone-field:"^3.0"
Note For Filament 2.x check the 2.x branch
Add to your Filament resource:
use Tapp\FilamentTimezoneField\Forms\Components\TimezoneSelect;Â public static function form(Form $form): Form{ return $form ->schema([ // ... TimezoneSelect::make('timezone'), // ... ]);}
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'), // ... ]);}
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'])
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:
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(), // ... ]);}
use Tapp\FilamentTimezoneField\Tables\Columns\TimezoneColumn;Â public static function table(Table $table): Table{ return $table ->columns([ //... TimezoneColumn::make('timezone') ->timezoneType('GMT') ->formattedOffsetAndTimezone(), ]) // ...}
Method | Description |
---|---|
->formattedTimezone() | Show formatted timezone name |
->formattedOffsetAndTimezone() | Show formatted offset and timezone name |
->timezoneType('GMT') | Use GMT instead of UTC |
use Tapp\FilamentTimezoneField\Tables\Filters\TimezoneSelectFilter;Â public static function table(Table $table): Table{ return $table //... ->filters([ TimezoneSelectFilter::make('timezone'), // ... ])}