diff --git a/components/ui/form-input.tsx b/components/ui/form-input.tsx index 29af70b5..0bcffd52 100644 --- a/components/ui/form-input.tsx +++ b/components/ui/form-input.tsx @@ -37,6 +37,7 @@ function FormInput({ ...inputProps }: FormInputProps) { const form = useFormContext(); + const [displayValue, setDisplayValue] = React.useState(''); return ( ({ + setDisplayValue(Number(field.value || 0).toFixed(2)) + } + onChange={(e) => { + setDisplayValue(e.target.value); + field.onChange(e.target.value); + }} + onBlur={() => { + setDisplayValue(''); + field.onBlur(); + }} className={cn('rounded-l-none', inputProps.className)} /> diff --git a/lib/utils.ts b/lib/utils.ts index 639d59a5..fab47db1 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -7,8 +7,10 @@ export function cn(...inputs: ClassValue[]) { } function formatAbsoluteNumber(value: number) { - const rounded = Math.round(value * 100) / 100; - return rounded.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ','); + return new Intl.NumberFormat('en-US', { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }).format(value); } export function formatNumber(value: number) {