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.