import CurrencyInput from 'react-currency-input-field'; import {Controller, useFormContext} from 'react-hook-form'; type Props = { name: string; currency: string; placeholder?: string; disabled?: boolean; }; /** * @since 4.0.0 */ function getNumberFormattingParts(): { groupSeparator: string; decimalSeparator: string } { const numberFormat = new Intl.NumberFormat(window.navigator.language); const parts = numberFormat.formatToParts(1234.56); let groupSeparator = ''; let decimalSeparator = ''; for (const part of parts) { if (part.type === 'group') { groupSeparator = part.value; } else if (part.type === 'decimal') { decimalSeparator = part.value; } } return {groupSeparator, decimalSeparator}; } /** * @since 4.0.0 */ export default ({name, currency, placeholder, disabled, ...rest}: Props) => { const {control} = useFormContext(); const {groupSeparator, decimalSeparator} = getNumberFormattingParts(); return ( ( { field.onChange(Number(value ?? 0)); }} value={field.value} placeholder={placeholder} allowDecimals={true} allowNegativeValue={false} maxLength={9} intlConfig={{locale: window.navigator.language, currency}} {...rest} /> )} /> ); };