gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] branch master updated: fix some inputs


From: gnunet
Subject: [taler-wallet-core] branch master updated: fix some inputs
Date: Mon, 13 May 2024 19:47:37 +0200

This is an automated email from the git hooks/post-receive script.

sebasjm pushed a commit to branch master
in repository wallet-core.

The following commit(s) were added to refs/heads/master by this push:
     new d06accc78 fix some inputs
d06accc78 is described below

commit d06accc782a4f2a8f3d84706f026e27fa51bc39a
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Mon May 13 14:47:32 2024 -0300

    fix some inputs
---
 packages/aml-backoffice-ui/src/forms.json          | 14 +++++------
 packages/web-util/src/forms/InputArray.tsx         | 28 +++++++++++++++++++---
 .../web-util/src/forms/InputChoiceHorizontal.tsx   |  5 ++--
 packages/web-util/src/forms/converter.ts           | 21 ++++++++++++----
 packages/web-util/src/forms/forms.ts               |  2 +-
 5 files changed, 51 insertions(+), 19 deletions(-)

diff --git a/packages/aml-backoffice-ui/src/forms.json 
b/packages/aml-backoffice-ui/src/forms.json
index f095e6eb2..e3fed36d0 100644
--- a/packages/aml-backoffice-ui/src/forms.json
+++ b/packages/aml-backoffice-ui/src/forms.json
@@ -511,16 +511,14 @@
         "type": "double-column",
         "design": [
           {
-            "title": "Amount inputs",
+            "title": "File inputs",
             "fields": [
               {
-                "type": "amount",
-                "name": "thedate",
-                "id": ".amount",
-                "converterId": "Taler.Amount",
-                "help": "how much do you have?",
-                "currency":"EUR",
-                "label": "Amount"
+                "type": "file",
+                "name": "photo",
+                "id": ".photo",
+                "label": "Photo",
+                "accept": "*.png"
               }
             ]
           }
diff --git a/packages/web-util/src/forms/InputArray.tsx 
b/packages/web-util/src/forms/InputArray.tsx
index 1ac96437c..d90028508 100644
--- a/packages/web-util/src/forms/InputArray.tsx
+++ b/packages/web-util/src/forms/InputArray.tsx
@@ -99,7 +99,7 @@ export function InputArray<T extends object, K extends keyof 
T>(
   const [selectedIndex, setSelected] = useState<number | undefined>(undefined);
   const selected =
     selectedIndex === undefined ? undefined : list[selectedIndex];
-
+    
   return (
     <div class="sm:col-span-6">
       <LabelWithTooltipMaybeRequired
@@ -110,9 +110,10 @@ export function InputArray<T extends object, K extends 
keyof T>(
 
       <div class="-space-y-px rounded-md bg-white ">
         {list.map((v, idx) => {
+          const label = getValueDeeper(v, labelField.split("."))
           return (
             <Option
-              label={v[labelField] as TranslatedString}
+              label={label as TranslatedString}
               key={idx}
               isSelected={selectedIndex === idx}
               isLast={idx === list.length - 1}
@@ -158,7 +159,7 @@ export function InputArray<T extends object, K extends 
keyof T>(
             // elements should be present in the state object since this is 
expected to be an array
             //@ts-ignore
             // return state.elements[selectedIndex];
-            return {}
+            return {};
           }}
           onSubmit={(v) => {
             const newValue = [...list];
@@ -202,3 +203,24 @@ export function InputArray<T extends object, K extends 
keyof T>(
     </div>
   );
 }
+
+
+
+export function getValueDeeper(
+  object: Record<string, any>,
+  names: string[],
+): string {
+  if (names.length === 0) {
+    return object as any as string;
+  }
+  const [head, ...rest] = names;
+  if (!head) {
+    return getValueDeeper(object, rest);
+  }
+  if (object === undefined) {
+    return ""
+  }
+  return getValueDeeper(object[head], rest);
+}
+
+
diff --git a/packages/web-util/src/forms/InputChoiceHorizontal.tsx 
b/packages/web-util/src/forms/InputChoiceHorizontal.tsx
index d8361718d..86d3aa926 100644
--- a/packages/web-util/src/forms/InputChoiceHorizontal.tsx
+++ b/packages/web-util/src/forms/InputChoiceHorizontal.tsx
@@ -34,11 +34,12 @@ export function InputChoiceHorizontal<T extends object, K 
extends keyof T>(
       <fieldset class="mt-2">
         <div class="isolate inline-flex rounded-md shadow-sm">
           {choices.map((choice, idx) => {
+            const convertedValue = converter?.fromStringUI(choice.value as any)
             const isFirst = idx === 0;
             const isLast = idx === choices.length - 1;
             let clazz =
               "relative inline-flex items-center px-3 py-2 text-sm 
font-semibold text-gray-900 ring-1 ring-inset ring-gray-300  focus:z-10";
-            if (converter?.fromStringUI(choice.value as any) === value) {
+            if (convertedValue !== undefined && convertedValue === value) {
               clazz +=
                 " text-white bg-indigo-600 hover:bg-indigo-500 ring-2 
ring-indigo-600 hover:ring-indigo-500";
             } else {
@@ -61,7 +62,7 @@ export function InputChoiceHorizontal<T extends object, K 
extends keyof T>(
                 class={clazz}
                 onClick={(e) => {
                   onChange(
-                    (value === choice.value ? undefined : 
converter?.fromStringUI(choice.value as any)) as any,
+                    (value === choice.value ? undefined : convertedValue) as 
any,
                   );
                 }}
               >
diff --git a/packages/web-util/src/forms/converter.ts 
b/packages/web-util/src/forms/converter.ts
index 3a522bf7e..eee891776 100644
--- a/packages/web-util/src/forms/converter.ts
+++ b/packages/web-util/src/forms/converter.ts
@@ -53,6 +53,15 @@ function parseAmlState(s: string | undefined): 
TalerExchangeApi.AmlState {
   }
 }
 
+const nullConverter: StringConverter<string> = {
+  fromStringUI(v: string | undefined): string {
+    return v ?? "";
+  },
+  toStringUI(v: unknown): string {
+    return v as string;
+  },
+};
+
 function amountConverter(config: any): StringConverter<AmountJson> {
   const currency = config["currency"];
   if (!currency || typeof currency !== "string") {
@@ -61,7 +70,9 @@ function amountConverter(config: any): 
StringConverter<AmountJson> {
   return {
     fromStringUI(v: string | undefined): AmountJson {
       // FIXME: requires currency
-      return Amounts.parse(`${currency}:${v}`) ?? 
Amounts.zeroOfCurrency(currency);
+      return (
+        Amounts.parse(`${currency}:${v}`) ?? Amounts.zeroOfCurrency(currency)
+      );
     },
     toStringUI(v: unknown): string {
       return v === undefined ? "" : Amounts.stringifyValue(v as AmountJson);
@@ -82,7 +93,7 @@ function absTimeConverter(config: any): 
StringConverter<AbsoluteTime> {
       try {
         const time = parse(v, pattern, new Date());
         return AbsoluteTime.fromMilliseconds(time.getTime());
-      } catch(e) {
+      } catch (e) {
         return AbsoluteTime.never();
       }
     },
@@ -91,9 +102,9 @@ function absTimeConverter(config: any): 
StringConverter<AbsoluteTime> {
       const d = v as AbsoluteTime;
       if (d.t_ms === "never") return "never";
       try {
-        return format(d.t_ms, pattern)
+        return format(d.t_ms, pattern);
       } catch (e) {
-        return ""
+        return "";
       }
     },
   };
@@ -115,5 +126,5 @@ export function getConverterById(
     // @ts-expect-error check this
     return amlStateConverter;
   }
-  return undefined!;
+  return nullConverter as StringConverter<unknown>;
 }
diff --git a/packages/web-util/src/forms/forms.ts 
b/packages/web-util/src/forms/forms.ts
index cb2ee0145..4c5050830 100644
--- a/packages/web-util/src/forms/forms.ts
+++ b/packages/web-util/src/forms/forms.ts
@@ -354,7 +354,7 @@ function converBaseFieldsProps(
   };
 }
 
-function getValueDeeper2(
+export function getValueDeeper2(
   object: Record<string, any>,
   names: string[],
 ): UIFieldHandler {

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]