commit 4750a8a1dfbfc3ebbc718aa72123b6f767a499ab
parent 7b1dc6cda0901dfc13e156b41b49c33064988a00
Author: Sebastian <sebasjm@gmail.com>
Date: Wed, 7 May 2025 16:40:02 -0300
fix #9878
Diffstat:
4 files changed, 62 insertions(+), 20 deletions(-)
diff --git a/packages/challenger-ui/src/pages/AskChallenge.tsx b/packages/challenger-ui/src/pages/AskChallenge.tsx
@@ -387,7 +387,7 @@ export function AskChallenge({
</form> */}
<div class="mx-auto mt-4 max-w-xl ">
- <FormUI design={design} model={form.model} />
+ <FormUI design={design} model={form.model} onSubmit={onSend?.onClick} />
</div>
{lastStatus === undefined ? undefined : (
diff --git a/packages/kyc-ui/src/pages/TriggerKyc.tsx b/packages/kyc-ui/src/pages/TriggerKyc.tsx
@@ -356,6 +356,30 @@ export function TriggerKyc({ onKycStarted }: Props): VNode {
<i18n.Translate>Challenger test</i18n.Translate>
</Button>
</div>
+ <div>
+ <Button
+ type="submit"
+ handler={triggerAmount(
+ Amounts.parseOrThrow(`${config.config.currency}:1000120`),
+ )}
+ // disabled={!submitHandler}
+ class="disabled:opacity-50 disabled:cursor-default rounded-md bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
+ >
+ <i18n.Translate>Trigger VQF 902.9 customer</i18n.Translate>
+ </Button>
+ </div>
+ <div>
+ <Button
+ type="submit"
+ handler={triggerAmount(
+ Amounts.parseOrThrow(`${config.config.currency}:1000130`),
+ )}
+ // disabled={!submitHandler}
+ class="disabled:opacity-50 disabled:cursor-default rounded-md bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
+ >
+ <i18n.Translate>Trigger VQF 902.9 officer</i18n.Translate>
+ </Button>
+ </div>
</div>
</div>
);
diff --git a/packages/taler-wallet-webextension/src/components/HistoryItem.tsx b/packages/taler-wallet-webextension/src/components/HistoryItem.tsx
@@ -50,10 +50,10 @@ export function HistoryItem(props: { tx: Transaction }): VNode {
switch (tx.type) {
case TransactionType.Withdrawal:
//withdrawal that has not been confirmed are hidden
- if (!tx.exchangeBaseUrl) return <Fragment />
+ if (!tx.exchangeBaseUrl) return <Fragment />;
return (
<Layout
- id={tx.transactionId}
+ href={Pages.balanceTransaction({ tid: tx.transactionId })}
amount={tx.amountEffective}
debitCreditIndicator={"credit"}
title={new URL(tx.exchangeBaseUrl).hostname}
@@ -77,7 +77,7 @@ export function HistoryItem(props: { tx: Transaction }): VNode {
case TransactionType.InternalWithdrawal:
return (
<Layout
- id={tx.transactionId}
+ href={Pages.balanceTransaction({ tid: tx.transactionId })}
amount={tx.amountEffective}
debitCreditIndicator={"credit"}
title={new URL(tx.exchangeBaseUrl).hostname}
@@ -101,7 +101,7 @@ export function HistoryItem(props: { tx: Transaction }): VNode {
case TransactionType.Payment:
return (
<Layout
- id={tx.transactionId}
+ href={Pages.balanceTransaction({ tid: tx.transactionId })}
amount={tx.amountEffective}
debitCreditIndicator={"debit"}
title={tx.info.merchant.name}
@@ -119,7 +119,7 @@ export function HistoryItem(props: { tx: Transaction }): VNode {
case TransactionType.Refund:
return (
<Layout
- id={tx.transactionId}
+ href={Pages.balanceTransaction({ tid: tx.transactionId })}
amount={tx.amountEffective}
debitCreditIndicator={"credit"}
subtitle={tx.paymentInfo ? tx.paymentInfo.summary : undefined} //FIXME: DD37 wallet-core is not returning this value
@@ -141,7 +141,7 @@ export function HistoryItem(props: { tx: Transaction }): VNode {
case TransactionType.Refresh:
return (
<Layout
- id={tx.transactionId}
+ href={Pages.balanceTransaction({ tid: tx.transactionId })}
amount={tx.amountEffective}
debitCreditIndicator={"credit"}
title={"Refresh"}
@@ -155,13 +155,15 @@ export function HistoryItem(props: { tx: Transaction }): VNode {
}
/>
);
- case TransactionType.Deposit:{
+ case TransactionType.Deposit: {
const payto = parsePaytoUri(tx.targetPaytoUri);
- const title = payto === undefined || !payto.isKnown ? tx.targetPaytoUri :
- payto.params["receiver-name"] ;
+ const title =
+ payto === undefined || !payto.isKnown
+ ? tx.targetPaytoUri
+ : payto.params["receiver-name"];
return (
<Layout
- id={tx.transactionId}
+ href={Pages.balanceTransaction({ tid: tx.transactionId })}
amount={tx.amountEffective}
debitCreditIndicator={"debit"}
title={title}
@@ -179,7 +181,7 @@ export function HistoryItem(props: { tx: Transaction }): VNode {
case TransactionType.PeerPullCredit:
return (
<Layout
- id={tx.transactionId}
+ href={Pages.balanceTransaction({ tid: tx.transactionId })}
amount={tx.amountEffective}
debitCreditIndicator={"credit"}
title={tx.info.summary || "Invoice"}
@@ -196,7 +198,7 @@ export function HistoryItem(props: { tx: Transaction }): VNode {
case TransactionType.PeerPullDebit:
return (
<Layout
- id={tx.transactionId}
+ href={Pages.balanceTransaction({ tid: tx.transactionId })}
amount={tx.amountEffective}
debitCreditIndicator={"debit"}
title={tx.info.summary || "Invoice"}
@@ -213,7 +215,7 @@ export function HistoryItem(props: { tx: Transaction }): VNode {
case TransactionType.PeerPushCredit:
return (
<Layout
- id={tx.transactionId}
+ href={Pages.balanceTransaction({ tid: tx.transactionId })}
amount={tx.amountEffective}
debitCreditIndicator={"credit"}
title={tx.info.summary || "Transfer"}
@@ -230,7 +232,7 @@ export function HistoryItem(props: { tx: Transaction }): VNode {
case TransactionType.PeerPushDebit:
return (
<Layout
- id={tx.transactionId}
+ href={Pages.balanceTransaction({ tid: tx.transactionId })}
amount={tx.amountEffective}
debitCreditIndicator={"debit"}
title={tx.info.summary || "Transfer"}
@@ -249,7 +251,7 @@ export function HistoryItem(props: { tx: Transaction }): VNode {
case DenomLossEventType.DenomExpired: {
return (
<Layout
- id={tx.transactionId}
+ href={Pages.balanceTransaction({ tid: tx.transactionId })}
amount={tx.amountEffective}
debitCreditIndicator={"debit"}
title={i18n.str`Denomination expired`}
@@ -263,7 +265,7 @@ export function HistoryItem(props: { tx: Transaction }): VNode {
case DenomLossEventType.DenomVanished: {
return (
<Layout
- id={tx.transactionId}
+ href={Pages.balanceTransaction({ tid: tx.transactionId })}
amount={tx.amountEffective}
debitCreditIndicator={"debit"}
title={i18n.str`Denomination vanished`}
@@ -277,7 +279,7 @@ export function HistoryItem(props: { tx: Transaction }): VNode {
case DenomLossEventType.DenomUnoffered: {
return (
<Layout
- id={tx.transactionId}
+ href={Pages.balanceTransaction({ tid: tx.transactionId })}
amount={tx.amountEffective}
debitCreditIndicator={"debit"}
title={i18n.str`Denomination unoffered`}
@@ -306,7 +308,7 @@ function Layout(props: LayoutProps): VNode {
const { i18n } = useTranslationContext();
return (
<HistoryRow
- href={Pages.balanceTransaction({ tid: props.id })}
+ href={props.href}
style={{
backgroundColor:
props.currentState === TransactionMajorState.Pending ||
@@ -363,10 +365,10 @@ interface LayoutProps {
timestamp: AbsoluteTime;
title: string;
subtitle?: string;
- id: string;
iconPath: string;
currentState: TransactionMajorState;
description?: string;
+ href: string;
}
interface TransactionAmountProps {
diff --git a/packages/web-util/src/forms/forms-ui.tsx b/packages/web-util/src/forms/forms-ui.tsx
@@ -101,12 +101,14 @@ export function FormUI<T>({
model,
disabled,
focus,
+ onSubmit,
}: {
name?: string;
design: FormDesign;
model: FormModel;
focus?: boolean;
disabled?: boolean;
+ onSubmit?: () => void;
}): VNode {
switch (design.type) {
case "double-column": {
@@ -121,6 +123,7 @@ export function FormUI<T>({
model={model}
focus={focus}
disabled={disabled}
+ onSubmit={onSubmit}
/>
);
});
@@ -142,6 +145,7 @@ export function FormUI<T>({
fields={design.fields}
model={model}
focus={focus}
+ onSubmit={onSubmit}
disabled={disabled}
/>
);
@@ -156,6 +160,7 @@ export function DoubleColumnFormSectionUI<T>({
focus,
model,
disabled,
+ onSubmit,
}: {
sectionKey: string;
name: string;
@@ -163,6 +168,7 @@ export function DoubleColumnFormSectionUI<T>({
section: DoubleColumnFormSection;
focus?: boolean;
disabled?: boolean;
+ onSubmit?: () => void;
}): VNode {
const { i18n } = useTranslationContext();
const fs = convertFormConfigToUiField(
@@ -194,6 +200,10 @@ export function DoubleColumnFormSectionUI<T>({
<form
name={name}
class="grid grid-cols-1 gap-x-8 gap-y-8 pt-5 md:grid-cols-3"
+ onSubmit={(e) => {
+ e.preventDefault();
+ if (onSubmit) onSubmit();
+ }}
>
<div class="px-4 sm:px-0">
<h2 class="text-base font-semibold leading-7 text-gray-900">
@@ -227,18 +237,24 @@ export function SingleColumnFormSectionUI<T>({
model,
focus,
disabled,
+ onSubmit,
}: {
name: string;
model: FormModel;
fields: UIFormElementConfig[];
focus?: boolean;
disabled?: boolean;
+ onSubmit?: () => void;
}): VNode {
const { i18n } = useTranslationContext();
return (
<form
name={name}
class="bg-white shadow-sm ring-1 ring-gray-900/5 rounded-md md:col-span-2"
+ onSubmit={(e) => {
+ e.preventDefault();
+ if (onSubmit) onSubmit();
+ }}
>
<div class="p-3">
<div class="grid max-w-2xl grid-cols-1 gap-x-6 gap-y-8 sm:grid-cols-6">