diff --git a/packages/loot-core/src/shared/util.test.ts b/packages/loot-core/src/shared/util.test.ts index c8160f102d..019b51c345 100644 --- a/packages/loot-core/src/shared/util.test.ts +++ b/packages/loot-core/src/shared/util.test.ts @@ -64,4 +64,15 @@ describe('utility functions', () => { formatter = getNumberFormat().formatter; expect(formatter.format(Number('1234.56'))).toBe('1\xa0235'); }); + + test('number formatting works with space-dot format', () => { + setNumberFormat({ format: 'space-dot', hideFraction: false }); + let formatter = getNumberFormat().formatter; + // grouping separator space char is a non-breaking space, or UTF-16 \xa0 + expect(formatter.format(Number('1234.56'))).toBe('1\xa0234.56'); + + setNumberFormat({ format: 'space-dot', hideFraction: true }); + formatter = getNumberFormat().formatter; + expect(formatter.format(Number('1234.56'))).toBe('1\xa0235'); + }); }); diff --git a/packages/loot-core/src/shared/util.ts b/packages/loot-core/src/shared/util.ts index 1cc1cb9321..e6f4f13377 100644 --- a/packages/loot-core/src/shared/util.ts +++ b/packages/loot-core/src/shared/util.ts @@ -252,6 +252,7 @@ export let numberFormats = [ { value: 'comma-dot', label: '1,000.33', labelNoFraction: '1,000' }, { value: 'dot-comma', label: '1.000,33', labelNoFraction: '1.000' }, { value: 'space-comma', label: '1 000,33', labelNoFraction: '1 000' }, + { value: 'space-dot', label: '1 000.33', labelNoFraction: '1 000' }, ]; let numberFormat: { @@ -279,6 +280,11 @@ export function setNumberFormat({ format, hideFraction }) { regex = /[^-0-9,]/g; separator = ','; break; + case 'space-dot': + locale = 'dje'; + regex = /[^-0-9,]/g; + separator = '.'; + break; case 'comma-dot': default: locale = 'en-US'; diff --git a/upcoming-release-notes/995.md b/upcoming-release-notes/995.md new file mode 100644 index 0000000000..d13424aa62 --- /dev/null +++ b/upcoming-release-notes/995.md @@ -0,0 +1,6 @@ +--- +category: Enhancements +authors: [TheTrueCaligari] +--- + +Number Format: Add a new option (space-dot) e.g. "1 234.56"