diff options
author | Sebastian <sebasjm@gmail.com> | 2024-05-10 11:00:14 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2024-05-10 11:00:14 -0300 |
commit | 224bbb1d99a7f12a95322a4abb6a5e8f05fca68b (patch) | |
tree | 9426f4e26666d3f0ec2a0793b22f29439d40ad21 | |
parent | 2375c1c1c8095b4d38dd2afa878705ad3bb216e1 (diff) |
fixing time and currency input
-rw-r--r-- | packages/aml-backoffice-ui/src/forms.json | 38 | ||||
-rw-r--r-- | packages/web-util/src/forms/InputAbsoluteTime.stories.tsx | 2 | ||||
-rw-r--r-- | packages/web-util/src/forms/InputAmount.tsx | 29 | ||||
-rw-r--r-- | packages/web-util/src/forms/forms.ts | 15 | ||||
-rw-r--r-- | packages/web-util/src/forms/ui-form.ts | 6 |
5 files changed, 38 insertions, 52 deletions
diff --git a/packages/aml-backoffice-ui/src/forms.json b/packages/aml-backoffice-ui/src/forms.json index ef8001f91..f095e6eb2 100644 --- a/packages/aml-backoffice-ui/src/forms.json +++ b/packages/aml-backoffice-ui/src/forms.json @@ -70,7 +70,7 @@ "label": "E-mail" }, { - "type": "absoluteTime", + "type": "absoluteTimeText", "pattern": "dd/MM/yyyy", "name": "naturalCustomer.dateOfBirth", @@ -240,7 +240,7 @@ "required": true }, { - "type": "absoluteTime", + "type": "absoluteTimeText", "pattern": "dd/MM/yyyy", "name": "dateOfBirth", @@ -315,7 +315,7 @@ "title": "Acceptance of business relationship", "fields": [ { - "type": "absoluteTime", + "type": "absoluteTimeText", "name": "acceptance.when", "id": ".acceptance.when", @@ -511,32 +511,16 @@ "type": "double-column", "design": [ { - "title": "Decorative elements", - "description": "This is an example UI of a form with decorative elements", + "title": "Amount inputs", "fields": [ { - "type": "caption", - "name": "cap", - "label": "This is a caption" - }, - { - "type": "group", - "name": "group", - "label": "The first name and last name are in a group", - "fields": [ - { - "type": "text", - "name": "firstName", - "id": ".person.name", - "label": "First name" - }, - { - "type": "text", - "name": "lastName", - "id": ".person.lastName", - "label": "Last name" - } - ] + "type": "amount", + "name": "thedate", + "id": ".amount", + "converterId": "Taler.Amount", + "help": "how much do you have?", + "currency":"EUR", + "label": "Amount" } ] } diff --git a/packages/web-util/src/forms/InputAbsoluteTime.stories.tsx b/packages/web-util/src/forms/InputAbsoluteTime.stories.tsx index 0d54c3f69..6b792bfee 100644 --- a/packages/web-util/src/forms/InputAbsoluteTime.stories.tsx +++ b/packages/web-util/src/forms/InputAbsoluteTime.stories.tsx @@ -47,7 +47,7 @@ const form: FlexibleForm_Deprecated<TargetObject> = { design: [{ title: "this is a simple form" as TranslatedString, fields: [{ - type: "absoluteTime", + type: "absoluteTimeText", properties: { label: "label of the field" as TranslatedString, name: "today", diff --git a/packages/web-util/src/forms/InputAmount.tsx b/packages/web-util/src/forms/InputAmount.tsx index e8683468e..647d2c823 100644 --- a/packages/web-util/src/forms/InputAmount.tsx +++ b/packages/web-util/src/forms/InputAmount.tsx @@ -18,25 +18,26 @@ export function InputAmount<T extends object, K extends keyof T>( : (value as any).currency; return ( <InputLine<T, K> + {...props} type="text" before={{ type: "text", text: currency as TranslatedString, }} - //@ts-ignore - converter={ props.converter ?? { - - fromStringUI: (v): AmountJson => { - return ( - Amounts.parse(`${currency}:${v}`) ?? - Amounts.zeroOfCurrency(currency) - ); - }, - toStringUI: (v: AmountJson) => { - return v === undefined ? "" : Amounts.stringifyValue(v); - }, - }} - {...props} + //@ts-ignore + converter={ + props.converter ?? { + fromStringUI: (v): AmountJson => { + return ( + Amounts.parse(`${currency}:${v}`) ?? + Amounts.zeroOfCurrency(currency) + ); + }, + toStringUI: (v: AmountJson) => { + return v === undefined ? "" : Amounts.stringifyValue(v); + }, + } + } /> ); } diff --git a/packages/web-util/src/forms/forms.ts b/packages/web-util/src/forms/forms.ts index f2c00083c..cb2ee0145 100644 --- a/packages/web-util/src/forms/forms.ts +++ b/packages/web-util/src/forms/forms.ts @@ -31,7 +31,7 @@ type FieldType<T extends object = any, K extends keyof T = any> = { textArea: Parameters<typeof InputTextArea<T, K>>[0]; choiceStacked: Parameters<typeof InputChoiceStacked<T, K>>[0]; choiceHorizontal: Parameters<typeof InputChoiceHorizontal<T, K>>[0]; - absoluteTime: Parameters<typeof InputAbsoluteTime<T, K>>[0]; + absoluteTimeText: Parameters<typeof InputAbsoluteTime<T, K>>[0]; integer: Parameters<typeof InputInteger<T, K>>[0]; toggle: Parameters<typeof InputToggle<T, K>>[0]; amount: Parameters<typeof InputAmount<T, K>>[0]; @@ -64,8 +64,8 @@ export type UIFormField = | { type: "integer"; properties: FieldType["integer"] } | { type: "toggle"; properties: FieldType["toggle"] } | { - type: "absoluteTime"; - properties: FieldType["absoluteTime"]; + type: "absoluteTimeText"; + properties: FieldType["absoluteTimeText"]; }; type FieldComponentFunction<key extends keyof FieldType> = ( @@ -89,7 +89,7 @@ const UIFormConfiguration: UIFormFieldMap = { file: InputFile, textArea: InputTextArea, //@ts-ignore - absoluteTime: InputAbsoluteTime, + absoluteTimeText: InputAbsoluteTime, //@ts-ignore choiceStacked: InputChoiceStacked, //@ts-ignore @@ -194,9 +194,9 @@ export function convertUiField( }, } as UIFormField; } - case "absoluteTime": { + case "absoluteTimeText": { return { - type: "absoluteTime", + type: "absoluteTimeText", properties: { ...converBaseFieldsProps(i18n_, config), ...converInputFieldsProps(form, config, getConverterById), @@ -208,7 +208,8 @@ export function convertUiField( type: "amount", properties: { ...converBaseFieldsProps(i18n_, config), - ...converInputFieldsProps(form, config, getConverterById), + ...converInputFieldsProps(form, config, getConverterById), + currency: config.currency, }, } as UIFormField; } diff --git a/packages/web-util/src/forms/ui-form.ts b/packages/web-util/src/forms/ui-form.ts index d683b15de..012499d6d 100644 --- a/packages/web-util/src/forms/ui-form.ts +++ b/packages/web-util/src/forms/ui-form.ts @@ -50,7 +50,7 @@ export type UIFormElementConfig = | UIFormFieldToggle; type UIFormFieldAbsoluteTime = { - type: "absoluteTime"; + type: "absoluteTimeText"; max?: TalerProtocolTimestamp; min?: TalerProtocolTimestamp; pattern: string; @@ -196,7 +196,7 @@ const codecForUIFormFieldBaseConfigTemplate = < const codecForUiFormFieldAbsoluteTime = (): Codec<UIFormFieldAbsoluteTime> => codecForUIFormFieldBaseConfigTemplate<UIFormFieldAbsoluteTime>() - .property("type", codecForConstString("absoluteTime")) + .property("type", codecForConstString("absoluteTimeText")) .property("pattern", codecForString()) .property("max", codecOptional(codecForTimestamp)) .property("min", codecOptional(codecForTimestamp)) @@ -303,7 +303,7 @@ const codecForUiFormField = (): Codec<UIFormElementConfig> => .discriminateOn("type") .alternative("array", codecForLazy(codecForUiFormFieldArray)) .alternative("group", codecForLazy(codecForUiFormFieldGroup)) - .alternative("absoluteTime", codecForUiFormFieldAbsoluteTime()) + .alternative("absoluteTimeText", codecForUiFormFieldAbsoluteTime()) .alternative("amount", codecForUiFormFieldAmount()) .alternative("caption", codecForUiFormFieldCaption()) .alternative("choiceHorizontal", codecForUiFormFieldChoiceHorizontal()) |