summaryrefslogtreecommitdiff
path: root/packages/web-util/src/forms/forms.ts
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2023-12-31 15:25:03 -0300
committerSebastian <sebasjm@gmail.com>2023-12-31 15:25:03 -0300
commit5ed54d872a70c2ba3c0a727d99093335e03f7a77 (patch)
tree14ab4c3cedcff72f738f86b6c87b877c1a868697 /packages/web-util/src/forms/forms.ts
parent6dd7cfa1ecd3ab95e4ab50e144762e5dceb03328 (diff)
downloadwallet-core-5ed54d872a70c2ba3c0a727d99093335e03f7a77.tar.gz
wallet-core-5ed54d872a70c2ba3c0a727d99093335e03f7a77.tar.bz2
wallet-core-5ed54d872a70c2ba3c0a727d99093335e03f7a77.zip
updat web utils
Diffstat (limited to 'packages/web-util/src/forms/forms.ts')
-rw-r--r--packages/web-util/src/forms/forms.ts22
1 files changed, 14 insertions, 8 deletions
diff --git a/packages/web-util/src/forms/forms.ts b/packages/web-util/src/forms/forms.ts
index 6e8a0e7c0..1c212fafa 100644
--- a/packages/web-util/src/forms/forms.ts
+++ b/packages/web-util/src/forms/forms.ts
@@ -1,6 +1,6 @@
import { TranslatedString } from "@gnu-taler/taler-util";
import { InputText } from "./InputText.js";
-import { InputDate } from "./InputDate.js";
+import { InputAbsoluteTime } from "./InputAbsoluteTime.js";
import { InputInteger } from "./InputInteger.js";
import { h as create, Fragment, VNode } from "preact";
import { InputChoiceStacked } from "./InputChoiceStacked.js";
@@ -15,6 +15,7 @@ import { FormProvider, FormState } from "./FormProvider.js";
import { InputLine } from "./InputLine.js";
import { InputAmount } from "./InputAmount.js";
import { InputChoiceHorizontal } from "./InputChoiceHorizontal.js";
+import { InputToggle } from "./InputToggle.js";
export type DoubleColumnForm = Array<DoubleColumnFormSection | undefined>;
@@ -23,6 +24,10 @@ export type DoubleColumnFormSection = {
description?: TranslatedString;
fields: UIFormField[];
};
+export interface FlexibleForm<T extends object> {
+ design: DoubleColumnForm;
+ behavior?: (form: Partial<T>) => FormState<T>;
+}
/**
* Constrain the type with the ui props
@@ -38,8 +43,9 @@ 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];
- date: Parameters<typeof InputDate<T, K>>[0];
+ absoluteTime: 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];
};
@@ -59,7 +65,8 @@ export type UIFormField =
| { type: "choiceStacked"; props: FieldType["choiceStacked"] }
| { type: "choiceHorizontal"; props: FieldType["choiceHorizontal"] }
| { type: "integer"; props: FieldType["integer"] }
- | { type: "date"; props: FieldType["date"] };
+ | { type: "toggle"; props: FieldType["toggle"] }
+ | { type: "absoluteTime"; props: FieldType["absoluteTime"] };
type FieldComponentFunction<key extends keyof FieldType> = (
props: FieldType[key],
@@ -82,7 +89,7 @@ const UIFormConfiguration: UIFormFieldMap = {
file: InputFile,
textArea: InputTextArea,
//@ts-ignore
- date: InputDate,
+ absoluteTime: InputAbsoluteTime,
//@ts-ignore
choiceStacked: InputChoiceStacked,
//@ts-ignore
@@ -93,6 +100,8 @@ const UIFormConfiguration: UIFormFieldMap = {
//@ts-ignore
selectMultiple: InputSelectMultiple,
//@ts-ignore
+ toggle: InputToggle,
+ //@ts-ignore
amount: InputAmount,
};
@@ -116,10 +125,7 @@ export function RenderAllFieldsByUiConfig({
type FormSet<T extends object> = {
Provider: typeof FormProvider<T>;
InputLine: <K extends keyof T>() => typeof InputLine<T, K>;
- InputChoiceHorizontal: <K extends keyof T>() => typeof InputChoiceHorizontal<
- T,
- K
- >;
+ InputChoiceHorizontal: <K extends keyof T>() => typeof InputChoiceHorizontal<T, K>;
};
export function createNewForm<T extends object>() {
const res: FormSet<T> = {