diff --git a/src/components/CurrencyInput.tsx b/src/components/CurrencyInput.tsx index ce8aa8d..8c4acae 100644 --- a/src/components/CurrencyInput.tsx +++ b/src/components/CurrencyInput.tsx @@ -89,7 +89,7 @@ export const CurrencyInput: FC = forwardRef< groupSeparator, disableGroupSeparators, intlConfig, - prefix: prefix || localeConfig.prefix, + prefix: prefix ?? localeConfig.prefix, suffix: suffix, }; @@ -100,7 +100,7 @@ export const CurrencyInput: FC = forwardRef< decimalsLimit: decimalsLimit || fixedDecimalLength || 2, allowNegativeValue, disableAbbreviations, - prefix: prefix || localeConfig.prefix, + prefix: prefix ?? localeConfig.prefix, transformRawValue, }; diff --git a/src/components/__tests__/CurrencyInput-suffix.spec.tsx b/src/components/__tests__/CurrencyInput-suffix.spec.tsx index 414cc8d..0347edb 100644 --- a/src/components/__tests__/CurrencyInput-suffix.spec.tsx +++ b/src/components/__tests__/CurrencyInput-suffix.spec.tsx @@ -44,4 +44,41 @@ describe(' suffix', () => { expect(screen.getByRole('textbox')).toHaveValue('$1,234.9 %'); }); + + it('should handle empty prefix and suffix', () => { + render( + + ); + + expect(screen.getByRole('textbox')).toHaveValue('1,234'); + + userEvent.type(screen.getByRole('textbox'), '56'); + + expect(screen.getByRole('textbox')).toHaveValue('123,456'); + + userEvent.type(screen.getByRole('textbox'), '{backspace}{backspace}'); + + expect(screen.getByRole('textbox')).toHaveValue('1,234'); + }); + + it('should fallback to default prefix and suffix when undefined', () => { + render( + + ); + + expect(screen.getByRole('textbox')).toHaveValue('1,234'); + + userEvent.type(screen.getByRole('textbox'), '56'); + + expect(screen.getByRole('textbox')).toHaveValue('123,456'); + + userEvent.type(screen.getByRole('textbox'), '{backspace}{backspace}'); + + expect(screen.getByRole('textbox')).toHaveValue('1,234'); + }); });