import { AmountJson, Amounts, TranslatedString } from "@gnu-taler/taler-util"; import { VNode, h } from "preact"; import { InputLine, UIFormProps } from "./InputLine.js"; import { useField } from "./useField.js"; export function InputAmount( props: { currency?: string } & UIFormProps, ): VNode { const { value } = useField(props.name); const currency = !value || !(value as any).currency ? props.currency : (value as any).currency; return ( type="text" before={{ type: "text", text: currency as TranslatedString, }} converter={{ //@ts-ignore fromStringUI: (v): AmountJson => { return Amounts.parseOrThrow(`${currency}:${v}`); }, //@ts-ignore toStringUI: (v: AmountJson) => { return v === undefined ? "" : Amounts.stringifyValue(v); }, }} {...props} /> ); }