diff options
Diffstat (limited to 'packages/merchant-backoffice-ui/src/components/form/InputCurrency.tsx')
-rw-r--r-- | packages/merchant-backoffice-ui/src/components/form/InputCurrency.tsx | 61 |
1 files changed, 41 insertions, 20 deletions
diff --git a/packages/merchant-backoffice-ui/src/components/form/InputCurrency.tsx b/packages/merchant-backoffice-ui/src/components/form/InputCurrency.tsx index c4c6b8ce3..11396b88e 100644 --- a/packages/merchant-backoffice-ui/src/components/form/InputCurrency.tsx +++ b/packages/merchant-backoffice-ui/src/components/form/InputCurrency.tsx @@ -1,6 +1,6 @@ /* This file is part of GNU Taler - (C) 2021 Taler Systems S.A. + (C) 2021-2024 Taler Systems S.A. GNU Taler is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -15,14 +15,15 @@ */ /** -* -* @author Sebastian Javier Marchano (sebasjm) -*/ -import { ComponentChildren, h } from "preact"; -import { useConfigContext } from "../../context/config.js"; -import { Amount } from "../../declaration.js"; + * + * @author Sebastian Javier Marchano (sebasjm) + */ +import { useMerchantApiContext } from "@gnu-taler/web-util/browser"; +import { ComponentChildren, h, VNode } from "preact"; import { InputWithAddon } from "./InputWithAddon.js"; import { InputProps } from "./useField.js"; +import { AmountString } from "@gnu-taler/taler-util"; +import { useSessionContext } from "../../context/session.js"; export interface Props<T> extends InputProps<T> { expand?: boolean; @@ -31,17 +32,37 @@ export interface Props<T> extends InputProps<T> { side?: ComponentChildren; } -export function InputCurrency<T>({ name, readonly, label, placeholder, help, tooltip, expand, addonAfter, children, side }: Props<keyof T>) { - const config = useConfigContext() - return <InputWithAddon<T> name={name} readonly={readonly} addonBefore={config.currency} - side={side} - label={label} placeholder={placeholder} help={help} tooltip={tooltip} - addonAfter={addonAfter} - inputType='number' expand={expand} - toStr={(v?: Amount) => v?.split(':')[1] || ''} - fromStr={(v: string) => !v ? '' : `${config.currency}:${v}`} - inputExtra={{ min: 0 }} - children={children} - /> +export function InputCurrency<T>({ + name, + readonly, + label, + placeholder, + help, + tooltip, + expand, + addonAfter, + children, + side, +}: Props<keyof T>): VNode { + const { config } = useSessionContext(); + return ( + <InputWithAddon<T> + name={name} + readonly={readonly} + addonBefore={config.currency} + side={side} + label={label} + placeholder={placeholder} + help={help} + tooltip={tooltip} + addonAfter={addonAfter} + inputType="number" + expand={expand} + toStr={(v?: AmountString) => v?.split(":")[1] || ""} + fromStr={(v: string) => (!v ? undefined : `${config.currency}:${v}`)} + inputExtra={{ min: 0 }} + > + {children} + </InputWithAddon> + ); } - |