Skip to content

Filament Date Picker extension for Buddhist year (Christiain year +543), AM, PM format

License

Notifications You must be signed in to change notification settings

zenepay/filament-buddhist-date-picker

Repository files navigation

Banner

Filament Buddhist DatePicker/DateTimePicker Extension

Latest Stable Version Total Downloads License PHP Version Require

This package adds buddhistEra support to filament v3 DatePicker and DateTimePicker.
https://filamentphp.com/docs/3.x/forms/fields/date-time-picker

Installation

You can install the package via composer:

composer require zenepay/filament-buddhist-date-picker

Usage

1. For all languages in Buddhist year

use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\DateTimePicker;

DatePicker::make('start_date')->buddhist();
DateTimePicker::make('start_date')->buddhist();

2. For all Thai language in Christian year

use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\DateTimePicker;

DatePicker::make('start_at')->buddhist(false);
DatetimePicker::make('start_at')->buddhist(false);

2. For some languages in Buddhist year

use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\DateTimePicker;

DatePicker::make('birth_date')->buddhist(onlyLocales:['th','en']);
DateTimePicker::make('birth_date')->buddhist(onlyLocales:['th','en']);

3. For display weekdays Min or set weekdaysMin:false for weekdays Short format

use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\DateTimePicker;

DatePicker::make('start_at')->buddhist(lyLocales:on['th','en'],weekdaysMin:true);
DatetimePicker::make('start_at')->buddhist(onlyLocales:['th','en'],weekdaysMin:true);

You can also use this way

use Zenepay\FilamentBuddhistDatePicker\BuddhistDatePicker;

BuddhistDatePicker::make('start_date');
BuddhistDatePicker::make('birth_date')->onlyLocales(['th','en'])->weekdaysMin(false);

Or make alias to DatePicker and replace use Filament\Forms\Components\DatePicker to use Zenepay\FilamentBuddhistDatePicker\BuddhistDatePicker as DatePicker

//use Filament\Forms\Components\DatePicker -->
use Zenepay\FilamentBuddhistDatePicker\BuddhistDatePicker as DatePicker;


DatePicker::make('start_date');
DatePicker::make('birth_date')->onlyLocales(['th','en'])->weekdaysMin(false);

4. For who might love AM/PM hour mode

For Datetime format with AM PM 12H, which was available at filamentphp/filament#6441, now it can be combined with Buddhist Era as optional.

use Filament\Forms\Components\DateTimePicker;

DatetimePicker::make('start_at')->hourMode(12)->displayFormat('d/m/y h:i A')->seconds(false); // 15/02/24 11:10 PM

Banner

5. Use Buddhist Era in TextColumn in table

This can be done by replace $table->date() with $table->buddhistDate() for dateTime replace with $table->buddhistDateTime()

TextColumn::make('start_at')->buddhistDate(format:'m/d/Y',onlyLocales:['th']); // 15/02/2567

Test

./vendor/bin/pest ./tests

Demo & Show Case

Credits

License

The MIT License (MIT)

Filament DatePicker และ DateTimePicker Extension สำหรับ calendar ภาษาไทย และ ปี พุทธศักราช

ใช้สำหรับ Larvavel 10 และ 11 Filament v3 DatePicker DateTimePicker.

การติดตั้ง

รัน composer ที่ root ไดเร็กทอรีของ Laravel

composer require zenepay/filament-buddhist-date-picker

การใช้งาน

1. กรณีต้องการให้ทุกภาษา เป็น พ.ศ.

use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\DateTimePicker;

DatePicker::make('start_date')->buddhist();
DateTimePicker::make('start_date')->buddhist();

2. กรณีให้ทุกภาษา เป็น ค.ศ ซึ่งจะรองรับ ภาษาไทย ด้วย

use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\DateTimePicker;

DatePicker::make('birth_date')->buddhist(onlyLocales:['th','en']);
DateTimePicker::make('birth_date')->buddhist(onlyLocales:['th','en']);

2. กรณีให้บางภาษา เป็น เป็น พ.ศ นอกนั้นให้เป็น ค.ศ

\Filament\Forms\Components\DatePicker::make('birth_date')->buddhist(onlyLocales:['th','en']);
\Filament\Forms\Components\DateTimePicker::make('birth_date')->buddhist(onlyLocales:['th','en']);

3. กรณีใช้ชื่อย่อแทนวัน เช่น อ. จ อ พ พฤ ศ ส

ให้เซ็ต weekdaysMin เป็น true หรือให้เป็นแบบสั้น อาทิตย์ จันทร์ อังคาร ให้เซ็ต เป็น false

use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\DateTimePicker;

DatePicker::make('start_at')->buddhist(onlyLocales:['th','en'],weekdaysMin:true);
DatetimePicker::make('start_at')->buddhist(onlyLocales:['th','en'],weekdaysMin:true);

หรือใช้แบบ เป็น component ใหม่แทนเลย ก็ใช้แบบนี้ได้

use Zenepay\FilamentBuddhistDatePicker\BuddhistDatePicker;

BuddhistDatePicker::make('start_date');
BuddhistDatePicker::make('birth_date')->onlyLocales(['th','en'])->weekdaysMin(false);

หรือเปลี่ยน การใช้ use Filament\Forms\Components\DatePicker เป็น ใช้ use Zenepay\FilamentBuddhistDatePicker\BuddhistDatePicker as DatePicker แทน เพื่อไม่ต้องไล่แก้ ใส่ buddhist() แต่ละ DatePicker component ในหน้านั้น

//use Filament\Forms\Components\DatePicker -->
use Zenepay\FilamentBuddhistDatePicker\BuddhistDatePicker as DatePicker;


DatePicker::make('start_date');
DatePicker::make('birth_date')->onlyLocales(['th','en'])->weekdaysMin(false);

4. For who might love AM/PM hour mode

For Datetime format with AM PM 12H, which was available at filamentphp/filament#6441, now it can be combined with Buddhist Era as optional.

use Filament\Forms\Components\DateTimePicker;

DatetimePicker::make('start_at')->hourMode(12)->displayFormat('d/m/y h:i A')->seconds(false); // 15/02/24 11:10 PM

5. Use Buddhist Era in TextColumn in table

This can be done by replace $table->date() with $table->buddhistDate() for dateTime replace with $table->buddhistDateTime()

TextColumn::make('start_at')->buddhistDate(format:'m/d/Y',onlyLocales:['th']); // 15/02/2567

Test

./vendor/bin/pest ./tests

Demo & Show Case

Credits

License

The MIT License (MIT)