mammesat/filament-ethiopic-calendar

Filament v5 Ethiopic Calendar Date Picker with Gregorian conversion support.

Maintainers

Package info

github.com/mammesat/filament-ethiopic-calendar

pkg:composer/mammesat/filament-ethiopic-calendar

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v1.0.0 2026-04-19 19:19 UTC

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.

Latest Version on Packagist Total Downloads Tests License: MIT

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.

  • Settings / Configuration Panel Settings Panel

  • Form Picker + helper output Form Picker

  • Table output with dual display Table Output

  • Infolist scenarios Infolist

Configuration

Global defaults live in config/ethiopic-calendar.php.

Common options:

  • display_mode
  • calendar_locale
  • with_time
  • time_mode
  • dual_time_format
  • timezone

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