1.0.1 • Published 3 years ago

input-currency-react v1.0.1

Weekly downloads
12
License
MIT
Repository
github
Last release
3 years ago

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-react

Playground - Try it out

On Code Sandbox

Browser compatibility (Tested)

ChromeEdgeFirefoxSafariInternet Explorer 11Opera
: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

OptionDefault ValueDescription
value0The initial value
onChangeEventn/aCallback function to handle value change
autoFocusfalseAutofocus
refn/aReference for HTMLInputElement
optionsdefault hookshooks props

Options hooks

PropsDefault ValueDescription
precision2Fraction Digits
stylecurrencycurrency or decimal(Remove symbol)
localept-BRCountry Code Reference(Currency symbol)
i18nCurrencyBRLString i18n(Format Type)
allowNegative *trueAllow negative numbers in the input
alwaysNegative *falsePrefix negative

Note: *not present in useCurrencyFormatCalculator

*Note: This library use toLocaleString() to format the value.