You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

155 lines
3.4 KiB

import React, { ElementType } from 'react';
declare type Overwrite<T, U> = Pick<T, Exclude<keyof T, keyof U>> & U;
/**
* Value in different formats
*
* @experimental
*/
export declare type CurrencyInputOnChangeValues = {
/**
* Value as float or null if empty
*
* Example:
* "1.99" > 1.99
* "" > null
*/
float: number | null;
/**
* Value after applying formatting
*
* Example: "1000000" > "1,000,0000"
*/
formatted: string;
/**
* Non formatted value as string
*/
value: string;
};
export declare type IntlConfig = {
locale: string;
currency?: string;
};
export declare type CurrencyInputProps = Overwrite<React.ComponentPropsWithRef<'input'>, {
/**
* Allow decimals
*
* Default = true
*/
allowDecimals?: boolean;
/**
* Allow user to enter negative value
*
* Default = true
*/
allowNegativeValue?: boolean;
/**
* Component id
*/
id?: string;
/**
* Maximum characters the user can enter
*/
maxLength?: number;
/**
* Class names
*/
className?: string;
/**
* Custom component
*
* Default = <input/>
*/
customInput?: ElementType;
/**
* Limit length of decimals allowed
*
* Default = 2
*/
decimalsLimit?: number;
/**
* Specify decimal scale for padding/trimming
*
* Example:
* 1.5 -> 1.50
* 1.234 -> 1.23
*/
decimalScale?: number;
/**
* Default value if not passing in value via props
*/
defaultValue?: number | string;
/**
* Disabled
*
* Default = false
*/
disabled?: boolean;
/**
* Value will always have the specified length of decimals
*
* Example:
* 123 -> 1.23
*
* Note: This formatting only happens onBlur
*/
fixedDecimalLength?: number;
/**
* Handle change in value
*/
onValueChange?: (value: string | undefined, name?: string, values?: CurrencyInputOnChangeValues) => void;
/**
* Placeholder if there is no value
*/
placeholder?: string;
/**
* Include a prefix eg. £
*/
prefix?: string;
/**
* Include a suffix eg. €
*/
suffix?: string;
/**
* Incremental value change on arrow down and arrow up key press
*/
step?: number;
/**
* Separator between integer part and fractional part of value.
*
* This cannot be a number
*/
decimalSeparator?: string;
/**
* Separator between thousand, million and billion
*
* This cannot be a number
*/
groupSeparator?: string;
/**
* Disable auto adding separator between values eg. 1000 -> 1,000
*
* Default = false
*/
disableGroupSeparators?: boolean;
/**
* Disable abbreviations (m, k, b)
*
* Default = false
*/
disableAbbreviations?: boolean;
/**
* International locale config, examples:
* { locale: 'ja-JP', currency: 'JPY' }
* { locale: 'en-IN', currency: 'INR' }
*
* Any prefix, groupSeparator or decimalSeparator options passed in
* will override Intl Locale config
*/
intlConfig?: IntlConfig;
/**
* Transform the raw value form the input before parsing
*/
transformRawValue?: (rawValue: string) => string;
}>;
export {};