mammesat / filament-ethiopic-calendar
Filament v5 Ethiopic Calendar Date Picker with Gregorian conversion support.
Package info
github.com/mammesat/filament-ethiopic-calendar
pkg:composer/mammesat/filament-ethiopic-calendar
Requires
- php: ^8.2
- filament/filament: ^5.0
Requires (Dev)
- phpunit/phpunit: ^11.0
This package is auto-updated.
Last update: 2026-04-28 21:52:07 UTC
README
Finally, Ethiopian dates and time — done right in Filament.
Production-ready Ethiopian calendar and Ethiopian time support for Laravel + Filament.
Why this package?
Ethiopian users do not experience date and time the same way as standard Gregorian interfaces.
- AM/PM alone is not enough for real Ethiopian-local products.
- Ethiopian users often expect Ethiopian time (6-hour shift), not only Gregorian clock output.
- Calendar conversion without Ethiopian time still creates UX confusion in real workflows.
This package solves both problems together, with one consistent formatting engine across forms, tables, and infolists.
What makes it different
- ✅ Ethiopian ↔ Gregorian date conversion
- ✅ Ethiopian time system (6-hour shift)
- ✅ Dual output mode (Ethiopian + Gregorian)
- ✅ Amharic and English Ethiopian labels
- ✅ Filament-native components with one formatter as SSOT
Output example (dual mode)
Gregorian: Apr 21, 2026 10:00 AM
Ethiopian: Miyazya 13, 2018 4:00 ጠዋት
Dual: Apr 21, 2026 (Miyazya 13, 2018)
10:00 AM (4:00 ጠዋት)
Installation
composer require mammesat/filament-ethiopic-calendar
Publish config:
php artisan vendor:publish --tag="filament-ethiopic-calendar-config"
Clear caches after config changes:
php artisan optimize:clear
Quick Start (< 60 seconds)
Form Field
use Mammesat\FilamentEthiopicCalendar\Fields\EthiopicDateTimePicker; EthiopicDateTimePicker::make('appointment_at') ->label('Appointment Date') ->ethiopic() // Sets to ethiopic_amharic & ethiopianTime ->withTime() // Enables time selector ->required();
Table Column
use Mammesat\FilamentEthiopicCalendar\Tables\Columns\EthiopicDateColumn; EthiopicDateColumn::make('appointment_at') ->label('Appointment') ->dual() // Outputs dual dates ->dualTime() // Outputs dual time ->withTime();
Infolist Entry
use Mammesat\FilamentEthiopicCalendar\Infolists\Components\EthiopicDateEntry; EthiopicDateEntry::make('appointment_at') ->ethiopicDisplayMode('ethiopic_amharic') // Manual override if needed ->ethiopianTime() ->withTime();
Formatter API
EthiopicFormatter is the single source of truth for output:
use Mammesat\FilamentEthiopicCalendar\Support\EthiopicFormatter; EthiopicFormatter::formatDate('2026-04-21', 'ethiopic_amharic'); EthiopicFormatter::formatTime('10:00:00', 'dual'); EthiopicFormatter::formatDateTime('2026-04-21 10:00:00', 'dual', 'dual');
Screenshots
You can replace these with your own panel captures for your marketplace listing.
Configuration
Global defaults live in config/ethiopic-calendar.php.
Common options:
display_modecalendar_localewith_timetime_modedual_time_formattimezone
Per-field overrides always win over global config.
Backward Compatibility
Note: Legacy display mode values (e.g.,
amharic_no_week,clean_gregorian,hybrid) are still fully supported and automatically normalized at runtime across the platform. You do not need to forcibly migrate existing database records or settings.
License
MIT



