UX improvements for mobile expense input

This commit is contained in:
Bruno Bernardino
2025-03-03 09:39:46 +00:00
parent 05c20ec0a2
commit df332802c0
4 changed files with 40 additions and 9 deletions

View File

@@ -268,3 +268,7 @@ export function formatNumber(currency: SupportedCurrencySymbol, number: number)
maximumFractionDigits: 2,
}).format(Number.parseFloat(`${number}`.replace(',', '.')));
}
export function formatInputToNumber(numberInput: number | string): number {
return Number.parseFloat(`${numberInput}`.replace(',', '.'));
}

View File

@@ -5,6 +5,7 @@ import {
convertFormDataToObject,
convertObjectToFormData,
escapeHtml,
formatInputToNumber,
formatNumber,
generateHash,
generateRandomCode,
@@ -291,3 +292,23 @@ Deno.test('that formatNumber works', () => {
assertEquals(result, test.expected);
}
});
Deno.test('that formatInputToNumber works', () => {
const tests: { input: number | string; expected: number }[] = [
{ input: 42, expected: 42 },
{ input: '42', expected: 42 },
{ input: 42.5, expected: 42.5 },
{ input: '42.5', expected: 42.5 },
{ input: '42,5', expected: 42.5 },
{ input: '1234,56', expected: 1234.56 },
{ input: 0, expected: 0 },
{ input: '0', expected: 0 },
{ input: '0,0', expected: 0 },
{ input: '0.0', expected: 0 },
];
for (const test of tests) {
const result = formatInputToNumber(test.input);
assertEquals(result, test.expected);
}
});