tuxones / filament-js-money-field
A Laravel Filament plugin for dynamic international currency masking using JavaScript Intl, supporting flexible currency and locale configuration via closures.
Installs: 3 544
Dependents: 0
Suggesters: 0
Security: 0
Stars: 14
Watchers: 1
Forks: 8
Open Issues: 5
pkg:composer/tuxones/filament-js-money-field
Requires
- php: ^8.1
- ext-intl: *
- filament/forms: ^3.0
- moneyphp/money: ^4.6
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- nunomaduro/collision: ^7.9
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.1
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
README
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.
Supported Column Types
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.
Installation
You can install the package via composer:
composer require tuxones/filament-js-money-field
Usage
Form
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')
Table column
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')
InfoList
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')
Changelog
Please see CHANGELOG for more information on what has changed recently.
License
The MIT License (MIT). Please see License File for more information.