A Filament plugin for dynamic international currency masking using JavaScript Intl, supporting flexible currency and locale configuration via closures.
This plugin extends the functionality of a standard text field by adding a dynamic currency mask. All properties and behaviors of the standard field remain intact.
The plugin supports integer
, decimal
, double
, and float
. However, it is highly recommended to use integer
or decimal
for better precision and consistency when handling currency values.
If the column is of type integer
, the entered value is stored as an integer, including the decimal cents, without any currency symbols or formatting.
You can install the package via composer:
composer require tuxones/filament-js-money-field
use Tuxones\JsMoneyField\Forms\Components\JSMoneyInput; JSMoneyInput::make('consumption_limit') ->currency('USD') // ISO 4217 Currency Code, example: USD ->locale('en-US') // BCP 47 Locale Code, example: en-US // OR JSMoneyInput::make('consumption_limit') ->hidden(fn (Get $get) => !$get('country')) ->currency(fn (Get $get) => $get('country') ? Country::find($get('country'))->currency : 'USD') ->locale(fn (Get $get) => $get('country') ? Country::find($get('country'))->locale : 'en-US')
use Tuxones\JsMoneyField\Tables\Columns\JSMoneyColumn; JSMoneyColumn::make('consumption_limit') ->currency('USD') // ISO 4217 Currency Code, example: USD ->locale('en-US') // BCP 47 Locale Code, example: en-US // OR JSMoneyColumn::make('consumption_limit') ->currency(fn (Model $record) => $record->country ? $record->country->currency : 'USD') ->locale(fn (Model $record) => $record->country ? $record->country->locale : 'en-US')
use Tuxones\JsMoneyField\Infolists\Components\JSMoneyEntry; JSMoneyEntry::make('consumption_limit') ->currency('USD') // ISO 4217 Currency Code, example: USD ->locale('en-US') // BCP 47 Locale Code, example: en-US // OR JSMoneyEntry::make('consumption_limit') ->currency(fn (Model $record) => $record->country ? $record->country->currency : 'USD') ->locale(fn (Model $record) => $record->country ? $record->country->locale : 'en-US')
Please see CHANGELOG for more information on what has changed recently.
The MIT License (MIT). Please see License File for more information.