diff --git a/frontend/apps/web/src/components/NumericInput.tsx b/frontend/apps/web/src/components/NumericInput.tsx index 09ce622..d6554e1 100644 --- a/frontend/apps/web/src/components/NumericInput.tsx +++ b/frontend/apps/web/src/components/NumericInput.tsx @@ -6,14 +6,15 @@ import { parseAbrechnungFloat } from "@abrechnung/utils"; export type NumericInputProps = { onChange: (value: number) => void; value?: number | undefined; + isCurrency?: boolean | false; } & Omit; -export const NumericInput: React.FC = ({ value, onChange, ...props }) => { +export const NumericInput: React.FC = ({ value, isCurrency, onChange, ...props }) => { const [internalValue, setInternalValue] = React.useState(""); React.useEffect(() => { - setInternalValue(String(value)); - }, [value, setInternalValue]); + setInternalValue(isCurrency ? value.toFixed(2) : String(value)); + }, [value, setInternalValue, isCurrency]); const onInternalChange = (event) => { setInternalValue(event.target.value); @@ -23,7 +24,7 @@ export const NumericInput: React.FC = ({ value, onChange, ... const propagateChange = () => { const parsedValue = parseAbrechnungFloat(internalValue); if (!isNaN(parsedValue)) { - setInternalValue(String(parsedValue)); + setInternalValue(isCurrency ? parsedValue.toFixed(2) : String(parsedValue)); onChange(parsedValue); } }; diff --git a/frontend/apps/web/src/pages/transactions/TransactionDetail/TransactionMetadata.tsx b/frontend/apps/web/src/pages/transactions/TransactionDetail/TransactionMetadata.tsx index 25b2063..8334e82 100644 --- a/frontend/apps/web/src/pages/transactions/TransactionDetail/TransactionMetadata.tsx +++ b/frontend/apps/web/src/pages/transactions/TransactionDetail/TransactionMetadata.tsx @@ -149,6 +149,7 @@ export const TransactionMetadata: React.FC = ({ helperText={validationErrors.fieldErrors.value} onChange={(value) => pushChanges({ value })} value={transaction.value} + isCurrency={true} disabled={!transaction.is_wip} InputProps={{ endAdornment: {transaction.currency_symbol}, diff --git a/frontend/apps/web/src/pages/transactions/TransactionDetail/purchase/TransactionPositions.tsx b/frontend/apps/web/src/pages/transactions/TransactionDetail/purchase/TransactionPositions.tsx index 1062bec..2ce6e5d 100644 --- a/frontend/apps/web/src/pages/transactions/TransactionDetail/purchase/TransactionPositions.tsx +++ b/frontend/apps/web/src/pages/transactions/TransactionDetail/purchase/TransactionPositions.tsx @@ -104,6 +104,7 @@ const PositionTableRow: React.FC = ({