@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["describe","it","expect","vi","z","FormModel","asRow","node","type","Error","createBasicForm","fields","title","text","label","required","path","form","field","toBeDefined","toThrow","setValue","getValue","toBe","toBeNull","status","defaultValue","pageType","hidden","data","getData","toEqual","setData","unknown","isDirty","reset","validate","errors","length","toBeGreaterThan","isValid","valid","toHaveLength","message","email","schema","string","titleVm","vm","validation","result","submit","layout","name","fieldVM","onChange","row","warnSpy","spyOn","console","mockImplementation","toHaveBeenCalledWith","stringContaining","mockRestore","not","toHaveBeenCalled","beforeChange","value","String","trim","toLowerCase","received","afterChange","push","calls","f","replace","str","startsWith","addBeforeChange","toUpperCase","slug","lang","select","options","language","toHaveProperty","description","fieldNames","map","toContain","after","updatedNames","placeholder","config","undefined","remove","setDisabled","disabled","selectField","as","addAfterChange","createFormWithLayout","before","names","modifier","modify","current","stripped","separator","createFormWithTabs","metaTitle","metaDescription","tabs","id","tabsNode","generalTab","generalRow","seoTab","activeTabId","setActiveTab","hasErrors","element","plan","elementNode","renderer","props","toBeUndefined","trackingId","tab","fieldIds","ogImage","find","t","lastRow","subtitle","createFormWithObject","address","object","street","city","some","e","isList","items","createFormWithList","presets","model","list","addItem","updatedVm","removeItem","listSchema","array","any","min","vm1","key0","key","key1","vm2"],"sources":["FormModel.test.ts"],"sourcesContent":["import { describe, it, expect, vi } from \"vitest\";\nimport { z } from \"zod\";\nimport { FormModel } from \"./FormModel.js\";\nimport type {\n IFormModel,\n IRowNodeVM,\n ITabsNodeVM,\n IElementNodeVM,\n IObjectFieldVM,\n ILayoutNodeAccessHandle,\n LayoutNodeVM\n} from \"./abstractions.js\";\n\nfunction asRow(node: LayoutNodeVM): IRowNodeVM {\n if (node.type !== \"row\") {\n throw new Error(`Expected row node, got \"${node.type}\"`);\n }\n return node;\n}\n\nfunction createBasicForm() {\n return new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\").required(\"Title is required\"),\n path: fields.text().label(\"Path\").required(\"Path is required\")\n })\n });\n}\n\ndescribe(\"FormModel\", () => {\n describe(\"field creation\", () => {\n it(\"should create fields from builder definitions\", () => {\n const form = createBasicForm();\n expect(form.field(\"title\")).toBeDefined();\n expect(form.field(\"path\")).toBeDefined();\n });\n\n it(\"should throw on unknown field access\", () => {\n const form = createBasicForm();\n expect(() => form.field(\"unknown\")).toThrow('Field \"unknown\" not found.');\n });\n });\n\n describe(\"setValue / getValue\", () => {\n it(\"should set and get field values\", () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"Hello\");\n expect(form.field(\"title\").getValue()).toBe(\"Hello\");\n });\n\n it(\"should default to null when no defaultValue is set\", () => {\n const form = createBasicForm();\n expect(form.field(\"title\").getValue()).toBeNull();\n });\n\n it(\"should use defaultValue when provided\", () => {\n const form = new FormModel({\n fields: fields => ({\n status: fields.text().defaultValue(\"draft\")\n })\n });\n expect(form.field(\"status\").getValue()).toBe(\"draft\");\n });\n });\n\n describe(\"getData / setData\", () => {\n it(\"should return all field values including hidden\", () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n pageType: fields.text().hidden().defaultValue(\"static\")\n })\n });\n\n form.field(\"title\").setValue(\"Hello\");\n const data = form.getData();\n\n expect(data).toEqual({\n title: \"Hello\",\n pageType: \"static\"\n });\n });\n\n it(\"should hydrate fields from data object\", () => {\n const form = createBasicForm();\n form.setData({ title: \"My Page\", path: \"/my-page\" });\n\n expect(form.field(\"title\").getValue()).toBe(\"My Page\");\n expect(form.field(\"path\").getValue()).toBe(\"/my-page\");\n });\n\n it(\"should ignore unknown fields in setData\", () => {\n const form = createBasicForm();\n form.setData({ title: \"Test\", unknown: \"value\" });\n expect(form.field(\"title\").getValue()).toBe(\"Test\");\n expect(() => form.field(\"unknown\")).toThrow();\n });\n });\n\n describe(\"isDirty\", () => {\n it(\"should not be dirty initially\", () => {\n const form = createBasicForm();\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should be dirty after setValue\", () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"Changed\");\n expect(form.isDirty).toBe(true);\n });\n\n it(\"should not be dirty after setData\", () => {\n const form = createBasicForm();\n form.setData({ title: \"Loaded\", path: \"/loaded\" });\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should not be dirty after reverting to baseline value\", () => {\n const form = createBasicForm();\n form.setData({ title: \"Original\", path: \"/original\" });\n form.field(\"title\").setValue(\"Changed\");\n expect(form.isDirty).toBe(true);\n form.field(\"title\").setValue(\"Original\");\n expect(form.isDirty).toBe(false);\n });\n });\n\n describe(\"reset\", () => {\n it(\"should revert values to setData baseline\", () => {\n const form = createBasicForm();\n form.setData({ title: \"Original\", path: \"/original\" });\n form.field(\"title\").setValue(\"Changed\");\n form.reset();\n\n expect(form.field(\"title\").getValue()).toBe(\"Original\");\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should clear validation state on reset\", async () => {\n const form = createBasicForm();\n await form.validate();\n expect(form.errors.length).toBeGreaterThan(0);\n\n form.reset();\n expect(form.errors).toEqual([]);\n expect(form.isValid).toBeNull();\n });\n });\n\n describe(\"validation\", () => {\n it(\"should fail validation for empty required fields\", async () => {\n const form = createBasicForm();\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.isValid).toBe(false);\n expect(form.errors).toHaveLength(2);\n expect(form.errors[0].path).toBe(\"title\");\n expect(form.errors[0].message).toBe(\"Title is required\");\n expect(form.errors[1].path).toBe(\"path\");\n });\n\n it(\"should pass validation when required fields have values\", async () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"My Page\");\n form.field(\"path\").setValue(\"/my-page\");\n\n const valid = await form.validate();\n\n expect(valid).toBe(true);\n expect(form.isValid).toBe(true);\n expect(form.errors).toHaveLength(0);\n });\n\n it(\"should validate zod schemas\", async () => {\n const form = new FormModel({\n fields: fields => ({\n email: fields.text().label(\"Email\").schema(z.string().email(\"Invalid email\"))\n })\n });\n\n form.field(\"email\").setValue(\"not-an-email\");\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors[0].message).toBe(\"Invalid email\");\n });\n\n it(\"should run required check before zod schema\", async () => {\n const form = new FormModel({\n fields: fields => ({\n email: fields\n .text()\n .label(\"Email\")\n .required(\"Email is required\")\n .schema(z.string().email(\"Invalid email\"))\n })\n });\n\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors[0].message).toBe(\"Email is required\");\n });\n\n it(\"should expose field-level validation in field.vm\", async () => {\n const form = createBasicForm();\n await form.validate();\n\n const titleVm = form.field(\"title\").vm;\n expect(titleVm.validation.isValid).toBe(false);\n expect(titleVm.validation.message).toBe(\"Title is required\");\n });\n\n it(\"isValid should be null before first validation\", () => {\n const form = createBasicForm();\n expect(form.isValid).toBeNull();\n });\n });\n\n describe(\"submit\", () => {\n it(\"should return data when valid\", async () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"My Page\");\n form.field(\"path\").setValue(\"/my-page\");\n\n const result = await form.submit();\n\n expect(result).toEqual({\n title: \"My Page\",\n path: \"/my-page\"\n });\n });\n\n it(\"should return false when invalid\", async () => {\n const form = createBasicForm();\n const result = await form.submit();\n expect(result).toBe(false);\n });\n });\n\n describe(\"vm\", () => {\n it(\"should expose layout with field VMs\", () => {\n const form = createBasicForm();\n const vm = form.vm;\n\n expect(vm.layout).toHaveLength(2);\n expect(vm.layout[0].type).toBe(\"row\");\n expect(asRow(vm.layout[0]).fields[0].name).toBe(\"title\");\n expect(asRow(vm.layout[1]).fields[0].name).toBe(\"path\");\n });\n\n it(\"should exclude hidden fields from layout\", () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n pageType: fields.text().hidden().defaultValue(\"static\")\n })\n });\n\n const vm = form.vm;\n expect(vm.layout).toHaveLength(1);\n expect(asRow(vm.layout[0]).fields[0].name).toBe(\"title\");\n });\n\n it(\"should expose isDirty and isValid\", () => {\n const form = createBasicForm();\n expect(form.vm.isDirty).toBe(false);\n expect(form.vm.isValid).toBeNull();\n });\n\n it(\"should expose field onChange that calls setValue\", () => {\n const form = createBasicForm();\n const fieldVM = asRow(form.vm.layout[0]).fields[0];\n fieldVM.onChange(\"New Value\");\n expect(form.field(\"title\").getValue()).toBe(\"New Value\");\n });\n });\n\n describe(\"layout\", () => {\n it(\"should generate default layout (one row per non-hidden field)\", () => {\n const form = createBasicForm();\n expect(form.vm.layout).toHaveLength(2);\n });\n\n it(\"should use explicit layout when provided\", () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n }),\n layout: layout => [layout.row(\"title\", \"path\")]\n });\n\n expect(form.vm.layout).toHaveLength(1);\n expect(asRow(form.vm.layout[0]).fields).toHaveLength(2);\n });\n\n it(\"should warn about orphan fields in explicit layout\", () => {\n const warnSpy = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\n new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n }),\n layout: layout => [layout.row(\"title\")]\n });\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Field \"path\" is not in the layout')\n );\n\n warnSpy.mockRestore();\n });\n\n it(\"should not warn about hidden orphan fields\", () => {\n const warnSpy = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\n new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n pageType: fields.text().hidden().defaultValue(\"static\")\n }),\n layout: layout => [layout.row(\"title\")]\n });\n\n expect(warnSpy).not.toHaveBeenCalled();\n warnSpy.mockRestore();\n });\n });\n\n describe(\"beforeChange / afterChange\", () => {\n it(\"should run beforeChange pipeline in order, transforming value\", () => {\n const form = new FormModel({\n fields: fields => ({\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => String(value).trim())\n .beforeChange(value => String(value).toLowerCase())\n })\n });\n\n form.field(\"path\").setValue(\" Hello World \");\n expect(form.field(\"path\").getValue()).toBe(\"hello world\");\n });\n\n it(\"should run afterChange after value is stored\", () => {\n const received: unknown[] = [];\n const form = new FormModel({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .afterChange(value => {\n received.push(value);\n })\n })\n });\n\n form.field(\"title\").setValue(\"Hello\");\n expect(received).toEqual([\"Hello\"]);\n });\n\n it(\"should pass transformed value to afterChange\", () => {\n const received: unknown[] = [];\n const form = new FormModel({\n fields: fields => ({\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => String(value).toLowerCase())\n .afterChange(value => {\n received.push(value);\n })\n })\n });\n\n form.field(\"path\").setValue(\"HELLO\");\n expect(form.field(\"path\").getValue()).toBe(\"hello\");\n expect(received).toEqual([\"hello\"]);\n });\n\n it(\"should not fire afterChange when value does not change (recursion guard)\", () => {\n const calls: string[] = [];\n const form = new FormModel({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .beforeChange(() => \"constant\")\n .afterChange(() => {\n calls.push(\"afterChange\");\n })\n })\n });\n\n form.field(\"title\").setValue(\"anything\");\n expect(calls).toEqual([\"afterChange\"]);\n expect(form.field(\"title\").getValue()).toBe(\"constant\");\n\n // Setting again — beforeChange still produces \"constant\", which === current value.\n // afterChange should NOT fire.\n form.field(\"title\").setValue(\"something else\");\n expect(calls).toEqual([\"afterChange\"]);\n });\n\n it(\"should not trigger beforeChange or afterChange on setData\", () => {\n const calls: string[] = [];\n const form = new FormModel({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .beforeChange(value => {\n calls.push(\"before\");\n return value;\n })\n .afterChange(() => {\n calls.push(\"after\");\n })\n })\n });\n\n form.setData({ title: \"Loaded\" });\n expect(calls).toEqual([]);\n expect(form.field(\"title\").getValue()).toBe(\"Loaded\");\n });\n\n it(\"should support cross-field afterChange triggering target field pipeline\", () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .afterChange((value, f) => {\n // Auto-generate path from title\n const path = \"/\" + String(value).toLowerCase().replace(/\\s+/g, \"-\");\n f.field(\"path\").setValue(path);\n }),\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => {\n // Ensure path starts with /\n const str = String(value);\n return str.startsWith(\"/\") ? str : \"/\" + str;\n })\n })\n });\n\n form.field(\"title\").setValue(\"Hello World\");\n expect(form.field(\"path\").getValue()).toBe(\"/hello-world\");\n });\n\n it(\"should allow appending callbacks to existing fields at runtime\", () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n })\n });\n\n const field = form.field(\"title\");\n field.addBeforeChange(value => String(value).toUpperCase());\n field.setValue(\"hello\");\n expect(field.getValue()).toBe(\"HELLO\");\n });\n\n it(\"should chain builder callbacks with runtime-appended callbacks\", () => {\n const form = new FormModel({\n fields: fields => ({\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => String(value).trim())\n })\n });\n\n // Append another transform at runtime (simulating a modifier)\n form.field(\"path\").addBeforeChange(value => String(value).toLowerCase());\n form.field(\"path\").setValue(\" HELLO \");\n expect(form.field(\"path\").getValue()).toBe(\"hello\");\n });\n\n it(\"should demonstrate title→path with path-dirty tracking\", () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .required(\"Title is required\")\n .afterChange((value, f) => {\n // Only auto-generate if path is empty\n if (f.field(\"path\").getValue()) {\n return;\n }\n const slug = String(value)\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-|-$/g, \"\");\n f.field(\"path\").setValue(\"/\" + slug);\n }),\n path: fields\n .text()\n .label(\"Path\")\n .required(\"Path is required\")\n .beforeChange(value => {\n const str = String(value);\n return (\n \"/\" +\n str\n .replace(/^\\//, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9/-]+/g, \"-\")\n .replace(/^-|-$/g, \"\")\n );\n })\n }),\n layout: layout => [layout.row(\"title\"), layout.row(\"path\")]\n });\n\n // Type title → path auto-fills (path was null/empty)\n form.field(\"title\").setValue(\"Hello World\");\n expect(form.field(\"path\").getValue()).toBe(\"/hello-world\");\n\n // Manually edit path → title changes no longer overwrite\n form.field(\"path\").setValue(\"/custom-path\");\n expect(form.field(\"path\").getValue()).toBe(\"/custom-path\");\n\n form.field(\"title\").setValue(\"New Title\");\n // Path still \"/custom-path\" because path is no longer empty\n expect(form.field(\"path\").getValue()).toBe(\"/custom-path\");\n });\n });\n\n describe(\"select field with options\", () => {\n it(\"should resolve static options in field VM\", () => {\n const form = new FormModel({\n fields: fields => ({\n lang: fields\n .select()\n .label(\"Language\")\n .options([\n { label: \"English\", value: \"en\" },\n { label: \"German\", value: \"de\" }\n ])\n })\n });\n\n const fieldVM = asRow(form.vm.layout[0]).fields[0];\n expect(fieldVM.options).toEqual([\n { label: \"English\", value: \"en\" },\n { label: \"German\", value: \"de\" }\n ]);\n });\n\n it(\"should resolve reactive options function in field VM\", () => {\n const form = new FormModel({\n fields: fields => ({\n lang: fields\n .select()\n .label(\"Language\")\n .options(() => {\n // Dynamic options based on form state\n return [{ label: \"Dynamic\", value: \"dynamic\" }];\n })\n })\n });\n\n const fieldVM = asRow(form.vm.layout[0]).fields[0];\n expect(fieldVM.options).toEqual([{ label: \"Dynamic\", value: \"dynamic\" }]);\n });\n });\n\n describe(\"modifiers (Phase 3)\", () => {\n describe(\"form.fields() — add / replace / remove\", () => {\n it(\"should add a new field via form.fields()\", () => {\n const form = createBasicForm();\n form.fields(fields => ({\n language: fields\n .select()\n .label(\"Language\")\n .options([\n { label: \"English\", value: \"en\" },\n { label: \"German\", value: \"de\" }\n ])\n }));\n\n expect(form.field(\"language\")).toBeDefined();\n expect(form.field(\"language\").type).toBe(\"select\");\n expect(form.getData()).toHaveProperty(\"language\");\n });\n\n it(\"should add a field that appears in getData but not layout until positioned\", () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n })\n });\n\n form.fields(fields => ({\n description: fields.text().label(\"Description\")\n }));\n\n // Field exists in data\n expect(form.getData()).toHaveProperty(\"description\");\n\n // But not in layout until explicitly positioned\n const fieldNames = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(fieldNames).not.toContain(\"description\");\n\n // Position it\n form.layout(layout => [layout.row(\"description\").after(\"title\")]);\n const updatedNames = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(updatedNames).toEqual([\"title\", \"description\"]);\n });\n\n it(\"should replace an existing field when key matches\", () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"Old Value\");\n\n form.fields(fields => ({\n title: fields.text().label(\"Replaced Title\").placeholder(\"New placeholder\")\n }));\n\n // The field is replaced entirely — old value is gone\n expect(form.field(\"title\").config.label).toBe(\"Replaced Title\");\n expect(form.field(\"title\").config.placeholder).toBe(\"New placeholder\");\n expect(form.field(\"title\").getValue()).toBeNull();\n });\n\n it(\"should remove a field via undefined\", () => {\n const form = createBasicForm();\n form.fields(() => ({\n path: undefined\n }));\n\n expect(() => form.field(\"path\")).toThrow('Field \"path\" not found.');\n expect(form.getData()).not.toHaveProperty(\"path\");\n });\n\n it(\"should remove a field via field.remove()\", () => {\n const form = createBasicForm();\n form.field(\"path\").remove();\n\n expect(() => form.field(\"path\")).toThrow('Field \"path\" not found.');\n expect(form.getData()).not.toHaveProperty(\"path\");\n });\n\n it(\"should remove field from layout when removed via field.remove()\", () => {\n const form = createBasicForm();\n expect(form.vm.layout).toHaveLength(2);\n\n form.field(\"path\").remove();\n\n expect(form.vm.layout).toHaveLength(1);\n expect(asRow(form.vm.layout[0]).fields[0].name).toBe(\"title\");\n });\n\n it(\"should handle add + remove in the same fields() call\", () => {\n const form = createBasicForm();\n form.fields(fields => ({\n path: undefined,\n slug: fields.text().label(\"Slug\")\n }));\n\n expect(() => form.field(\"path\")).toThrow();\n expect(form.field(\"slug\")).toBeDefined();\n });\n });\n\n describe(\"form.field().setDisabled()\", () => {\n it(\"should disable a field via setDisabled(true)\", () => {\n const form = createBasicForm();\n form.field(\"title\").setDisabled(true);\n\n expect(form.field(\"title\").vm.disabled).toBe(true);\n });\n\n it(\"should re-enable a field via setDisabled(false)\", () => {\n const form = createBasicForm();\n form.field(\"title\").setDisabled(true);\n form.field(\"title\").setDisabled(false);\n\n expect(form.field(\"title\").vm.disabled).toBe(false);\n });\n });\n\n describe(\"form.field().as() — type narrowing\", () => {\n it(\"should return the field when type matches\", () => {\n const form = new FormModel({\n fields: fields => ({\n lang: fields\n .select()\n .label(\"Language\")\n .options([{ label: \"English\", value: \"en\" }])\n })\n });\n\n const selectField = form.field(\"lang\").as(\"select\");\n expect(selectField).toBe(form.field(\"lang\"));\n });\n\n it(\"should throw when type does not match\", () => {\n const form = createBasicForm();\n expect(() => form.field(\"title\").as(\"select\")).toThrow(\n 'Field \"title\" is type \"text\", not \"select\".'\n );\n });\n });\n\n describe(\"modifier appends callbacks to existing fields\", () => {\n it(\"should append beforeChange to an existing field\", () => {\n const form = new FormModel({\n fields: fields => ({\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => String(value).trim())\n })\n });\n\n // Modifier appends another transform\n form.field(\"path\").addBeforeChange(value => String(value).toLowerCase());\n\n form.field(\"path\").setValue(\" HELLO \");\n expect(form.field(\"path\").getValue()).toBe(\"hello\");\n });\n\n it(\"should append afterChange to an existing field\", () => {\n const received: unknown[] = [];\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n })\n });\n\n // Modifier appends afterChange\n form.field(\"title\").addAfterChange((value, f) => {\n received.push(value);\n f.field(\"path\").setValue(\"/\" + String(value).toLowerCase());\n });\n\n form.field(\"title\").setValue(\"Hello\");\n expect(received).toEqual([\"Hello\"]);\n expect(form.field(\"path\").getValue()).toBe(\"/hello\");\n });\n });\n\n describe(\"layout positional modifiers\", () => {\n function createFormWithLayout() {\n return new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.row(\"path\"),\n layout.row(\"description\")\n ]\n });\n }\n\n it(\"should insert a row before a target\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n language: fields.select().label(\"Language\").options([])\n }));\n\n form.layout(layout => [layout.row(\"language\").before(\"path\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"language\", \"path\", \"description\"]);\n });\n\n it(\"should insert a row after a target\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n language: fields.select().label(\"Language\").options([])\n }));\n\n form.layout(layout => [layout.row(\"language\").after(\"path\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"path\", \"language\", \"description\"]);\n });\n\n it(\"should replace a target row\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n slug: fields.text().label(\"Slug\")\n }));\n\n form.layout(layout => [layout.row(\"slug\").replace(\"path\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"slug\", \"description\"]);\n });\n\n it(\"should remove a field from layout\", () => {\n const form = createFormWithLayout();\n\n form.layout(layout => {\n layout.remove(\"path\");\n return [];\n });\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"description\"]);\n });\n\n it(\"should append when no position is specified\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n language: fields.select().label(\"Language\").options([])\n }));\n\n form.layout(layout => [layout.row(\"language\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"path\", \"description\", \"language\"]);\n });\n\n it(\"should append when target is not found\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n language: fields.select().label(\"Language\").options([])\n }));\n\n form.layout(layout => [layout.row(\"language\").after(\"nonexistent\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"path\", \"description\", \"language\"]);\n });\n });\n\n describe(\"IFormModifier integration\", () => {\n it(\"should support a full modifier workflow: add field + position in layout + append callbacks\", () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\").required(\"Title is required\"),\n path: fields\n .text()\n .label(\"Path\")\n .required(\"Path is required\")\n .beforeChange(value => {\n const str = String(value);\n return (\n \"/\" +\n str\n .replace(/^\\//, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9/-]+/g, \"-\")\n .replace(/^-|-$/g, \"\")\n );\n })\n }),\n layout: layout => [layout.row(\"title\"), layout.row(\"path\")]\n });\n\n // Simulate a language modifier\n const modifier = {\n modify(form: IFormModel) {\n // Add language field\n form.fields(fields => ({\n language: fields\n .select()\n .label(\"Language\")\n .options([\n { label: \"English\", value: \"en\" },\n { label: \"German\", value: \"de\" }\n ])\n .afterChange((value, f) => {\n const current = String(f.field(\"path\").getValue() || \"\");\n const stripped = current.replace(/^\\/[a-z]{2}\\//, \"/\");\n if (value && value !== \"en\") {\n f.field(\"path\").setValue(\"/\" + value + stripped);\n } else {\n f.field(\"path\").setValue(stripped);\n }\n })\n }));\n\n // Position after path\n form.layout(layout => [layout.row(\"language\").after(\"path\")]);\n }\n };\n\n modifier.modify(form);\n\n // Verify layout order\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"path\", \"language\"]);\n\n // Verify language field works\n form.field(\"path\").setValue(\"/demo\");\n form.field(\"language\").setValue(\"de\");\n expect(form.field(\"path\").getValue()).toBe(\"/de/demo\");\n\n // Verify getData includes language\n const data = form.getData();\n expect(data.language).toBe(\"de\");\n });\n });\n });\n\n describe(\"layout system expansion (Phase 5)\", () => {\n describe(\"separator\", () => {\n it(\"should include separator nodes in the resolved layout\", () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.separator(),\n layout.row(\"description\")\n ]\n });\n\n const vm = form.vm;\n expect(vm.layout).toHaveLength(3);\n expect(vm.layout[0].type).toBe(\"row\");\n expect(vm.layout[1].type).toBe(\"separator\");\n expect(vm.layout[2].type).toBe(\"row\");\n });\n\n it(\"should support separator via modifier layout API\", () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [layout.row(\"title\"), layout.row(\"description\")]\n });\n\n form.layout(layout => [layout.separator().after(\"title\")]);\n\n expect(form.vm.layout).toHaveLength(3);\n expect(form.vm.layout[1].type).toBe(\"separator\");\n });\n });\n\n describe(\"tabs\", () => {\n function createFormWithTabs() {\n return new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n slug: fields.text().label(\"Slug\"),\n description: fields.text().label(\"Description\"),\n metaTitle: fields.text().label(\"Meta Title\"),\n metaDescription: fields.text().label(\"Meta Description\")\n }),\n layout: layout => [\n layout.row(\"title\", \"slug\"),\n layout.tabs({\n id: \"settings\",\n tabs: [\n {\n id: \"general\",\n label: \"General\",\n layout: [layout.row(\"description\")]\n },\n {\n id: \"seo\",\n label: \"SEO\",\n description: \"Optimize how this page appears in search\",\n layout: [layout.row(\"metaTitle\"), layout.row(\"metaDescription\")]\n }\n ]\n })\n ]\n });\n }\n\n it(\"should resolve tabs layout node with tab definitions\", () => {\n const form = createFormWithTabs();\n const vm = form.vm;\n\n expect(vm.layout).toHaveLength(2);\n expect(vm.layout[0].type).toBe(\"row\");\n expect(vm.layout[1].type).toBe(\"tabs\");\n\n const tabsNode = vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.id).toBe(\"settings\");\n expect(tabsNode.tabs).toHaveLength(2);\n expect(tabsNode.tabs[0].id).toBe(\"general\");\n expect(tabsNode.tabs[0].label).toBe(\"General\");\n expect(tabsNode.tabs[1].id).toBe(\"seo\");\n expect(tabsNode.tabs[1].label).toBe(\"SEO\");\n expect(tabsNode.tabs[1].description).toBe(\n \"Optimize how this page appears in search\"\n );\n });\n\n it(\"should resolve fields inside tab layouts\", () => {\n const form = createFormWithTabs();\n const tabsNode = form.vm.layout[1] as ITabsNodeVM;\n\n const generalTab = tabsNode.tabs[0];\n expect(generalTab.layout).toHaveLength(1);\n expect(generalTab.layout[0].type).toBe(\"row\");\n const generalRow = generalTab.layout[0] as IRowNodeVM;\n expect(generalRow.fields[0].name).toBe(\"description\");\n\n const seoTab = tabsNode.tabs[1];\n expect(seoTab.layout).toHaveLength(2);\n });\n\n it(\"should default activeTabId to the first tab\", () => {\n const form = createFormWithTabs();\n const tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.activeTabId).toBe(\"general\");\n });\n\n it(\"should switch active tab via setActiveTab\", () => {\n const form = createFormWithTabs();\n let tabsNode = form.vm.layout[1] as ITabsNodeVM;\n\n tabsNode.setActiveTab(\"seo\");\n\n tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.activeTabId).toBe(\"seo\");\n });\n\n it(\"should fall back to first tab when active tab ID is invalid\", () => {\n const form = createFormWithTabs();\n let tabsNode = form.vm.layout[1] as ITabsNodeVM;\n\n tabsNode.setActiveTab(\"nonexistent\");\n\n tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.activeTabId).toBe(\"general\");\n });\n\n it(\"should compute hasErrors for tabs based on referenced fields\", async () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\").required(\"Title is required\"),\n metaTitle: fields.text().label(\"Meta Title\").required(\"Required\")\n }),\n layout: layout => [\n layout.tabs({\n id: \"settings\",\n tabs: [\n {\n id: \"general\",\n label: \"General\",\n layout: [layout.row(\"title\")]\n },\n {\n id: \"seo\",\n label: \"SEO\",\n layout: [layout.row(\"metaTitle\")]\n }\n ]\n })\n ]\n });\n\n // Before validation, no errors\n let tabsNode = form.vm.layout[0] as ITabsNodeVM;\n expect(tabsNode.tabs[0].hasErrors).toBe(false);\n expect(tabsNode.tabs[1].hasErrors).toBe(false);\n\n // Fill only title, leave metaTitle empty\n form.field(\"title\").setValue(\"Hello\");\n await form.validate();\n\n tabsNode = form.vm.layout[0] as ITabsNodeVM;\n expect(tabsNode.tabs[0].hasErrors).toBe(false);\n expect(tabsNode.tabs[1].hasErrors).toBe(true);\n });\n\n it(\"should not warn about fields inside tabs as orphans\", () => {\n const warnSpy = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\n new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.tabs({\n id: \"settings\",\n tabs: [\n {\n id: \"general\",\n label: \"General\",\n layout: [layout.row(\"description\")]\n }\n ]\n })\n ]\n });\n\n expect(warnSpy).not.toHaveBeenCalled();\n warnSpy.mockRestore();\n });\n\n it(\"should return null for tabs with empty tabs array\", () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n }),\n layout: layout => [layout.row(\"title\"), layout.tabs({ id: \"empty\", tabs: [] })]\n });\n\n expect(form.vm.layout).toHaveLength(1);\n expect(form.vm.layout[0].type).toBe(\"row\");\n });\n });\n\n describe(\"element\", () => {\n it(\"should include element nodes in the resolved layout\", () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.element(\"usage-stats\", { plan: \"enterprise\" })\n ]\n });\n\n const vm = form.vm;\n expect(vm.layout).toHaveLength(2);\n expect(vm.layout[1].type).toBe(\"element\");\n\n const elementNode = vm.layout[1] as IElementNodeVM;\n expect(elementNode.renderer).toBe(\"usage-stats\");\n expect(elementNode.props).toEqual({ plan: \"enterprise\" });\n });\n\n it(\"should support element without props\", () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n }),\n layout: layout => [layout.row(\"title\"), layout.element(\"divider\")]\n });\n\n const elementNode = form.vm.layout[1] as IElementNodeVM;\n expect(elementNode.renderer).toBe(\"divider\");\n expect(elementNode.props).toBeUndefined();\n });\n });\n\n describe(\"named layout node access — form.layout(nodeId)\", () => {\n function createFormWithTabs() {\n return new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\"),\n metaTitle: fields.text().label(\"Meta Title\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.tabs({\n id: \"settings\",\n tabs: [\n {\n id: \"general\",\n label: \"General\",\n layout: [layout.row(\"description\")]\n },\n {\n id: \"seo\",\n label: \"SEO\",\n layout: [layout.row(\"metaTitle\")]\n }\n ]\n })\n ]\n });\n }\n\n it(\"should access a tabs node by ID and add a new tab\", () => {\n const form = createFormWithTabs();\n\n form.fields(fields => ({\n trackingId: fields.text().label(\"Tracking ID\")\n }));\n\n (form.layout(\"settings\") as ILayoutNodeAccessHandle)\n .as(\"tabs\")\n .tab({\n id: \"analytics\",\n label: \"Analytics\",\n layout: [{ type: \"row\", fieldIds: [\"trackingId\"] }]\n })\n .after(\"seo\");\n\n const tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.tabs).toHaveLength(3);\n expect(tabsNode.tabs[2].id).toBe(\"analytics\");\n expect(tabsNode.tabs[2].label).toBe(\"Analytics\");\n });\n\n it(\"should add a tab before an existing tab\", () => {\n const form = createFormWithTabs();\n\n form.fields(fields => ({\n trackingId: fields.text().label(\"Tracking ID\")\n }));\n\n (form.layout(\"settings\") as ILayoutNodeAccessHandle)\n .as(\"tabs\")\n .tab({\n id: \"analytics\",\n label: \"Analytics\",\n layout: [{ type: \"row\", fieldIds: [\"trackingId\"] }]\n })\n .before(\"seo\");\n\n const tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.tabs).toHaveLength(3);\n expect(tabsNode.tabs[0].id).toBe(\"general\");\n expect(tabsNode.tabs[1].id).toBe(\"analytics\");\n expect(tabsNode.tabs[2].id).toBe(\"seo\");\n });\n\n it(\"should append to an existing tab's layout\", () => {\n const form = createFormWithTabs();\n\n form.fields(fields => ({\n ogImage: fields.text().label(\"OG Image\")\n }));\n\n (form.layout(\"settings\") as ILayoutNodeAccessHandle)\n .as(\"tabs\")\n .tab(\"seo\")\n .layout(layout => [layout.row(\"ogImage\")]);\n\n const tabsNode = form.vm.layout[1] as ITabsNodeVM;\n const seoTab = tabsNode.tabs.find(t => t.id === \"seo\")!;\n expect(seoTab.layout).toHaveLength(2);\n\n const lastRow = seoTab.layout[1] as IRowNodeVM;\n expect(lastRow.fields[0].name).toBe(\"ogImage\");\n });\n\n it(\"should throw when accessing a non-existent node ID\", () => {\n const form = createFormWithTabs();\n expect(() =>\n (form.layout(\"nonexistent\") as ILayoutNodeAccessHandle).as(\"tabs\")\n ).toThrow('Layout node \"nonexistent\" not found.');\n });\n\n it(\"should throw when accessing a non-existent tab ID\", () => {\n const form = createFormWithTabs();\n expect(() =>\n (form.layout(\"settings\") as ILayoutNodeAccessHandle)\n .as(\"tabs\")\n .tab(\"nonexistent\")\n ).toThrow('Tab \"nonexistent\" not found in tabs node \"settings\".');\n });\n });\n\n describe(\"positional modifiers targeting tabs/element nodes\", () => {\n it(\"should insert a row before a tabs node by ID\", () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n subtitle: fields.text().label(\"Subtitle\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.tabs({\n id: \"settings\",\n tabs: [\n {\n id: \"general\",\n label: \"General\",\n layout: [layout.row(\"description\")]\n }\n ]\n })\n ]\n });\n\n form.layout(layout => [layout.row(\"subtitle\").before(\"settings\")]);\n\n expect(form.vm.layout).toHaveLength(3);\n expect(form.vm.layout[0].type).toBe(\"row\");\n expect(form.vm.layout[1].type).toBe(\"row\");\n expect(form.vm.layout[2].type).toBe(\"tabs\");\n\n const row = form.vm.layout[1] as IRowNodeVM;\n expect(row.fields[0].name).toBe(\"subtitle\");\n });\n\n it(\"should remove a tabs node by ID\", () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.tabs({\n id: \"settings\",\n tabs: [\n {\n id: \"general\",\n label: \"General\",\n layout: [layout.row(\"description\")]\n }\n ]\n })\n ]\n });\n\n form.layout(layout => {\n layout.remove(\"settings\");\n return [];\n });\n\n expect(form.vm.layout).toHaveLength(1);\n expect(form.vm.layout[0].type).toBe(\"row\");\n });\n\n it(\"should replace a tabs node by ID\", () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\"),\n metaTitle: fields.text().label(\"Meta Title\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.tabs({\n id: \"settings\",\n tabs: [\n {\n id: \"general\",\n label: \"General\",\n layout: [layout.row(\"description\")]\n }\n ]\n })\n ]\n });\n\n form.layout(layout => [layout.row(\"metaTitle\").replace(\"settings\")]);\n\n expect(form.vm.layout).toHaveLength(2);\n expect(form.vm.layout[0].type).toBe(\"row\");\n expect(form.vm.layout[1].type).toBe(\"row\");\n const row = form.vm.layout[1] as IRowNodeVM;\n expect(row.fields[0].name).toBe(\"metaTitle\");\n });\n });\n\n describe(\"modifier integration with tabs\", () => {\n it(\"should support a full modifier workflow: base form with tabs + modifier adds tab + modifier appends to existing tab\", () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\"),\n metaTitle: fields.text().label(\"Meta Title\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.separator(),\n layout.tabs({\n id: \"settings\",\n tabs: [\n {\n id: \"general\",\n label: \"General\",\n layout: [layout.row(\"description\")]\n },\n {\n id: \"seo\",\n label: \"SEO\",\n layout: [layout.row(\"metaTitle\")]\n }\n ]\n })\n ]\n });\n\n // Modifier A: add analytics tab\n form.fields(fields => ({\n trackingId: fields.text().label(\"Tracking ID\")\n }));\n\n (form.layout(\"settings\") as ILayoutNodeAccessHandle)\n .as(\"tabs\")\n .tab({\n id: \"analytics\",\n label: \"Analytics\",\n layout: [{ type: \"row\", fieldIds: [\"trackingId\"] }]\n })\n .after(\"seo\");\n\n // Modifier B: append OG Image to SEO tab\n form.fields(fields => ({\n ogImage: fields.text().label(\"OG Image\")\n }));\n\n (form.layout(\"settings\") as ILayoutNodeAccessHandle)\n .as(\"tabs\")\n .tab(\"seo\")\n .layout(layout => [layout.row(\"ogImage\")]);\n\n // Verify full layout\n const vm = form.vm;\n expect(vm.layout).toHaveLength(3); // row, separator, tabs\n expect(vm.layout[0].type).toBe(\"row\");\n expect(vm.layout[1].type).toBe(\"separator\");\n expect(vm.layout[2].type).toBe(\"tabs\");\n\n const tabsNode = vm.layout[2] as ITabsNodeVM;\n expect(tabsNode.tabs).toHaveLength(3);\n expect(tabsNode.tabs[0].id).toBe(\"general\");\n expect(tabsNode.tabs[1].id).toBe(\"seo\");\n expect(tabsNode.tabs[2].id).toBe(\"analytics\");\n\n // SEO tab now has metaTitle + ogImage\n const seoTab = tabsNode.tabs[1];\n expect(seoTab.layout).toHaveLength(2);\n\n // Verify all fields are in getData\n const data = form.getData();\n expect(data).toHaveProperty(\"trackingId\");\n expect(data).toHaveProperty(\"ogImage\");\n });\n });\n });\n\n describe(\"object fields (Phase 6)\", () => {\n describe(\"non-list object field\", () => {\n function createFormWithObject() {\n return new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\").required(\"Street is required\"),\n city: f.text().label(\"City\").required(\"City is required\")\n }))\n }),\n layout: layout => [layout.row(\"title\"), layout.row(\"address\")]\n });\n }\n\n it(\"should create an object field with children\", () => {\n const form = createFormWithObject();\n const field = form.field(\"address\");\n expect(field).toBeDefined();\n expect(field.type).toBe(\"object\");\n });\n\n it(\"should access child fields via dot-notation\", () => {\n const form = createFormWithObject();\n const street = form.field(\"address.street\");\n expect(street).toBeDefined();\n expect(street.type).toBe(\"text\");\n });\n\n it(\"should throw on invalid dot-notation\", () => {\n const form = createFormWithObject();\n expect(() => form.field(\"address.zipcode\")).toThrow(\n 'Field \"address.zipcode\" not found.'\n );\n });\n\n it(\"should return nested object from getData\", () => {\n const form = createFormWithObject();\n form.field(\"address.street\").setValue(\"123 Main St\");\n form.field(\"address.city\").setValue(\"Springfield\");\n\n const data = form.getData();\n expect(data.address).toEqual({\n street: \"123 Main St\",\n city: \"Springfield\"\n });\n });\n\n it(\"should hydrate children from setData\", () => {\n const form = createFormWithObject();\n form.setData({\n title: \"Home\",\n address: { street: \"456 Oak Ave\", city: \"Portland\" }\n });\n\n expect(form.field(\"address.street\").getValue()).toBe(\"456 Oak Ave\");\n expect(form.field(\"address.city\").getValue()).toBe(\"Portland\");\n });\n\n it(\"should not be dirty after setData\", () => {\n const form = createFormWithObject();\n form.setData({\n title: \"Home\",\n address: { street: \"456 Oak Ave\", city: \"Portland\" }\n });\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should be dirty after changing a child field\", () => {\n const form = createFormWithObject();\n form.setData({\n title: \"Home\",\n address: { street: \"456 Oak Ave\", city: \"Portland\" }\n });\n form.field(\"address.street\").setValue(\"789 Pine Rd\");\n expect(form.isDirty).toBe(true);\n });\n\n it(\"should validate children recursively\", async () => {\n const form = createFormWithObject();\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors.length).toBeGreaterThan(0);\n // The object field itself reports the error\n expect(form.errors.some(e => e.path === \"address\")).toBe(true);\n });\n\n it(\"should pass validation when children are valid\", async () => {\n const form = createFormWithObject();\n form.field(\"title\").setValue(\"Home\");\n form.field(\"address.street\").setValue(\"123 Main St\");\n form.field(\"address.city\").setValue(\"Springfield\");\n\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n\n it(\"should expose IObjectFieldVM from field.vm\", () => {\n const form = createFormWithObject();\n form.field(\"address.street\").setValue(\"123 Main St\");\n form.field(\"address.city\").setValue(\"Springfield\");\n\n const vm = form.field(\"address\").vm as IObjectFieldVM;\n expect(vm.type).toBe(\"object\");\n expect(vm.isList).toBe(false);\n expect(vm.fields).toHaveLength(2);\n expect(vm.fields[0].name).toBe(\"street\");\n expect(vm.fields[0].value).toBe(\"123 Main St\");\n expect(vm.fields[1].name).toBe(\"city\");\n expect(vm.items).toHaveLength(0);\n });\n\n it(\"should render object field in a row via default layout\", () => {\n const form = new FormModel({\n fields: fields => ({\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\"),\n city: f.text().label(\"City\")\n }))\n })\n });\n\n const vm = form.vm;\n expect(vm.layout).toHaveLength(1);\n expect(vm.layout[0].type).toBe(\"row\");\n const row = asRow(vm.layout[0]);\n expect(row.fields[0].type).toBe(\"object\");\n expect(row.fields[0].name).toBe(\"address\");\n });\n\n it(\"should reset to baseline values\", () => {\n const form = createFormWithObject();\n form.setData({\n title: \"Home\",\n address: { street: \"Original St\", city: \"Original City\" }\n });\n\n form.field(\"address.street\").setValue(\"Changed St\");\n expect(form.isDirty).toBe(true);\n\n form.reset();\n expect(form.field(\"address.street\").getValue()).toBe(\"Original St\");\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should submit nested data when valid\", async () => {\n const form = createFormWithObject();\n form.field(\"title\").setValue(\"Home\");\n form.field(\"address.street\").setValue(\"123 Main St\");\n form.field(\"address.city\").setValue(\"Springfield\");\n\n const result = await form.submit();\n expect(result).toEqual({\n title: \"Home\",\n address: {\n street: \"123 Main St\",\n city: \"Springfield\"\n }\n });\n });\n });\n\n describe(\"list object field\", () => {\n function createFormWithList() {\n return new FormModel({\n fields: fields => ({\n presets: fields\n .object()\n .label(\"Presets\")\n .fields(f => ({\n name: f.text().label(\"Name\").required(\"Name is required\"),\n model: f.text().label(\"Model\").required(\"Model is required\")\n }))\n .list()\n }),\n layout: layout => [layout.row(\"presets\")]\n });\n }\n\n it(\"should create a list object field\", () => {\n const form = createFormWithList();\n const field = form.field(\"presets\");\n expect(field.type).toBe(\"object\");\n });\n\n it(\"should return empty array from getData initially\", () => {\n const form = createFormWithList();\n expect(form.getData().presets).toEqual([]);\n });\n\n it(\"should add items via the field VM\", () => {\n const form = createFormWithList();\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n expect(vm.isList).toBe(true);\n expect(vm.items).toHaveLength(0);\n\n vm.addItem();\n\n const updatedVm = form.field(\"presets\").vm as IObjectFieldVM;\n expect(updatedVm.items).toHaveLength(1);\n expect(updatedVm.items[0].fields).toHaveLength(2);\n expect(updatedVm.items[0].fields[0].name).toBe(\"name\");\n });\n\n it(\"should hydrate list from setData\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]\n });\n\n const data = form.getData();\n expect(data.presets).toEqual([\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]);\n });\n\n it(\"should expose items via IObjectFieldVM\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]\n });\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n expect(vm.items).toHaveLength(2);\n expect(vm.items[0].fields[0].value).toBe(\"Default\");\n expect(vm.items[1].fields[1].value).toBe(\"claude-haiku\");\n });\n\n it(\"should remove items via item.remove()\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]\n });\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n vm.items[0].remove();\n\n expect(form.getData().presets).toEqual([{ name: \"Fast\", model: \"claude-haiku\" }]);\n });\n\n it(\"should remove items via removeItem()\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"A\", model: \"a\" },\n { name: \"B\", model: \"b\" },\n { name: \"C\", model: \"c\" }\n ]\n });\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n vm.removeItem(1);\n\n expect(form.getData().presets).toEqual([\n { name: \"A\", model: \"a\" },\n { name: \"C\", model: \"c\" }\n ]);\n });\n\n it(\"should validate all items\", async () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"\", model: \"\" }\n ]\n });\n\n const valid = await form.validate();\n expect(valid).toBe(false);\n });\n\n it(\"should pass validation when all items are valid\", async () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]\n });\n\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n\n it(\"should validate with listSchema\", async () => {\n const form = new FormModel({\n fields: fields => ({\n presets: fields\n .object()\n .label(\"Presets\")\n .fields(f => ({\n name: f.text().label(\"Name\")\n }))\n .list()\n .listSchema(z.array(z.any()).min(2, \"At least 2 presets are required\"))\n })\n });\n\n form.setData({ presets: [{ name: \"Only one\" }] });\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors[0].message).toBe(\"At least 2 presets are required\");\n });\n\n it(\"should be dirty after adding an item\", () => {\n const form = createFormWithList();\n form.setData({ presets: [] });\n expect(form.isDirty).toBe(false);\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n vm.addItem();\n expect(form.isDirty).toBe(true);\n });\n\n it(\"should have stable keys across re-renders\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"A\", model: \"a\" },\n { name: \"B\", model: \"b\" }\n ]\n });\n\n const vm1 = form.field(\"presets\").vm as IObjectFieldVM;\n const key0 = vm1.items[0].key;\n const key1 = vm1.items[1].key;\n\n // Re-read VM — keys should be the same\n const vm2 = form.field(\"presets\").vm as IObjectFieldVM;\n expect(vm2.items[0].key).toBe(key0);\n expect(vm2.items[1].key).toBe(key1);\n });\n\n it(\"should pass empty list validation when not required\", async () => {\n const form = createFormWithList();\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n\n it(\"should modify item field values via VM onChange\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [{ name: \"Default\", model: \"claude-sonnet\" }]\n });\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n vm.items[0].fields[0].onChange(\"Updated\");\n\n expect((form.getData().presets as any[])[0].name).toBe(\"Updated\");\n });\n });\n\n describe(\"hasErrors rollup through tabs\", () => {\n it(\"should report hasErrors in tabs containing object fields\", async () => {\n const form = new FormModel({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\").required(\"Required\")\n }))\n }),\n layout: layout => [\n layout.tabs({\n id: \"settings\",\n tabs: [\n {\n id: \"general\",\n label: \"General\",\n layout: [layout.row(\"title\")]\n },\n {\n id: \"details\",\n label: \"Details\",\n layout: [layout.row(\"address\")]\n }\n ]\n })\n ]\n });\n\n form.field(\"title\").setValue(\"Hello\");\n await form.validate();\n\n const tabsNode = form.vm.layout[0] as ITabsNodeVM;\n expect(tabsNode.tabs[0].hasErrors).toBe(false);\n expect(tabsNode.tabs[1].hasErrors).toBe(true);\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["describe","it","expect","vi","z","Container","FormModelFeature","FormModelFactory","createForm","config","container","register","resolve","create","asRow","node","type","Error","createBasicForm","fields","title","text","label","required","path","form","field","toBeDefined","toThrow","setValue","getValue","toBe","toBeNull","status","defaultValue","pageType","hidden","data","getData","toEqual","setData","unknown","isDirty","reset","validate","errors","length","toBeGreaterThan","isValid","valid","toHaveLength","message","email","schema","string","titleVm","vm","validation","result","submit","layout","name","fieldVM","onChange","row","warnSpy","spyOn","console","mockImplementation","toHaveBeenCalledWith","stringContaining","mockRestore","not","toHaveBeenCalled","beforeChange","value","String","trim","toLowerCase","received","afterChange","push","calls","f","replace","str","startsWith","addBeforeChange","toUpperCase","slug","lang","options","language","toHaveProperty","description","fieldNames","map","toContain","after","updatedNames","placeholder","undefined","remove","setDisabled","disabled","textField","as","addAfterChange","createFormWithLayout","before","names","modifier","modify","current","stripped","separator","createFormWithTabs","metaTitle","metaDescription","tabs","tab","tabsNode","id","generalTab","generalRow","seoTab","activeTabId","setActiveTab","hasErrors","element","plan","elementNode","renderer","props","toBeUndefined","trackingId","subtitle","createFormWithObject","address","object","street","city","some","e","isList","items","createFormWithList","presets","model","list","addItem","updatedVm","removeItem","listSchema","array","any","min","vm1","key0","key","key1","vm2","createFormWithTemplatedObject","content","template","t","heading","image","body","isTemplated","activeTemplateId","children","size","availableTemplates","x","y","_templateId","setTemplate","foo","visible","createFormWithTemplatedList","sections","templateId","has","i","get","duplicateItem","moveItem","duplicate","meta","a","b","l","tplA","rows","item","buildTemplatedForm","layoutFactory","subheading","url","hero","cta","buildTemplatedListForm","secret","page","seo","g","inner","pageVm","seoRow","seoVm","c","h","l1","l2","l3","aVm","bVm","cVm","block","createSingleTemplatedForm","createListTemplatedForm","blocks","templates","add","plain","vmBefore","rowBefore","vmAfter","rowAfter","warn","seats","requiredWhen","flag","other","addRequiredWhen","first","last","full","computed","src","derived","computedUntilDirty","setComputed","profile","firstName","lastName","contacts","password","confirm","addRule","refine","d","age","Number","Promise","setLayout","mockClear","validating","resolveValidation","r","promise","setTimeout","submitted","onBlur","schemaSpy","fn","mockReturnValue","toHaveBeenCalledTimes","resetValidation","count","number","tier","active","boolean","log","focusField","focusRequested","clearFocusRequest","qualifiedName","focus","tags","_form"],"sources":["FormModel.test.ts"],"sourcesContent":["import { describe, it, expect, vi } from \"vitest\";\nimport { z } from \"zod\";\nimport { Container } from \"@webiny/di\";\nimport { FormModelFeature } from \"./feature.js\";\nimport {\n FormModelFactory,\n type IFormModel,\n type IFormModelConfig,\n type IRowNodeVM,\n type ITabsNodeVM,\n type IElementNodeVM,\n type IObjectFieldVM,\n type ILayoutNodeAccessHandle,\n type LayoutNodeVM\n} from \"./abstractions.js\";\n\nfunction createForm(config: IFormModelConfig): IFormModel {\n const container = new Container();\n FormModelFeature.register(container);\n return container.resolve(FormModelFactory).create(config);\n}\n\nfunction asRow(node: LayoutNodeVM): IRowNodeVM {\n if (node.type !== \"row\") {\n throw new Error(`Expected row node, got \"${node.type}\"`);\n }\n return node;\n}\n\nfunction createBasicForm() {\n return createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\").required(\"Title is required\"),\n path: fields.text().label(\"Path\").required(\"Path is required\")\n })\n });\n}\n\ndescribe(\"FormModel\", () => {\n describe(\"field creation\", () => {\n it(\"should create fields from builder definitions\", () => {\n const form = createBasicForm();\n expect(form.field(\"title\")).toBeDefined();\n expect(form.field(\"path\")).toBeDefined();\n });\n\n it(\"should throw on unknown field access\", () => {\n const form = createBasicForm();\n expect(() => form.field(\"unknown\")).toThrow('Field \"unknown\" not found.');\n });\n });\n\n describe(\"setValue / getValue\", () => {\n it(\"should set and get field values\", () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"Hello\");\n expect(form.field(\"title\").getValue()).toBe(\"Hello\");\n });\n\n it(\"should default to null when no defaultValue is set\", () => {\n const form = createBasicForm();\n expect(form.field(\"title\").getValue()).toBeNull();\n });\n\n it(\"should use defaultValue when provided\", () => {\n const form = createForm({\n fields: fields => ({\n status: fields.text().defaultValue(\"draft\")\n })\n });\n expect(form.field(\"status\").getValue()).toBe(\"draft\");\n });\n });\n\n describe(\"getData / setData\", () => {\n it(\"should return all field values including hidden\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n pageType: fields.text().hidden().defaultValue(\"static\")\n })\n });\n\n form.field(\"title\").setValue(\"Hello\");\n const data = form.getData();\n\n expect(data).toEqual({\n title: \"Hello\",\n pageType: \"static\"\n });\n });\n\n it(\"should hydrate fields from data object\", () => {\n const form = createBasicForm();\n form.setData({ title: \"My Page\", path: \"/my-page\" });\n\n expect(form.field(\"title\").getValue()).toBe(\"My Page\");\n expect(form.field(\"path\").getValue()).toBe(\"/my-page\");\n });\n\n it(\"should ignore unknown fields in setData\", () => {\n const form = createBasicForm();\n form.setData({ title: \"Test\", unknown: \"value\" });\n expect(form.field(\"title\").getValue()).toBe(\"Test\");\n expect(() => form.field(\"unknown\")).toThrow();\n });\n });\n\n describe(\"isDirty\", () => {\n it(\"should not be dirty initially\", () => {\n const form = createBasicForm();\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should be dirty after setValue\", () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"Changed\");\n expect(form.isDirty).toBe(true);\n });\n\n it(\"should not be dirty after setData\", () => {\n const form = createBasicForm();\n form.setData({ title: \"Loaded\", path: \"/loaded\" });\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should not be dirty after reverting to baseline value\", () => {\n const form = createBasicForm();\n form.setData({ title: \"Original\", path: \"/original\" });\n form.field(\"title\").setValue(\"Changed\");\n expect(form.isDirty).toBe(true);\n form.field(\"title\").setValue(\"Original\");\n expect(form.isDirty).toBe(false);\n });\n });\n\n describe(\"reset\", () => {\n it(\"should revert values to setData baseline\", () => {\n const form = createBasicForm();\n form.setData({ title: \"Original\", path: \"/original\" });\n form.field(\"title\").setValue(\"Changed\");\n form.reset();\n\n expect(form.field(\"title\").getValue()).toBe(\"Original\");\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should clear validation state on reset\", async () => {\n const form = createBasicForm();\n await form.validate();\n expect(form.errors.length).toBeGreaterThan(0);\n\n form.reset();\n expect(form.errors).toEqual([]);\n expect(form.isValid).toBeNull();\n });\n });\n\n describe(\"validation\", () => {\n it(\"should fail validation for empty required fields\", async () => {\n const form = createBasicForm();\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.isValid).toBe(false);\n expect(form.errors).toHaveLength(2);\n expect(form.errors[0].path).toBe(\"title\");\n expect(form.errors[0].message).toBe(\"Title is required\");\n expect(form.errors[1].path).toBe(\"path\");\n });\n\n it(\"should pass validation when required fields have values\", async () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"My Page\");\n form.field(\"path\").setValue(\"/my-page\");\n\n const valid = await form.validate();\n\n expect(valid).toBe(true);\n expect(form.isValid).toBe(true);\n expect(form.errors).toHaveLength(0);\n });\n\n it(\"should validate zod schemas\", async () => {\n const form = createForm({\n fields: fields => ({\n email: fields.text().label(\"Email\").schema(z.string().email(\"Invalid email\"))\n })\n });\n\n form.field(\"email\").setValue(\"not-an-email\");\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors[0].message).toBe(\"Invalid email\");\n });\n\n it(\"should run required check before zod schema\", async () => {\n const form = createForm({\n fields: fields => ({\n email: fields\n .text()\n .label(\"Email\")\n .required(\"Email is required\")\n .schema(z.string().email(\"Invalid email\"))\n })\n });\n\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors[0].message).toBe(\"Email is required\");\n });\n\n it(\"should expose field-level validation in field.vm\", async () => {\n const form = createBasicForm();\n await form.validate();\n\n const titleVm = form.field(\"title\").vm;\n expect(titleVm.validation.isValid).toBe(false);\n expect(titleVm.validation.message).toBe(\"Title is required\");\n });\n\n it(\"isValid should be null before first validation\", () => {\n const form = createBasicForm();\n expect(form.isValid).toBeNull();\n });\n });\n\n describe(\"submit\", () => {\n it(\"should return data when valid\", async () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"My Page\");\n form.field(\"path\").setValue(\"/my-page\");\n\n const result = await form.submit();\n\n expect(result).toEqual({\n title: \"My Page\",\n path: \"/my-page\"\n });\n });\n\n it(\"should return false when invalid\", async () => {\n const form = createBasicForm();\n const result = await form.submit();\n expect(result).toBe(false);\n });\n });\n\n describe(\"vm\", () => {\n it(\"should expose layout with field VMs\", () => {\n const form = createBasicForm();\n const vm = form.vm;\n\n expect(vm.layout).toHaveLength(2);\n expect(vm.layout[0].type).toBe(\"row\");\n expect(asRow(vm.layout[0]).fields[0].name).toBe(\"title\");\n expect(asRow(vm.layout[1]).fields[0].name).toBe(\"path\");\n });\n\n it(\"should exclude hidden fields from layout\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n pageType: fields.text().hidden().defaultValue(\"static\")\n })\n });\n\n const vm = form.vm;\n expect(vm.layout).toHaveLength(1);\n expect(asRow(vm.layout[0]).fields[0].name).toBe(\"title\");\n });\n\n it(\"should expose isDirty and isValid\", () => {\n const form = createBasicForm();\n expect(form.vm.isDirty).toBe(false);\n expect(form.vm.isValid).toBeNull();\n });\n\n it(\"should expose field onChange that calls setValue\", () => {\n const form = createBasicForm();\n const fieldVM = asRow(form.vm.layout[0]).fields[0];\n fieldVM.onChange(\"New Value\");\n expect(form.field(\"title\").getValue()).toBe(\"New Value\");\n });\n });\n\n describe(\"layout\", () => {\n it(\"should generate default layout (one row per non-hidden field)\", () => {\n const form = createBasicForm();\n expect(form.vm.layout).toHaveLength(2);\n });\n\n it(\"should use explicit layout when provided\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n }),\n layout: layout => [layout.row(\"title\", \"path\")]\n });\n\n expect(form.vm.layout).toHaveLength(1);\n expect(asRow(form.vm.layout[0]).fields).toHaveLength(2);\n });\n\n it(\"should warn about orphan fields in explicit layout\", () => {\n const warnSpy = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\n createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n }),\n layout: layout => [layout.row(\"title\")]\n });\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Field \"path\" is not in the layout')\n );\n\n warnSpy.mockRestore();\n });\n\n it(\"should not warn about hidden orphan fields\", () => {\n const warnSpy = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\n createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n pageType: fields.text().hidden().defaultValue(\"static\")\n }),\n layout: layout => [layout.row(\"title\")]\n });\n\n expect(warnSpy).not.toHaveBeenCalled();\n warnSpy.mockRestore();\n });\n });\n\n describe(\"beforeChange / afterChange\", () => {\n it(\"should run beforeChange pipeline in order, transforming value\", () => {\n const form = createForm({\n fields: fields => ({\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => String(value).trim())\n .beforeChange(value => String(value).toLowerCase())\n })\n });\n\n form.field(\"path\").setValue(\" Hello World \");\n expect(form.field(\"path\").getValue()).toBe(\"hello world\");\n });\n\n it(\"should run afterChange after value is stored\", () => {\n const received: unknown[] = [];\n const form = createForm({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .afterChange(value => {\n received.push(value);\n })\n })\n });\n\n form.field(\"title\").setValue(\"Hello\");\n expect(received).toEqual([\"Hello\"]);\n });\n\n it(\"should pass transformed value to afterChange\", () => {\n const received: unknown[] = [];\n const form = createForm({\n fields: fields => ({\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => String(value).toLowerCase())\n .afterChange(value => {\n received.push(value);\n })\n })\n });\n\n form.field(\"path\").setValue(\"HELLO\");\n expect(form.field(\"path\").getValue()).toBe(\"hello\");\n expect(received).toEqual([\"hello\"]);\n });\n\n it(\"should not fire afterChange when value does not change (recursion guard)\", () => {\n const calls: string[] = [];\n const form = createForm({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .beforeChange(() => \"constant\")\n .afterChange(() => {\n calls.push(\"afterChange\");\n })\n })\n });\n\n form.field(\"title\").setValue(\"anything\");\n expect(calls).toEqual([\"afterChange\"]);\n expect(form.field(\"title\").getValue()).toBe(\"constant\");\n\n // Setting again — beforeChange still produces \"constant\", which === current value.\n // afterChange should NOT fire.\n form.field(\"title\").setValue(\"something else\");\n expect(calls).toEqual([\"afterChange\"]);\n });\n\n it(\"should not trigger beforeChange or afterChange on setData\", () => {\n const calls: string[] = [];\n const form = createForm({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .beforeChange(value => {\n calls.push(\"before\");\n return value;\n })\n .afterChange(() => {\n calls.push(\"after\");\n })\n })\n });\n\n form.setData({ title: \"Loaded\" });\n expect(calls).toEqual([]);\n expect(form.field(\"title\").getValue()).toBe(\"Loaded\");\n });\n\n it(\"should support cross-field afterChange triggering target field pipeline\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .afterChange((value, f) => {\n // Auto-generate path from title\n const path = \"/\" + String(value).toLowerCase().replace(/\\s+/g, \"-\");\n f.field(\"path\").setValue(path);\n }),\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => {\n // Ensure path starts with /\n const str = String(value);\n return str.startsWith(\"/\") ? str : \"/\" + str;\n })\n })\n });\n\n form.field(\"title\").setValue(\"Hello World\");\n expect(form.field(\"path\").getValue()).toBe(\"/hello-world\");\n });\n\n it(\"should allow appending callbacks to existing fields at runtime\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n })\n });\n\n const field = form.field(\"title\");\n field.addBeforeChange(value => String(value).toUpperCase());\n field.setValue(\"hello\");\n expect(field.getValue()).toBe(\"HELLO\");\n });\n\n it(\"should chain builder callbacks with runtime-appended callbacks\", () => {\n const form = createForm({\n fields: fields => ({\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => String(value).trim())\n })\n });\n\n // Append another transform at runtime (simulating a modifier)\n form.field(\"path\").addBeforeChange(value => String(value).toLowerCase());\n form.field(\"path\").setValue(\" HELLO \");\n expect(form.field(\"path\").getValue()).toBe(\"hello\");\n });\n\n it(\"should demonstrate title→path with path-dirty tracking\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .required(\"Title is required\")\n .afterChange((value, f) => {\n // Only auto-generate if path is empty\n if (f.field(\"path\").getValue()) {\n return;\n }\n const slug = String(value)\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-|-$/g, \"\");\n f.field(\"path\").setValue(\"/\" + slug);\n }),\n path: fields\n .text()\n .label(\"Path\")\n .required(\"Path is required\")\n .beforeChange(value => {\n const str = String(value);\n return (\n \"/\" +\n str\n .replace(/^\\//, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9/-]+/g, \"-\")\n .replace(/^-|-$/g, \"\")\n );\n })\n }),\n layout: layout => [layout.row(\"title\"), layout.row(\"path\")]\n });\n\n // Type title → path auto-fills (path was null/empty)\n form.field(\"title\").setValue(\"Hello World\");\n expect(form.field(\"path\").getValue()).toBe(\"/hello-world\");\n\n // Manually edit path → title changes no longer overwrite\n form.field(\"path\").setValue(\"/custom-path\");\n expect(form.field(\"path\").getValue()).toBe(\"/custom-path\");\n\n form.field(\"title\").setValue(\"New Title\");\n // Path still \"/custom-path\" because path is no longer empty\n expect(form.field(\"path\").getValue()).toBe(\"/custom-path\");\n });\n });\n\n describe(\"field with options\", () => {\n it(\"should resolve static options in field VM\", () => {\n const form = createForm({\n fields: fields => ({\n lang: fields\n .text()\n .label(\"Language\")\n .options([\n { label: \"English\", value: \"en\" },\n { label: \"German\", value: \"de\" }\n ])\n })\n });\n\n const fieldVM = asRow(form.vm.layout[0]).fields[0];\n expect(fieldVM.options).toEqual([\n { label: \"English\", value: \"en\" },\n { label: \"German\", value: \"de\" }\n ]);\n });\n\n it(\"should resolve reactive options function in field VM\", () => {\n const form = createForm({\n fields: fields => ({\n lang: fields\n .text()\n .label(\"Language\")\n .options(() => {\n // Dynamic options based on form state\n return [{ label: \"Dynamic\", value: \"dynamic\" }];\n })\n })\n });\n\n const fieldVM = asRow(form.vm.layout[0]).fields[0];\n expect(fieldVM.options).toEqual([{ label: \"Dynamic\", value: \"dynamic\" }]);\n });\n });\n\n describe(\"modifiers (Phase 3)\", () => {\n describe(\"form.fields() — add / replace / remove\", () => {\n it(\"should add a new field via form.fields()\", () => {\n const form = createBasicForm();\n form.fields(fields => ({\n language: fields\n .text()\n .label(\"Language\")\n .options([\n { label: \"English\", value: \"en\" },\n { label: \"German\", value: \"de\" }\n ])\n }));\n\n expect(form.field(\"language\")).toBeDefined();\n expect(form.field(\"language\").type).toBe(\"text\");\n expect(form.getData()).toHaveProperty(\"language\");\n });\n\n it(\"should add a field that appears in getData but not layout until positioned\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n })\n });\n\n form.fields(fields => ({\n description: fields.text().label(\"Description\")\n }));\n\n // Field exists in data\n expect(form.getData()).toHaveProperty(\"description\");\n\n // But not in layout until explicitly positioned\n const fieldNames = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(fieldNames).not.toContain(\"description\");\n\n // Position it\n form.layout(layout => [layout.row(\"description\").after(\"title\")]);\n const updatedNames = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(updatedNames).toEqual([\"title\", \"description\"]);\n });\n\n it(\"should replace an existing field when key matches\", () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"Old Value\");\n\n form.fields(fields => ({\n title: fields.text().label(\"Replaced Title\").placeholder(\"New placeholder\")\n }));\n\n // The field is replaced entirely — old value is gone\n expect(form.field(\"title\").config.label).toBe(\"Replaced Title\");\n expect(form.field(\"title\").config.placeholder).toBe(\"New placeholder\");\n expect(form.field(\"title\").getValue()).toBeNull();\n });\n\n it(\"should remove a field via undefined\", () => {\n const form = createBasicForm();\n form.fields(() => ({\n path: undefined\n }));\n\n expect(() => form.field(\"path\")).toThrow('Field \"path\" not found.');\n expect(form.getData()).not.toHaveProperty(\"path\");\n });\n\n it(\"should remove a field via field.remove()\", () => {\n const form = createBasicForm();\n form.field(\"path\").remove();\n\n expect(() => form.field(\"path\")).toThrow('Field \"path\" not found.');\n expect(form.getData()).not.toHaveProperty(\"path\");\n });\n\n it(\"should remove field from layout when removed via field.remove()\", () => {\n const form = createBasicForm();\n expect(form.vm.layout).toHaveLength(2);\n\n form.field(\"path\").remove();\n\n expect(form.vm.layout).toHaveLength(1);\n expect(asRow(form.vm.layout[0]).fields[0].name).toBe(\"title\");\n });\n\n it(\"should handle add + remove in the same fields() call\", () => {\n const form = createBasicForm();\n form.fields(fields => ({\n path: undefined,\n slug: fields.text().label(\"Slug\")\n }));\n\n expect(() => form.field(\"path\")).toThrow();\n expect(form.field(\"slug\")).toBeDefined();\n });\n });\n\n describe(\"form.field().setDisabled()\", () => {\n it(\"should disable a field via setDisabled(true)\", () => {\n const form = createBasicForm();\n form.field(\"title\").setDisabled(true);\n\n expect(form.field(\"title\").vm.disabled).toBe(true);\n });\n\n it(\"should re-enable a field via setDisabled(false)\", () => {\n const form = createBasicForm();\n form.field(\"title\").setDisabled(true);\n form.field(\"title\").setDisabled(false);\n\n expect(form.field(\"title\").vm.disabled).toBe(false);\n });\n });\n\n describe(\"form.field().as() — type narrowing\", () => {\n it(\"should return the field when type matches\", () => {\n const form = createForm({\n fields: fields => ({\n lang: fields\n .text()\n .label(\"Language\")\n .options([{ label: \"English\", value: \"en\" }])\n })\n });\n\n const textField = form.field(\"lang\").as(\"text\");\n expect(textField).toBe(form.field(\"lang\"));\n });\n\n it(\"should throw when type does not match\", () => {\n const form = createBasicForm();\n expect(() => form.field(\"title\").as(\"boolean\")).toThrow(\n 'Field \"title\" is type \"text\", not \"boolean\".'\n );\n });\n });\n\n describe(\"modifier appends callbacks to existing fields\", () => {\n it(\"should append beforeChange to an existing field\", () => {\n const form = createForm({\n fields: fields => ({\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => String(value).trim())\n })\n });\n\n // Modifier appends another transform\n form.field(\"path\").addBeforeChange(value => String(value).toLowerCase());\n\n form.field(\"path\").setValue(\" HELLO \");\n expect(form.field(\"path\").getValue()).toBe(\"hello\");\n });\n\n it(\"should append afterChange to an existing field\", () => {\n const received: unknown[] = [];\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n })\n });\n\n // Modifier appends afterChange\n form.field(\"title\").addAfterChange((value, f) => {\n received.push(value);\n f.field(\"path\").setValue(\"/\" + String(value).toLowerCase());\n });\n\n form.field(\"title\").setValue(\"Hello\");\n expect(received).toEqual([\"Hello\"]);\n expect(form.field(\"path\").getValue()).toBe(\"/hello\");\n });\n });\n\n describe(\"layout positional modifiers\", () => {\n function createFormWithLayout() {\n return createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.row(\"path\"),\n layout.row(\"description\")\n ]\n });\n }\n\n it(\"should insert a row before a target\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n language: fields.text().label(\"Language\").options([])\n }));\n\n form.layout(layout => [layout.row(\"language\").before(\"path\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"language\", \"path\", \"description\"]);\n });\n\n it(\"should insert a row after a target\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n language: fields.text().label(\"Language\").options([])\n }));\n\n form.layout(layout => [layout.row(\"language\").after(\"path\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"path\", \"language\", \"description\"]);\n });\n\n it(\"should replace a target row\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n slug: fields.text().label(\"Slug\")\n }));\n\n form.layout(layout => [layout.row(\"slug\").replace(\"path\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"slug\", \"description\"]);\n });\n\n it(\"should remove a field from layout\", () => {\n const form = createFormWithLayout();\n\n form.layout(layout => {\n layout.remove(\"path\");\n return [];\n });\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"description\"]);\n });\n\n it(\"should append when no position is specified\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n language: fields.text().label(\"Language\").options([])\n }));\n\n form.layout(layout => [layout.row(\"language\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"path\", \"description\", \"language\"]);\n });\n\n it(\"should append when target is not found\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n language: fields.text().label(\"Language\").options([])\n }));\n\n form.layout(layout => [layout.row(\"language\").after(\"nonexistent\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"path\", \"description\", \"language\"]);\n });\n });\n\n describe(\"IFormModifier integration\", () => {\n it(\"should support a full modifier workflow: add field + position in layout + append callbacks\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\").required(\"Title is required\"),\n path: fields\n .text()\n .label(\"Path\")\n .required(\"Path is required\")\n .beforeChange(value => {\n const str = String(value);\n return (\n \"/\" +\n str\n .replace(/^\\//, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9/-]+/g, \"-\")\n .replace(/^-|-$/g, \"\")\n );\n })\n }),\n layout: layout => [layout.row(\"title\"), layout.row(\"path\")]\n });\n\n // Simulate a language modifier\n const modifier = {\n modify(form: IFormModel) {\n // Add language field\n form.fields(fields => ({\n language: fields\n .text()\n .label(\"Language\")\n .options([\n { label: \"English\", value: \"en\" },\n { label: \"German\", value: \"de\" }\n ])\n .afterChange((value, f) => {\n const current = String(f.field(\"path\").getValue() || \"\");\n const stripped = current.replace(/^\\/[a-z]{2}\\//, \"/\");\n if (value && value !== \"en\") {\n f.field(\"path\").setValue(\"/\" + value + stripped);\n } else {\n f.field(\"path\").setValue(stripped);\n }\n })\n }));\n\n // Position after path\n form.layout(layout => [layout.row(\"language\").after(\"path\")]);\n }\n };\n\n modifier.modify(form);\n\n // Verify layout order\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"path\", \"language\"]);\n\n // Verify language field works\n form.field(\"path\").setValue(\"/demo\");\n form.field(\"language\").setValue(\"de\");\n expect(form.field(\"path\").getValue()).toBe(\"/de/demo\");\n\n // Verify getData includes language\n const data = form.getData();\n expect(data.language).toBe(\"de\");\n });\n });\n });\n\n describe(\"layout system expansion (Phase 5)\", () => {\n describe(\"separator\", () => {\n it(\"should include separator nodes in the resolved layout\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.separator(),\n layout.row(\"description\")\n ]\n });\n\n const vm = form.vm;\n expect(vm.layout).toHaveLength(3);\n expect(vm.layout[0].type).toBe(\"row\");\n expect(vm.layout[1].type).toBe(\"separator\");\n expect(vm.layout[2].type).toBe(\"row\");\n });\n\n it(\"should support separator via modifier layout API\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [layout.row(\"title\"), layout.row(\"description\")]\n });\n\n form.layout(layout => [layout.separator().after(\"title\")]);\n\n expect(form.vm.layout).toHaveLength(3);\n expect(form.vm.layout[1].type).toBe(\"separator\");\n });\n });\n\n describe(\"tabs\", () => {\n function createFormWithTabs() {\n return createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n slug: fields.text().label(\"Slug\"),\n description: fields.text().label(\"Description\"),\n metaTitle: fields.text().label(\"Meta Title\"),\n metaDescription: fields.text().label(\"Meta Description\")\n }),\n layout: layout => [\n layout.row(\"title\", \"slug\"),\n layout\n .tabs(\"settings\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\")\n .description(\"Optimize how this page appears in search\")\n .layout(layout => [\n layout.row(\"metaTitle\"),\n layout.row(\"metaDescription\")\n ]);\n })\n ]\n });\n }\n\n it(\"should resolve tabs layout node with tab definitions\", () => {\n const form = createFormWithTabs();\n const vm = form.vm;\n\n expect(vm.layout).toHaveLength(2);\n expect(vm.layout[0].type).toBe(\"row\");\n expect(vm.layout[1].type).toBe(\"tabs\");\n\n const tabsNode = vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.id).toBe(\"settings\");\n expect(tabsNode.tabs).toHaveLength(2);\n expect(tabsNode.tabs[0].id).toBe(\"general\");\n expect(tabsNode.tabs[0].label).toBe(\"General\");\n expect(tabsNode.tabs[1].id).toBe(\"seo\");\n expect(tabsNode.tabs[1].label).toBe(\"SEO\");\n expect(tabsNode.tabs[1].description).toBe(\n \"Optimize how this page appears in search\"\n );\n });\n\n it(\"should resolve fields inside tab layouts\", () => {\n const form = createFormWithTabs();\n const tabsNode = form.vm.layout[1] as ITabsNodeVM;\n\n const generalTab = tabsNode.tabs[0];\n expect(generalTab.layout).toHaveLength(1);\n expect(generalTab.layout[0].type).toBe(\"row\");\n const generalRow = generalTab.layout[0] as IRowNodeVM;\n expect(generalRow.fields[0].name).toBe(\"description\");\n\n const seoTab = tabsNode.tabs[1];\n expect(seoTab.layout).toHaveLength(2);\n });\n\n it(\"should default activeTabId to the first tab\", () => {\n const form = createFormWithTabs();\n const tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.activeTabId).toBe(\"general\");\n });\n\n it(\"should switch active tab via setActiveTab\", () => {\n const form = createFormWithTabs();\n let tabsNode = form.vm.layout[1] as ITabsNodeVM;\n\n tabsNode.setActiveTab(\"seo\");\n\n tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.activeTabId).toBe(\"seo\");\n });\n\n it(\"should fall back to first tab when active tab ID is invalid\", () => {\n const form = createFormWithTabs();\n let tabsNode = form.vm.layout[1] as ITabsNodeVM;\n\n tabsNode.setActiveTab(\"nonexistent\");\n\n tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.activeTabId).toBe(\"general\");\n });\n\n it(\"should compute hasErrors for tabs based on referenced fields\", async () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\").required(\"Title is required\"),\n metaTitle: fields.text().label(\"Meta Title\").required(\"Required\")\n }),\n layout: layout => [\n layout\n .tabs(\"settings\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"title\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(layout => [layout.row(\"metaTitle\")]);\n })\n ]\n });\n\n // Before validation, no errors\n let tabsNode = form.vm.layout[0] as ITabsNodeVM;\n expect(tabsNode.tabs[0].hasErrors).toBe(false);\n expect(tabsNode.tabs[1].hasErrors).toBe(false);\n\n // Fill only title, leave metaTitle empty\n form.field(\"title\").setValue(\"Hello\");\n await form.validate();\n\n tabsNode = form.vm.layout[0] as ITabsNodeVM;\n expect(tabsNode.tabs[0].hasErrors).toBe(false);\n expect(tabsNode.tabs[1].hasErrors).toBe(true);\n });\n\n it(\"should not warn about fields inside tabs as orphans\", () => {\n const warnSpy = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\n createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.tabs(\"settings\").tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n ]\n });\n\n expect(warnSpy).not.toHaveBeenCalled();\n warnSpy.mockRestore();\n });\n\n it(\"should return null for tabs with empty tabs array\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n }),\n layout: layout => [layout.row(\"title\"), layout.tabs(\"empty\")]\n });\n\n expect(form.vm.layout).toHaveLength(1);\n expect(form.vm.layout[0].type).toBe(\"row\");\n });\n });\n\n describe(\"element\", () => {\n it(\"should include element nodes in the resolved layout\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.element(\"usage-stats\", { plan: \"enterprise\" })\n ]\n });\n\n const vm = form.vm;\n expect(vm.layout).toHaveLength(2);\n expect(vm.layout[1].type).toBe(\"element\");\n\n const elementNode = vm.layout[1] as IElementNodeVM;\n expect(elementNode.renderer).toBe(\"usage-stats\");\n expect(elementNode.props).toEqual({ plan: \"enterprise\" });\n });\n\n it(\"should support element without props\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n }),\n layout: layout => [layout.row(\"title\"), layout.element(\"divider\")]\n });\n\n const elementNode = form.vm.layout[1] as IElementNodeVM;\n expect(elementNode.renderer).toBe(\"divider\");\n expect(elementNode.props).toBeUndefined();\n });\n });\n\n describe(\"named layout node access — form.layout(nodeId)\", () => {\n function createFormWithTabs() {\n return createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\"),\n metaTitle: fields.text().label(\"Meta Title\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout\n .tabs(\"settings\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(layout => [layout.row(\"metaTitle\")]);\n })\n ]\n });\n }\n\n it(\"should access a tabs node by ID and add a new tab\", () => {\n const form = createFormWithTabs();\n\n form.fields(fields => ({\n trackingId: fields.text().label(\"Tracking ID\")\n }));\n\n (form.layout(\"settings\") as ILayoutNodeAccessHandle)\n .as(\"tabs\")\n .tab(\"analytics\", tab => {\n tab.label(\"Analytics\").layout(layout => [layout.row(\"trackingId\")]);\n })\n .after(\"seo\");\n\n const tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.tabs).toHaveLength(3);\n expect(tabsNode.tabs[2].id).toBe(\"analytics\");\n expect(tabsNode.tabs[2].label).toBe(\"Analytics\");\n });\n\n it(\"should add a tab before an existing tab\", () => {\n const form = createFormWithTabs();\n\n form.fields(fields => ({\n trackingId: fields.text().label(\"Tracking ID\")\n }));\n\n (form.layout(\"settings\") as ILayoutNodeAccessHandle)\n .as(\"tabs\")\n .tab(\"analytics\", tab => {\n tab.label(\"Analytics\").layout(layout => [layout.row(\"trackingId\")]);\n })\n .before(\"seo\");\n\n const tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.tabs).toHaveLength(3);\n expect(tabsNode.tabs[0].id).toBe(\"general\");\n expect(tabsNode.tabs[1].id).toBe(\"analytics\");\n expect(tabsNode.tabs[2].id).toBe(\"seo\");\n });\n\n it(\"should throw when accessing a non-existent node ID\", () => {\n const form = createFormWithTabs();\n expect(() =>\n (form.layout(\"nonexistent\") as ILayoutNodeAccessHandle).as(\"tabs\")\n ).toThrow('Layout node \"nonexistent\" not found.');\n });\n });\n\n describe(\"positional modifiers targeting tabs/element nodes\", () => {\n it(\"should insert a row before a tabs node by ID\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n subtitle: fields.text().label(\"Subtitle\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.tabs(\"settings\").tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n ]\n });\n\n form.layout(layout => [layout.row(\"subtitle\").before(\"settings\")]);\n\n expect(form.vm.layout).toHaveLength(3);\n expect(form.vm.layout[0].type).toBe(\"row\");\n expect(form.vm.layout[1].type).toBe(\"row\");\n expect(form.vm.layout[2].type).toBe(\"tabs\");\n\n const row = form.vm.layout[1] as IRowNodeVM;\n expect(row.fields[0].name).toBe(\"subtitle\");\n });\n\n it(\"should remove a tabs node by ID\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.tabs(\"settings\").tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n ]\n });\n\n form.layout(layout => {\n layout.remove(\"settings\");\n return [];\n });\n\n expect(form.vm.layout).toHaveLength(1);\n expect(form.vm.layout[0].type).toBe(\"row\");\n });\n\n it(\"should replace a tabs node by ID\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\"),\n metaTitle: fields.text().label(\"Meta Title\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.tabs(\"settings\").tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n ]\n });\n\n form.layout(layout => [layout.row(\"metaTitle\").replace(\"settings\")]);\n\n expect(form.vm.layout).toHaveLength(2);\n expect(form.vm.layout[0].type).toBe(\"row\");\n expect(form.vm.layout[1].type).toBe(\"row\");\n const row = form.vm.layout[1] as IRowNodeVM;\n expect(row.fields[0].name).toBe(\"metaTitle\");\n });\n });\n\n describe(\"modifier integration with tabs\", () => {\n it(\"should support a full modifier workflow: base form with tabs + modifier adds tab + modifier appends to existing tab\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\"),\n metaTitle: fields.text().label(\"Meta Title\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.separator(),\n layout\n .tabs(\"settings\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(layout => [layout.row(\"metaTitle\")]);\n })\n ]\n });\n\n // Modifier A: add analytics tab\n form.fields(fields => ({\n trackingId: fields.text().label(\"Tracking ID\")\n }));\n\n (form.layout(\"settings\") as ILayoutNodeAccessHandle)\n .as(\"tabs\")\n .tab(\"analytics\", tab => {\n tab.label(\"Analytics\").layout(layout => [layout.row(\"trackingId\")]);\n })\n .after(\"seo\");\n\n // Verify full layout\n const vm = form.vm;\n expect(vm.layout).toHaveLength(3); // row, separator, tabs\n expect(vm.layout[0].type).toBe(\"row\");\n expect(vm.layout[1].type).toBe(\"separator\");\n expect(vm.layout[2].type).toBe(\"tabs\");\n\n const tabsNode = vm.layout[2] as ITabsNodeVM;\n expect(tabsNode.tabs).toHaveLength(3);\n expect(tabsNode.tabs[0].id).toBe(\"general\");\n expect(tabsNode.tabs[1].id).toBe(\"seo\");\n expect(tabsNode.tabs[2].id).toBe(\"analytics\");\n\n // SEO tab has metaTitle\n const seoTab = tabsNode.tabs[1];\n expect(seoTab.layout).toHaveLength(1);\n\n // Verify all fields are in getData\n const data = form.getData();\n expect(data).toHaveProperty(\"trackingId\");\n });\n });\n });\n\n describe(\"object fields (Phase 6)\", () => {\n describe(\"non-list object field\", () => {\n function createFormWithObject() {\n return createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\").required(\"Street is required\"),\n city: f.text().label(\"City\").required(\"City is required\")\n }))\n }),\n layout: layout => [layout.row(\"title\"), layout.row(\"address\")]\n });\n }\n\n it(\"should create an object field with children\", () => {\n const form = createFormWithObject();\n const field = form.field(\"address\");\n expect(field).toBeDefined();\n expect(field.type).toBe(\"object\");\n });\n\n it(\"should access child fields via dot-notation\", () => {\n const form = createFormWithObject();\n const street = form.field(\"address.street\");\n expect(street).toBeDefined();\n expect(street.type).toBe(\"text\");\n });\n\n it(\"should throw on invalid dot-notation\", () => {\n const form = createFormWithObject();\n expect(() => form.field(\"address.zipcode\")).toThrow(\n 'Field \"address.zipcode\" not found.'\n );\n });\n\n it(\"should return nested object from getData\", () => {\n const form = createFormWithObject();\n form.field(\"address.street\").setValue(\"123 Main St\");\n form.field(\"address.city\").setValue(\"Springfield\");\n\n const data = form.getData();\n expect(data.address).toEqual({\n street: \"123 Main St\",\n city: \"Springfield\"\n });\n });\n\n it(\"should hydrate children from setData\", () => {\n const form = createFormWithObject();\n form.setData({\n title: \"Home\",\n address: { street: \"456 Oak Ave\", city: \"Portland\" }\n });\n\n expect(form.field(\"address.street\").getValue()).toBe(\"456 Oak Ave\");\n expect(form.field(\"address.city\").getValue()).toBe(\"Portland\");\n });\n\n it(\"should not be dirty after setData\", () => {\n const form = createFormWithObject();\n form.setData({\n title: \"Home\",\n address: { street: \"456 Oak Ave\", city: \"Portland\" }\n });\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should be dirty after changing a child field\", () => {\n const form = createFormWithObject();\n form.setData({\n title: \"Home\",\n address: { street: \"456 Oak Ave\", city: \"Portland\" }\n });\n form.field(\"address.street\").setValue(\"789 Pine Rd\");\n expect(form.isDirty).toBe(true);\n });\n\n it(\"should validate children recursively\", async () => {\n const form = createFormWithObject();\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors.length).toBeGreaterThan(0);\n // The object field itself reports the error\n expect(form.errors.some(e => e.path === \"address\")).toBe(true);\n });\n\n it(\"should pass validation when children are valid\", async () => {\n const form = createFormWithObject();\n form.field(\"title\").setValue(\"Home\");\n form.field(\"address.street\").setValue(\"123 Main St\");\n form.field(\"address.city\").setValue(\"Springfield\");\n\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n\n it(\"should expose IObjectFieldVM from field.vm\", () => {\n const form = createFormWithObject();\n form.field(\"address.street\").setValue(\"123 Main St\");\n form.field(\"address.city\").setValue(\"Springfield\");\n\n const vm = form.field(\"address\").vm as IObjectFieldVM;\n expect(vm.type).toBe(\"object\");\n expect(vm.isList).toBe(false);\n expect(vm.fields).toHaveLength(2);\n expect(vm.fields[0].name).toBe(\"street\");\n expect(vm.fields[0].value).toBe(\"123 Main St\");\n expect(vm.fields[1].name).toBe(\"city\");\n expect(vm.items).toHaveLength(0);\n });\n\n it(\"should render object field in a row via default layout\", () => {\n const form = createForm({\n fields: fields => ({\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\"),\n city: f.text().label(\"City\")\n }))\n })\n });\n\n const vm = form.vm;\n expect(vm.layout).toHaveLength(1);\n expect(vm.layout[0].type).toBe(\"row\");\n const row = asRow(vm.layout[0]);\n expect(row.fields[0].type).toBe(\"object\");\n expect(row.fields[0].name).toBe(\"address\");\n });\n\n it(\"should reset to baseline values\", () => {\n const form = createFormWithObject();\n form.setData({\n title: \"Home\",\n address: { street: \"Original St\", city: \"Original City\" }\n });\n\n form.field(\"address.street\").setValue(\"Changed St\");\n expect(form.isDirty).toBe(true);\n\n form.reset();\n expect(form.field(\"address.street\").getValue()).toBe(\"Original St\");\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should submit nested data when valid\", async () => {\n const form = createFormWithObject();\n form.field(\"title\").setValue(\"Home\");\n form.field(\"address.street\").setValue(\"123 Main St\");\n form.field(\"address.city\").setValue(\"Springfield\");\n\n const result = await form.submit();\n expect(result).toEqual({\n title: \"Home\",\n address: {\n street: \"123 Main St\",\n city: \"Springfield\"\n }\n });\n });\n });\n\n describe(\"list object field\", () => {\n function createFormWithList() {\n return createForm({\n fields: fields => ({\n presets: fields\n .object()\n .label(\"Presets\")\n .fields(f => ({\n name: f.text().label(\"Name\").required(\"Name is required\"),\n model: f.text().label(\"Model\").required(\"Model is required\")\n }))\n .list()\n }),\n layout: layout => [layout.row(\"presets\")]\n });\n }\n\n it(\"should create a list object field\", () => {\n const form = createFormWithList();\n const field = form.field(\"presets\");\n expect(field.type).toBe(\"object\");\n });\n\n it(\"should return empty array from getData initially\", () => {\n const form = createFormWithList();\n expect(form.getData().presets).toEqual([]);\n });\n\n it(\"should add items via the field VM\", () => {\n const form = createFormWithList();\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n expect(vm.isList).toBe(true);\n expect(vm.items).toHaveLength(0);\n\n vm.addItem();\n\n const updatedVm = form.field(\"presets\").vm as IObjectFieldVM;\n expect(updatedVm.items).toHaveLength(1);\n expect(updatedVm.items[0].fields).toHaveLength(2);\n expect(updatedVm.items[0].fields[0].name).toBe(\"name\");\n });\n\n it(\"should hydrate list from setData\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]\n });\n\n const data = form.getData();\n expect(data.presets).toEqual([\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]);\n });\n\n it(\"should expose items via IObjectFieldVM\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]\n });\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n expect(vm.items).toHaveLength(2);\n expect(vm.items[0].fields[0].value).toBe(\"Default\");\n expect(vm.items[1].fields[1].value).toBe(\"claude-haiku\");\n });\n\n it(\"should remove items via item.remove()\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]\n });\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n vm.items[0].remove();\n\n expect(form.getData().presets).toEqual([{ name: \"Fast\", model: \"claude-haiku\" }]);\n });\n\n it(\"should remove items via removeItem()\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"A\", model: \"a\" },\n { name: \"B\", model: \"b\" },\n { name: \"C\", model: \"c\" }\n ]\n });\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n vm.removeItem(1);\n\n expect(form.getData().presets).toEqual([\n { name: \"A\", model: \"a\" },\n { name: \"C\", model: \"c\" }\n ]);\n });\n\n it(\"should validate all items\", async () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"\", model: \"\" }\n ]\n });\n\n const valid = await form.validate();\n expect(valid).toBe(false);\n });\n\n it(\"should pass validation when all items are valid\", async () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]\n });\n\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n\n it(\"should validate with listSchema\", async () => {\n const form = createForm({\n fields: fields => ({\n presets: fields\n .object()\n .label(\"Presets\")\n .fields(f => ({\n name: f.text().label(\"Name\")\n }))\n .list()\n .listSchema(z.array(z.any()).min(2, \"At least 2 presets are required\"))\n })\n });\n\n form.setData({ presets: [{ name: \"Only one\" }] });\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors[0].message).toBe(\"At least 2 presets are required\");\n });\n\n it(\"should be dirty after adding an item\", () => {\n const form = createFormWithList();\n form.setData({ presets: [] });\n expect(form.isDirty).toBe(false);\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n vm.addItem();\n expect(form.isDirty).toBe(true);\n });\n\n it(\"should have stable keys across re-renders\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"A\", model: \"a\" },\n { name: \"B\", model: \"b\" }\n ]\n });\n\n const vm1 = form.field(\"presets\").vm as IObjectFieldVM;\n const key0 = vm1.items[0].key;\n const key1 = vm1.items[1].key;\n\n // Re-read VM — keys should be the same\n const vm2 = form.field(\"presets\").vm as IObjectFieldVM;\n expect(vm2.items[0].key).toBe(key0);\n expect(vm2.items[1].key).toBe(key1);\n });\n\n it(\"should pass empty list validation when not required\", async () => {\n const form = createFormWithList();\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n\n it(\"should modify item field values via VM onChange\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [{ name: \"Default\", model: \"claude-sonnet\" }]\n });\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n vm.items[0].fields[0].onChange(\"Updated\");\n\n expect((form.getData().presets as any[])[0].name).toBe(\"Updated\");\n });\n });\n\n describe(\"hasErrors rollup through tabs\", () => {\n it(\"should report hasErrors in tabs containing object fields\", async () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\").required(\"Required\")\n }))\n }),\n layout: layout => [\n layout\n .tabs(\"settings\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"title\")]);\n })\n .tab(\"details\", tab => {\n tab.label(\"Details\").layout(layout => [layout.row(\"address\")]);\n })\n ]\n });\n\n form.field(\"title\").setValue(\"Hello\");\n await form.validate();\n\n const tabsNode = form.vm.layout[0] as ITabsNodeVM;\n expect(tabsNode.tabs[0].hasErrors).toBe(false);\n expect(tabsNode.tabs[1].hasErrors).toBe(true);\n });\n });\n });\n\n describe(\"templated object fields (Phase 8a)\", () => {\n function createFormWithTemplatedObject() {\n return createForm({\n fields: fields => ({\n content: fields\n .object()\n .label(\"Content\")\n .template(\"hero\", t => {\n t.label(\"Hero Banner\").fields(f => ({\n heading: f.text().label(\"Heading\").required(\"Required\"),\n image: f.text().label(\"Image\")\n }));\n })\n .template(\"text\", t => {\n t.label(\"Rich Text\").fields(f => ({\n body: f.text().label(\"Body\").required(\"Required\")\n }));\n })\n })\n });\n }\n\n describe(\"shape\", () => {\n it(\"starts with no active template and empty children\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n expect(field.isTemplated).toBe(true);\n expect(field.activeTemplateId).toBeNull();\n expect(field.children.size).toBe(0);\n });\n\n it(\"exposes available templates via VM\", () => {\n const form = createFormWithTemplatedObject();\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.isTemplated).toBe(true);\n expect(vm.availableTemplates).toEqual([\n { id: \"hero\", label: \"Hero Banner\" },\n { id: \"text\", label: \"Rich Text\" }\n ]);\n expect(vm.activeTemplateId).toBeNull();\n expect(vm.fields).toEqual([]);\n });\n\n it(\"rejects .fields() alongside .template() at build time\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n content: fields\n .object()\n .fields(f => ({ x: f.text() }))\n .template(\"a\", t => {\n t.label(\"A\").fields(f => ({ y: f.text() }));\n })\n })\n })\n ).toThrow(/both .fields\\(\\) and .template\\(\\)/);\n });\n\n it(\"rejects duplicate template ids\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n content: fields\n .object()\n .template(\"a\", t => {\n t.label(\"A1\").fields(f => ({ x: f.text() }));\n })\n .template(\"a\", t => {\n t.label(\"A2\").fields(f => ({ y: f.text() }));\n })\n })\n })\n ).toThrow(/Duplicate template id \"a\"/);\n });\n\n it(\"rejects reserved _templateId as template id\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n content: fields.object().template(\"_templateId\", t => {\n t.label(\"X\").fields(f => ({ x: f.text() }));\n })\n })\n })\n ).toThrow(/reserved/);\n });\n\n it(\"rejects _templateId as a child field name in a template\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n content: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ _templateId: f.text() }));\n })\n })\n })\n ).toThrow(/reserved field \"_templateId\"/);\n });\n\n it(\"allows combining .list() with .template() (Phase 8b)\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n content: fields\n .object()\n .list()\n .template(\"a\", t => {\n t.label(\"A\").fields(f => ({ x: f.text() }));\n })\n })\n })\n ).not.toThrow();\n });\n });\n\n describe(\"setTemplate / switching\", () => {\n it(\"builds children when a template is selected\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n\n field.setTemplate(\"hero\");\n\n expect(field.activeTemplateId).toBe(\"hero\");\n expect(field.children.size).toBe(2);\n expect(form.field(\"content.heading\").type).toBe(\"text\");\n expect(form.field(\"content.image\").type).toBe(\"text\");\n });\n\n it(\"discards data when switching to a different template\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n\n field.setTemplate(\"hero\");\n form.field(\"content.heading\").setValue(\"Hello\");\n\n field.setTemplate(\"text\");\n\n expect(field.activeTemplateId).toBe(\"text\");\n expect(form.field(\"content.body\")).toBeDefined();\n expect(() => form.field(\"content.heading\")).toThrow();\n });\n\n it(\"is a no-op when setting the currently active template\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n\n field.setTemplate(\"hero\");\n form.field(\"content.heading\").setValue(\"Preserved\");\n field.setTemplate(\"hero\");\n\n expect(form.field(\"content.heading\").getValue()).toBe(\"Preserved\");\n });\n\n it(\"throws when setting an unknown template id\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n expect(() => field.setTemplate(\"missing\")).toThrow(/Template \"missing\" not found/);\n });\n\n it(\"wires the form reference on newly created children\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n // Setting a value on a child requires _form to be wired for pipelines.\n expect(() => form.field(\"content.heading\").setValue(\"OK\")).not.toThrow();\n });\n });\n\n describe(\"getData / setData\", () => {\n it(\"returns null when no template is active\", () => {\n const form = createFormWithTemplatedObject();\n expect(form.getData().content).toBeNull();\n });\n\n it(\"includes _templateId and child values when active\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n form.field(\"content.heading\").setValue(\"Welcome\");\n form.field(\"content.image\").setValue(\"cover.jpg\");\n\n expect(form.getData().content).toEqual({\n _templateId: \"hero\",\n heading: \"Welcome\",\n image: \"cover.jpg\"\n });\n });\n\n it(\"hydrates via setData by reading _templateId\", () => {\n const form = createFormWithTemplatedObject();\n form.setData({\n content: { _templateId: \"text\", body: \"Lorem ipsum\" }\n });\n\n const field = form.field(\"content\") as any;\n expect(field.activeTemplateId).toBe(\"text\");\n expect(form.field(\"content.body\").getValue()).toBe(\"Lorem ipsum\");\n });\n\n it(\"setData with null clears the active template\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n form.field(\"content.heading\").setValue(\"X\");\n\n form.setData({ content: null as any });\n\n expect(field.activeTemplateId).toBeNull();\n expect(field.children.size).toBe(0);\n });\n\n it(\"setData ignores unknown template id silently\", () => {\n const form = createFormWithTemplatedObject();\n form.setData({\n content: { _templateId: \"nope\", foo: \"bar\" } as any\n });\n const field = form.field(\"content\") as any;\n expect(field.activeTemplateId).toBeNull();\n });\n });\n\n describe(\"validation\", () => {\n it(\"required templated object fails validation when no template active\", async () => {\n const form = createForm({\n fields: fields => ({\n content: fields\n .object()\n .required(\"Pick a template\")\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text() }));\n })\n })\n });\n\n const valid = await form.validate();\n expect(valid).toBe(false);\n expect(form.errors.some(e => e.path === \"content\")).toBe(true);\n });\n\n it(\"required templated object passes when template active with valid children\", async () => {\n const form = createForm({\n fields: fields => ({\n content: fields\n .object()\n .required(\"Pick a template\")\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text().required(\"Required\")\n }));\n })\n })\n });\n\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n form.field(\"content.heading\").setValue(\"Hi\");\n\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n\n it(\"validates child fields inside active template\", async () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n // heading is required; no value set\n const valid = await form.validate();\n expect(valid).toBe(false);\n });\n\n it(\"passes validation when object is optional and no template selected\", async () => {\n const form = createFormWithTemplatedObject();\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n });\n\n describe(\"template visibility\", () => {\n it(\"filters availableTemplates by reactive visible callback\", () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"free\"),\n content: fields\n .object()\n .template(\"basic\", t => {\n t.label(\"Basic\").fields(f => ({ x: f.text() }));\n })\n .template(\"premium\", t => {\n t.label(\"Premium\")\n .visible(f => f.field(\"plan\").getValue() === \"enterprise\")\n .fields(f => ({ y: f.text() }));\n })\n })\n });\n\n const vm1 = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm1.availableTemplates.map(t => t.id)).toEqual([\"basic\"]);\n\n form.field(\"plan\").setValue(\"enterprise\");\n const vm2 = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm2.availableTemplates.map(t => t.id)).toEqual([\"basic\", \"premium\"]);\n });\n\n it(\"hiding a template does not clear an already-active selection\", () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"enterprise\"),\n content: fields.object().template(\"premium\", t => {\n t.label(\"Premium\")\n .visible(f => f.field(\"plan\").getValue() === \"enterprise\")\n .fields(f => ({ y: f.text() }));\n })\n })\n });\n\n const field = form.field(\"content\") as any;\n field.setTemplate(\"premium\");\n form.field(\"content.y\").setValue(\"set\");\n\n form.field(\"plan\").setValue(\"free\");\n\n // Template no longer in picker, but active selection + data preserved.\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.availableTemplates).toEqual([]);\n expect(vm.activeTemplateId).toBe(\"premium\");\n expect(form.field(\"content.y\").getValue()).toBe(\"set\");\n });\n });\n\n describe(\"isDirty\", () => {\n it(\"is not dirty after setData with template\", () => {\n const form = createFormWithTemplatedObject();\n form.setData({\n content: { _templateId: \"hero\", heading: \"Hello\", image: \"\" }\n });\n expect(form.isDirty).toBe(false);\n });\n\n it(\"becomes dirty after switching template\", () => {\n const form = createFormWithTemplatedObject();\n form.setData({\n content: { _templateId: \"hero\", heading: \"Hello\", image: \"\" }\n });\n (form.field(\"content\") as any).setTemplate(\"text\");\n expect(form.isDirty).toBe(true);\n });\n });\n });\n\n describe(\"templated list fields (Phase 8b)\", () => {\n function createFormWithTemplatedList() {\n return createForm({\n fields: fields => ({\n sections: fields\n .object()\n .label(\"Sections\")\n .list()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text().required(\"Required\"),\n image: f.text()\n }));\n })\n .template(\"text\", t => {\n t.label(\"Text\").fields(f => ({\n body: f.text().required(\"Required\")\n }));\n })\n })\n });\n }\n\n describe(\"addItem / templateId\", () => {\n it(\"requires a template id when adding to a templated list\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n expect(() => field.addItem()).toThrow(/require a template id/);\n });\n\n it(\"rejects unknown template ids\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n expect(() => field.addItem(\"missing\")).toThrow(/Template \"missing\" not found/);\n });\n\n it(\"adds an item with the picked template's children\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n\n expect(field.items.length).toBe(1);\n expect(field.items[0].templateId).toBe(\"hero\");\n expect(field.items[0].children.has(\"heading\")).toBe(true);\n expect(field.items[0].children.has(\"image\")).toBe(true);\n });\n\n it(\"allows mixing different templates across items\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.addItem(\"text\");\n field.addItem(\"hero\");\n\n expect(field.items.map((i: any) => i.templateId)).toEqual([\"hero\", \"text\", \"hero\"]);\n });\n });\n\n describe(\"getData\", () => {\n it(\"includes _templateId per item\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.items[0].children.get(\"heading\").setValue(\"Welcome\");\n field.addItem(\"text\");\n field.items[1].children.get(\"body\").setValue(\"Lorem\");\n\n expect(form.getData().sections).toEqual([\n { _templateId: \"hero\", heading: \"Welcome\", image: null },\n { _templateId: \"text\", body: \"Lorem\" }\n ]);\n });\n });\n\n describe(\"setData\", () => {\n it(\"hydrates items by reading each item's _templateId\", () => {\n const form = createFormWithTemplatedList();\n form.setData({\n sections: [\n { _templateId: \"hero\", heading: \"H1\", image: \"img.jpg\" },\n { _templateId: \"text\", body: \"Body copy\" }\n ]\n });\n\n const field = form.field(\"sections\") as any;\n expect(field.items.length).toBe(2);\n expect(field.items[0].templateId).toBe(\"hero\");\n expect(field.items[0].children.get(\"heading\").getValue()).toBe(\"H1\");\n expect(field.items[1].templateId).toBe(\"text\");\n expect(field.items[1].children.get(\"body\").getValue()).toBe(\"Body copy\");\n });\n\n it(\"silently drops items with invalid or missing _templateId\", () => {\n const form = createFormWithTemplatedList();\n form.setData({\n sections: [\n { _templateId: \"hero\", heading: \"Keep\" },\n { _templateId: \"nope\", x: 1 } as any,\n { heading: \"no-id\" } as any,\n null as any,\n { _templateId: \"text\", body: \"Also keep\" }\n ]\n });\n\n const field = form.field(\"sections\") as any;\n expect(field.items.length).toBe(2);\n expect(field.items.map((i: any) => i.templateId)).toEqual([\"hero\", \"text\"]);\n });\n });\n\n describe(\"duplicate / move / remove\", () => {\n it(\"duplicates an item preserving templateId and values\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.items[0].children.get(\"heading\").setValue(\"Original\");\n field.items[0].children.get(\"image\").setValue(\"pic.jpg\");\n\n field.duplicateItem(0);\n\n expect(field.items.length).toBe(2);\n expect(field.items[1].templateId).toBe(\"hero\");\n expect(field.items[1].children.get(\"heading\").getValue()).toBe(\"Original\");\n expect(field.items[1].children.get(\"image\").getValue()).toBe(\"pic.jpg\");\n expect(field.items[0].key).not.toBe(field.items[1].key);\n });\n\n it(\"moves items while preserving templateId\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.addItem(\"text\");\n field.moveItem(0, 1);\n\n expect(field.items.map((i: any) => i.templateId)).toEqual([\"text\", \"hero\"]);\n });\n\n it(\"removes items by index\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.addItem(\"text\");\n field.removeItem(0);\n\n expect(field.items.length).toBe(1);\n expect(field.items[0].templateId).toBe(\"text\");\n });\n });\n\n describe(\"VM\", () => {\n it(\"exposes templateId and duplicate on each item VM\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n\n const vm = form.field(\"sections\").vm as IObjectFieldVM;\n expect(vm.items.length).toBe(1);\n expect(vm.items[0].templateId).toBe(\"hero\");\n expect(typeof vm.items[0].duplicate).toBe(\"function\");\n });\n\n it(\"VM addItem(templateId) appends an item\", () => {\n const form = createFormWithTemplatedList();\n const vm = form.field(\"sections\").vm as IObjectFieldVM;\n vm.addItem(\"hero\");\n vm.addItem(\"text\");\n\n const field = form.field(\"sections\") as any;\n expect(field.items.map((i: any) => i.templateId)).toEqual([\"hero\", \"text\"]);\n });\n\n it(\"availableTemplates respects reactive visible() on templated lists\", () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"free\"),\n sections: fields\n .object()\n .list()\n .template(\"basic\", t => {\n t.label(\"Basic\").fields(f => ({ x: f.text() }));\n })\n .template(\"premium\", t => {\n t.label(\"Premium\")\n .visible(f => f.field(\"plan\").getValue() === \"enterprise\")\n .fields(f => ({ y: f.text() }));\n })\n })\n });\n\n const vm1 = form.field(\"sections\").vm as IObjectFieldVM;\n expect(vm1.availableTemplates.map(t => t.id)).toEqual([\"basic\"]);\n\n form.field(\"plan\").setValue(\"enterprise\");\n const vm2 = form.field(\"sections\").vm as IObjectFieldVM;\n expect(vm2.availableTemplates.map(t => t.id)).toEqual([\"basic\", \"premium\"]);\n });\n });\n\n describe(\"validation\", () => {\n it(\"validates each item's children under its template\", async () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\"); // heading is required, not set\n field.addItem(\"text\");\n field.items[1].children.get(\"body\").setValue(\"ok\");\n\n const valid = await form.validate();\n expect(valid).toBe(false);\n expect(form.errors.some(e => e.path.startsWith(\"sections\"))).toBe(true);\n });\n\n it(\"passes when every item's required fields are filled\", async () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.items[0].children.get(\"heading\").setValue(\"H\");\n field.addItem(\"text\");\n field.items[1].children.get(\"body\").setValue(\"B\");\n\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n });\n\n describe(\"isDirty\", () => {\n it(\"is not dirty after setData with templated list\", () => {\n const form = createFormWithTemplatedList();\n form.setData({\n sections: [\n { _templateId: \"hero\", heading: \"H\", image: \"\" },\n { _templateId: \"text\", body: \"B\" }\n ]\n });\n expect(form.isDirty).toBe(false);\n });\n\n it(\"becomes dirty after adding an item\", () => {\n const form = createFormWithTemplatedList();\n form.setData({\n sections: [{ _templateId: \"hero\", heading: \"H\", image: \"\" }]\n });\n (form.field(\"sections\") as any).addItem(\"text\");\n expect(form.isDirty).toBe(true);\n });\n });\n });\n\n describe(\"per-template / inner object layouts (Phase 8c)\", () => {\n describe(\"non-templated single object\", () => {\n it(\"defaults to one row per visible child when no layout.object() is registered\", () => {\n const form = createForm({\n fields: fields => ({\n meta: fields.object().fields(f => ({\n a: f.text().label(\"A\"),\n b: f.text().label(\"B\")\n }))\n })\n });\n const vm = form.field(\"meta\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(2);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"a\"]);\n expect(asRow(vm.layout[1]).fields.map(f => f.name)).toEqual([\"b\"]);\n });\n\n it(\"resolves the registered inner layout against the children\", () => {\n const form = createForm({\n fields: fields => ({\n meta: fields.object().fields(f => ({\n a: f.text().label(\"A\"),\n b: f.text().label(\"B\")\n }))\n }),\n layout: layout => [layout.object(\"meta\", l => [l.row(\"a\", \"b\")])]\n });\n const vm = form.field(\"meta\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(1);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"a\", \"b\"]);\n });\n\n it(\"throws when a per-template map is passed to a non-templated field\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n meta: fields.object().fields(f => ({ a: f.text() }))\n }),\n layout: layout => [layout.object(\"meta\", { tplA: l => [l.row(\"a\")] })]\n })\n ).toThrow(/not templated/);\n });\n });\n\n describe(\"non-templated list\", () => {\n it(\"applies the inner layout to every list item\", () => {\n const form = createForm({\n fields: fields => ({\n rows: fields\n .object()\n .list()\n .fields(f => ({ a: f.text(), b: f.text() }))\n }),\n layout: layout => [layout.object(\"rows\", l => [l.row(\"a\", \"b\")])]\n });\n const field = form.field(\"rows\") as any;\n field.addItem();\n field.addItem();\n const vm = field.vm as IObjectFieldVM;\n expect(vm.items.length).toBe(2);\n for (const item of vm.items) {\n expect(item.layout.length).toBe(1);\n expect(asRow(item.layout[0]).fields.map(f => f.name)).toEqual([\"a\", \"b\"]);\n }\n });\n });\n\n describe(\"templated single object\", () => {\n function buildTemplatedForm(layoutFactory?: IFormModelConfig[\"layout\"]) {\n return createForm({\n fields: fields => ({\n content: fields\n .object()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text().label(\"Heading\"),\n subheading: f.text().label(\"Subheading\")\n }));\n })\n .template(\"cta\", t => {\n t.label(\"CTA\").fields(f => ({\n text: f.text().label(\"Text\"),\n url: f.text().label(\"URL\")\n }));\n })\n }),\n layout: layoutFactory\n });\n }\n\n it(\"uses the active template's per-template layout\", () => {\n const form = buildTemplatedForm(layout => [\n layout.object(\"content\", {\n hero: l => [l.row(\"heading\", \"subheading\")],\n cta: l => [l.row(\"text\"), l.row(\"url\")]\n })\n ]);\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n let vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(1);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\n \"heading\",\n \"subheading\"\n ]);\n\n field.setTemplate(\"cta\");\n vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(2);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"text\"]);\n expect(asRow(vm.layout[1]).fields.map(f => f.name)).toEqual([\"url\"]);\n });\n\n it(\"falls back to default one-row-per-child when active template has no entry\", () => {\n const form = buildTemplatedForm(layout => [\n layout.object(\"content\", {\n hero: l => [l.row(\"heading\", \"subheading\")]\n // no entry for \"cta\"\n })\n ]);\n const field = form.field(\"content\") as any;\n field.setTemplate(\"cta\");\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(2);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"text\"]);\n expect(asRow(vm.layout[1]).fields.map(f => f.name)).toEqual([\"url\"]);\n });\n\n it(\"returns an empty layout when no template is active\", () => {\n const form = buildTemplatedForm(layout => [\n layout.object(\"content\", { hero: l => [l.row(\"heading\", \"subheading\")] })\n ]);\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.activeTemplateId).toBeNull();\n expect(vm.layout).toEqual([]);\n });\n\n it(\"silently ignores an unknown template id in the layout map\", () => {\n const form = buildTemplatedForm(layout => [\n layout.object(\"content\", {\n hero: l => [l.row(\"heading\", \"subheading\")],\n unknown: l => [l.row(\"xxx\")]\n })\n ]);\n // Should not throw at build time; the unknown entry is dead until referenced.\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\n \"heading\",\n \"subheading\"\n ]);\n });\n\n it(\"throws when a single LayoutNode[] is passed to a templated field\", () => {\n expect(() =>\n buildTemplatedForm(layout => [layout.object(\"content\", l => [l.row(\"x\")])])\n ).toThrow(/is templated/);\n });\n\n it(\"falls back to default when no layout.object() is registered\", () => {\n const form = buildTemplatedForm();\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(2);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"heading\"]);\n expect(asRow(vm.layout[1]).fields.map(f => f.name)).toEqual([\"subheading\"]);\n });\n });\n\n describe(\"templated list\", () => {\n function buildTemplatedListForm() {\n return createForm({\n fields: fields => ({\n sections: fields\n .object()\n .list()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text().label(\"Heading\"),\n subheading: f.text().label(\"Subheading\")\n }));\n })\n .template(\"cta\", t => {\n t.label(\"CTA\").fields(f => ({\n text: f.text().label(\"Text\"),\n url: f.text().label(\"URL\")\n }));\n })\n }),\n layout: layout => [\n layout.object(\"sections\", {\n hero: l => [l.row(\"heading\", \"subheading\")],\n cta: l => [l.row(\"text\"), l.row(\"url\")]\n })\n ]\n });\n }\n\n it(\"each item resolves layout against its own template\", () => {\n const form = buildTemplatedListForm();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.addItem(\"cta\");\n const vm = form.field(\"sections\").vm as IObjectFieldVM;\n expect(vm.items.length).toBe(2);\n expect(asRow(vm.items[0].layout[0]).fields.map(f => f.name)).toEqual([\n \"heading\",\n \"subheading\"\n ]);\n expect(asRow(vm.items[1].layout[0]).fields.map(f => f.name)).toEqual([\"text\"]);\n expect(asRow(vm.items[1].layout[1]).fields.map(f => f.name)).toEqual([\"url\"]);\n });\n\n it(\"hides hidden child fields from the resolved layout row\", () => {\n const form = createForm({\n fields: fields => ({\n content: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text(),\n secret: f.text().hidden()\n }));\n })\n }),\n layout: layout => [\n layout.object(\"content\", {\n hero: l => [l.row(\"heading\", \"secret\")]\n })\n ]\n });\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"heading\"]);\n });\n });\n\n describe(\"interaction with form.vm.layout\", () => {\n it(\"the form layout exposes a single-field row for the object\", () => {\n const form = createForm({\n fields: fields => ({\n content: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text() }));\n })\n }),\n layout: layout => [layout.object(\"content\", { hero: l => [l.row(\"heading\")] })]\n });\n const layout = form.vm.layout;\n expect(layout.length).toBe(1);\n const row = asRow(layout[0]);\n expect(row.fields.map(f => f.name)).toEqual([\"content\"]);\n });\n\n it(\"hides the object node from form.vm.layout when the field is not visible\", () => {\n const form = createForm({\n fields: fields => ({\n content: fields\n .object()\n .hidden()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text() }));\n })\n }),\n layout: layout => [layout.object(\"content\", { hero: l => [l.row(\"heading\")] })]\n });\n expect(form.vm.layout).toEqual([]);\n });\n });\n });\n\n describe(\"nested object layouts (Phase 8c.1)\", () => {\n it(\"registers layout.object() nested inside another object's inner layout (non-templated)\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n title: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }))\n }),\n layout: layout => [\n layout.object(\"page\", l => [\n l.row(\"title\"),\n l.object(\"seo\", inner => [inner.row(\"metaTitle\", \"metaDescription\")])\n ])\n ]\n });\n const pageVm = form.field(\"page\").vm as IObjectFieldVM;\n const seoRow = asRow(pageVm.layout[1]);\n const seoVm = seoRow.fields[0] as IObjectFieldVM;\n expect(seoVm.layout.length).toBe(1);\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n\n it(\"supports three levels of nesting\", () => {\n const form = createForm({\n fields: fields => ({\n a: fields.object().fields(f => ({\n b: f.object().fields(g => ({\n c: g.object().fields(h => ({\n x: h.text(),\n y: h.text()\n }))\n }))\n }))\n }),\n layout: layout => [\n layout.object(\"a\", l1 => [\n l1.object(\"b\", l2 => [l2.object(\"c\", l3 => [l3.row(\"x\", \"y\")])])\n ])\n ]\n });\n const aVm = form.field(\"a\").vm as IObjectFieldVM;\n const bVm = asRow(aVm.layout[0]).fields[0] as IObjectFieldVM;\n const cVm = asRow(bVm.layout[0]).fields[0] as IObjectFieldVM;\n expect(cVm.layout.length).toBe(1);\n expect(asRow(cVm.layout[0]).fields.map(f => f.name)).toEqual([\"x\", \"y\"]);\n });\n\n it(\"registers nested layouts on a templated single object when its template activates\", () => {\n const form = createForm({\n fields: fields => ({\n block: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }));\n })\n }),\n layout: layout => [\n layout.object(\"block\", {\n hero: l => [\n l.row(\"heading\"),\n l.object(\"seo\", inner => [inner.row(\"metaTitle\", \"metaDescription\")])\n ]\n })\n ]\n });\n const field = form.field(\"block\") as any;\n field.setTemplate(\"hero\");\n const vm = form.field(\"block\").vm as IObjectFieldVM;\n const seoRow = asRow(vm.layout[1]);\n const seoVm = seoRow.fields[0] as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n\n it(\"registers nested layouts on a templated list — each item gets its own\", () => {\n const form = createForm({\n fields: fields => ({\n sections: fields\n .object()\n .list()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }));\n })\n }),\n layout: layout => [\n layout.object(\"sections\", {\n hero: l => [\n l.row(\"heading\"),\n l.object(\"seo\", inner => [inner.row(\"metaTitle\", \"metaDescription\")])\n ]\n })\n ]\n });\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.addItem(\"hero\");\n const vm = form.field(\"sections\").vm as IObjectFieldVM;\n expect(vm.items.length).toBe(2);\n for (const item of vm.items) {\n const seoVm = asRow(item.layout[1]).fields[0] as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n }\n });\n\n it(\"registers nested layouts on a non-templated list item upon creation\", () => {\n const form = createForm({\n fields: fields => ({\n rows: fields\n .object()\n .list()\n .fields(f => ({\n label: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }))\n }),\n layout: layout => [\n layout.object(\"rows\", l => [\n l.row(\"label\"),\n l.object(\"seo\", inner => [inner.row(\"metaTitle\", \"metaDescription\")])\n ])\n ]\n });\n const field = form.field(\"rows\") as any;\n field.addItem();\n const vm = form.field(\"rows\").vm as IObjectFieldVM;\n const seoVm = asRow(vm.items[0].layout[1]).fields[0] as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n\n it(\"registers nested layouts on children added via field.as('object').fields() at runtime\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n title: f.text()\n }))\n }),\n layout: layout => [\n layout.object(\"page\", l => [\n l.row(\"title\"),\n l.object(\"seo\", inner => [inner.row(\"metaTitle\", \"metaDescription\")])\n ])\n ]\n });\n // seo doesn't exist yet; the layout entry is a no-op until we add it.\n form.field(\"page\")\n .as(\"object\")\n .fields(f => ({\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }));\n const pageVm = form.field(\"page\").vm as IObjectFieldVM;\n const seoRow = asRow(pageVm.layout[1]);\n const seoVm = seoRow.fields[0] as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n\n it(\"recurses through tabs nested inside an inner layout\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n title: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }))\n }),\n layout: layout => [\n layout.object(\"page\", l => [\n l\n .tabs()\n .tab(\"main\", tab => {\n tab.label(\"Main\").layout(l => [l.row(\"title\")]);\n })\n .tab(\"seoTab\", tab => {\n tab.label(\"SEO\").layout(l => [\n l.object(\"seo\", inner => [\n inner.row(\"metaTitle\", \"metaDescription\")\n ])\n ]);\n })\n ])\n ]\n });\n const seoVm = form.field(\"page.seo\").vm as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n\n it(\"resolves tabs inside an inner layout against the children scope\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n title: f.text(),\n body: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\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 => [l.row(\"title\"), l.row(\"body\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(l => [\n l.object(\"seo\", inner => [\n inner.row(\"metaTitle\", \"metaDescription\")\n ])\n ]);\n })\n ])\n ]\n });\n const pageVm = form.field(\"page\").vm as IObjectFieldVM;\n expect(pageVm.layout.length).toBe(1);\n const tabs = pageVm.layout[0] as ITabsNodeVM;\n expect(tabs.type).toBe(\"tabs\");\n expect(tabs.tabs.map(t => t.id)).toEqual([\"general\", \"seo\"]);\n const generalTab = tabs.tabs[0];\n expect(asRow(generalTab.layout[0]).fields.map(f => f.name)).toEqual([\"title\"]);\n expect(asRow(generalTab.layout[1]).fields.map(f => f.name)).toEqual([\"body\"]);\n const seoTab = tabs.tabs[1];\n const seoVm = asRow(seoTab.layout[0]).fields[0] as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n });\n\n describe(\"runtime template modification (Phase 8d)\", () => {\n function createSingleTemplatedForm() {\n return createForm({\n fields: fields => ({\n content: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text() }));\n })\n })\n });\n }\n\n function createListTemplatedForm() {\n return createForm({\n fields: fields => ({\n blocks: fields\n .object()\n .list()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text() }));\n })\n .template(\"text\", t => {\n t.label(\"Text\").fields(f => ({ body: f.text() }));\n })\n })\n });\n }\n\n it(\"templates.add appends a template and the picker lists it\", () => {\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n field.templates.add(\"text\", t => {\n t.label(\"Text\").fields(f => ({ body: f.text() }));\n });\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.availableTemplates.map(t => t.id)).toEqual([\"hero\", \"text\"]);\n });\n\n it(\"templates.add throws on duplicate id\", () => {\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n expect(() =>\n field.templates.add(\"hero\", t => {\n t.label(\"Other\").fields(f => ({ x: f.text() }));\n })\n ).toThrow(/Duplicate template id \"hero\"/);\n });\n\n it(\"templates.add throws on reserved _templateId\", () => {\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n expect(() =>\n field.templates.add(\"_templateId\", t => {\n t.label(\"Reserved\").fields(f => ({ x: f.text() }));\n })\n ).toThrow(/reserved/);\n });\n\n it(\"templates.add throws when the template defines a reserved _templateId field\", () => {\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n expect(() =>\n field.templates.add(\"bad\", t => {\n t.label(\"Bad\").fields(f => ({ _templateId: f.text() }));\n })\n ).toThrow(/reserved field \"_templateId\"/);\n });\n\n it(\"templates.remove removes the template from the picker\", () => {\n const form = createListTemplatedForm();\n const field = form.field(\"blocks\").as(\"object\");\n field.templates.remove(\"text\");\n const vm = form.field(\"blocks\").vm as IObjectFieldVM;\n expect(vm.availableTemplates.map(t => t.id)).toEqual([\"hero\"]);\n });\n\n it(\"templates.remove silently no-ops on unknown id\", () => {\n const form = createListTemplatedForm();\n const field = form.field(\"blocks\").as(\"object\");\n const before = (form.field(\"blocks\").vm as IObjectFieldVM).availableTemplates.length;\n expect(() => field.templates.remove(\"nonExistent\")).not.toThrow();\n const after = (form.field(\"blocks\").vm as IObjectFieldVM).availableTemplates.length;\n expect(after).toBe(before);\n });\n\n it(\"templates.remove clears active template on a single-object field via onChange(null) semantics\", () => {\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n field.setTemplate(\"hero\");\n expect(field.activeTemplateId).toBe(\"hero\");\n field.templates.remove(\"hero\");\n expect(field.activeTemplateId).toBeNull();\n expect(field.children.size).toBe(0);\n expect(form.field(\"content\").getValue()).toBeNull();\n });\n\n it(\"templates.remove drops list items whose _templateId matches\", () => {\n const form = createListTemplatedForm();\n const field = form.field(\"blocks\").as(\"object\");\n field.addItem(\"hero\", { heading: \"H1\" });\n field.addItem(\"text\", { body: \"B1\" });\n field.addItem(\"hero\", { heading: \"H2\" });\n expect(field.items.length).toBe(3);\n field.templates.remove(\"hero\");\n expect(field.items.length).toBe(1);\n expect(field.items[0].templateId).toBe(\"text\");\n });\n\n it(\"templates.add throws when called on a non-templated object field\", () => {\n const form = createForm({\n fields: fields => ({\n plain: fields.object().fields(f => ({ x: f.text() }))\n })\n });\n const field = form.field(\"plain\").as(\"object\");\n expect(() =>\n field.templates.add(\"x\", t => {\n t.label(\"X\").fields(f => ({ y: f.text() }));\n })\n ).toThrow(/not templated/);\n });\n\n it(\"templates.remove throws when called on a non-templated object field\", () => {\n const form = createForm({\n fields: fields => ({\n plain: fields.object().fields(f => ({ x: f.text() }))\n })\n });\n const field = form.field(\"plain\").as(\"object\");\n expect(() => field.templates.remove(\"anything\")).toThrow(/not templated/);\n });\n\n it(\"orphan layout entry persists silently and is reused when the same template id is re-added\", () => {\n const form = createForm({\n fields: fields => ({\n content: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text(), subheading: f.text() }));\n })\n }),\n layout: layout => [\n layout.object(\"content\", {\n hero: l => [l.row(\"heading\", \"subheading\")]\n })\n ]\n });\n const field = form.field(\"content\").as(\"object\");\n field.setTemplate(\"hero\");\n const vmBefore = form.field(\"content\").vm as IObjectFieldVM;\n const rowBefore = asRow(vmBefore.layout[0]);\n expect(rowBefore.fields.map(f => f.name)).toEqual([\"heading\", \"subheading\"]);\n\n field.templates.remove(\"hero\");\n field.templates.add(\"hero\", t => {\n t.label(\"Hero v2\").fields(f => ({ heading: f.text(), subheading: f.text() }));\n });\n field.setTemplate(\"hero\");\n\n const vmAfter = form.field(\"content\").vm as IObjectFieldVM;\n const rowAfter = asRow(vmAfter.layout[0]);\n expect(rowAfter.fields.map(f => f.name)).toEqual([\"heading\", \"subheading\"]);\n });\n\n it(\"removing all templates does not emit dev warnings (orphan suppression)\", () => {\n const warn = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n field.templates.remove(\"hero\");\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.availableTemplates).toEqual([]);\n expect(warn).not.toHaveBeenCalled();\n warn.mockRestore();\n });\n });\n\n describe(\"requiredWhen (Phase 11)\", () => {\n it(\"makes a field required when the callback returns true\", async () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"free\"),\n seats: fields\n .text()\n .requiredWhen(f => f.field(\"plan\").getValue() === \"pro\", \"Seats required\")\n })\n });\n\n // plan = free → not required → validation passes\n expect(form.field(\"seats\").vm.required).toBe(false);\n expect(await form.validate()).toBe(true);\n\n // plan = pro → becomes required → empty value fails validation\n form.field(\"plan\").setValue(\"pro\");\n expect(form.field(\"seats\").vm.required).toBe(true);\n expect(await form.validate()).toBe(false);\n expect(form.field(\"seats\").vm.validation.message).toBe(\"Seats required\");\n });\n\n it(\"chains requiredWhen callbacks — first truthy wins\", async () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"free\"),\n flag: fields.text().defaultValue(\"off\"),\n seats: fields\n .text()\n .requiredWhen(f => f.field(\"plan\").getValue() === \"pro\", \"Pro requires it\")\n .requiredWhen(f => f.field(\"flag\").getValue() === \"on\", \"Flag requires it\")\n })\n });\n\n form.field(\"flag\").setValue(\"on\");\n await form.validate();\n expect(form.field(\"seats\").vm.validation.message).toBe(\"Flag requires it\");\n\n // First-truthy-wins: enable plan too, plan callback runs first.\n form.field(\"plan\").setValue(\"pro\");\n await form.validate();\n expect(form.field(\"seats\").vm.validation.message).toBe(\"Pro requires it\");\n });\n\n it(\"hard .required() always wins over requiredWhen messages\", async () => {\n const form = createForm({\n fields: fields => ({\n seats: fields\n .text()\n .required(\"Always required\")\n .requiredWhen(() => true, \"Conditional message\")\n })\n });\n\n await form.validate();\n expect(form.field(\"seats\").vm.required).toBe(true);\n expect(form.field(\"seats\").vm.validation.message).toBe(\"Always required\");\n });\n\n it(\"modifier-added requiredWhen chains with builder-defined ones\", async () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"free\"),\n other: fields.text().defaultValue(\"off\"),\n seats: fields\n .text()\n .requiredWhen(f => f.field(\"plan\").getValue() === \"pro\", \"Pro required\")\n })\n });\n\n form.field(\"seats\").addRequiredWhen(\n f => f.field(\"other\").getValue() === \"on\",\n \"Other required\"\n );\n\n // Neither truthy → not required.\n expect(form.field(\"seats\").vm.required).toBe(false);\n\n // Modifier callback truthy.\n form.field(\"other\").setValue(\"on\");\n await form.validate();\n expect(form.field(\"seats\").vm.validation.message).toBe(\"Other required\");\n });\n });\n\n describe(\"computed / computedUntilDirty (Phase 11)\", () => {\n it(\"computed field exposes derived value reactively\", () => {\n const form = createForm({\n fields: fields => ({\n first: fields.text().defaultValue(\"Ada\"),\n last: fields.text().defaultValue(\"Lovelace\"),\n full: fields\n .text()\n .computed(\n f => `${f.field(\"first\").getValue()} ${f.field(\"last\").getValue()}`\n )\n })\n });\n\n expect(form.field(\"full\").getValue()).toBe(\"Ada Lovelace\");\n form.field(\"first\").setValue(\"Grace\");\n expect(form.field(\"full\").getValue()).toBe(\"Grace Lovelace\");\n });\n\n it(\"computed field stays editable but value remains derived\", () => {\n const form = createForm({\n fields: fields => ({\n src: fields.text().defaultValue(\"A\"),\n derived: fields.text().computed(f => f.field(\"src\").getValue())\n })\n });\n\n // Not auto-disabled.\n expect(form.field(\"derived\").vm.disabled).toBe(false);\n\n // User edit doesn't override the computed value.\n form.field(\"derived\").vm.onChange(\"manual override\");\n expect(form.field(\"derived\").getValue()).toBe(\"A\");\n });\n\n it(\"computedUntilDirty switches to manual after first UI edit\", () => {\n const form = createForm({\n fields: fields => ({\n src: fields.text().defaultValue(\"A\"),\n derived: fields\n .text()\n .computedUntilDirty(f => `derived-${f.field(\"src\").getValue()}`)\n })\n });\n\n expect(form.field(\"derived\").getValue()).toBe(\"derived-A\");\n\n form.field(\"derived\").vm.onChange(\"manual\");\n expect(form.field(\"derived\").getValue()).toBe(\"manual\");\n\n // Source changes no longer overwrite manual edit.\n form.field(\"src\").setValue(\"B\");\n expect(form.field(\"derived\").getValue()).toBe(\"manual\");\n });\n\n it(\"computed field still participates in validation\", async () => {\n const form = createForm({\n fields: fields => ({\n src: fields.text().defaultValue(\"\"),\n derived: fields\n .text()\n .required(\"Derived must not be empty\")\n .computed(f => f.field(\"src\").getValue())\n })\n });\n\n const valid = await form.validate();\n expect(valid).toBe(false);\n expect(form.field(\"derived\").vm.validation.message).toBe(\"Derived must not be empty\");\n\n form.field(\"src\").setValue(\"hello\");\n expect(await form.validate()).toBe(true);\n });\n\n it(\"modifier setComputed converts a regular field into a computed one\", () => {\n const form = createForm({\n fields: fields => ({\n src: fields.text().defaultValue(\"X\"),\n derived: fields.text().defaultValue(\"initial\")\n })\n });\n\n form.field(\"derived\").setComputed(f => `from-${f.field(\"src\").getValue()}`);\n\n expect(form.field(\"derived\").getValue()).toBe(\"from-X\");\n form.field(\"src\").setValue(\"Y\");\n expect(form.field(\"derived\").getValue()).toBe(\"from-Y\");\n });\n });\n\n describe('field(\"...\").as(\"object\").fields() (Phase 11)', () => {\n it(\"adds new children to an existing object field at runtime\", () => {\n const form = createForm({\n fields: fields => ({\n profile: fields.object().fields(f => ({\n firstName: f.text().label(\"First\")\n }))\n })\n });\n\n form.field(\"profile\")\n .as(\"object\")\n .fields(f => ({\n lastName: f.text().label(\"Last\")\n }));\n\n form.field(\"profile.firstName\").setValue(\"Ada\");\n form.field(\"profile.lastName\").setValue(\"Lovelace\");\n expect(form.getData()).toEqual({\n profile: { firstName: \"Ada\", lastName: \"Lovelace\" }\n });\n });\n\n it(\"replaces existing children when keys collide\", () => {\n const form = createForm({\n fields: fields => ({\n profile: fields.object().fields(f => ({\n firstName: f.text().label(\"Old\")\n }))\n })\n });\n\n form.field(\"profile\")\n .as(\"object\")\n .fields(f => ({\n firstName: f.text().label(\"New\")\n }));\n\n const profile = form.field(\"profile\").as(\"object\");\n expect(profile.children.get(\"firstName\")?.config.label).toBe(\"New\");\n });\n\n it(\"removes children when factory returns undefined\", () => {\n const form = createForm({\n fields: fields => ({\n profile: fields.object().fields(f => ({\n firstName: f.text(),\n lastName: f.text()\n }))\n })\n });\n\n form.field(\"profile\")\n .as(\"object\")\n .fields(() => ({\n lastName: undefined\n }));\n\n const profile = form.field(\"profile\").as(\"object\");\n expect(profile.children.has(\"lastName\")).toBe(false);\n expect(profile.children.has(\"firstName\")).toBe(true);\n });\n\n it(\"propagates added children to existing list items\", () => {\n const form = createForm({\n fields: fields => ({\n contacts: fields\n .object()\n .list()\n .fields(f => ({\n name: f.text()\n }))\n })\n });\n\n const contacts = form.field(\"contacts\").as(\"object\");\n contacts.addItem({ name: \"Ada\" });\n contacts.addItem({ name: \"Grace\" });\n\n contacts.fields(f => ({\n email: f.text()\n }));\n\n // Existing items now have the new child.\n expect(contacts.items[0].children.has(\"email\")).toBe(true);\n expect(contacts.items[1].children.has(\"email\")).toBe(true);\n\n // Newly added items pick up the child too.\n contacts.addItem({ name: \"Linus\", email: \"linus@example.com\" });\n expect(contacts.items[2].children.get(\"email\")?.getValue()).toBe(\"linus@example.com\");\n });\n\n it(\"throws when called on a templated object field\", () => {\n const form = createForm({\n fields: fields => ({\n block: fields.object().template(\"a\", t => {\n t.label(\"A\").fields(f => ({ x: f.text() }));\n })\n })\n });\n\n expect(() => {\n form.field(\"block\")\n .as(\"object\")\n .fields(f => ({ y: f.text() }));\n }).toThrow(/templated/);\n });\n });\n\n describe(\"form.addRule() (Phase 11)\", () => {\n it(\"runs a Zod schema against getData() and surfaces issues\", async () => {\n const form = createForm({\n fields: fields => ({\n password: fields.text().defaultValue(\"a\"),\n confirm: fields.text().defaultValue(\"b\")\n })\n });\n\n form.addRule(\n z\n .object({\n password: z.string(),\n confirm: z.string()\n })\n .refine(d => d.password === d.confirm, {\n message: \"Passwords must match\",\n path: [\"confirm\"]\n })\n );\n\n const valid = await form.validate();\n expect(valid).toBe(false);\n expect(form.errors.some(e => e.message === \"Passwords must match\")).toBe(true);\n // Error surfaced on per-field validation when path matches.\n expect(form.field(\"confirm\").vm.validation.isValid).toBe(false);\n expect(form.field(\"confirm\").vm.validation.message).toBe(\"Passwords must match\");\n });\n\n it(\"runs an imperative function and merges returned errors\", async () => {\n const form = createForm({\n fields: fields => ({\n age: fields.text().defaultValue(\"17\")\n })\n });\n\n form.addRule(f => {\n if (Number(f.field(\"age\").getValue()) < 18) {\n return [{ path: \"age\", message: \"Must be 18+\" }];\n }\n return [];\n });\n\n expect(await form.validate()).toBe(false);\n expect(form.field(\"age\").vm.validation.message).toBe(\"Must be 18+\");\n\n form.field(\"age\").setValue(\"21\");\n expect(await form.validate()).toBe(true);\n });\n\n it(\"supports async imperative rules\", async () => {\n const form = createForm({\n fields: fields => ({\n name: fields.text().defaultValue(\"taken\")\n })\n });\n\n form.addRule(async f => {\n await Promise.resolve();\n if (f.field(\"name\").getValue() === \"taken\") {\n return [{ path: \"name\", message: \"Already taken\" }];\n }\n return [];\n });\n\n expect(await form.validate()).toBe(false);\n expect(form.field(\"name\").vm.validation.message).toBe(\"Already taken\");\n });\n });\n\n describe(\"form.setLayout() (Phase 11)\", () => {\n it(\"replaces the layout entirely\", () => {\n const form = createForm({\n fields: fields => ({\n a: fields.text(),\n b: fields.text(),\n c: fields.text()\n }),\n layout: layout => [layout.row(\"a\"), layout.row(\"b\"), layout.row(\"c\")]\n });\n\n form.setLayout(layout => [layout.row(\"c\", \"a\")]);\n\n const layout = form.vm.layout;\n expect(layout).toHaveLength(1);\n const row = asRow(layout[0]);\n expect(row.fields.map(f => f.name)).toEqual([\"c\", \"a\"]);\n });\n\n it(\"emits orphan warnings for fields not in the new layout\", () => {\n const warn = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n const form = createForm({\n fields: fields => ({\n a: fields.text(),\n b: fields.text()\n })\n });\n\n warn.mockClear();\n form.setLayout(layout => [layout.row(\"a\")]);\n\n expect(warn).toHaveBeenCalledWith(\n expect.stringContaining('Field \"b\" is not in the layout')\n );\n warn.mockRestore();\n });\n });\n\n describe(\"Phase 10: Advanced Validation\", () => {\n describe(\"field.vm.validating\", () => {\n it(\"should be false initially\", () => {\n const form = createBasicForm();\n expect(form.field(\"title\").vm.validating).toBe(false);\n });\n\n it(\"should be true while async schema validates\", async () => {\n let resolveValidation!: () => void;\n const form = createForm({\n fields: fields => ({\n email: fields.text().schema(\n z.string().refine(async () => {\n await new Promise<void>(r => {\n resolveValidation = r;\n });\n return true;\n })\n )\n })\n });\n form.field(\"email\").setValue(\"test@test.com\");\n\n const promise = form.validate();\n // Allow microtask to enter the async refine\n await new Promise(r => setTimeout(r, 0));\n expect(form.field(\"email\").vm.validating).toBe(true);\n\n resolveValidation();\n await promise;\n expect(form.field(\"email\").vm.validating).toBe(false);\n });\n\n it(\"should be false after sync-only validation\", async () => {\n const form = createForm({\n fields: fields => ({\n name: fields.text().required()\n })\n });\n form.field(\"name\").setValue(\"hello\");\n await form.validate();\n expect(form.field(\"name\").vm.validating).toBe(false);\n });\n });\n\n describe(\"form.submitted\", () => {\n it(\"should be false initially\", () => {\n const form = createBasicForm();\n expect(form.submitted).toBe(false);\n });\n\n it(\"should be true after validate()\", async () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"t\");\n form.field(\"path\").setValue(\"/p\");\n await form.validate();\n expect(form.submitted).toBe(true);\n });\n\n it(\"should be true after failed validate()\", async () => {\n const form = createBasicForm();\n await form.validate();\n expect(form.submitted).toBe(true);\n });\n\n it(\"should reset to false on setData()\", async () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"t\");\n form.field(\"path\").setValue(\"/p\");\n await form.validate();\n expect(form.submitted).toBe(true);\n\n form.setData({ title: \"new\", path: \"/new\" });\n expect(form.submitted).toBe(false);\n });\n\n it(\"should reset to false on reset()\", async () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"t\");\n form.field(\"path\").setValue(\"/p\");\n await form.validate();\n expect(form.submitted).toBe(true);\n\n form.reset();\n expect(form.submitted).toBe(false);\n });\n });\n\n describe(\"validate-on-blur after submit\", () => {\n it(\"should not validate on blur before first submit\", async () => {\n const form = createForm({\n fields: fields => ({\n email: fields.text().required(\"Required\")\n })\n });\n form.field(\"email\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(form.field(\"email\").vm.validation.isValid).toBeNull();\n });\n\n it(\"should validate on blur after first submit\", async () => {\n const form = createForm({\n fields: fields => ({\n email: fields\n .text()\n .required(\"Required\")\n .schema(z.string().email(\"Invalid email\"))\n })\n });\n\n form.field(\"email\").setValue(\"bad\");\n await form.submit();\n expect(form.field(\"email\").vm.validation.isValid).toBe(false);\n\n // Fix the value and blur — should re-validate\n form.field(\"email\").setValue(\"valid@email.com\");\n form.field(\"email\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(form.field(\"email\").vm.validation.isValid).toBe(true);\n });\n\n it(\"should show error on blur for invalid value after submit\", async () => {\n const form = createForm({\n fields: fields => ({\n name: fields.text().required(\"Name is required\")\n })\n });\n\n form.field(\"name\").setValue(\"hello\");\n await form.submit();\n expect(form.field(\"name\").vm.validation.isValid).toBe(true);\n\n // Clear the value and blur — should fail required check\n form.field(\"name\").setValue(\"\");\n form.field(\"name\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(form.field(\"name\").vm.validation.isValid).toBe(false);\n expect(form.field(\"name\").vm.validation.message).toBe(\"Name is required\");\n });\n });\n\n describe(\"validation memoization\", () => {\n it(\"should not re-run schema on blur when value unchanged\", async () => {\n const schemaSpy = vi.fn().mockReturnValue(true);\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(z.string().refine(schemaSpy, \"fail\"))\n })\n });\n\n form.field(\"slug\").setValue(\"hello\");\n await form.submit();\n expect(schemaSpy).toHaveBeenCalledTimes(1);\n\n // Blur with same value — should use cache\n form.field(\"slug\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(schemaSpy).toHaveBeenCalledTimes(1);\n });\n\n it(\"should re-run schema on blur when value changed\", async () => {\n const schemaSpy = vi.fn().mockReturnValue(true);\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(z.string().refine(schemaSpy, \"fail\"))\n })\n });\n\n form.field(\"slug\").setValue(\"hello\");\n await form.submit();\n expect(schemaSpy).toHaveBeenCalledTimes(1);\n\n // Change value and blur — should re-validate\n form.field(\"slug\").setValue(\"world\");\n form.field(\"slug\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(schemaSpy).toHaveBeenCalledTimes(2);\n });\n\n it(\"should always re-run schema on form.validate()\", async () => {\n const schemaSpy = vi.fn().mockReturnValue(true);\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(z.string().refine(schemaSpy, \"fail\"))\n })\n });\n\n form.field(\"slug\").setValue(\"hello\");\n await form.validate();\n expect(schemaSpy).toHaveBeenCalledTimes(1);\n\n // Same value, but form.validate() forces re-validation\n await form.validate();\n expect(schemaSpy).toHaveBeenCalledTimes(2);\n });\n\n it(\"should clear cache on resetValidation()\", async () => {\n const schemaSpy = vi.fn().mockReturnValue(true);\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(z.string().refine(schemaSpy, \"fail\"))\n })\n });\n\n form.field(\"slug\").setValue(\"hello\");\n await form.submit();\n expect(schemaSpy).toHaveBeenCalledTimes(1);\n\n // Reset validation — clears cache\n form.field(\"slug\").resetValidation();\n\n // Blur with same value — should re-validate (cache cleared)\n form.field(\"slug\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(schemaSpy).toHaveBeenCalledTimes(2);\n });\n });\n\n describe(\"async validation with z.refine\", () => {\n it(\"should validate async refine on submit\", async () => {\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(\n z.string().refine(async value => {\n return value !== \"taken\";\n }, \"This slug is already taken\")\n )\n })\n });\n\n form.field(\"slug\").setValue(\"taken\");\n const result = await form.submit();\n expect(result).toBe(false);\n expect(form.field(\"slug\").vm.validation.isValid).toBe(false);\n expect(form.field(\"slug\").vm.validation.message).toBe(\"This slug is already taken\");\n });\n\n it(\"should pass async refine with valid value\", async () => {\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(\n z.string().refine(async value => {\n return value !== \"taken\";\n }, \"This slug is already taken\")\n )\n })\n });\n\n form.field(\"slug\").setValue(\"available\");\n const result = await form.submit();\n expect(result).toEqual({ slug: \"available\" });\n expect(form.field(\"slug\").vm.validation.isValid).toBe(true);\n });\n });\n });\n\n describe(\"normalizeValue\", () => {\n it(\"should coerce string to number on setValue for number fields\", () => {\n const form = createForm({\n fields: fields => ({\n count: fields.number().label(\"Count\")\n })\n });\n\n form.field(\"count\").setValue(\"42\");\n expect(form.field(\"count\").getValue()).toBe(42);\n });\n\n it(\"should normalize invalid values to null for number fields\", () => {\n const form = createForm({\n fields: fields => ({\n count: fields.number().label(\"Count\")\n })\n });\n\n form.field(\"count\").setValue(\"\");\n expect(form.field(\"count\").getValue()).toBe(null);\n\n form.field(\"count\").setValue(null);\n expect(form.field(\"count\").getValue()).toBe(null);\n\n form.field(\"count\").setValue(\"abc\");\n expect(form.field(\"count\").getValue()).toBe(null);\n });\n\n it(\"should store number for number field with options\", () => {\n const form = createForm({\n fields: fields => ({\n tier: fields\n .number()\n .label(\"Tier\")\n .options([\n { label: \"Tier 1\", value: 100 },\n { label: \"Tier 2\", value: 200 }\n ])\n })\n });\n\n form.field(\"tier\").setValue(\"100\");\n expect(form.field(\"tier\").getValue()).toBe(100);\n expect(typeof form.field(\"tier\").getValue()).toBe(\"number\");\n });\n\n it(\"should coerce to boolean on setValue for boolean fields\", () => {\n const form = createForm({\n fields: fields => ({\n active: fields.boolean().label(\"Active\")\n })\n });\n\n form.field(\"active\").setValue(1);\n expect(form.field(\"active\").getValue()).toBe(true);\n\n form.field(\"active\").setValue(0);\n expect(form.field(\"active\").getValue()).toBe(false);\n });\n\n it(\"should apply normalizeValue on setData (via setValueSilent)\", () => {\n const form = createForm({\n fields: fields => ({\n count: fields.number().label(\"Count\")\n })\n });\n\n form.setData({ count: \"42\" } as any);\n expect(form.field(\"count\").getValue()).toBe(42);\n expect(typeof form.field(\"count\").getValue()).toBe(\"number\");\n });\n\n it(\"should not alter text field values\", () => {\n const form = createForm({\n fields: fields => ({\n name: fields.text().label(\"Name\")\n })\n });\n\n form.field(\"name\").setValue(\"hello\");\n expect(form.field(\"name\").getValue()).toBe(\"hello\");\n\n form.field(\"name\").setValue(42);\n expect(form.field(\"name\").getValue()).toBe(42);\n });\n\n it(\"should run normalizeValue before beforeChange\", () => {\n const log: unknown[] = [];\n const form = createForm({\n fields: fields => ({\n count: fields\n .number()\n .label(\"Count\")\n .beforeChange(value => {\n log.push(value);\n return value;\n })\n })\n });\n\n form.field(\"count\").setValue(\"7\");\n expect(log).toEqual([7]);\n });\n });\n\n describe(\"focusField\", () => {\n it(\"should set focusRequested on the target field\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n })\n });\n\n form.focusField(\"title\");\n expect(form.field(\"title\").vm.focusRequested).toBe(true);\n expect(form.field(\"path\").vm.focusRequested).toBe(false);\n });\n\n it(\"should activate the correct tab\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n slug: fields.text().label(\"Slug\")\n }),\n layout: layout => [\n layout\n .tabs(\"mainTabs\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(l => [l.row(\"title\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(l => [l.row(\"slug\")]);\n })\n ]\n });\n\n // Initially the first tab is active\n expect((form.vm.layout[0] as any).activeTabId).toBe(\"general\");\n\n form.focusField(\"slug\");\n expect(form.field(\"slug\").vm.focusRequested).toBe(true);\n expect((form.vm.layout[0] as any).activeTabId).toBe(\"seo\");\n });\n\n it(\"should activate nested tabs inside object fields\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n title: f.text().label(\"Title\"),\n metaTitle: f.text().label(\"Meta Title\")\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 => [l.row(\"title\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(l => [l.row(\"metaTitle\")]);\n })\n ])\n ]\n });\n\n form.focusField(\"page.metaTitle\");\n expect(form.field(\"page.metaTitle\").vm.focusRequested).toBe(true);\n });\n\n it(\"should clear previous focus when focusing a new field\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n })\n });\n\n form.focusField(\"title\");\n expect(form.field(\"title\").vm.focusRequested).toBe(true);\n\n form.focusField(\"path\");\n expect(form.field(\"title\").vm.focusRequested).toBe(false);\n expect(form.field(\"path\").vm.focusRequested).toBe(true);\n });\n\n it(\"should allow renderer to clear focus via clearFocusRequest\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n })\n });\n\n form.focusField(\"title\");\n expect(form.field(\"title\").vm.focusRequested).toBe(true);\n\n form.field(\"title\").vm.clearFocusRequest();\n expect(form.field(\"title\").vm.focusRequested).toBe(false);\n });\n\n it(\"should not throw on unknown field\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n })\n });\n\n expect(() => form.focusField(\"nonexistent\")).not.toThrow();\n });\n\n it(\"should propagate qualifiedName through nested objects\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n seo: f.object().fields(g => ({\n metaTitle: g.text().label(\"Meta Title\")\n }))\n }))\n })\n });\n\n const meta = form.field(\"page.seo.metaTitle\");\n expect(meta.qualifiedName).toBe(\"page.seo.metaTitle\");\n });\n\n it(\"field.focus() should delegate to form.focusField\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n }),\n layout: layout => [\n layout\n .tabs(\"tabs\")\n .tab(\"t1\", tab => {\n tab.label(\"T1\").layout(l => [l.row(\"title\")]);\n })\n .tab(\"t2\", tab => {\n tab.label(\"T2\").layout(l => [l.row(\"path\")]);\n })\n ]\n });\n\n form.field(\"path\").focus();\n expect(form.field(\"path\").vm.focusRequested).toBe(true);\n expect((form.vm.layout[0] as any).activeTabId).toBe(\"t2\");\n });\n });\n\n describe(\"primitive list addItem / removeItem\", () => {\n it(\"addItem appends to empty list\", () => {\n const form = createForm({\n fields: f => ({\n tags: f.text().list()\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n const vm = form.field(\"tags\").vm;\n expect(vm.value).toEqual([]);\n\n vm.addItem(\"hello\");\n expect(form.field(\"tags\").vm.value).toEqual([\"hello\"]);\n });\n\n it(\"addItem appends with default null when no value given\", () => {\n const form = createForm({\n fields: f => ({\n tags: f.text().list()\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n form.field(\"tags\").vm.addItem();\n expect(form.field(\"tags\").vm.value).toEqual([null]);\n });\n\n it(\"addItem appends to existing values\", () => {\n const form = createForm({\n fields: f => ({\n tags: f.text().list().defaultValue([\"a\", \"b\"])\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n form.field(\"tags\").vm.addItem(\"c\");\n expect(form.field(\"tags\").vm.value).toEqual([\"a\", \"b\", \"c\"]);\n });\n\n it(\"removeItem removes at index\", () => {\n const form = createForm({\n fields: f => ({\n tags: f.text().list().defaultValue([\"a\", \"b\", \"c\"])\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n form.field(\"tags\").vm.removeItem(1);\n expect(form.field(\"tags\").vm.value).toEqual([\"a\", \"c\"]);\n });\n\n it(\"removeItem from beginning preserves order\", () => {\n const form = createForm({\n fields: f => ({\n tags: f.text().list().defaultValue([\"a\", \"b\", \"c\"])\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n form.field(\"tags\").vm.removeItem(0);\n expect(form.field(\"tags\").vm.value).toEqual([\"b\", \"c\"]);\n });\n\n it(\"operations go through beforeChange pipeline\", () => {\n const log: unknown[] = [];\n const form = createForm({\n fields: f => ({\n tags: f\n .text()\n .list()\n .defaultValue([\"a\"])\n .beforeChange((value, _form) => {\n log.push(value);\n return value;\n })\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n form.field(\"tags\").vm.addItem(\"b\");\n form.field(\"tags\").vm.removeItem(0);\n expect(log).toEqual([[\"a\", \"b\"], [\"b\"]]);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|