1.0.1 • Published 5 years ago
input-currency-react v1.0.1
Currency input React w/ Hooks
This libraries propose to introduce a hooks capable of formate currencies and calculate directly in the input (add, subtract, division and multiplication).
This component libraries use
TypeScript,Hooks.
Install
npm install input-currency-react # or yarn add input-currency-reactPlayground - Try it out
Browser compatibility (Tested)
| Chrome | Edge | Firefox | Safari | Internet Explorer 11 | Opera |
|---|---|---|---|---|---|
| :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :grey_question: |
Compatible with react-hook-form
Ex. Code:
import React from react;
import { useForm, Controller } from "react-hook-form";
const MyCustomForm = () => {
const {
control,
handleSubmit,
} = useForm();
return (
<form onSubmit={handleSubmit(onSubmit)}>
<Controller
name="value"
control={control}
defaultValue="0,00"
render={({value, onChange}) => (
<CurrencyInput
value={ value }
options={{ style: "decimal", allowNegative: false }}
onChangeEvent={(_, maskedValue) => {
onChange(maskedValue);
}}
required={true}
/>
)}
/>
</form>
)
}How to use Components
Only Currency Input
Demo:
Ex. Code:
import React from react;
import {
CurrencyInput,
Currencies,
Locales
} from 'input-currency-react';
const handleOnChange = (inputElement, maskedValue, value) => {};
<CurrencyInput
value="000" // Initial value
options={{
precision: 2,
style: "currency",
allowNegative: "true",
alwaysNegative: "false",
locale: Locales["English (United States)"], // Format Type
i18nCurrency: Currencies["US Dollar"] // Symbol
}}
autoFocus={true}
onChangeEvent={handleOnChange}
/>Currency Input Can Math
Demo:
Ex. Code:
import {
CurrencyCalculatorInput,
Currencies,
Locales
} from 'input-currency-react';
const handleOnChange = (inputElement, maskedValue, value) => {};
<CurrencyCalculatorInput
value="000" // Initial value
options={{
precision: 3,
style: "decimal",
locale: LocalesLocales["Portuguese (Brazil)"],
i18nCurrency: Currencies["Brazilian Real"]
}}
autoFocus={true}
onChangeEvent={handleOnChange}
/>How to use Hooks
import {
CurrencyInputProps,
useCurrencyFormat,
} from 'input-currency-react';
const MyCustomCurrencyInput:React.FC<CurrencyInputProps> = (props) => {
const { value, options, onChangeEvent, ...otherProps } = props;
const [
formattedValue,
handleOnChange,
handleOnKeyDown,
handleOnClick
] = useCurrencyFormat(value,
{...options,
onChangeCallBack: onChangeEvent }); // or useCurrencyFormatCalculator
return (
<input
type="text"
style={{ textAlign:"right" }}
onChange={ handleOnChange }
onKeyDown={ handleOnKeyDown }
onClick={ handleOnClick }
value={ formattedValue }
{...otherProps} />
)
}Options
Options input
| Option | Default Value | Description |
|---|---|---|
| value | 0 | The initial value |
| onChangeEvent | n/a | Callback function to handle value change |
| autoFocus | false | Autofocus |
| ref | n/a | Reference for HTMLInputElement |
| options | default hooks | hooks props |
Options hooks
| Props | Default Value | Description |
|---|---|---|
| precision | 2 | Fraction Digits |
| style | currency | currency or decimal(Remove symbol) |
| locale | pt-BR | Country Code Reference(Currency symbol) |
| i18nCurrency | BRL | String i18n(Format Type) |
| allowNegative * | true | Allow negative numbers in the input |
| alwaysNegative * | false | Prefix negative |
Note: *not present in useCurrencyFormatCalculator
*Note: This library use toLocaleString() to format the value.