@webiny/app-admin 6.3.0-beta.1 → 6.3.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/base/Base/DefaultFieldRenderers.js +69 -5
- package/base/Base/DefaultFieldRenderers.js.map +1 -1
- package/base/Base/DefaultLayoutRenderers.js +5 -1
- package/base/Base/DefaultLayoutRenderers.js.map +1 -1
- package/base/Base/FieldRenderers/CheckboxesRenderer.d.ts +13 -0
- package/base/Base/FieldRenderers/CheckboxesRenderer.js +28 -0
- package/base/Base/FieldRenderers/CheckboxesRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/CodeEditorRenderer.d.ts +15 -0
- package/base/Base/FieldRenderers/CodeEditorRenderer.js +17 -0
- package/base/Base/FieldRenderers/CodeEditorRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/DateTimeInputsRenderer.d.ts +17 -0
- package/base/Base/FieldRenderers/DateTimeInputsRenderer.js +66 -0
- package/base/Base/FieldRenderers/DateTimeInputsRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/DateTimeRenderer.d.ts +21 -0
- package/base/Base/FieldRenderers/DateTimeRenderer.js +46 -0
- package/base/Base/FieldRenderers/DateTimeRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/FilePickerRenderer.d.ts +12 -0
- package/base/Base/FieldRenderers/FilePickerRenderer.js +47 -0
- package/base/Base/FieldRenderers/FilePickerRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/FileUrlPickerRenderer.d.ts +12 -0
- package/base/Base/FieldRenderers/FileUrlPickerRenderer.js +25 -0
- package/base/Base/FieldRenderers/FileUrlPickerRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/HiddenRenderer.d.ts +12 -0
- package/base/Base/FieldRenderers/HiddenRenderer.js +5 -0
- package/base/Base/FieldRenderers/HiddenRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/HorizontalTabsRenderer.d.ts +5 -0
- package/base/Base/FieldRenderers/HorizontalTabsRenderer.js +27 -0
- package/base/Base/FieldRenderers/HorizontalTabsRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/InputRenderer.d.ts +4 -7
- package/base/Base/FieldRenderers/InputRenderer.js +2 -2
- package/base/Base/FieldRenderers/InputRenderer.js.map +1 -1
- package/base/Base/FieldRenderers/NumberInputRenderer.d.ts +12 -0
- package/base/Base/FieldRenderers/NumberInputRenderer.js +23 -0
- package/base/Base/FieldRenderers/NumberInputRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/NumberInputsRenderer.d.ts +14 -0
- package/base/Base/FieldRenderers/NumberInputsRenderer.js +49 -0
- package/base/Base/FieldRenderers/NumberInputsRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.d.ts +14 -0
- package/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js +20 -0
- package/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/KeyValueTagsRenderer.d.ts +14 -0
- package/base/Base/FieldRenderers/ObjectRenderer/KeyValueTagsRenderer.js +65 -0
- package/base/Base/FieldRenderers/ObjectRenderer/KeyValueTagsRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone.d.ts +10 -0
- package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone.js +109 -0
- package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.d.ts +17 -0
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js +55 -0
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.d.ts +7 -3
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js +15 -19
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.d.ts +5 -8
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js +7 -50
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.d.ts +10 -0
- package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js +64 -0
- package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.d.ts +10 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js +85 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js.map +1 -0
- package/base/Base/FieldRenderers/PassthroughRenderer.d.ts +3 -6
- package/base/Base/FieldRenderers/PassthroughRenderer.js +9 -23
- package/base/Base/FieldRenderers/PassthroughRenderer.js.map +1 -1
- package/base/Base/FieldRenderers/RadioButtonsRenderer.d.ts +13 -0
- package/base/Base/FieldRenderers/RadioButtonsRenderer.js +27 -0
- package/base/Base/FieldRenderers/RadioButtonsRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/SelectRenderer.d.ts +6 -8
- package/base/Base/FieldRenderers/SelectRenderer.js +8 -5
- package/base/Base/FieldRenderers/SelectRenderer.js.map +1 -1
- package/base/Base/FieldRenderers/SwitchRenderer.d.ts +12 -0
- package/base/Base/FieldRenderers/SwitchRenderer.js +19 -0
- package/base/Base/FieldRenderers/SwitchRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/TagsRenderer.d.ts +12 -0
- package/base/Base/FieldRenderers/TagsRenderer.js +21 -0
- package/base/Base/FieldRenderers/TagsRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/TextInputsRenderer.d.ts +14 -0
- package/base/Base/FieldRenderers/TextInputsRenderer.js +48 -0
- package/base/Base/FieldRenderers/TextInputsRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/TextareaRenderer.d.ts +3 -6
- package/base/Base/FieldRenderers/TextareaRenderer.js +3 -4
- package/base/Base/FieldRenderers/TextareaRenderer.js.map +1 -1
- package/base/Base/FieldRenderers/TextareasRenderer.d.ts +14 -0
- package/base/Base/FieldRenderers/TextareasRenderer.js +51 -0
- package/base/Base/FieldRenderers/TextareasRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/VerticalTabsRenderer.js +2 -2
- package/base/Base/FieldRenderers/VerticalTabsRenderer.js.map +1 -1
- package/base/Base/Menus.js +5 -64
- package/base/Base/Menus.js.map +1 -1
- package/base/Base/RoutesConfig.js +6 -0
- package/base/Base/RoutesConfig.js.map +1 -1
- package/exports/admin/build-params.d.ts +2 -0
- package/exports/admin/build-params.js +3 -0
- package/exports/admin/build-params.js.map +1 -1
- package/exports/admin/form.d.ts +5 -0
- package/exports/admin/form.js +8 -0
- package/exports/admin/form.js.map +1 -1
- package/exports/admin/ui.d.ts +1 -0
- package/exports/admin/ui.js +1 -0
- package/exports/admin/ui.js.map +1 -1
- package/exports/admin.d.ts +3 -1
- package/exports/admin.js +3 -1
- package/exports/admin.js.map +1 -1
- package/features/formModel/ConditionRuleEvaluator.d.ts +9 -0
- package/features/formModel/ConditionRuleEvaluator.js +56 -0
- package/features/formModel/ConditionRuleEvaluator.js.map +1 -0
- package/features/formModel/Field.d.ts +50 -4
- package/features/formModel/Field.js +254 -35
- package/features/formModel/Field.js.map +1 -1
- package/features/formModel/FieldBuilder.d.ts +17 -35
- package/features/formModel/FieldBuilder.js +63 -100
- package/features/formModel/FieldBuilder.js.map +1 -1
- package/features/formModel/FieldBuilder.test.js +127 -13
- package/features/formModel/FieldBuilder.test.js.map +1 -1
- package/features/formModel/FieldBuilderRegistry.d.ts +4 -0
- package/features/formModel/FieldBuilderRegistry.js +31 -0
- package/features/formModel/FieldBuilderRegistry.js.map +1 -0
- package/features/formModel/FocusManager.d.ts +14 -0
- package/features/formModel/FocusManager.js +109 -0
- package/features/formModel/FocusManager.js.map +1 -0
- package/features/formModel/FormModel.d.ts +27 -31
- package/features/formModel/FormModel.js +210 -403
- package/features/formModel/FormModel.js.map +1 -1
- package/features/formModel/FormModel.test.js +2044 -193
- package/features/formModel/FormModel.test.js.map +1 -1
- package/features/formModel/FormModelFactory.d.ts +4 -2
- package/features/formModel/FormModelFactory.js +13 -3
- package/features/formModel/FormModelFactory.js.map +1 -1
- package/features/formModel/FormView.d.ts +2 -0
- package/features/formModel/FormView.js +44 -37
- package/features/formModel/FormView.js.map +1 -1
- package/features/formModel/LayoutBuilderFactory.d.ts +61 -0
- package/features/formModel/LayoutBuilderFactory.js +386 -0
- package/features/formModel/LayoutBuilderFactory.js.map +1 -0
- package/features/formModel/LayoutMutator.d.ts +11 -0
- package/features/formModel/LayoutMutator.js +136 -0
- package/features/formModel/LayoutMutator.js.map +1 -0
- package/features/formModel/LayoutResolver.d.ts +26 -0
- package/features/formModel/LayoutResolver.js +239 -0
- package/features/formModel/LayoutResolver.js.map +1 -0
- package/features/formModel/ObjectField.d.ts +55 -4
- package/features/formModel/ObjectField.js +499 -82
- package/features/formModel/ObjectField.js.map +1 -1
- package/features/formModel/Rules.test.d.ts +1 -0
- package/features/formModel/Rules.test.js +289 -0
- package/features/formModel/Rules.test.js.map +1 -0
- package/features/formModel/abstractions.d.ts +402 -52
- package/features/formModel/abstractions.js +55 -0
- package/features/formModel/abstractions.js.map +1 -1
- package/features/formModel/createFieldRenderer.d.ts +20 -0
- package/features/formModel/createFieldRenderer.js +15 -0
- package/features/formModel/createFieldRenderer.js.map +1 -0
- package/features/formModel/demo/FieldRenderersDemoPresenter.d.ts +18 -0
- package/features/formModel/demo/FieldRenderersDemoPresenter.js +225 -0
- package/features/formModel/demo/FieldRenderersDemoPresenter.js.map +1 -0
- package/features/formModel/demo/FormModelDemo.d.ts +4 -0
- package/features/formModel/demo/FormModelDemo.js +230 -0
- package/features/formModel/demo/FormModelDemo.js.map +1 -0
- package/features/formModel/demo/FormModelDemoPresenter.d.ts +22 -0
- package/features/formModel/demo/FormModelDemoPresenter.js +121 -0
- package/features/formModel/demo/FormModelDemoPresenter.js.map +1 -0
- package/features/formModel/demo/FormModelPhase11Presenter.d.ts +25 -0
- package/features/formModel/demo/FormModelPhase11Presenter.js +104 -0
- package/features/formModel/demo/FormModelPhase11Presenter.js.map +1 -0
- package/features/formModel/demo/FormModelPhase8c1Presenter.d.ts +23 -0
- package/features/formModel/demo/FormModelPhase8c1Presenter.js +62 -0
- package/features/formModel/demo/FormModelPhase8c1Presenter.js.map +1 -0
- package/features/formModel/feature.js +12 -0
- package/features/formModel/feature.js.map +1 -1
- package/features/formModel/fieldTypes/BooleanFieldType.d.ts +19 -0
- package/features/formModel/fieldTypes/BooleanFieldType.js +23 -0
- package/features/formModel/fieldTypes/BooleanFieldType.js.map +1 -0
- package/features/formModel/fieldTypes/DateTimeFieldType.d.ts +173 -0
- package/features/formModel/fieldTypes/DateTimeFieldType.js +369 -0
- package/features/formModel/fieldTypes/DateTimeFieldType.js.map +1 -0
- package/features/formModel/fieldTypes/FileFieldType.d.ts +18 -0
- package/features/formModel/fieldTypes/FileFieldType.js +20 -0
- package/features/formModel/fieldTypes/FileFieldType.js.map +1 -0
- package/features/formModel/fieldTypes/FileUrlFieldType.d.ts +18 -0
- package/features/formModel/fieldTypes/FileUrlFieldType.js +20 -0
- package/features/formModel/fieldTypes/FileUrlFieldType.js.map +1 -0
- package/features/formModel/fieldTypes/NumberFieldType.d.ts +19 -0
- package/features/formModel/fieldTypes/NumberFieldType.js +27 -0
- package/features/formModel/fieldTypes/NumberFieldType.js.map +1 -0
- package/features/formModel/fieldTypes/ObjectFieldType.d.ts +34 -0
- package/features/formModel/fieldTypes/ObjectFieldType.js +109 -0
- package/features/formModel/fieldTypes/ObjectFieldType.js.map +1 -0
- package/features/formModel/fieldTypes/TextFieldType.d.ts +18 -0
- package/features/formModel/fieldTypes/TextFieldType.js +20 -0
- package/features/formModel/fieldTypes/TextFieldType.js.map +1 -0
- package/features/formModel/fieldTypes/index.d.ts +7 -0
- package/features/formModel/fieldTypes/index.js +9 -0
- package/features/formModel/fieldTypes/index.js.map +1 -0
- package/features/formModel/index.d.ts +13 -4
- package/features/formModel/index.js +21 -2
- package/features/formModel/index.js.map +1 -1
- package/features/formModel/renderers.d.ts +15 -1
- package/features/formModel/renderers.js +15 -1
- package/features/formModel/renderers.js.map +1 -1
- package/features/tools/LexicalContext/LexicalContext.d.ts +14 -0
- package/features/tools/LexicalContext/LexicalContext.js +22 -0
- package/features/tools/LexicalContext/LexicalContext.js.map +1 -0
- package/features/tools/LexicalContext/abstractions.d.ts +11 -0
- package/features/tools/LexicalContext/abstractions.js +4 -0
- package/features/tools/LexicalContext/abstractions.js.map +1 -0
- package/features/tools/LexicalContext/index.d.ts +2 -0
- package/features/tools/LexicalContext/index.js +3 -0
- package/features/tools/LexicalContext/index.js.map +1 -0
- package/features/tools/feature.js +2 -0
- package/features/tools/feature.js.map +1 -1
- package/features/tools/index.d.ts +1 -0
- package/features/tools/index.js +1 -0
- package/features/tools/index.js.map +1 -1
- package/index.d.ts +8 -1
- package/index.js +7 -0
- package/index.js.map +1 -1
- package/package.json +31 -25
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js +1 -1
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js.map +1 -1
- package/presentation/lexicalContext/useLexicalContext.d.ts +3 -0
- package/presentation/lexicalContext/useLexicalContext.js +14 -0
- package/presentation/lexicalContext/useLexicalContext.js.map +1 -0
- package/presentation/textToLexicalTool/TextToLexicalTool.d.ts +3 -0
- package/presentation/textToLexicalTool/TextToLexicalTool.js +6 -2
- package/presentation/textToLexicalTool/TextToLexicalTool.js.map +1 -1
- package/presentation/textToLexicalTool/textToLexicalState.d.ts +2 -1
- package/presentation/textToLexicalTool/textToLexicalState.js +15 -3
- package/presentation/textToLexicalTool/textToLexicalState.js.map +1 -1
- package/routes.d.ts +1 -0
- package/routes.js +4 -0
- package/routes.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectListFlatRenderer.d.ts +0 -21
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectListFlatRenderer.js +0 -28
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectListFlatRenderer.js.map +0 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { makeAutoObservable, toJS } from "mobx";
|
|
2
|
+
/**
|
|
3
|
+
* Demo presenter exercising Phase 8c.1: nested object layouts. The form has a
|
|
4
|
+
* top-level `page` object whose inner layout contains tabs, and one of those
|
|
5
|
+
* tabs contains a nested `seo` object with its own row layout. The Phase 8c.1
|
|
6
|
+
* registrar walks the inner layout (including tabs) and forwards the nested
|
|
7
|
+
* `layout.object("seo", ...)` to the seo field at build time.
|
|
8
|
+
*/
|
|
9
|
+
export class FormModelPhase8c1Presenter {
|
|
10
|
+
lastSubmitted = null;
|
|
11
|
+
isSubmitting = false;
|
|
12
|
+
constructor(formFactory) {
|
|
13
|
+
this.form = formFactory.create({
|
|
14
|
+
fields: fields => ({
|
|
15
|
+
page: fields.object().label("Page").fields(f => ({
|
|
16
|
+
title: f.text().label("Title").defaultValue("Welcome"),
|
|
17
|
+
slug: f.text().label("Slug").defaultValue("welcome"),
|
|
18
|
+
seo: f.object().label("SEO").fields(g => ({
|
|
19
|
+
metaTitle: g.text().label("Meta title"),
|
|
20
|
+
metaDescription: g.text().label("Meta description"),
|
|
21
|
+
og: g.object().label("Open Graph").fields(h => ({
|
|
22
|
+
ogTitle: h.text().label("OG title"),
|
|
23
|
+
ogImage: h.text().label("OG image URL")
|
|
24
|
+
}))
|
|
25
|
+
})),
|
|
26
|
+
body: f.text().label("Body content")
|
|
27
|
+
}))
|
|
28
|
+
}),
|
|
29
|
+
layout: layout => [layout.object("page", l => [l.tabs("pageTabs").tab("general", tab => {
|
|
30
|
+
tab.label("General").layout(l => [l.row("title", "slug"), l.row("body")]);
|
|
31
|
+
}).tab("seo", tab => {
|
|
32
|
+
tab.label("SEO").layout(l => [l.object("seo", inner => [inner.row("metaTitle"), inner.row("metaDescription"), inner.object("og", og => [og.row("ogTitle", "ogImage")])])]);
|
|
33
|
+
})])]
|
|
34
|
+
});
|
|
35
|
+
makeAutoObservable(this);
|
|
36
|
+
}
|
|
37
|
+
get vm() {
|
|
38
|
+
return {
|
|
39
|
+
form: this.form.vm,
|
|
40
|
+
data: toJS(this.form.getData()),
|
|
41
|
+
lastSubmitted: this.lastSubmitted,
|
|
42
|
+
isSubmitting: this.isSubmitting
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
async submit() {
|
|
46
|
+
this.isSubmitting = true;
|
|
47
|
+
try {
|
|
48
|
+
const result = await this.form.submit();
|
|
49
|
+
if (result !== false) {
|
|
50
|
+
this.lastSubmitted = toJS(result);
|
|
51
|
+
}
|
|
52
|
+
} finally {
|
|
53
|
+
this.isSubmitting = false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
reset() {
|
|
57
|
+
this.form.reset();
|
|
58
|
+
this.lastSubmitted = null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=FormModelPhase8c1Presenter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["makeAutoObservable","toJS","FormModelPhase8c1Presenter","lastSubmitted","isSubmitting","constructor","formFactory","form","create","fields","page","object","label","f","title","text","defaultValue","slug","seo","g","metaTitle","metaDescription","og","h","ogTitle","ogImage","body","layout","l","tabs","tab","row","inner","vm","data","getData","submit","result","reset"],"sources":["FormModelPhase8c1Presenter.ts"],"sourcesContent":["import { makeAutoObservable, toJS } from \"mobx\";\nimport type { IFormModel, IFormModelFactory, IFormVM } from \"../abstractions.js\";\n\nexport interface FormModelPhase8c1VM {\n form: IFormVM;\n data: Record<string, unknown>;\n lastSubmitted: Record<string, unknown> | null;\n isSubmitting: boolean;\n}\n\n/**\n * Demo presenter exercising Phase 8c.1: nested object layouts. The form has a\n * top-level `page` object whose inner layout contains tabs, and one of those\n * tabs contains a nested `seo` object with its own row layout. The Phase 8c.1\n * registrar walks the inner layout (including tabs) and forwards the nested\n * `layout.object(\"seo\", ...)` to the seo field at build time.\n */\nexport class FormModelPhase8c1Presenter {\n private form: IFormModel;\n private lastSubmitted: Record<string, unknown> | null = null;\n private isSubmitting = false;\n\n constructor(formFactory: IFormModelFactory) {\n this.form = formFactory.create({\n fields: fields => ({\n page: fields\n .object()\n .label(\"Page\")\n .fields(f => ({\n title: f.text().label(\"Title\").defaultValue(\"Welcome\"),\n slug: f.text().label(\"Slug\").defaultValue(\"welcome\"),\n seo: f\n .object()\n .label(\"SEO\")\n .fields(g => ({\n metaTitle: g.text().label(\"Meta title\"),\n metaDescription: g.text().label(\"Meta description\"),\n og: g\n .object()\n .label(\"Open Graph\")\n .fields(h => ({\n ogTitle: h.text().label(\"OG title\"),\n ogImage: h.text().label(\"OG image URL\")\n }))\n })),\n body: f.text().label(\"Body content\")\n }))\n }),\n layout: layout => [\n layout.object(\"page\", l => [\n l\n .tabs(\"pageTabs\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(l => [\n l.row(\"title\", \"slug\"),\n l.row(\"body\")\n ]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(l => [\n l.object(\"seo\", inner => [\n inner.row(\"metaTitle\"),\n inner.row(\"metaDescription\"),\n inner.object(\"og\", og => [og.row(\"ogTitle\", \"ogImage\")])\n ])\n ]);\n })\n ])\n ]\n });\n\n makeAutoObservable(this);\n }\n\n get vm(): FormModelPhase8c1VM {\n return {\n form: this.form.vm,\n data: toJS(this.form.getData()),\n lastSubmitted: this.lastSubmitted,\n isSubmitting: this.isSubmitting\n };\n }\n\n async submit(): Promise<void> {\n this.isSubmitting = true;\n try {\n const result = await this.form.submit<Record<string, unknown>>();\n if (result !== false) {\n this.lastSubmitted = toJS(result);\n }\n } finally {\n this.isSubmitting = false;\n }\n }\n\n reset(): void {\n this.form.reset();\n this.lastSubmitted = null;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/admin";
|
|
2
2
|
import { FormModelFactory as Abstraction } from "./abstractions.js";
|
|
3
3
|
import { FormModelFactory } from "./FormModelFactory.js";
|
|
4
|
+
import { ConditionRuleEvaluator } from "./ConditionRuleEvaluator.js";
|
|
5
|
+
import { FieldBuilderRegistry } from "./FieldBuilderRegistry.js";
|
|
6
|
+
import { TextFieldType, NumberFieldType, BooleanFieldType, DateTimeFieldType, FileFieldType, FileUrlFieldType, ObjectFieldType } from "./fieldTypes/index.js";
|
|
4
7
|
export const FormModelFeature = createFeature({
|
|
5
8
|
name: "FormModel",
|
|
6
9
|
register(container) {
|
|
10
|
+
container.register(TextFieldType);
|
|
11
|
+
container.register(NumberFieldType);
|
|
12
|
+
container.register(BooleanFieldType);
|
|
13
|
+
container.register(DateTimeFieldType);
|
|
14
|
+
container.register(FileFieldType);
|
|
15
|
+
container.register(FileUrlFieldType);
|
|
16
|
+
container.register(ObjectFieldType);
|
|
17
|
+
container.register(FieldBuilderRegistry).inSingletonScope();
|
|
18
|
+
container.register(ConditionRuleEvaluator).inSingletonScope();
|
|
7
19
|
container.register(FormModelFactory).inSingletonScope();
|
|
8
20
|
},
|
|
9
21
|
resolve(container) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createFeature","FormModelFactory","Abstraction","FormModelFeature","name","register","container","inSingletonScope","resolve","formModelFactory"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { FormModelFactory as Abstraction } from \"./abstractions.js\";\nimport { FormModelFactory } from \"./FormModelFactory.js\";\n\nexport const FormModelFeature = createFeature({\n name: \"FormModel\",\n register(container) {\n container.register(FormModelFactory).inSingletonScope();\n },\n resolve(container) {\n return {\n formModelFactory: container.resolve(Abstraction)\n };\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,uBAAuB;AACrD,SAASC,gBAAgB,IAAIC,WAAW;AACxC,SAASD,gBAAgB;
|
|
1
|
+
{"version":3,"names":["createFeature","FormModelFactory","Abstraction","ConditionRuleEvaluator","FieldBuilderRegistry","TextFieldType","NumberFieldType","BooleanFieldType","DateTimeFieldType","FileFieldType","FileUrlFieldType","ObjectFieldType","FormModelFeature","name","register","container","inSingletonScope","resolve","formModelFactory"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { FormModelFactory as Abstraction } from \"./abstractions.js\";\nimport { FormModelFactory } from \"./FormModelFactory.js\";\nimport { ConditionRuleEvaluator } from \"./ConditionRuleEvaluator.js\";\nimport { FieldBuilderRegistry } from \"./FieldBuilderRegistry.js\";\nimport {\n TextFieldType,\n NumberFieldType,\n BooleanFieldType,\n DateTimeFieldType,\n FileFieldType,\n FileUrlFieldType,\n ObjectFieldType\n} from \"./fieldTypes/index.js\";\n\nexport const FormModelFeature = createFeature({\n name: \"FormModel\",\n register(container) {\n container.register(TextFieldType);\n container.register(NumberFieldType);\n container.register(BooleanFieldType);\n container.register(DateTimeFieldType);\n container.register(FileFieldType);\n container.register(FileUrlFieldType);\n container.register(ObjectFieldType);\n\n container.register(FieldBuilderRegistry).inSingletonScope();\n container.register(ConditionRuleEvaluator).inSingletonScope();\n container.register(FormModelFactory).inSingletonScope();\n },\n resolve(container) {\n return {\n formModelFactory: container.resolve(Abstraction)\n };\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,uBAAuB;AACrD,SAASC,gBAAgB,IAAIC,WAAW;AACxC,SAASD,gBAAgB;AACzB,SAASE,sBAAsB;AAC/B,SAASC,oBAAoB;AAC7B,SACIC,aAAa,EACbC,eAAe,EACfC,gBAAgB,EAChBC,iBAAiB,EACjBC,aAAa,EACbC,gBAAgB,EAChBC,eAAe;AAGnB,OAAO,MAAMC,gBAAgB,GAAGZ,aAAa,CAAC;EAC1Ca,IAAI,EAAE,WAAW;EACjBC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACT,aAAa,CAAC;IACjCU,SAAS,CAACD,QAAQ,CAACR,eAAe,CAAC;IACnCS,SAAS,CAACD,QAAQ,CAACP,gBAAgB,CAAC;IACpCQ,SAAS,CAACD,QAAQ,CAACN,iBAAiB,CAAC;IACrCO,SAAS,CAACD,QAAQ,CAACL,aAAa,CAAC;IACjCM,SAAS,CAACD,QAAQ,CAACJ,gBAAgB,CAAC;IACpCK,SAAS,CAACD,QAAQ,CAACH,eAAe,CAAC;IAEnCI,SAAS,CAACD,QAAQ,CAACV,oBAAoB,CAAC,CAACY,gBAAgB,CAAC,CAAC;IAC3DD,SAAS,CAACD,QAAQ,CAACX,sBAAsB,CAAC,CAACa,gBAAgB,CAAC,CAAC;IAC7DD,SAAS,CAACD,QAAQ,CAACb,gBAAgB,CAAC,CAACe,gBAAgB,CAAC,CAAC;EAC3D,CAAC;EACDC,OAAOA,CAACF,SAAS,EAAE;IACf,OAAO;MACHG,gBAAgB,EAAEH,SAAS,CAACE,OAAO,CAACf,WAAW;IACnD,CAAC;EACL;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type IFieldTypeFactory } from "../abstractions.js";
|
|
2
|
+
import { FieldBuilder } from "../FieldBuilder.js";
|
|
3
|
+
export declare class BooleanFieldBuilder extends FieldBuilder<"boolean"> {
|
|
4
|
+
constructor();
|
|
5
|
+
normalizeValue(value: unknown): unknown;
|
|
6
|
+
}
|
|
7
|
+
declare class BooleanFieldTypeFactory implements IFieldTypeFactory {
|
|
8
|
+
readonly type = "boolean";
|
|
9
|
+
create(): BooleanFieldBuilder;
|
|
10
|
+
}
|
|
11
|
+
export declare const BooleanFieldType: typeof BooleanFieldTypeFactory & {
|
|
12
|
+
__abstraction: import("@webiny/di").Abstraction<IFieldTypeFactory>;
|
|
13
|
+
};
|
|
14
|
+
declare module "../abstractions.js" {
|
|
15
|
+
interface IFieldBuilderRegistry {
|
|
16
|
+
boolean(): IFieldBuilder<"boolean", false, boolean | null>;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { FieldType } from "../abstractions.js";
|
|
2
|
+
import { FieldBuilder } from "../FieldBuilder.js";
|
|
3
|
+
export class BooleanFieldBuilder extends FieldBuilder {
|
|
4
|
+
constructor() {
|
|
5
|
+
super("boolean");
|
|
6
|
+
this._config.renderer = "switch";
|
|
7
|
+
}
|
|
8
|
+
normalizeValue(value) {
|
|
9
|
+
return Boolean(value);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
class BooleanFieldTypeFactory {
|
|
13
|
+
type = "boolean";
|
|
14
|
+
create() {
|
|
15
|
+
return new BooleanFieldBuilder();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export const BooleanFieldType = FieldType.createImplementation({
|
|
19
|
+
implementation: BooleanFieldTypeFactory,
|
|
20
|
+
dependencies: []
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=BooleanFieldType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["FieldType","FieldBuilder","BooleanFieldBuilder","constructor","_config","renderer","normalizeValue","value","Boolean","BooleanFieldTypeFactory","type","create","BooleanFieldType","createImplementation","implementation","dependencies"],"sources":["BooleanFieldType.ts"],"sourcesContent":["import { FieldType, type IFieldTypeFactory } from \"../abstractions.js\";\nimport { FieldBuilder } from \"../FieldBuilder.js\";\n\nexport class BooleanFieldBuilder extends FieldBuilder<\"boolean\"> {\n constructor() {\n super(\"boolean\");\n this._config.renderer = \"switch\";\n }\n\n override normalizeValue(value: unknown): unknown {\n return Boolean(value);\n }\n}\n\nclass BooleanFieldTypeFactory implements IFieldTypeFactory {\n readonly type = \"boolean\";\n create() {\n return new BooleanFieldBuilder();\n }\n}\n\nexport const BooleanFieldType = FieldType.createImplementation({\n implementation: BooleanFieldTypeFactory,\n dependencies: []\n});\n\ndeclare module \"../abstractions.js\" {\n interface IFieldBuilderRegistry {\n boolean(): IFieldBuilder<\"boolean\", false, boolean | null>;\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS;AAClB,SAASC,YAAY;AAErB,OAAO,MAAMC,mBAAmB,SAASD,YAAY,CAAY;EAC7DE,WAAWA,CAAA,EAAG;IACV,KAAK,CAAC,SAAS,CAAC;IAChB,IAAI,CAACC,OAAO,CAACC,QAAQ,GAAG,QAAQ;EACpC;EAESC,cAAcA,CAACC,KAAc,EAAW;IAC7C,OAAOC,OAAO,CAACD,KAAK,CAAC;EACzB;AACJ;AAEA,MAAME,uBAAuB,CAA8B;EAC9CC,IAAI,GAAG,SAAS;EACzBC,MAAMA,CAAA,EAAG;IACL,OAAO,IAAIT,mBAAmB,CAAC,CAAC;EACpC;AACJ;AAEA,OAAO,MAAMU,gBAAgB,GAAGZ,SAAS,CAACa,oBAAoB,CAAC;EAC3DC,cAAc,EAAEL,uBAAuB;EACvCM,YAAY,EAAE;AAClB,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { type IFieldTypeFactory } from "../abstractions.js";
|
|
2
|
+
import { FieldBuilder } from "../FieldBuilder.js";
|
|
3
|
+
export declare class DateTimeFieldBuilder extends FieldBuilder<"datetime"> {
|
|
4
|
+
private _subtype;
|
|
5
|
+
constructor();
|
|
6
|
+
list(): this;
|
|
7
|
+
/**
|
|
8
|
+
* Calendar date only.
|
|
9
|
+
* @example datetime().dateOnly()
|
|
10
|
+
*
|
|
11
|
+
* Value format: `"2026-05-01"` (YYYY-MM-DD)
|
|
12
|
+
*/
|
|
13
|
+
dateOnly(): this;
|
|
14
|
+
/**
|
|
15
|
+
* Time only, no date component.
|
|
16
|
+
* @example datetime().timeOnly()
|
|
17
|
+
*
|
|
18
|
+
* Value format: `"14:30:00"` (HH:mm:ss)
|
|
19
|
+
*/
|
|
20
|
+
timeOnly(): this;
|
|
21
|
+
/**
|
|
22
|
+
* Date and time with explicit timezone offset.
|
|
23
|
+
* @example datetime().withTimezone()
|
|
24
|
+
*
|
|
25
|
+
* Value format: `"2026-05-01T14:30:00+02:00"` (ISO 8601 with offset)
|
|
26
|
+
*/
|
|
27
|
+
withTimezone(): this;
|
|
28
|
+
/**
|
|
29
|
+
* Date and time in UTC, no timezone offset.
|
|
30
|
+
* @example datetime().withoutTimezone()
|
|
31
|
+
*
|
|
32
|
+
* Value format: `"2026-05-01T14:30:00.000Z"` (ISO 8601 UTC)
|
|
33
|
+
*/
|
|
34
|
+
withoutTimezone(): this;
|
|
35
|
+
/**
|
|
36
|
+
* Month and year picker.
|
|
37
|
+
* @example datetime().monthOnly()
|
|
38
|
+
*
|
|
39
|
+
* Value format: `"2026-05"` (YYYY-MM)
|
|
40
|
+
*/
|
|
41
|
+
monthOnly(): this;
|
|
42
|
+
/**
|
|
43
|
+
* ISO week picker. Selecting any day highlights and selects the full week.
|
|
44
|
+
* @example
|
|
45
|
+
* datetime().weekOnly()
|
|
46
|
+
* datetime().weekOnly({ startsOn: 1 }) // weeks start on Monday
|
|
47
|
+
*
|
|
48
|
+
* Value format: `"2026-W18"` (YYYY-Www)
|
|
49
|
+
*/
|
|
50
|
+
weekOnly(options?: {
|
|
51
|
+
startsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
52
|
+
}): this;
|
|
53
|
+
/**
|
|
54
|
+
* Year picker with a scrollable grid.
|
|
55
|
+
* @example
|
|
56
|
+
* datetime().yearOnly()
|
|
57
|
+
* datetime().yearOnly({ range: [2010, 2030] })
|
|
58
|
+
*
|
|
59
|
+
* Value format: `2026` (number)
|
|
60
|
+
*/
|
|
61
|
+
yearOnly(options?: {
|
|
62
|
+
range?: [number, number];
|
|
63
|
+
}): this;
|
|
64
|
+
/**
|
|
65
|
+
* Date range picker with a two-month calendar.
|
|
66
|
+
* @example datetime().dateRange()
|
|
67
|
+
*
|
|
68
|
+
* Value format: `{ from: "2026-05-01", to: "2026-05-15" }`
|
|
69
|
+
*/
|
|
70
|
+
dateRange(): this;
|
|
71
|
+
/**
|
|
72
|
+
* Select multiple individual dates.
|
|
73
|
+
* @example datetime().multipleDates()
|
|
74
|
+
*
|
|
75
|
+
* Value format: `["2026-05-01", "2026-05-03"]`
|
|
76
|
+
*/
|
|
77
|
+
multipleDates(): this;
|
|
78
|
+
/**
|
|
79
|
+
* Select multiple months.
|
|
80
|
+
* @example datetime().multipleMonths()
|
|
81
|
+
*
|
|
82
|
+
* Value format: `["2026-01", "2026-03"]`
|
|
83
|
+
*/
|
|
84
|
+
multipleMonths(): this;
|
|
85
|
+
/**
|
|
86
|
+
* Select multiple years.
|
|
87
|
+
* @example
|
|
88
|
+
* datetime().multipleYears()
|
|
89
|
+
* datetime().multipleYears({ range: [2020, 2035] })
|
|
90
|
+
*
|
|
91
|
+
* Value format: `[2024, 2025, 2026]`
|
|
92
|
+
*/
|
|
93
|
+
multipleYears(options?: {
|
|
94
|
+
range?: [number, number];
|
|
95
|
+
}): this;
|
|
96
|
+
/**
|
|
97
|
+
* Add quick-select preset buttons to the picker. Available on all variants.
|
|
98
|
+
* Each preset's `value` function is called at click time, and the variant
|
|
99
|
+
* handles formatting the Date into its value type.
|
|
100
|
+
* @example
|
|
101
|
+
* datetime().dateOnly().presets([
|
|
102
|
+
* { label: "Today", value: () => new Date() },
|
|
103
|
+
* { label: "In a week", value: () => addDays(new Date(), 7) }
|
|
104
|
+
* ])
|
|
105
|
+
*/
|
|
106
|
+
presets(presets: Array<{
|
|
107
|
+
label: string;
|
|
108
|
+
value: () => Date;
|
|
109
|
+
}>): this;
|
|
110
|
+
/**
|
|
111
|
+
* Customize the display format shown in the picker trigger.
|
|
112
|
+
* Uses date-fns format tokens.
|
|
113
|
+
* @example
|
|
114
|
+
* datetime().dateOnly().displayFormat("MM/dd/yyyy") // "05/01/2026"
|
|
115
|
+
* datetime().dateOnly().displayFormat("dd MMM yyyy") // "01 May 2026"
|
|
116
|
+
* datetime().monthOnly().displayFormat("MMMM yyyy") // "May 2026"
|
|
117
|
+
*/
|
|
118
|
+
displayFormat(format: string): this;
|
|
119
|
+
normalizeValue(value: unknown): unknown;
|
|
120
|
+
}
|
|
121
|
+
declare class DateTimeFieldTypeFactory implements IFieldTypeFactory {
|
|
122
|
+
readonly type = "datetime";
|
|
123
|
+
create(_registry: any): DateTimeFieldBuilder;
|
|
124
|
+
}
|
|
125
|
+
export declare const DateTimeFieldType: typeof DateTimeFieldTypeFactory & {
|
|
126
|
+
__abstraction: import("@webiny/di").Abstraction<IFieldTypeFactory>;
|
|
127
|
+
};
|
|
128
|
+
declare module "../abstractions.js" {
|
|
129
|
+
interface IFieldBuilderRegistry {
|
|
130
|
+
/**
|
|
131
|
+
* Defines a field that stores date and/or time values.
|
|
132
|
+
*
|
|
133
|
+
* Variant methods (pick one):
|
|
134
|
+
* - `dateOnly()` — "2026-05-01"
|
|
135
|
+
* - `timeOnly()` — "14:30:00"
|
|
136
|
+
* - `withoutTimezone()` — "2026-05-01T14:30:00.000Z"
|
|
137
|
+
* - `withTimezone()` — "2026-05-01T14:30:00+02:00"
|
|
138
|
+
* - `monthOnly()` — "2026-05"
|
|
139
|
+
* - `weekOnly()` — "2026-W18"
|
|
140
|
+
* - `yearOnly()` — 2026
|
|
141
|
+
* - `dateRange()` — { from: "2026-05-01", to: "2026-05-15" }
|
|
142
|
+
* - `multipleDates()` — ["2026-05-01", "2026-05-03"]
|
|
143
|
+
* - `multipleMonths()` — ["2026-01", "2026-03"]
|
|
144
|
+
* - `multipleYears()` — [2024, 2025, 2026]
|
|
145
|
+
*
|
|
146
|
+
* Configuration methods (chain after variant):
|
|
147
|
+
* - `.presets([...])` — quick-select buttons (all variants)
|
|
148
|
+
* - `.displayFormat("MM/dd/yyyy")` — customize trigger display
|
|
149
|
+
*
|
|
150
|
+
* Variant-specific options (passed to variant method):
|
|
151
|
+
* - `yearOnly({ range: [2020, 2030] })` — year range
|
|
152
|
+
* - `multipleYears({ range: [2020, 2035] })` — year range
|
|
153
|
+
* - `weekOnly({ startsOn: 1 })` — first day of week (0=Sun, 1=Mon)
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* datetime() // full UTC datetime (default)
|
|
157
|
+
* datetime().dateOnly() // birthdays, due dates, holidays
|
|
158
|
+
* datetime().timeOnly() // opening hours, daily reminders
|
|
159
|
+
* datetime().withTimezone() // events tied to a specific locale
|
|
160
|
+
* datetime().withoutTimezone() // timestamps, logs, sortable moments
|
|
161
|
+
* datetime().monthOnly() // billing cycles, report periods
|
|
162
|
+
* datetime().weekOnly() // sprint planning, weekly schedules
|
|
163
|
+
* datetime().yearOnly({ range: [2010, 2030] }) // fiscal years
|
|
164
|
+
* datetime().dateRange() // vacation requests, booking windows
|
|
165
|
+
* datetime().multipleDates() // blackout dates, recurring events
|
|
166
|
+
* datetime().multipleMonths() // seasonal availability
|
|
167
|
+
* datetime().multipleYears({ range: [2020, 2035] }) // multi-year budgets
|
|
168
|
+
* datetime().dateOnly().presets([...]).displayFormat("dd/MM/yyyy")
|
|
169
|
+
*/
|
|
170
|
+
datetime(): DateTimeFieldBuilder;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
export {};
|