taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit d2024328982979d3c39d21b7dc07f33649985017
parent 1937095f39078b379152997590f756f0aa4b12b5
Author: Sebastian <sebasjm@gmail.com>
Date:   Sun, 23 Feb 2025 20:23:18 -0300

fix #9578: support PDF

Diffstat:
Mpackages/kyc-ui/src/pages/TriggerForms.tsx | 2--
Mpackages/web-util/src/forms/fields/InputFile.stories.tsx | 20+++++++++++++++-----
Mpackages/web-util/src/forms/fields/InputFile.tsx | 43+++++++++++++++++++++++++++++++++++--------
3 files changed, 50 insertions(+), 15 deletions(-)

diff --git a/packages/kyc-ui/src/pages/TriggerForms.tsx b/packages/kyc-ui/src/pages/TriggerForms.tsx @@ -65,8 +65,6 @@ export function TriggerForms({ formId }: Props): VNode { ], }, }; - - console.log("ASDASD", formId); const { handler, status } = useForm<FormType>(theForm.config, { form: formId, }); diff --git a/packages/web-util/src/forms/fields/InputFile.stories.tsx b/packages/web-util/src/forms/fields/InputFile.stories.tsx @@ -35,10 +35,10 @@ export namespace Simplest { } type TargetObject = { - file?: string; + pdf?: string; }; const initial: TargetObject = { - file: undefined, + pdf: "file:CONTRATO DE LOCACIÓN DE VIVIENDA BULNES.docx.pdf;data:application/pdf;base64,JVBERi0xLjQKJdPr6eEKMSAwIG9iago8PC9UaXRsZSA8RkVGRjAwNDMwMDRGMDA0RTAwNTQwMDUyMDA0MTAwNTQwMDRGMDAyMDAwNDQwMDQ1MDAyMDAwNEMwMDRGMDA0MzAwNDEwMDQzMDA0OTAwRDMwMDRFMDAyMDAwNDQwMDQ1MDAyMDAwNTYwMDQ5MDA1NjAwNDkwMDQ1MDA0RTAwNDQwMDQxMDAyMDAwNDIwMDU1MDA0QzAwNEUwMDQ1MDA1MzAwMkUwMDY0MDA2RjAwNjMwMDc4PgovUHJvZHVjZXIgKFNraWEvUERGIG0xMzQgR29vZ2xlIERvY3MgUmVuZGVyZXIpPj4KZW5kb2JqCjMgMCBvYmoKPDwvY2EgMQovQk0gL05vcm1hbD4+CmVuZG9iago3IDAgb2JqCjw8L0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAxMDMxNT4+IHN0cmVhbQp4nMVd3Y4muW29n6foF9ha/f8AhoHpnh0jFwbiYN8gjg0EyEWc9wciSqKqSlJ1fRRrZr1o90zvtr5TKkmkSJ5D+SbSP7/I9H/BqLf//J8v//tl8zb/FL+nH8o3+Oc//vJW/vCvf3759S/67Z//9wX+vY/mTUql3/71X1/+8eVv3QjBbsIKIfSbF1swMcYAI4r8H6QRyx/2EX/997c//enXv37827f04z//+f3bx5f337/8+j19hnv7/R9fJCK2cTPW6LfNKm10+qTfYdRfpNlMKH//+9ufhFAufbZKXzJ9+fSVwCjz57ff//uL85sCoOU/1D7/MOKvt5+r/PPffifgCHGTProQRjxC04eLenMJ6fhs6XlUoI8npd2CldbpZ/BJJTaVHtfPMH4v8w/vQZn6/UOID/i5pH+WEnY+GSvAlRSb8AnHc3OrtMpz8dCrV9pt3igZx+F0LDOJ31UoqzwjN/SP0lJt6", }; const design: FormDesign = { @@ -49,20 +49,30 @@ const design: FormDesign = { fields: [ { type: "file", - label: "label of the field" as TranslatedString, + label: "PNG files" as TranslatedString, required: true, - id: "file" as UIHandlerId, + id: "png" as UIHandlerId, accept: ".png", tooltip: "this is a very long tooltip that explain what the field does without being short" as TranslatedString, help: "Max size of 2 mega bytes" as TranslatedString, }, + { + type: "file", + label: "PDF files" as TranslatedString, + required: true, + id: "pdf" as UIHandlerId, + accept: ".pdf", + tooltip: + "this is a very long tooltip that explain what the field does without being short" as TranslatedString, + help: "Max size of 2 mega bytes" as TranslatedString, + }, ], }, ], }; -export const AcceptPNG = tests.createExample(TestedComponent, { +export const TestingAccept = tests.createExample(TestedComponent, { initial, design, }); diff --git a/packages/web-util/src/forms/fields/InputFile.tsx b/packages/web-util/src/forms/fields/InputFile.tsx @@ -100,16 +100,43 @@ export function InputFile<T extends object, K extends keyof T>( ) : ( <div class="mt-2 flex justify-center rounded-lg border border-dashed border-gray-900/25 relative"> {(dataUri as string).startsWith("data:image/") ? ( - <img src={dataUri} class=" h-24 w-full object-cover relative" /> + <Fragment> + <img src={dataUri} class=" h-24 w-full object-cover relative" /> + {fileName ? ( + <div class="absolute rounded-lg border flex justify-center text-xl items-center text-white "> + {fileName} + </div> + ) : ( + <Fragment /> + )} + </Fragment> ) : ( - <div /> - )} - {fileName ? ( - <div class="absolute rounded-lg border flex justify-center text-xl items-center text-white "> - {fileName} + <div class="h-24 w-full object-cover relative p-2"> + <div class="flex flex-row"> + <svg + xmlns="http://www.w3.org/2000/svg" + fill="none" + viewBox="0 0 24 24" + stroke-width="1.5" + stroke="currentColor" + class="size-6" + > + <path + stroke-linecap="round" + stroke-linejoin="round" + d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z" + /> + </svg> + + {fileName ? ( + <div class=" flex justify-center text-xl items-center "> + {fileName} + </div> + ) : ( + <div /> + )} + </div> </div> - ) : ( - <Fragment /> )} {!state.disabled && (