@bach.software/vue-dynamic-form 0.6.0 → 0.7.0

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.
Files changed (28) hide show
  1. package/dist/examples.cjs.js +8 -8
  2. package/dist/examples.cjs.js.map +1 -1
  3. package/dist/examples.es.js +590 -520
  4. package/dist/examples.es.js.map +1 -1
  5. package/dist/mapEachMetadataItem-DwSDJyzo.cjs +2 -0
  6. package/dist/mapEachMetadataItem-DwSDJyzo.cjs.map +1 -0
  7. package/dist/mapEachMetadataItem-DxEO1PDs.js +1186 -0
  8. package/dist/mapEachMetadataItem-DxEO1PDs.js.map +1 -0
  9. package/dist/src/components/__tests__/DynamicFormItem.formApi.test.d.ts +1 -0
  10. package/dist/src/components/__tests__/DynamicFormItemArray.formApi.test.d.ts +1 -0
  11. package/dist/src/components/__tests__/DynamicFormItemChoice.formApi.test.d.ts +1 -0
  12. package/dist/src/components/__tests__/DynamicFormItemWizard.formApi.test.d.ts +1 -0
  13. package/dist/src/core/__tests__/useIsResetPending.test.d.ts +1 -0
  14. package/dist/src/core/__tests__/useIsValidationSuppressed.test.d.ts +1 -0
  15. package/dist/src/core/useIsResetPending.d.ts +13 -0
  16. package/dist/src/core/useIsValidationSuppressed.d.ts +20 -0
  17. package/dist/src/examples/ProgrammaticWritesTestCase.vue.d.ts +2 -0
  18. package/dist/src/examples/TestForm.vue.d.ts +6 -1
  19. package/dist/src/examples/__tests__/TestFormTemplate.testcases.d.ts +37 -37
  20. package/dist/src/examples/index.d.ts +1 -0
  21. package/dist/tsconfig.tsbuildinfo +1 -1
  22. package/dist/vue-dynamic-form.cjs.js +1 -1
  23. package/dist/vue-dynamic-form.es.js +1 -1
  24. package/package.json +3 -3
  25. package/dist/mapEachMetadataItem-Cxfn86Z2.cjs +0 -2
  26. package/dist/mapEachMetadataItem-Cxfn86Z2.cjs.map +0 -1
  27. package/dist/mapEachMetadataItem-Dvf3R5jd.js +0 -1159
  28. package/dist/mapEachMetadataItem-Dvf3R5jd.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"examples.cjs.js","sources":["../src/examples/components/IconButton.vue","../src/examples/TestFormTemplate.vue","../src/examples/TestForm.vue","../src/examples/__tests__/TestFormTemplate.testcases.ts","../src/examples/KeepValuesOnUnmountTestCase.vue"],"sourcesContent":["<script lang=\"ts\" setup>\ninterface Props {\n icon: 'plus' | 'minus'\n color?: 'blue' | 'red'\n}\ninterface Emits {\n (e: 'click'): void\n}\nconst {\n icon,\n color = 'blue',\n} = defineProps<Props>();\ndefineEmits<Emits>();\n</script>\n\n<template>\n <button\n type=\"button\"\n class=\"cursor-pointer inline-flex items-center justify-center rounded-full size-5 text-white-800 cursor-pointer\"\n :class=\"{\n 'bg-blue-200 hover:bg-blue-300': color === 'blue',\n 'bg-red-200 hover:bg-red-300': color === 'red',\n }\"\n @click=\"$emit('click')\"\n >\n <svg v-if=\"icon === 'plus'\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-3\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 4.5v15m7.5-7.5h-15\" />\n </svg>\n <svg v-if=\"icon === 'minus'\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-3\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 12h14\" />\n </svg>\n </button>\n</template>\n","<script lang=\"ts\" setup>\nimport type { WizardGotoStepOptions } from '@/types/FieldMetadata';\nimport type { GetDynamicFormSettingsType } from '@/types/GetDynamicFormSettingsType';\nimport type { GetMetadataType } from '@/types/GetMetadataType';\nimport DynamicFormTemplate from '@/components/DynamicFormTemplate.vue';\nimport { defineMetadata } from '@/core/defineMetadata';\nimport IconButton from './components/IconButton.vue';\n\nexport type Metadata = GetMetadataType<typeof metadata>;\n\nexport type DynamicFormSettings = GetDynamicFormSettingsType<typeof metadata>;\n\nconst metadata = defineMetadata<\n {\n text: string\n textBoundByVModel: string\n select: string\n selectBoundByVModel: string\n checkbox: boolean\n checkboxBoundByVModel: boolean\n heading: never\n group: never\n },\n {\n description?: string\n options?: { key: string, value: string }[]\n fullWidth?: boolean\n disabled?: boolean\n hidden?: boolean\n },\n /**\n * Free to decide what attributes you want to pass internally between your templates.\n * You can add any attribute to a <slot /> and then it will be accessible in props.slotProps.\n */\n {\n hideLabel?: boolean\n /** Example on how to keep track of the levels */\n level?: number\n /** Helps identifying that we're below a choice field, so if we're rendering an array we can adjust our layout */\n belowChoiceField?: boolean\n hidden?: boolean\n /** Bound by the wizard page wrapper below, so a page's own content can offer \"jump to step\" affordances */\n gotoStep?: (index: number, options?: WizardGotoStepOptions) => Promise<void> | void\n },\n {\n showOptionalInsteadOfRequired?: boolean\n /**\n * Example-only switch for the wizard page wrapper: gate page visibility with `v-if` (unmounts\n * non-current pages) instead of the correct `v-show`. Lets a playground demonstrate the\n * clear-on-unmount data loss `v-show` avoids, and how `keepValuesOnUnmount` changes it.\n */\n wizardPageUseVIf?: boolean\n }\n>();\n\n// Shared harness-button styling; the primary variant only swaps the color tokens.\nconst buttonClass = 'inline-flex items-center h-9 px-3 text-sm border border-gray-300 rounded bg-gray-100 text-gray-900 cursor-pointer hover:bg-gray-200 disabled:opacity-50 disabled:cursor-not-allowed';\nconst buttonPrimaryClass = 'inline-flex items-center h-9 px-3 text-sm border border-blue-600 rounded bg-blue-600 text-white cursor-pointer hover:bg-blue-700 disabled:opacity-50 disabled:cursor-not-allowed';\n</script>\n\n<template>\n <DynamicFormTemplate :metadata-configuration=\"metadata\">\n <template #heading=\"{ fieldMetadata, fieldContext: { errorMessage, label }, disabled, canAddItems, addItem, canRemoveItems, removeItem, slotProps }\">\n <div v-if=\"!fieldMetadata.hidden\" class=\"mt-4\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <h3 v-if=\"label\" class=\"flex text-xl font-bold gap-2 items-center mb-2\" :class=\"{ 'text-gray-500': fieldMetadata.disabled || disabled }\">\n {{ label }}\n <IconButton v-if=\"canAddItems\" icon=\"plus\" tabindex=\"-1\" :data-testid=\"`${fieldMetadata.path}-add-button`\" @click=\"addItem\" />\n <IconButton v-if=\"canRemoveItems\" icon=\"minus\" tabindex=\"-1\" color=\"red\" :data-testid=\"`${fieldMetadata.path}-remove-button`\" @click=\"removeItem\" />\n <button\n v-if=\"slotProps?.gotoStep\"\n type=\"button\"\n :data-testid=\"`${fieldMetadata.path}-goto-first-step-button`\"\n @click=\"slotProps.gotoStep(0)\"\n >\n back to start\n </button>\n </h3>\n <pre class=\"text-sm whitespace-pre-wrap\">{{ fieldMetadata.description }}</pre>\n <span\n v-if=\"errorMessage.value\"\n class=\"text-red-600 text-sm\"\n :data-testid=\"`${fieldMetadata.path}-error-message`\"\n >{{ errorMessage.value }}</span>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <slot :level=\"(slotProps?.level ?? 0) + 1\" />\n </div>\n </div>\n </template>\n\n <template #heading-array=\"{ fieldMetadata, fieldContext: { label }, disabled, canAddItems, addItem, slotProps }\">\n <!--\n Repeatable heading: render the heading label and an add control once at the array level, then\n let each occurrence render label-less (mirrors how leaf arrays render through #default-array).\n Without this, every occurrence would repeat the heading label and offer no way to add another.\n -->\n <div v-if=\"!fieldMetadata.hidden\" class=\"mt-4 flex flex-col gap-2\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <h3 v-if=\"label\" class=\"flex text-xl font-bold gap-2 items-center\" :class=\"{ 'text-gray-500': fieldMetadata.disabled || disabled }\">\n {{ label }}\n <IconButton v-if=\"canAddItems\" icon=\"plus\" tabindex=\"-1\" :data-testid=\"`${fieldMetadata.path}-add-button`\" @click=\"addItem\" />\n </h3>\n <slot :hide-label=\"true\" :level=\"(slotProps?.level ?? 0) + 1\" />\n </div>\n </template>\n\n <template #default-choice=\"{ fieldMetadata, fieldContext: { errorMessage, label }, disabled, required, slotProps, settings: { showOptionalInsteadOfRequired }, addChoiceOccurrence, removeChoiceOccurrence, canAddChoiceOccurrence, usedChoiceOccurrences }\">\n <div v-if=\"!fieldMetadata.hidden\" class=\"flex flex-col gap-2\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <span class=\"flex gap-2 items-center\" :class=\"{ 'text-gray-500': disabled }\">\n {{ label }}\n <span v-if=\"required && !showOptionalInsteadOfRequired\" class=\"text-red-500 dark:text-rose-400\">*</span>\n <span v-if=\"!required && showOptionalInsteadOfRequired\" class=\"text-sm text-gray-400\">(optional)</span>\n </span>\n <!--\n Explicit-choice-selection test harness: exercises addChoiceOccurrence/removeChoiceOccurrence/\n canAddChoiceOccurrence through the real public slot-prop contract, the same way\n addItem/removeItem are already tested through #default-array.\n -->\n <div>Used choice occurrences: <span :data-testid=\"`${fieldMetadata.path}-used-choice-occurrences`\">{{ usedChoiceOccurrences }}</span></div>\n <div v-if=\"fieldMetadata.choice?.length\" class=\"flex gap-2 flex-wrap\">\n <button\n v-for=\"branch in fieldMetadata.choice\"\n :key=\"`${branch.name}-add`\"\n type=\"button\"\n :class=\"buttonClass\"\n :disabled=\"!canAddChoiceOccurrence(branch.name)\"\n :data-testid=\"`${fieldMetadata.path}.${branch.name}-add-choice-button`\"\n @click=\"addChoiceOccurrence(branch.name)\"\n >\n Add {{ branch.name }}\n </button>\n <button\n v-for=\"branch in fieldMetadata.choice\"\n :key=\"`${branch.name}-remove`\"\n type=\"button\"\n :class=\"buttonClass\"\n :data-testid=\"`${fieldMetadata.path}.${branch.name}-remove-choice-button`\"\n @click=\"removeChoiceOccurrence(branch.name)\"\n >\n Remove {{ branch.name }}\n </button>\n </div>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6 ms-6\">\n <slot :level=\"(slotProps?.level ?? 0) + 1\" :below-choice-field=\"true\" />\n </div>\n <pre class=\"text-sm whitespace-pre-wrap\">{{ fieldMetadata.description }}</pre>\n <span\n v-if=\"errorMessage.value\"\n class=\"text-red-600 text-sm\"\n :data-testid=\"`${fieldMetadata.path}-error-message`\"\n >{{ errorMessage.value }}</span>\n </div>\n </template>\n\n <!--\n Same harness as #default-choice, but for repeatable (maxOccurs > 1) choices, which\n dispatch through the -choice-array slot family. Identical markup and testids so tests\n drive both modes through the same selectors.\n -->\n <template #default-choice-array=\"{ fieldMetadata, fieldContext: { errorMessage, label }, disabled, required, slotProps, settings: { showOptionalInsteadOfRequired }, addChoiceOccurrence, removeChoiceOccurrence, canAddChoiceOccurrence, usedChoiceOccurrences }\">\n <div v-if=\"!fieldMetadata.hidden\" class=\"flex flex-col gap-2\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <span class=\"flex gap-2 items-center\" :class=\"{ 'text-gray-500': disabled }\">\n {{ label }}\n <span v-if=\"required && !showOptionalInsteadOfRequired\" class=\"text-red-500 dark:text-rose-400\">*</span>\n <span v-if=\"!required && showOptionalInsteadOfRequired\" class=\"text-sm text-gray-400\">(optional)</span>\n </span>\n <div>Used choice occurrences: <span :data-testid=\"`${fieldMetadata.path}-used-choice-occurrences`\">{{ usedChoiceOccurrences }}</span></div>\n <div v-if=\"fieldMetadata.choice?.length\" class=\"flex gap-2 flex-wrap\">\n <button\n v-for=\"branch in fieldMetadata.choice\"\n :key=\"`${branch.name}-add`\"\n type=\"button\"\n :class=\"buttonClass\"\n :disabled=\"!canAddChoiceOccurrence(branch.name)\"\n :data-testid=\"`${fieldMetadata.path}.${branch.name}-add-choice-button`\"\n @click=\"addChoiceOccurrence(branch.name)\"\n >\n Add {{ branch.name }}\n </button>\n <button\n v-for=\"branch in fieldMetadata.choice\"\n :key=\"`${branch.name}-remove`\"\n type=\"button\"\n :class=\"buttonClass\"\n :data-testid=\"`${fieldMetadata.path}.${branch.name}-remove-choice-button`\"\n @click=\"removeChoiceOccurrence(branch.name)\"\n >\n Remove {{ branch.name }}\n </button>\n </div>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6 ms-6\">\n <slot :level=\"(slotProps?.level ?? 0) + 1\" :below-choice-field=\"true\" />\n </div>\n <pre class=\"text-sm whitespace-pre-wrap\">{{ fieldMetadata.description }}</pre>\n <span\n v-if=\"errorMessage.value\"\n class=\"text-red-600 text-sm\"\n :data-testid=\"`${fieldMetadata.path}-error-message`\"\n >{{ errorMessage.value }}</span>\n </div>\n </template>\n\n <template #default-choice-array-item=\"{ fieldMetadata, slotProps, branchKey, globalIndex, insertionOrder, canAddItems, addItem, removeItem }\">\n <!--\n Repeatable explicit-choice occurrence test harness: renders the branchKey slot\n prop directly (as a \"kind badge\") so tests can assert it arrived as a real slot prop\n rather than being inferred from the path, plus add/remove buttons wired to\n addItem/removeItem (addItem appends another occurrence of this occurrence's own branch,\n so the occurrence behaves like a regular array item). Forwards the default slot for the\n occurrence's own fields, mirroring #default's own remove-button pattern. insertionOrder is optional (undefined for an occurrence never\n added this session), so its absence is asserted as \"the testid does not exist\" rather\n than a rendered \"undefined\" string.\n -->\n <div v-if=\"!fieldMetadata.hidden\" class=\"flex flex-col gap-2 border-s-2 ps-2\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <div class=\"flex gap-2 items-center\">\n <span :data-testid=\"`${fieldMetadata.path}-kind-badge`\">{{ branchKey }}</span>\n globalIndex: <span :data-testid=\"`${fieldMetadata.path}-global-index`\">{{ globalIndex }}</span>\n insertionOrder: <span v-if=\"insertionOrder !== undefined\" :data-testid=\"`${fieldMetadata.path}-insertion-order`\">{{ insertionOrder }}</span>\n <IconButton v-if=\"canAddItems\" icon=\"plus\" tabindex=\"-1\" :data-testid=\"`${fieldMetadata.path}-add-choice-button`\" @click=\"addItem\" />\n <IconButton icon=\"minus\" tabindex=\"-1\" color=\"red\" :data-testid=\"`${fieldMetadata.path}-remove-choice-button`\" @click=\"removeItem\" />\n </div>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <slot :level=\"(slotProps?.level ?? 0) + 1\" />\n </div>\n </div>\n </template>\n\n <!--\n Wizard container test harness: builds its stepper purely from the `pages` slot prop (never\n `fieldMetadata.children`), so a stepper/navigation desync would fail any test asserting the\n rendered step list against actual navigation. Buttons/spans mirror the -choice harness above.\n -->\n <template #default-wizard=\"{ fieldMetadata, fieldContext: { errorMessage, label }, pages, currentStepIndex, pageCount, isFirst, isLast, isValidating, wizardConfig, next, prev, gotoStep, slotProps }\">\n <div class=\"flex flex-col gap-2\">\n <span>{{ label }}</span>\n <div class=\"flex gap-2 flex-wrap\">\n <button\n v-for=\"(page, pageIndex) in pages\"\n :key=\"page.path\"\n type=\"button\"\n :class=\"buttonClass\"\n :data-testid=\"`${fieldMetadata.path}-goto-${pageIndex}-button`\"\n @click=\"gotoStep(pageIndex)\"\n >\n {{ page.name }}\n </button>\n </div>\n <div class=\"flex gap-2\">\n <button type=\"button\" :class=\"buttonClass\" :data-testid=\"`${fieldMetadata.path}-prev-button`\" @click=\"prev\">\n Previous\n </button>\n <button type=\"button\" :class=\"buttonPrimaryClass\" :data-testid=\"`${fieldMetadata.path}-next-button`\" @click=\"next\">\n Next\n </button>\n </div>\n <span\n v-if=\"errorMessage.value\"\n class=\"text-red-600 text-sm\"\n :data-testid=\"`${fieldMetadata.path}-error-message`\"\n >{{ errorMessage.value }}</span>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6 ms-6\">\n <slot :level=\"(slotProps?.level ?? 0) + 1\" />\n </div>\n <div>currentStepIndex: <span :data-testid=\"`${fieldMetadata.path}-currentStepIndex`\">{{ currentStepIndex }}</span></div>\n <div>pageCount: <span :data-testid=\"`${fieldMetadata.path}-pageCount`\">{{ pageCount }}</span></div>\n <div>isFirst: <span :data-testid=\"`${fieldMetadata.path}-isFirst`\">{{ isFirst }}</span></div>\n <div>isLast: <span :data-testid=\"`${fieldMetadata.path}-isLast`\">{{ isLast }}</span></div>\n <div>isValidating: <span :data-testid=\"`${fieldMetadata.path}-isValidating`\">{{ isValidating }}</span></div>\n <div>allowForwardJump: <span :data-testid=\"`${fieldMetadata.path}-wizardConfig-allowForwardJump`\">{{ wizardConfig.allowForwardJump }}</span></div>\n <div>validateOnJump: <span :data-testid=\"`${fieldMetadata.path}-wizardConfig-validateOnJump`\">{{ wizardConfig.validateOnJump }}</span></div>\n </div>\n </template>\n\n <!--\n Wizard page visibility wrapper. The correct implementation gates with v-show (keeps every\n page mounted so values and validation survive navigation). The wizardPageUseVIf setting flips\n it to v-if so a playground can show the clear-on-unmount data loss v-show avoids; it defaults\n off, so tests and every other consumer keep the correct v-show behaviour.\n\n Binds gotoStep onto its slot (and threads the level convention through) so a page's own\n content can offer jump-to-step affordances, e.g. edit links on a summary page.\n -->\n <template #default-wizard-page=\"{ fieldMetadata, isCurrent, gotoStep, slotProps, settings: { wizardPageUseVIf } }\">\n <div\n v-if=\"!wizardPageUseVIf\"\n v-show=\"isCurrent\"\n :data-testid=\"`${fieldMetadata.path}-page`\"\n :data-current=\"isCurrent\"\n >\n <slot :goto-step :level=\"slotProps?.level\" />\n </div>\n <div\n v-else-if=\"isCurrent\"\n :data-testid=\"`${fieldMetadata.path}-page`\"\n :data-current=\"isCurrent\"\n >\n <slot :goto-step :level=\"slotProps?.level\" />\n </div>\n </template>\n\n <template #default-array=\"{ fieldMetadata, fieldContext: { errorMessage, label }, disabled, required, canAddItems, addItem, settings: { showOptionalInsteadOfRequired } }\">\n <div v-if=\"!fieldMetadata.hidden\" class=\"flex flex-col gap-2\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <label :for=\"`${fieldMetadata.path}[0]`\" :class=\"{ 'text-gray-500': fieldMetadata.disabled || disabled }\" class=\"flex gap-2 items-center\">\n {{ label }}\n <span v-if=\"required && !showOptionalInsteadOfRequired\" class=\"text-red-500 dark:text-rose-400\">*</span>\n <span v-if=\"!required && showOptionalInsteadOfRequired\" class=\"text-sm text-gray-400\">(optional)</span>\n <IconButton v-if=\"canAddItems\" icon=\"plus\" tabindex=\"-1\" :data-testid=\"`${fieldMetadata.path}-add-button`\" @click=\"addItem\" />\n </label>\n <slot :hide-label=\"true\" />\n <pre class=\"text-sm whitespace-pre-wrap\">{{ fieldMetadata.description }}</pre>\n <span\n v-if=\"errorMessage.value\"\n class=\"text-red-600 text-sm\"\n :data-testid=\"`${fieldMetadata.path}-error-message`\"\n >{{ errorMessage.value }}</span>\n </div>\n </template>\n\n <template #default=\"{ fieldMetadata, fieldContext: { errorMessage, label }, disabled, required, canRemoveItems, removeItem, slotProps, settings: { showOptionalInsteadOfRequired } }\">\n <div v-if=\"!fieldMetadata.hidden\" class=\"flex flex-col gap-2\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <label v-if=\"!slotProps?.hideLabel\" :for=\"fieldMetadata.path\" :class=\"{ 'text-gray-500': fieldMetadata.disabled || disabled }\" class=\"flex gap-1 items-center\">\n {{ label }}\n <span v-if=\"required && !showOptionalInsteadOfRequired\" class=\"text-red-500 dark:text-rose-400\">*</span>\n <span v-if=\"!required && showOptionalInsteadOfRequired\" class=\"text-sm text-gray-400\">(optional)</span>\n </label>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex flex-col grow\">\n <slot />\n </div>\n <IconButton :class=\"{ invisible: !canRemoveItems }\" icon=\"minus\" tabindex=\"-1\" color=\"red\" :data-testid=\"`${fieldMetadata.path}-remove-button`\" @click=\"removeItem\" />\n </div>\n <pre class=\"text-sm whitespace-pre-wrap\">{{ fieldMetadata.description }}</pre>\n <span\n v-if=\"errorMessage.value\"\n class=\"text-red-600 text-sm\"\n :data-testid=\"`${fieldMetadata.path}-error-message`\"\n >{{ errorMessage.value }}</span>\n </div>\n <slot name=\"attributes\" />\n </template>\n\n <template #group-array=\"{ fieldMetadata, fieldContext: { errorMessage, label }, disabled, required, canAddItems, addItem, slotProps, settings: { showOptionalInsteadOfRequired } }\">\n <template v-if=\"fieldMetadata.hidden\" />\n <!-- In case we're below a choice field, the first array item is not automatically added, so show a label with buttons -->\n <div v-else-if=\"slotProps?.belowChoiceField\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <span class=\"flex gap-2 items-center mb-2\" :class=\"{ 'text-gray-500': fieldMetadata.disabled || disabled }\">\n {{ label }}\n <span v-if=\"required && !showOptionalInsteadOfRequired\" class=\"text-red-500 dark:text-rose-400\">*</span>\n <span v-if=\"!required && showOptionalInsteadOfRequired\" class=\"text-sm text-gray-400\">(optional)</span>\n <IconButton v-if=\"canAddItems\" icon=\"plus\" tabindex=\"-1\" :data-testid=\"`${fieldMetadata.path}-add-button`\" @click=\"addItem\" />\n </span>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6 ms-6\">\n <slot :level=\"(slotProps?.level ?? 0) + 1\" />\n </div>\n <pre class=\"text-sm whitespace-pre-wrap\">{{ fieldMetadata.description }}</pre>\n <span\n v-if=\"errorMessage.value\"\n class=\"text-red-600 text-sm\"\n :data-testid=\"`${fieldMetadata.path}-error-message`\"\n >{{ errorMessage.value }}</span>\n </div>\n <!-- In case we show an input directly, show a label and buttons -->\n <slot v-else />\n </template>\n\n <template #group=\"{ fieldMetadata, fieldContext: { errorMessage, label }, disabled, required, canAddItems, canRemoveItems, addItem, removeItem, slotProps, settings: { showOptionalInsteadOfRequired } }\">\n <!-- In case of a grouped field we render the field differently -->\n <div v-if=\"!fieldMetadata.hidden\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <span v-if=\"!slotProps?.hideLabel\" class=\"flex gap-2 items-center mb-2\" :class=\"{ 'text-gray-500': fieldMetadata.disabled || disabled }\">\n {{ label }}\n <span v-if=\"required && !showOptionalInsteadOfRequired\" class=\"text-red-500 dark:text-rose-400\">*</span>\n <span v-if=\"!required && showOptionalInsteadOfRequired\" class=\"text-sm text-gray-400\">(optional)</span>\n <IconButton v-if=\"canAddItems\" icon=\"plus\" tabindex=\"-1\" :data-testid=\"`${fieldMetadata.path}-add-button`\" @click=\"addItem\" />\n <IconButton v-if=\"canRemoveItems\" icon=\"minus\" tabindex=\"-1\" :data-testid=\"`${fieldMetadata.path}-remove-button`\" color=\"red\" @click=\"removeItem\" />\n </span>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6 ms-6\">\n <slot :level=\"(slotProps?.level ?? 0) + 1\" />\n </div>\n <pre class=\"text-sm whitespace-pre-wrap\">{{ fieldMetadata.description }}</pre>\n <span\n v-if=\"errorMessage.value\"\n class=\"text-red-600 text-sm\"\n :data-testid=\"`${fieldMetadata.path}-error-message`\"\n >{{ errorMessage.value }}</span>\n </div>\n <slot name=\"attributes\" />\n </template>\n\n <template #select-input=\"{ fieldMetadata, fieldContext: { value, handleBlur, handleChange }, disabled }\">\n <select\n :id=\"fieldMetadata.path\"\n :value=\"value.value\"\n :disabled=\"fieldMetadata.disabled || disabled\"\n class=\"h-9 bg-gray-100 border-gray-200 border rounded px-3 text-sm\"\n @change=\"handleChange\"\n @blur=\"handleBlur\"\n >\n <option v-for=\"{ key: optionKey, value: optionValue } in fieldMetadata.options\" :key=\"optionKey\" :value=\"optionKey\">\n {{ optionValue }}\n </option>\n </select>\n </template>\n\n <template #selectBoundByVModel-input=\"{ fieldMetadata, fieldContext: { value, handleBlur }, disabled }\">\n <select\n :id=\"fieldMetadata.path\"\n v-model=\"value.value\"\n :disabled=\"fieldMetadata.disabled || disabled\"\n class=\"h-9 bg-gray-100 border-gray-200 border rounded px-3 text-sm\"\n @blur=\"handleBlur\"\n >\n <option v-for=\"{ key: optionKey, value: optionValue } in fieldMetadata.options\" :key=\"optionKey\" :value=\"optionKey\">\n {{ optionValue }}\n </option>\n </select>\n </template>\n\n <template #checkbox-input=\"{ fieldMetadata, fieldContext: { value, handleBlur, handleChange }, disabled }\">\n <input\n :id=\"fieldMetadata.path\"\n :checked=\"value.value\"\n :disabled=\"fieldMetadata.disabled || disabled\"\n type=\"checkbox\"\n class=\"h-6 bg-gray-100 border-gray-200 border rounded px-3 text-sm\"\n @change=\"handleChange(($event.target as HTMLInputElement).checked)\"\n @blur=\"handleBlur\"\n >\n </template>\n\n <template #checkboxBoundByVModel-input=\"{ fieldMetadata, fieldContext: { value, handleBlur }, disabled }\">\n <input\n :id=\"fieldMetadata.path\"\n v-model=\"value.value\"\n :disabled=\"fieldMetadata.disabled || disabled\"\n type=\"checkbox\"\n class=\"h-6 bg-gray-100 border-gray-200 border rounded px-3 text-sm\"\n @blur=\"handleBlur\"\n >\n </template>\n\n <template #textBoundByVModel-input=\"{ fieldMetadata, fieldContext: { value, handleBlur }, disabled }\">\n <input\n :id=\"fieldMetadata.path\"\n v-model=\"value.value\"\n :disabled=\"fieldMetadata.disabled || disabled\"\n type=\"text\"\n class=\"h-9 bg-gray-100 border-gray-200 border rounded px-3 text-sm\"\n @blur=\"handleBlur\"\n >\n </template>\n\n <template #default-input=\"{ fieldMetadata, fieldContext: { value, handleBlur, handleChange }, disabled }\">\n <input\n :id=\"fieldMetadata.path\"\n :value=\"value.value\"\n :disabled=\"fieldMetadata.disabled || disabled\"\n type=\"text\"\n class=\"h-9 bg-gray-100 border-gray-200 border rounded px-3 text-sm\"\n @input=\"handleChange\"\n @blur=\"handleBlur\"\n >\n </template>\n </DynamicFormTemplate>\n</template>\n","<script setup lang=\"ts\">\nimport type { GenericObject } from 'vee-validate';\n\nimport type { DynamicFormSettings, Metadata } from './TestFormTemplate.vue';\nimport { computed, ref } from 'vue';\nimport { checkTreeHasValue } from '@/utils/checkTreeHasValue';\nimport { mapEachMetadataItem } from '@/utils/mapEachMetadataItem';\nimport DynamicForm from '../components/DynamicForm.vue';\nimport { useDynamicForm } from '../core/useDynamicForm';\nimport TestFormTemplate from './TestFormTemplate.vue';\n\nexport interface Props {\n metadata: Metadata[]\n settings?: DynamicFormSettings\n showDebugState?: boolean\n initialEdit?: boolean\n hideFieldsWithoutValue?: boolean\n initialValues?: GenericObject\n keepValuesOnUnmount?: boolean\n}\n\nconst { metadata, settings: _settings, initialEdit = true, hideFieldsWithoutValue = false, showDebugState = false, initialValues, keepValuesOnUnmount } = defineProps<Props>();\n\nconst { values, handleSubmit, errors, meta } = useDynamicForm({\n initialValues,\n // Passed as a computed ref (not the destructured value directly) so a live toggle of the prop\n // after mount keeps affecting unmount behaviour, instead of freezing whatever it was at setup time.\n keepValuesOnUnmount: computed(() => keepValuesOnUnmount),\n});\nconst manualValues = ref();\nconst editMode = ref(initialEdit);\nconst isSubmitted = ref(false);\n\n// Add edit mode functionality to the form. In case we're not in edit mode, disable all items.\nconst metadataWithEdit = computed(() => metadata?.map(x => mapEachMetadataItem(x, (item) => {\n item.computedProps = item.computedProps ?? [];\n\n // Disable all fields when not in edit mode\n item.computedProps.push((thisField) => {\n if (!editMode.value)\n thisField.disabled = true;\n });\n\n if (hideFieldsWithoutValue) {\n // In view mode, hide fields that have no value\n item.computedProps.push((thisField, fieldValue) => {\n if (!editMode.value && !checkTreeHasValue(fieldValue.value))\n thisField.hidden = true;\n });\n\n // In view mode, hide a parent field when all of its children are hidden\n item.computedProps.push((thisField, _fieldValue, childFields) => {\n if (!editMode.value && childFields.value.length > 0 && childFields.value.every(c => c.hidden))\n thisField.hidden = true;\n });\n }\n\n return item;\n})));\n\nconst settings = computed(() => ({\n analytics: true,\n messages: {\n required: '{field} is required',\n minOccurs: 'At least {min} items required',\n maxOccurs: 'At most {max} items allowed',\n choiceMinOccurs: 'The following fields need to occur at least {min} time(s): {field}',\n choiceMaxOccurs: 'The following fields may occur at most {max} time(s): {field}',\n maxOccursTotal: 'This branch may occur at most {max} time(s) in total: {field}',\n minLength: 'The minimum length of {field} is {length}',\n maxLength: 'The maximum length of {field} is {length}',\n length: '{field} must be exactly {length} characters',\n pattern: '{field} does not match the required pattern',\n minInclusive: '{field} must be at least {min}',\n maxInclusive: '{field} must be at most {max}',\n minExclusive: '{field} must be greater than {min}',\n maxExclusive: '{field} must be less than {max}',\n enumeration: '{field} must be one of the allowed values',\n whiteSpace: '{field} contains invalid whitespace (mode: {mode})',\n fractionDigits: '{field} may have at most {digits} decimal place(s)',\n totalDigits: '{field} may have at most {digits} significant digit(s)',\n },\n ...(_settings ?? {}),\n}));\n\nfunction submit(e?: Event) {\n handleSubmit(\n (_values) => {\n isSubmitted.value = true;\n editMode.value = false;\n },\n ({ errors: _errors }) => {\n isSubmitted.value = false;\n },\n )(e);\n};\n</script>\n\n<template>\n <form @submit.prevent=\"submit\">\n <div class=\"flex justify-end gap-2\">\n <button v-if=\"!editMode\" type=\"button\" class=\"cursor-pointer mt-4 bg-blue-500 text-white px-4 py-2 rounded\" data-testid=\"submit\" @click=\"editMode = true\">\n Edit\n </button>\n <button v-if=\"editMode\" type=\"submit\" class=\"cursor-pointer mt-4 bg-blue-500 text-white px-4 py-2 rounded\" data-testid=\"submit\">\n Submit\n </button>\n <button v-if=\"editMode\" type=\"button\" class=\"cursor-pointer mt-4 bg-gray-200 text-black px-4 py-2 rounded\" data-testid=\"cancel\" @click=\"editMode = false\">\n Cancel\n </button>\n </div>\n <div v-if=\"Object.values(errors).length\" data-testid=\"errors\" class=\"col-12 text-red-600\">\n Errors:\n <ul>\n <li v-for=\"(error, key) in errors\" :key=\"key\">\n <span v-html=\"error\" />\n </li>\n </ul>\n </div>\n <DynamicForm\n :template=\"TestFormTemplate\"\n :metadata=\"metadataWithEdit\"\n :settings\n @update:model-value=\"manualValues = $event\"\n />\n <span v-if=\"isSubmitted\" data-testid=\"isSubmitted\" />\n <pre v-if=\"showDebugState\" class=\"bg-gray-100 p-4 rounded-lg text-sm overflow-auto\">\nIsDirty: {{ meta.dirty }}\nPending: {{ meta.pending }}\nTouched: {{ meta.touched }}\nValid: {{ meta.valid }}\nSubmitted: {{ isSubmitted }}\n\n// form values:\n{{ JSON.stringify(values, null, 2) }}\n </pre>\n </form>\n</template>\n","import type { GenericObject } from 'vee-validate';\nimport type { PropType } from 'vue';\nimport type { DynamicFormSettings, Metadata } from '@/examples/TestFormTemplate.vue';\n\nimport { defineComponent, h, markRaw } from 'vue';\nimport TestForm from '@/examples/TestForm.vue';\n\nexport const defaultTestCase = createTestCase([{\n name: 'text',\n type: 'text',\n fieldOptions: { label: 'Text Input' },\n path: 'with.custom.structure',\n restriction: { maxLength: 10 },\n}]);\n\nexport const defaultSampleValues = {\n with: { custom: { structure: 'Order A204' } },\n};\n\nexport const arrayTestCase = createTestCase([{\n name: 'arrays',\n fieldOptions: { label: 'Array Fields' },\n type: 'heading',\n children: [\n { name: 'optionalItems', fieldOptions: { label: 'Optional field (max 3)' }, minOccurs: 0, maxOccurs: 3 },\n { name: 'requiredItems', fieldOptions: { label: 'Required field (max 3)' }, maxOccurs: 3 },\n { name: 'twoRequired', fieldOptions: { label: '2 Fields required' }, minOccurs: 2, maxOccurs: 4 },\n { name: 'sections', fieldOptions: { label: 'Section (2 sections required)' }, type: 'heading', minOccurs: 2, maxOccurs: 4, fullWidth: true, children: [\n { name: 'note', fieldOptions: { label: 'Nested field 1' } },\n { name: 'category', fieldOptions: { label: 'Required Nested field 2' }, type: 'select', options: [\n { key: 'option1', value: 'Option 1' },\n { key: 'option2', value: 'Option 2' },\n { key: 'option3', value: 'Option 3' },\n ] },\n { name: 'flag', fieldOptions: { label: 'Nested field 3' }, type: 'checkbox' },\n ] },\n ],\n}]);\n\nexport const arraySampleValues = {\n arrays: {\n optionalItems: ['First note'],\n requiredItems: ['Alpha', 'Beta'],\n twoRequired: ['One', 'Two'],\n sections: [\n { note: 'Section one', category: 'option2', flag: true },\n { note: 'Section two', category: 'option1', flag: false },\n ],\n },\n};\n\nexport const groupTestCase = createTestCase([{\n name: 'groups',\n fieldOptions: { label: 'Grouped Fields' },\n type: 'heading',\n children: [\n { name: 'requiredGroup', fieldOptions: { label: 'Required group' }, type: 'group', children: [\n { name: 'first', fieldOptions: { label: 'Required Nested field 1' }, fullWidth: true },\n { name: 'second', fieldOptions: { label: 'Required Nested field 2' }, fullWidth: true },\n ] },\n { name: 'optionalGroup', fieldOptions: { label: 'Optional group' }, type: 'group', minOccurs: 0, description: `The group is optional, therefore the children will only be required once 1 value is filled in.\n\nYou can test it by filling in one of the fields.`, children: [\n { name: 'first', fieldOptions: { label: 'Required Nested field 1' }, fullWidth: true },\n { name: 'second', fieldOptions: { label: 'Required Nested field 2' }, fullWidth: true },\n ] },\n ],\n}, {\n name: 'groupArrays',\n fieldOptions: { label: 'Grouped Array Fields' },\n type: 'heading',\n children: [\n { name: 'requiredGroups', fieldOptions: { label: 'Required group' }, type: 'group', maxOccurs: 5, fullWidth: true, children: [\n { name: 'first', fieldOptions: { label: 'Required Nested field 1' } },\n { name: 'second', fieldOptions: { label: 'Required Nested field 2' } },\n ] },\n { name: 'optionalGroups', fieldOptions: { label: 'Optional group' }, type: 'group', minOccurs: 0, maxOccurs: 5, fullWidth: true, children: [\n { name: 'first', fieldOptions: { label: 'Required Nested field 1' } },\n { name: 'second', fieldOptions: { label: 'Required Nested field 2' } },\n ] },\n ],\n}]);\n\nexport const groupSampleValues = {\n groups: {\n requiredGroup: { first: 'Ada', second: 'Lovelace' },\n optionalGroup: { first: 'Grace', second: 'Hopper' },\n },\n groupArrays: {\n requiredGroups: [\n { first: 'Alan', second: 'Turing' },\n { first: 'Edsger', second: 'Dijkstra' },\n ],\n optionalGroups: [\n { first: 'Barbara', second: 'Liskov' },\n ],\n },\n};\n\nexport const choiceTestCase = createTestCase([\n {\n name: 'simpleChoiceSection',\n fieldOptions: { label: 'Choice Fields (minOccurs 1, maxOccurs 1)' },\n type: 'heading',\n children: [\n { name: 'contactMethod', fieldOptions: { label: 'Simple Choice Field' }, fullWidth: true, description: `In a choice field, only 1 of the fields can be filled in.`, choice: [\n { name: 'primary', fieldOptions: { label: 'Nested Field 1' } },\n { name: 'secondary', fieldOptions: { label: 'Nested Field 2' } },\n ] },\n ],\n },\n {\n name: 'groupedChoiceSection',\n fieldOptions: { label: 'Choice Grouped Fields (minOccurs 1, maxOccurs 3)' },\n type: 'heading',\n children: [\n { name: 'pick', fieldOptions: { label: 'Array Choice Field' }, type: 'group', maxOccurs: 3, fullWidth: true, description: `In a choice field, only 1 of the fields can be filled in.`, choice: [\n { name: 'optionA', fieldOptions: { label: 'Nested Field 1' }, type: 'group', children: [\n { name: 'detail1', fieldOptions: { label: 'Nested Child Field 1' }, fullWidth: true },\n { name: 'detail2', fieldOptions: { label: 'Nested Child Field 2' }, fullWidth: true },\n ] },\n { name: 'optionB', fieldOptions: { label: 'Nested Field 2' }, type: 'group', children: [\n { name: 'detail1', fieldOptions: { label: 'Nested Child Field 1' }, fullWidth: true },\n { name: 'detail2', fieldOptions: { label: 'Nested Child Field 2' }, fullWidth: true },\n ] },\n ] },\n ],\n },\n {\n name: 'arrayChoiceSection',\n fieldOptions: { label: 'Choice Array Fields (minOccurs 1, maxOccurs 3)' },\n type: 'heading',\n children: [\n { name: 'pick', fieldOptions: { label: 'Array Choice Field' }, type: 'group', maxOccurs: 3, fullWidth: true, description: `In a choice field, only 1 of the fields can be filled in.`, choice: [\n { name: 'optionA', fieldOptions: { label: 'Nested Field 1' }, maxOccurs: 3 },\n { name: 'optionB', fieldOptions: { label: 'Nested Field 2' }, maxOccurs: 3 },\n ] },\n ],\n },\n]);\n\nexport const choiceSampleValues = {\n // Only one branch per choice carries a value, honouring the mutually exclusive rule.\n simpleChoiceSection: { contactMethod: { primary: 'Picked the first branch' } },\n groupedChoiceSection: {\n pick: { optionA: [{ detail1: 'Group A, item 1a', detail2: 'Group A, item 1b' }] },\n },\n arrayChoiceSection: {\n pick: { optionA: ['First entry', 'Second entry'] },\n },\n};\n\nexport const childFieldsTestCase = createTestCase([\n {\n fieldOptions: { label: 'Personal Info' },\n type: 'heading',\n name: 'person',\n description: 'Only showing the fields that have a value. Click edit to change.',\n fullWidth: true,\n children: [\n { name: 'firstName', fieldOptions: { label: 'First Name' } },\n { name: 'lastName', fieldOptions: { label: 'Last Name' } },\n { name: 'email', fieldOptions: { label: 'Email' } },\n ],\n },\n {\n fieldOptions: { label: 'Address' },\n type: 'heading',\n name: 'address',\n fullWidth: true,\n children: [\n { name: 'street', fieldOptions: { label: 'Street' }, minOccurs: 0 },\n { name: 'city', fieldOptions: { label: 'City' }, minOccurs: 0 },\n { name: 'country', fieldOptions: { label: 'Country' }, minOccurs: 0 },\n ],\n },\n], undefined, {\n initialEdit: false,\n hideFieldsWithoutValue: true,\n initialValues: {\n person: {\n firstName: 'Jack',\n lastName: 'Smit',\n },\n },\n});\n\nexport const childFieldsSampleValues = {\n person: {\n firstName: 'Ada',\n lastName: 'Lovelace',\n email: 'ada@example.com',\n },\n address: {\n street: 'Baker Street 221B',\n city: 'London',\n country: 'United Kingdom',\n },\n};\n\nexport const inputTypesTestCase = createTestCase([\n {\n name: 'inputs',\n fieldOptions: { label: 'All Input Types' },\n type: 'heading',\n description: 'Every dedicated input slot plus the default fallback, in both handleChange and v-model binding styles.',\n children: [\n { name: 'text', type: 'text', fieldOptions: { label: 'Text' } },\n { name: 'textBoundByVModel', type: 'textBoundByVModel', fieldOptions: { label: 'Text (v-model)' } },\n { name: 'select', type: 'select', fieldOptions: { label: 'Select' }, options: [\n { key: 'option1', value: 'Option 1' },\n { key: 'option2', value: 'Option 2' },\n { key: 'option3', value: 'Option 3' },\n ] },\n { name: 'selectBoundByVModel', type: 'selectBoundByVModel', fieldOptions: { label: 'Select (v-model)' }, options: [\n { key: 'option1', value: 'Option 1' },\n { key: 'option2', value: 'Option 2' },\n { key: 'option3', value: 'Option 3' },\n ] },\n { name: 'checkbox', type: 'checkbox', minOccurs: 0, fieldOptions: { label: 'Checkbox' } },\n { name: 'checkboxBoundByVModel', type: 'checkboxBoundByVModel', minOccurs: 0, fieldOptions: { label: 'Checkbox (v-model)' } },\n { name: 'noType', fieldOptions: { label: 'No type (default-input fallback)' } },\n ],\n },\n {\n name: 'staticProps',\n fieldOptions: { label: 'Static Field Props' },\n type: 'heading',\n description: 'One field here has hidden: true and should not render at all.',\n children: [\n { name: 'optionalField', minOccurs: 0, fieldOptions: { label: 'Optional field (minOccurs 0)' } },\n { name: 'disabledField', minOccurs: 0, disabled: true, fieldOptions: { label: 'Disabled field' } },\n { name: 'hiddenField', minOccurs: 0, hidden: true, fieldOptions: { label: 'Hidden field (should not be visible)' } },\n { name: 'fullWidthField', minOccurs: 0, fullWidth: true, fieldOptions: { label: 'Full width field' } },\n { name: 'describedField', minOccurs: 0, description: 'A per-field description rendered below the input.', fieldOptions: { label: 'Field with description' } },\n ],\n },\n]);\n\nexport const inputTypesSampleValues = {\n inputs: {\n text: 'Hello world',\n textBoundByVModel: 'Two-way bound',\n select: 'option2',\n selectBoundByVModel: 'option3',\n checkbox: true,\n checkboxBoundByVModel: false,\n noType: 'Fallback input',\n },\n staticProps: {\n optionalField: 'Filled optional',\n disabledField: 'Preset while disabled',\n fullWidthField: 'Spans the full width',\n describedField: 'Described value',\n },\n};\n\nexport const restrictionsTestCase = createTestCase([\n {\n name: 'strings',\n fieldOptions: { label: 'String Restrictions' },\n type: 'heading',\n description: 'All fields are optional so only the restriction errors surface.',\n children: [\n { name: 'minLength', minOccurs: 0, restriction: { minLength: 3 }, fieldOptions: { label: 'minLength 3' } },\n { name: 'maxLength', minOccurs: 0, restriction: { maxLength: 5 }, fieldOptions: { label: 'maxLength 5' } },\n { name: 'length', minOccurs: 0, restriction: { length: 4 }, fieldOptions: { label: 'length 4 (exact)' } },\n { name: 'pattern', minOccurs: 0, restriction: { pattern: '^[A-Z]{2}-\\\\d{3}$' }, description: 'Two uppercase letters, a dash, three digits (e.g. AB-123).', fieldOptions: { label: 'pattern' } },\n { name: 'enumeration', minOccurs: 0, restriction: { enumeration: ['red', 'green', 'blue'] }, description: 'Only red, green or blue are allowed.', fieldOptions: { label: 'enumeration' } },\n { name: 'whiteSpace', minOccurs: 0, restriction: { whiteSpace: 'collapse' }, description: 'Leading, trailing or double spaces are invalid.', fieldOptions: { label: 'whiteSpace collapse' } },\n ],\n },\n {\n name: 'numbers',\n fieldOptions: { label: 'Numeric Restrictions' },\n type: 'heading',\n children: [\n { name: 'minInclusive', minOccurs: 0, restriction: { minInclusive: 5 }, fieldOptions: { label: 'minInclusive 5 (value >= 5)' } },\n { name: 'maxInclusive', minOccurs: 0, restriction: { maxInclusive: 10 }, fieldOptions: { label: 'maxInclusive 10 (value <= 10)' } },\n { name: 'minExclusive', minOccurs: 0, restriction: { minExclusive: 0 }, fieldOptions: { label: 'minExclusive 0 (value > 0)' } },\n { name: 'maxExclusive', minOccurs: 0, restriction: { maxExclusive: 100 }, fieldOptions: { label: 'maxExclusive 100 (value < 100)' } },\n { name: 'fractionDigits', minOccurs: 0, restriction: { fractionDigits: 2 }, fieldOptions: { label: 'fractionDigits 2 (max 2 decimals)' } },\n { name: 'totalDigits', minOccurs: 0, restriction: { totalDigits: 5 }, fieldOptions: { label: 'totalDigits 5' } },\n ],\n },\n {\n name: 'mixed',\n fieldOptions: { label: 'Combined & Custom' },\n type: 'heading',\n children: [\n { name: 'combined', minOccurs: 0, restriction: { minLength: 2, maxLength: 6, pattern: '^[a-z]+$' }, description: 'minLength 2, maxLength 6 and lowercase-only pattern combined.', fieldOptions: { label: 'Combined restrictions' } },\n { name: 'requiredWithRestriction', restriction: { minLength: 3 }, fieldOptions: { label: 'Required + minLength 3' } },\n { name: 'customValidation', minOccurs: 0, validation: (value: unknown) => !value || String(value).startsWith('A') || 'Value must start with \"A\"', description: 'Custom vee-validate function via the validation property.', fieldOptions: { label: 'Custom validation function' } },\n ],\n },\n]);\n\nexport const restrictionsSampleValues = {\n // Every value here satisfies its restriction, so loading the sample form validates cleanly.\n strings: {\n minLength: 'abcd',\n maxLength: 'abc',\n length: 'code',\n pattern: 'AB-123',\n enumeration: 'green',\n whiteSpace: 'clean text',\n },\n numbers: {\n minInclusive: '7',\n maxInclusive: '9',\n minExclusive: '3',\n maxExclusive: '42',\n fractionDigits: '3.14',\n totalDigits: '12345',\n },\n mixed: {\n combined: 'hello',\n requiredWithRestriction: 'valid',\n customValidation: 'Apple',\n },\n};\n\nexport const arrayOccurrenceTestCase = createTestCase([\n {\n name: 'occurrences',\n fieldOptions: { label: 'Occurrence Variants' },\n type: 'heading',\n children: [\n { name: 'manualFirstItem', minOccurs: 1, maxOccurs: 3, autoAddMinOccurs: false, description: 'Starts empty even though 1 item is required (autoAddMinOccurs: false). Add the first item yourself; submitting while empty shows the minOccurs error.', fieldOptions: { label: 'No auto first item' } },\n { name: 'prefilledToMin', minOccurs: 2, maxOccurs: 4, description: 'Auto-fills 2 empty items on first render (the default behaviour).', fieldOptions: { label: 'Pre-filled to minOccurs 2' } },\n { name: 'manyAllowed', minOccurs: 0, maxOccurs: 10, fieldOptions: { label: 'Optional, up to 10 items' } },\n ],\n },\n {\n name: 'typedArrays',\n fieldOptions: { label: 'Arrays of Other Input Types' },\n type: 'heading',\n children: [\n { name: 'selects', type: 'select', minOccurs: 0, maxOccurs: 3, fieldOptions: { label: 'Select array (max 3)' }, options: [\n { key: 'option1', value: 'Option 1' },\n { key: 'option2', value: 'Option 2' },\n ] },\n { name: 'checkboxes', type: 'checkbox', minOccurs: 0, maxOccurs: 3, fieldOptions: { label: 'Checkbox array (max 3)' } },\n { name: 'vModelTexts', type: 'textBoundByVModel', minOccurs: 0, maxOccurs: 3, fieldOptions: { label: 'v-model text array (max 3)' } },\n ],\n },\n]);\n\nexport const arrayOccurrenceSampleValues = {\n occurrences: {\n manualFirstItem: ['Added by hand'],\n prefilledToMin: ['First', 'Second'],\n manyAllowed: ['One', 'Two', 'Three'],\n },\n typedArrays: {\n selects: ['option1', 'option2'],\n checkboxes: [true, false],\n vModelTexts: ['Alpha', 'Beta'],\n },\n};\n\n// Arrays that arrive already over their maxOccurs from outside the form (an API response, an\n// import, or programmatic initialValues). The \"Add\" button can only stop you going forward, so the\n// only way to reach an over-limit array is to load one: turn on \"Load sample data\" and submit.\nexport const arrayMaxOccursTestCase = createTestCase([\n {\n name: 'overLimit',\n fieldOptions: { label: 'Over-limit Arrays (loaded from initialValues)' },\n type: 'heading',\n children: [\n { name: 'requiredItems', minOccurs: 1, maxOccurs: 2, fieldOptions: { label: 'Required (max 2)' }, description: 'Loaded with 3 items, one over the maximum. Submit to see the xsd_maxOccurs error; the Add button is already disabled.' },\n { name: 'optionalItems', minOccurs: 0, maxOccurs: 2, fieldOptions: { label: 'Optional (max 2)' }, description: 'A non-required array carried no occurrence rule before; loaded with 3 items it now fails xsd_maxOccurs on submit too.' },\n ],\n },\n]);\n\nexport const arrayMaxOccursSampleValues = {\n overLimit: {\n requiredItems: ['First', 'Second', 'Third'],\n optionalItems: ['One', 'Two', 'Three'],\n },\n};\n\nexport const choiceOccurrenceTestCase = createTestCase([\n {\n name: 'optionalChoice',\n fieldOptions: { label: 'Optional Choice (minOccurs 0)' },\n type: 'heading',\n children: [\n { name: 'contact', fieldOptions: { label: 'Optional choice' }, minOccurs: 0, fullWidth: true, description: 'Valid when left completely empty; still only one branch may hold a value.', choice: [\n { name: 'email', fieldOptions: { label: 'Email' } },\n { name: 'phone', fieldOptions: { label: 'Phone' } },\n ] },\n ],\n },\n {\n name: 'twoOccurrence',\n fieldOptions: { label: 'Choice Requiring 2 Occurrences (minOccurs 2, maxOccurs 4)' },\n type: 'heading',\n children: [\n { name: 'contact', fieldOptions: { label: 'At least 2 occurrences' }, minOccurs: 2, maxOccurs: 4, fullWidth: true, description: 'Submit with fewer than 2 filled occurrences to see the choiceMinOccurs error.', choice: [\n { name: 'email', fieldOptions: { label: 'Email' } },\n { name: 'phone', fieldOptions: { label: 'Phone' } },\n ] },\n ],\n },\n {\n name: 'differentLimits',\n fieldOptions: { label: 'Branches With Different Limits (maxOccurs 3)' },\n type: 'heading',\n children: [\n { name: 'entries', fieldOptions: { label: 'Per-iteration branch limits' }, maxOccurs: 3, fullWidth: true, description: 'Branch A allows 2 items per choice iteration, branch B only 1; the choice itself may repeat 3 times.', choice: [\n { name: 'branchA', maxOccurs: 2, fieldOptions: { label: 'Branch A (maxOccurs 2)' } },\n { name: 'branchB', maxOccurs: 1, fieldOptions: { label: 'Branch B (maxOccurs 1)' } },\n ] },\n ],\n },\n {\n name: 'totalCap',\n fieldOptions: { label: 'Branch Total Cap (maxOccursTotal, maxOccurs 4)' },\n type: 'heading',\n children: [\n { name: 'entries', fieldOptions: { label: 'Capped branch totals' }, maxOccurs: 4, fullWidth: true, description: 'The capped branch may reach at most 3 items in total across the whole choice, even though the shared budget would allow more.', choice: [\n { name: 'capped', maxOccurs: 2, maxOccursTotal: 3, fieldOptions: { label: 'Capped (maxOccurs 2, maxOccursTotal 3)' } },\n { name: 'uncapped', maxOccurs: 2, fieldOptions: { label: 'Uncapped (maxOccurs 2)' } },\n ] },\n ],\n },\n {\n name: 'singleBranchCap',\n fieldOptions: { label: 'Single-Branch Total Cap (maxOccursTotal 2)' },\n type: 'heading',\n children: [\n { name: 'tags', fieldOptions: { label: 'Capped single branch' }, fullWidth: true, description: 'A one-branch choice renders its branch directly, with no occurrence budget to share. The branch declares maxOccurs 3 but maxOccursTotal 2, so the add button disables after 2 items.', choice: [\n { name: 'tag', maxOccurs: 3, maxOccursTotal: 2, fieldOptions: { label: 'Tag (maxOccurs 3, maxOccursTotal 2)' } },\n ] },\n { name: 'clamped', fieldOptions: { label: 'Cap above maxOccurs has no effect' }, fullWidth: true, description: 'maxOccursTotal can only tighten: this branch declares maxOccurs 2 with maxOccursTotal 5, and still stops at 2 items.', choice: [\n { name: 'item', maxOccurs: 2, maxOccursTotal: 5, fieldOptions: { label: 'Item (maxOccurs 2, maxOccursTotal 5)' } },\n ] },\n ],\n },\n]);\n\nexport const choiceOccurrenceSampleValues = {\n optionalChoice: { contact: { email: 'ada@example.com' } },\n // Two filled email occurrences satisfy the minOccurs 2 requirement.\n twoOccurrence: { contact: { email: ['ada@example.com', 'grace@example.com'] } },\n differentLimits: { entries: { branchA: ['A-one', 'A-two'] } },\n totalCap: { entries: { capped: ['C-one', 'C-two'] } },\n // Both single branches filled exactly to their effective cap, so every add button is disabled.\n singleBranchCap: { tags: { tag: ['T-one', 'T-two'] }, clamped: { item: ['I-one', 'I-two'] } },\n};\n\n// Choices that arrive already over a maximum from outside the form (an API response, an import, or\n// programmatic initialValues). As with arrays, the \"Add\" affordance only prevents going forward, so\n// the errors are reachable only by loading over-limit data: turn on \"Load sample data\" and submit.\nexport const choiceMaxOccursTestCase = createTestCase([\n {\n name: 'tooManyBranches',\n fieldOptions: { label: 'Choice Over maxOccurs (auto mode, maxOccurs 1)' },\n type: 'heading',\n children: [\n { name: 'contact', fieldOptions: { label: 'Only one branch allowed' }, maxOccurs: 1, fullWidth: true, description: 'Loaded with both email and phone filled at once. Two occupied branches exceed maxOccurs 1, so submit shows the xsd_choiceMaxOccurs error.', choice: [\n { name: 'email', fieldOptions: { label: 'Email' } },\n { name: 'phone', fieldOptions: { label: 'Phone' } },\n ] },\n ],\n },\n {\n name: 'branchOverTotal',\n fieldOptions: { label: 'Branch Over maxOccursTotal (maxOccurs 4)' },\n type: 'heading',\n children: [\n { name: 'entries', fieldOptions: { label: 'Capped branch over its total' }, maxOccurs: 4, fullWidth: true, description: 'The capped branch allows at most 2 items in total across the whole choice (maxOccursTotal 2) but is loaded with 3. Submit shows the maxOccursTotal error.', choice: [\n { name: 'capped', maxOccurs: 3, maxOccursTotal: 2, fieldOptions: { label: 'Capped (maxOccursTotal 2)' } },\n { name: 'uncapped', maxOccurs: 3, fieldOptions: { label: 'Uncapped' } },\n ] },\n ],\n },\n {\n name: 'singleBranchOverTotal',\n fieldOptions: { label: 'Single Branch Over maxOccursTotal' },\n type: 'heading',\n children: [\n { name: 'tags', fieldOptions: { label: 'Capped single branch over its total' }, fullWidth: true, description: 'A one-branch choice skips choice-level validation, so a breach surfaces as the branch\\'s own maxOccurs error instead: the branch is capped at 2 items (maxOccursTotal 2) but loaded with 3. Submit to see it.', choice: [\n { name: 'tag', maxOccurs: 3, maxOccursTotal: 2, fieldOptions: { label: 'Tag (maxOccursTotal 2)' } },\n ] },\n ],\n },\n]);\n\nexport const choiceMaxOccursSampleValues = {\n tooManyBranches: { contact: { email: 'ada@example.com', phone: '555-0100' } },\n branchOverTotal: { entries: { capped: ['C-one', 'C-two', 'C-three'] } },\n singleBranchOverTotal: { tags: { tag: ['T-one', 'T-two', 'T-three'] } },\n};\n\nexport const explicitChoiceTestCase = createTestCase([\n {\n name: 'explicitSection',\n fieldOptions: { label: 'Explicit Choice (selection-first)' },\n type: 'heading',\n children: [\n { name: 'contact', fieldOptions: { label: 'Contact method' }, fullWidth: true, explicitChoiceSelection: true, description: 'No branch renders until one is chosen via the add buttons; switching to the other branch clears the current one.', choice: [\n { name: 'email', type: 'group', fieldOptions: { label: 'Email' }, children: [\n { name: 'address', fullWidth: true, fieldOptions: { label: 'Email address' } },\n ] },\n { name: 'phone', type: 'group', fieldOptions: { label: 'Phone' }, children: [\n { name: 'number', fullWidth: true, fieldOptions: { label: 'Phone number' } },\n { name: 'allowSms', type: 'checkbox', minOccurs: 0, fieldOptions: { label: 'Allow SMS' } },\n ] },\n ] },\n ],\n },\n]);\n\nexport const explicitChoiceSampleValues = {\n // A loaded value auto-selects its branch, even though nothing was clicked.\n explicitSection: { contact: { email: { address: 'jane@example.com' } } },\n};\n\nexport const preserveOnSwitchTestCase = createTestCase([\n {\n name: 'preserveSection',\n fieldOptions: { label: 'Explicit Choice With preserveOnSwitch' },\n type: 'heading',\n children: [\n { name: 'contact', fieldOptions: { label: 'Contact method' }, fullWidth: true, explicitChoiceSelection: true, preserveOnSwitch: true, description: 'Fill in Email, switch to Phone and back: the Email value is restored from the stash, with fresh touched/validation state.', choice: [\n { name: 'email', type: 'group', fieldOptions: { label: 'Email' }, children: [\n { name: 'address', fullWidth: true, fieldOptions: { label: 'Email address' } },\n ] },\n { name: 'phone', type: 'group', fieldOptions: { label: 'Phone' }, children: [\n { name: 'number', fullWidth: true, fieldOptions: { label: 'Phone number' } },\n ] },\n ] },\n ],\n },\n]);\n\nexport const preserveOnSwitchSampleValues = {\n preserveSection: { contact: { email: { address: 'restore@example.com' } } },\n};\n\nexport const explicitRepeatableChoiceTestCase = createTestCase([\n {\n name: 'integrationsSection',\n fieldOptions: { label: 'Explicit Repeatable Choice (maxOccurs 5)' },\n type: 'heading',\n children: [\n { name: 'integrations', fieldOptions: { label: 'Integrations' }, fullWidth: true, maxOccurs: 5, explicitChoiceSelection: true, description: 'Add up to 5 occurrences in any mix; each kind is additionally capped at 3 in total (maxOccursTotal), so its add button disables independently.', choice: [\n { name: 'crmExport', maxOccurs: 1, maxOccursTotal: 3, fullWidth: true, fieldOptions: { label: 'CRM export' }, children: [\n { name: 'crmSystem', fieldOptions: { label: 'CRM system' } },\n { name: 'exportSchedule', fieldOptions: { label: 'Export schedule' } },\n ] },\n { name: 'apiEndpoint', maxOccurs: 1, maxOccursTotal: 3, fullWidth: true, fieldOptions: { label: 'API endpoint' }, children: [\n { name: 'url', fieldOptions: { label: 'Endpoint URL' } },\n { name: 'apiKey', fieldOptions: { label: 'API key' } },\n ] },\n ] },\n ],\n },\n]);\n\nexport const explicitRepeatableChoiceSampleValues = {\n // A mix of both kinds; each branch is its own array of occurrences.\n integrationsSection: {\n integrations: {\n crmExport: [\n { crmSystem: 'Salesforce', exportSchedule: 'Nightly' },\n ],\n apiEndpoint: [\n { url: 'https://api.example.com/orders', apiKey: 'key-1234' },\n { url: 'https://api.example.com/customers', apiKey: 'key-5678' },\n ],\n },\n },\n};\n\nexport const choiceDisplayOrderAddedTestCase = createTestCase([\n {\n name: 'timelineSection',\n fieldOptions: { label: 'Repeatable Explicit Choice (displayOrder: added)' },\n type: 'heading',\n children: [\n { name: 'events', fieldOptions: { label: 'Timeline entries' }, fullWidth: true, maxOccurs: 6, explicitChoiceSelection: true, displayOrder: 'added', description: 'Occurrences render in the order their add button was pressed, interleaved across both kinds, instead of grouped by kind. The global-index badge follows the rendered order; the insertion-order badge appears only on occurrences added this session. Pre-loaded occurrences have no add-order, so they sort first in grouped order; reloading drops the add-order entirely.', choice: [\n { name: 'note', maxOccurs: 6, fullWidth: true, fieldOptions: { label: 'Note' }, children: [\n { name: 'text', fullWidth: true, fieldOptions: { label: 'Note text' } },\n ] },\n { name: 'milestone', maxOccurs: 6, fullWidth: true, fieldOptions: { label: 'Milestone' }, children: [\n { name: 'title', fieldOptions: { label: 'Milestone title' } },\n { name: 'owner', fieldOptions: { label: 'Owner' } },\n ] },\n ] },\n ],\n },\n]);\n\nexport const choiceDisplayOrderAddedSampleValues = {\n // Both pre-loaded occurrences lack an add-order, so they render first in grouped order;\n // anything added afterwards appends below them in add-press order.\n timelineSection: {\n events: {\n note: [{ text: 'Loaded note (sorts first, grouped)' }],\n milestone: [{ title: 'Loaded milestone', owner: 'Ada' }],\n },\n },\n};\n\nexport const choicePreserveOrderTestCase = createTestCase([\n {\n name: 'stepsSection',\n fieldOptions: { label: 'Repeatable Explicit Choice (preserveOrder + displayOrder: added)' },\n type: 'heading',\n children: [\n { name: 'steps', fieldOptions: { label: 'Workflow steps' }, fullWidth: true, maxOccurs: 6, explicitChoiceSelection: true, displayOrder: 'added', preserveOrder: true, description: 'Each added occurrence writes a 1-based \"order\" field into its own values (watch the debug output below), counted across both kinds. Removing one compacts the survivors back to a contiguous 1..N. Unlike the ephemeral displayOrder-only case, this order is real submitted data and survives a reload. The pre-loaded occurrences arrive without \"order\" and are backfilled once from their grouped position.', choice: [\n { name: 'manual', maxOccurs: 6, fullWidth: true, fieldOptions: { label: 'Manual step' }, children: [\n { name: 'instruction', fullWidth: true, fieldOptions: { label: 'Instruction' } },\n ] },\n { name: 'automated', maxOccurs: 6, fullWidth: true, fieldOptions: { label: 'Automated step' }, children: [\n { name: 'script', fullWidth: true, fieldOptions: { label: 'Script' } },\n ] },\n ] },\n ],\n },\n]);\n\nexport const choicePreserveOrderSampleValues = {\n // Neither pre-loaded occurrence carries \"order\"; the mount-time backfill assigns 1 and 2 from\n // their grouped position before any add-press can occur.\n stepsSection: {\n steps: {\n manual: [{ instruction: 'Backfilled order 1' }],\n automated: [{ script: 'deploy.sh' }],\n },\n },\n};\n\nexport const choicePreserveOrderScalarBranchTestCase = createTestCase([\n {\n name: 'labelsSection',\n fieldOptions: { label: 'preserveOrder With a Scalar-Leaf Branch (per-branch no-op)' },\n type: 'heading',\n children: [\n { name: 'items', fieldOptions: { label: 'Mixed branches' }, fullWidth: true, maxOccurs: 6, explicitChoiceSelection: true, displayOrder: 'added', preserveOrder: false, description: 'The object branch (with children) gets an \"order\" field written into its values; the scalar-leaf branch (plain text, no children) has nowhere to attach \"order\", so preserveOrder is a no-op for it and logs a console.warn in development. Adding a scalar item still works, it just carries no persisted order.', choice: [\n { name: 'labelled', maxOccurs: 6, fullWidth: true, fieldOptions: { label: 'Labelled item (object branch)' }, children: [\n { name: 'label', fullWidth: true, fieldOptions: { label: 'Label' } },\n ] },\n { name: 'tag', maxOccurs: 6, type: 'text', fullWidth: true, fieldOptions: { label: 'Tag (scalar branch, no order)' } },\n ] },\n ],\n },\n]);\n\nexport const choicePreserveOrderScalarBranchSampleValues = {\n labelsSection: {\n items: {\n labelled: [{ label: 'Has an order field' }],\n tag: ['plain-tag-no-order'],\n },\n },\n};\n\nexport const computedPropsTestCase = createTestCase([\n {\n name: 'ownValue',\n fieldOptions: { label: 'Reacting to Own Value' },\n type: 'heading',\n children: [\n { name: 'charCounter', minOccurs: 0, restriction: { maxLength: 10 }, fieldOptions: { label: 'Character counter' }, computedProps: [\n (field, value) => {\n const length = typeof value.value === 'string' ? value.value.length : 0;\n field.description = `${10 - length} character(s) remaining`;\n },\n ] },\n { name: 'selfHiding', minOccurs: 0, fieldOptions: { label: 'Type \"hide\" to hide me' }, computedProps: [\n (field, value) => {\n if (value.value === 'hide')\n field.hidden = true;\n },\n ] },\n { name: 'selfDisabling', minOccurs: 0, fieldOptions: { label: 'Type \"lock\" to disable me' }, computedProps: [\n (field, value) => {\n if (value.value === 'lock')\n field.disabled = true;\n },\n ] },\n ],\n },\n {\n name: 'progress',\n fieldOptions: { label: 'Parent Reacting to Child Values (computeOnChildValueChange)' },\n type: 'heading',\n computeOnChildValueChange: true,\n computedProps: [\n (field, value) => {\n const childValues = Object.values((value.value ?? {}) as Record<string, unknown>);\n const filled = childValues.filter(v => v !== undefined && v !== null && v !== '').length;\n field.description = `${filled} of 3 fields filled in`;\n },\n ],\n children: [\n { name: 'first', minOccurs: 0, fieldOptions: { label: 'First' } },\n { name: 'second', minOccurs: 0, fieldOptions: { label: 'Second' } },\n { name: 'third', minOccurs: 0, fieldOptions: { label: 'Third' } },\n ],\n },\n {\n name: 'childFieldsDemo',\n fieldOptions: { label: 'Parent Reacting to Child Computed State (childFields)' },\n type: 'heading',\n description: 'Each child hides itself when its value is \"hide\"; once every child is hidden the parent heading hides too.',\n computedProps: [\n (field, _value, childFields) => {\n if (childFields.value.length > 0 && childFields.value.every(c => c.hidden))\n field.hidden = true;\n },\n ],\n children: [\n { name: 'childA', minOccurs: 0, fieldOptions: { label: 'Child A (type \"hide\")' }, computedProps: [\n (field, value) => {\n if (value.value === 'hide')\n field.hidden = true;\n },\n ] },\n { name: 'childB', minOccurs: 0, fieldOptions: { label: 'Child B (type \"hide\")' }, computedProps: [\n (field, value) => {\n if (value.value === 'hide')\n field.hidden = true;\n },\n ] },\n ],\n },\n]);\n\nexport const computedPropsSampleValues = {\n // Values that stay visible/enabled (typing \"hide\"/\"lock\" would trigger the self-hiding demos).\n ownValue: { charCounter: 'Counting', selfHiding: 'still shown', selfDisabling: 'still on' },\n progress: { first: 'Filled one', second: 'Filled two' },\n childFieldsDemo: { childA: 'kept visible' },\n};\n\nexport const attributesTestCase = createTestCase([\n {\n name: 'attributes',\n fieldOptions: { label: 'Attributes' },\n type: 'heading',\n description: 'Attributes render once the parent field has a value; the value becomes an object like { value, ...attributes }. Check the debug output below.',\n children: [\n { name: 'nickname', minOccurs: 0, fullWidth: true, fieldOptions: { label: 'Optional attribute (lang)' }, attributes: [\n { name: 'lang', minOccurs: 0, fieldOptions: { label: 'Language' } },\n ] },\n { name: 'verifiedPhone', fullWidth: true, fieldOptions: { label: 'Required attribute (certainty)' }, attributes: [\n { name: 'certainty', type: 'select', fieldOptions: { label: 'Certainty' }, options: [\n { key: 'verified', value: 'Verified' },\n { key: 'unverified', value: 'Unverified' },\n ] },\n ] },\n ],\n },\n {\n name: 'complexTypes',\n fieldOptions: { label: 'Complex Types' },\n type: 'heading',\n children: [\n { name: 'complexValue', minOccurs: 0, fullWidth: true, isComplexType: true, description: 'isComplexType without attributes: the value is stored as { value: ... }.', fieldOptions: { label: 'isComplexType' } },\n ],\n },\n]);\n\nexport const attributesSampleValues = {\n attributes: {\n // A complex type stores its value plus each attribute under one object.\n nickname: { value: 'Ace', lang: 'en' },\n verifiedPhone: { value: '+31 6 1234 5678', certainty: 'verified' },\n },\n complexTypes: {\n complexValue: { value: 'Wrapped in { value }' },\n },\n};\n\nexport const complexTypeValuePropertyTestCase = createTestCase([\n {\n name: 'customValueProp',\n fieldOptions: { label: 'Custom complexTypeValueProperty' },\n type: 'heading',\n description: 'The settings rename the complex type value property to \"val\", so the debug output shows { val: ..., lang: ... }.',\n children: [\n { name: 'title', minOccurs: 0, fullWidth: true, fieldOptions: { label: 'Title with lang attribute' }, attributes: [\n { name: 'lang', minOccurs: 0, fieldOptions: { label: 'Language' } },\n ] },\n ],\n },\n], {\n complexTypeValueProperty: 'val',\n});\n\nexport const complexTypeValuePropertySampleValues = {\n // The value lives under \"val\" (not \"value\") because of the complexTypeValueProperty setting.\n customValueProp: { title: { val: 'Hello world', lang: 'en' } },\n};\n\nfunction createValidationTimingTestCase(description: string, settings: DynamicFormSettings) {\n return createTestCase([\n {\n name: 'timing',\n fieldOptions: { label: 'Validation Timing' },\n type: 'heading',\n description,\n children: [\n { name: 'requiredField', fieldOptions: { label: 'Required field' } },\n { name: 'maxLengthField', minOccurs: 0, restriction: { maxLength: 5 }, fieldOptions: { label: 'maxLength 5' } },\n ],\n },\n ], settings);\n}\n\n// All four timing variants share the same two-field shape.\nexport const validationTimingSampleValues = {\n timing: { requiredField: 'Filled in', maxLengthField: 'abc' },\n};\n\nexport const validateOnSubmitOnlyTestCase = createValidationTimingTestCase(\n 'validateOnValueUpdate: false, validateWhenInError: false. Errors only appear on submit and stay unchanged while typing until the next submit.',\n { validateOnValueUpdate: false, validateWhenInError: false },\n);\n\nexport const validateOnBlurTestCase = createValidationTimingTestCase(\n 'validateOnBlur: true, validateOnValueUpdate: false. Errors appear when leaving a field, not while typing.',\n { validateOnBlur: true, validateOnValueUpdate: false },\n);\n\nexport const validateAfterSubmitTestCase = createValidationTimingTestCase(\n 'validateOnValueUpdateAfterSubmit: true, validateOnValueUpdate: false. Typing does not validate until the first submit; after that every change validates.',\n { validateOnValueUpdateAfterSubmit: true, validateOnValueUpdate: false },\n);\n\nexport const validateWhenInErrorTestCase = createValidationTimingTestCase(\n 'validateOnValueUpdate: false, validateWhenInError: true. A field only starts live-validating once it is in error (after a submit).',\n { validateOnValueUpdate: false, validateWhenInError: true },\n);\n\nexport const showOptionalInsteadOfRequiredTestCase = createTestCase([\n {\n name: 'optionalMarkers',\n fieldOptions: { label: 'Show \"(optional)\" Instead of \"*\"' },\n type: 'heading',\n description: 'With showOptionalInsteadOfRequired the required markers disappear and optional fields are marked instead.',\n children: [\n { name: 'requiredField', fieldOptions: { label: 'Required field' } },\n { name: 'optionalField', minOccurs: 0, fieldOptions: { label: 'Optional field' } },\n ],\n },\n], {\n showOptionalInsteadOfRequired: true,\n});\n\nexport const showOptionalInsteadOfRequiredSampleValues = {\n optionalMarkers: { requiredField: 'Required value', optionalField: 'Optional value' },\n};\n\nexport const customMessagesTestCase = createTestCase([\n {\n name: 'messages',\n fieldOptions: { label: 'Custom Validation Messages' },\n type: 'heading',\n description: 'The settings override the required, maxLength and minInclusive messages; rules without an override fall back to the library defaults.',\n children: [\n { name: 'requiredField', fieldOptions: { label: 'Required field' } },\n { name: 'maxLengthField', minOccurs: 0, restriction: { maxLength: 5 }, fieldOptions: { label: 'maxLength 5' } },\n { name: 'minInclusiveField', minOccurs: 0, restriction: { minInclusive: 10 }, fieldOptions: { label: 'minInclusive 10' } },\n ],\n },\n], {\n messages: {\n required: 'Custom message: please fill in {field}',\n maxLength: 'Custom message: {field} must stay under {length} characters',\n minInclusive: 'Custom message: {field} must be {min} or higher',\n },\n});\n\nexport const customMessagesSampleValues = {\n messages: { requiredField: 'Filled in', maxLengthField: 'abcd', minInclusiveField: '15' },\n};\n\nexport const individualTestCase = createTestCase(\n [{\n name: 'items',\n type: 'text',\n fieldOptions: { label: 'Items' },\n maxOccurs: 3,\n attributes: [{ name: 'lang', type: 'text', minOccurs: 0 }],\n }],\n {\n // validateOnValueUpdate: false,\n // validateOnValueUpdateAfterSubmit: false,\n // validateWhenInError: true,\n // validateOnBlur: true,\n },\n);\n\nexport const individualSampleValues = {\n // Each repeatable item is a complex type: its text under \"value\" plus the lang attribute.\n items: [\n { value: 'First item', lang: 'en' },\n { value: 'Second item', lang: 'nl' },\n ],\n};\n\n// ----- Wizard -----\n\nconst planOptions = [\n { key: 'starter', value: 'Starter' },\n { key: 'growth', value: 'Growth' },\n { key: 'enterprise', value: 'Enterprise' },\n];\n\n// A backward-only wizard (the default): every page carries a required field, so \"Next\" only\n// advances once the current page validates, and the stepper buttons can only jump to an\n// already-visited earlier page. \"isLast\" is true on the last page, where the form's own Submit\n// button takes over from \"Next\".\nexport const wizardTestCase = createTestCase([{\n name: 'onboarding',\n wizard: true,\n fieldOptions: { label: 'Onboarding wizard (backward-only)' },\n children: [\n {\n name: 'company',\n type: 'heading',\n fieldOptions: { label: 'Company' },\n children: [\n { name: 'companyName', fieldOptions: { label: 'Company name (required)' }, fullWidth: true },\n { name: 'website', minOccurs: 0, fieldOptions: { label: 'Website (optional)' }, fullWidth: true },\n ],\n },\n {\n name: 'plan',\n type: 'heading',\n fieldOptions: { label: 'Plan' },\n children: [\n { name: 'planName', type: 'select', fieldOptions: { label: 'Plan (required)' }, options: planOptions },\n { name: 'seats', minOccurs: 0, fieldOptions: { label: 'Seats (optional)' } },\n ],\n },\n {\n name: 'review',\n type: 'heading',\n fieldOptions: { label: 'Review' },\n children: [\n { name: 'termsAccepted', type: 'checkbox', fieldOptions: { label: 'I accept the terms (required)' } },\n ],\n },\n ],\n}]);\n\nexport const wizardSampleValues = {\n onboarding: {\n company: { companyName: 'Acme Corp', website: 'https://acme.example' },\n plan: { planName: 'growth', seats: '25' },\n review: { termsAccepted: true },\n },\n};\n\n// allowForwardJump: true lets the stepper buttons jump forward to a not-yet-visited page, not just\n// back. Forward jumps do not validate the pages they skip (validateOnJump is off here).\nexport const wizardForwardJumpTestCase = createTestCase([{\n name: 'onboarding',\n wizard: { allowForwardJump: true, validateOnJump: false },\n fieldOptions: { label: 'Wizard with forward jumping' },\n children: [\n {\n name: 'company',\n type: 'heading',\n fieldOptions: { label: 'Company' },\n children: [{ name: 'companyName', fieldOptions: { label: 'Company name (required)' }, fullWidth: true }],\n },\n {\n name: 'plan',\n type: 'heading',\n fieldOptions: { label: 'Plan' },\n children: [{ name: 'planName', type: 'select', fieldOptions: { label: 'Plan (required)' }, options: planOptions }],\n },\n {\n name: 'review',\n type: 'heading',\n fieldOptions: { label: 'Review' },\n children: [{ name: 'termsAccepted', type: 'checkbox', fieldOptions: { label: 'I accept the terms (required)' } }],\n },\n ],\n}]);\n\nexport const wizardForwardJumpSampleValues = {\n onboarding: {\n company: { companyName: 'Acme Corp' },\n plan: { planName: 'enterprise' },\n review: { termsAccepted: true },\n },\n};\n\n// validateOnJump: true (with allowForwardJump) gates every stepper jump on the current page's\n// validation: try jumping away from page 1 while its required field is empty and the jump is\n// blocked with the error shown, exactly like \"Next\".\nexport const wizardValidateOnJumpTestCase = createTestCase([{\n name: 'onboarding',\n wizard: { allowForwardJump: true, validateOnJump: true },\n fieldOptions: { label: 'Wizard with validate-on-jump' },\n children: [\n {\n name: 'company',\n type: 'heading',\n fieldOptions: { label: 'Company' },\n children: [{ name: 'companyName', fieldOptions: { label: 'Company name (required)' }, fullWidth: true }],\n },\n {\n name: 'plan',\n type: 'heading',\n fieldOptions: { label: 'Plan' },\n children: [{ name: 'planName', type: 'select', fieldOptions: { label: 'Plan (required)' }, options: planOptions }],\n },\n {\n name: 'review',\n type: 'heading',\n fieldOptions: { label: 'Review' },\n children: [{ name: 'termsAccepted', type: 'checkbox', fieldOptions: { label: 'I accept the terms (required)' } }],\n },\n ],\n}]);\n\nexport const wizardValidateOnJumpSampleValues = wizardForwardJumpSampleValues;\n\n// Pages of every shape behind one wizard: a plain group page, a repeatable array page, a choice\n// page, and a field-less summary page. Each page renders through its own shape (heading / array /\n// choice) inside the shape-agnostic wizard-page wrapper. allowForwardJump lets you reach them all.\nexport const wizardCompositePagesTestCase = createTestCase([{\n name: 'onboarding',\n wizard: { allowForwardJump: true },\n fieldOptions: { label: 'Wizard with group / array / choice / summary pages' },\n children: [\n {\n name: 'company',\n type: 'heading',\n fieldOptions: { label: 'Company (group page)' },\n children: [\n { name: 'companyName', fieldOptions: { label: 'Company name (required)' }, fullWidth: true },\n ],\n },\n {\n name: 'contacts',\n type: 'heading',\n maxOccurs: 4,\n minOccurs: 1,\n fullWidth: true,\n fieldOptions: { label: 'Contacts (repeatable array page)' },\n children: [\n { name: 'fullName', fieldOptions: { label: 'Full name' } },\n { name: 'email', minOccurs: 0, fieldOptions: { label: 'Email (optional)' } },\n ],\n },\n {\n name: 'launchApproach',\n type: 'heading',\n fullWidth: true,\n fieldOptions: { label: 'Launch approach (choice page)' },\n choice: [\n { name: 'selfServe', type: 'group', fieldOptions: { label: 'Self serve' }, children: [\n { name: 'startDate', fieldOptions: { label: 'Start date' } },\n ] },\n { name: 'guidedRollout', type: 'group', fieldOptions: { label: 'Guided rollout' }, children: [\n { name: 'accountManager', fieldOptions: { label: 'Account manager' } },\n ] },\n ],\n },\n {\n name: 'summary',\n type: 'heading',\n fieldOptions: { label: 'Summary (field-less page)' },\n },\n ],\n}]);\n\nexport const wizardCompositePagesSampleValues = {\n onboarding: {\n company: { companyName: 'Acme Corp' },\n contacts: [\n { fullName: 'Ada Lovelace', email: 'ada@acme.example' },\n { fullName: 'Grace Hopper' },\n ],\n launchApproach: { guidedRollout: { accountManager: 'Alan Turing' } },\n },\n};\n\n// A \"choice of wizards\": the top node is an ordinary explicit choice, and each branch is itself a\n// wizard. Selecting a branch mounts one independent wizard with its own step state; this falls out\n// of the existing choice mechanics with no wizard-specific code.\nexport const choiceOfWizardsTestCase = createTestCase([{\n name: 'setupPath',\n explicitChoiceSelection: true,\n fullWidth: true,\n fieldOptions: { label: 'Pick a setup path (choice of wizards)' },\n choice: [\n {\n name: 'quickStart',\n wizard: { allowForwardJump: true },\n fieldOptions: { label: 'Quick start wizard' },\n children: [\n { name: 'basics', type: 'heading', fieldOptions: { label: 'Basics' }, children: [\n { name: 'projectName', fieldOptions: { label: 'Project name (required)' }, fullWidth: true },\n ] },\n { name: 'done', type: 'heading', fieldOptions: { label: 'Done' }, children: [\n { name: 'confirm', type: 'checkbox', fieldOptions: { label: 'Looks good (required)' } },\n ] },\n ],\n },\n {\n name: 'guidedSetup',\n wizard: { allowForwardJump: true },\n fieldOptions: { label: 'Guided setup wizard' },\n children: [\n { name: 'company', type: 'heading', fieldOptions: { label: 'Company' }, children: [\n { name: 'companyName', fieldOptions: { label: 'Company name (required)' }, fullWidth: true },\n ] },\n { name: 'plan', type: 'heading', fieldOptions: { label: 'Plan' }, children: [\n { name: 'planName', type: 'select', fieldOptions: { label: 'Plan (required)' }, options: planOptions },\n ] },\n { name: 'review', type: 'heading', fieldOptions: { label: 'Review' }, children: [\n { name: 'termsAccepted', type: 'checkbox', fieldOptions: { label: 'Accept terms (required)' } },\n ] },\n ],\n },\n ],\n}]);\n\nexport const choiceOfWizardsSampleValues = {\n setupPath: {\n guidedSetup: {\n company: { companyName: 'Acme Corp' },\n plan: { planName: 'growth' },\n review: { termsAccepted: true },\n },\n },\n};\n\n// A repeated wizard: an array whose item children contain a wizard node. Each occurrence gets its\n// own wizard with independent step state, again with no wizard-specific composition code.\nexport const repeatedWizardTestCase = createTestCase([{\n name: 'teams',\n type: 'heading',\n maxOccurs: 3,\n minOccurs: 1,\n fullWidth: true,\n fieldOptions: { label: 'Teams (each team runs its own wizard)' },\n children: [{\n name: 'setup',\n wizard: { allowForwardJump: true },\n fieldOptions: { label: 'Team setup wizard' },\n children: [\n { name: 'team', type: 'heading', fieldOptions: { label: 'Team' }, children: [\n { name: 'teamName', fieldOptions: { label: 'Team name (required)' }, fullWidth: true },\n ] },\n { name: 'lead', type: 'heading', fieldOptions: { label: 'Lead' }, children: [\n { name: 'leadName', fieldOptions: { label: 'Lead name (required)' }, fullWidth: true },\n ] },\n ],\n }],\n}]);\n\nexport const repeatedWizardSampleValues = {\n teams: [\n { setup: { team: { teamName: 'Platform' }, lead: { leadName: 'Ada Lovelace' } } },\n { setup: { team: { teamName: 'Growth' }, lead: { leadName: 'Grace Hopper' } } },\n ],\n};\n\n// A wizard for exercising the page-gating contract by hand: fill a field on one page, navigate\n// away and back, and watch whether the value survived. All fields are optional so navigation is\n// never blocked by validation, keeping the focus on mount/unmount behaviour. Drive it from the\n// Storybook controls: gate pages with v-show (correct) or v-if (unmounts non-current pages), and\n// toggle keepValuesOnUnmount to see it preserve values even under v-if. The live form values are\n// shown in the debug panel at the bottom.\nexport const wizardKeepValuesTestCase = createTestCase([{\n name: 'onboarding',\n wizard: { allowForwardJump: true },\n fieldOptions: { label: 'Wizard: v-show vs v-if and keepValuesOnUnmount' },\n children: [\n {\n name: 'company',\n type: 'heading',\n fieldOptions: { label: 'Company' },\n children: [{ name: 'companyName', minOccurs: 1, fieldOptions: { label: 'Company name (type something, then navigate away and back)' }, fullWidth: true }],\n },\n {\n name: 'plan',\n type: 'heading',\n fieldOptions: { label: 'Plan' },\n children: [{ name: 'planName', minOccurs: 1, fieldOptions: { label: 'Plan name' }, fullWidth: true }],\n },\n ],\n}]);\n\nexport const wizardKeepValuesSampleValues = {\n onboarding: {\n company: { companyName: 'Acme Corp' },\n plan: { planName: 'Growth' },\n },\n};\n\n// An optional (minOccurs: 0) ancestor relaxes the wizard's pages while the section is untouched:\n// submitting the empty form passes even though the pages carry required fields. Any value typed\n// inside the section re-arms those requirements, so \"Next\" and Submit gate again.\nexport const wizardOptionalAncestorTestCase = createTestCase([{\n name: 'registration',\n type: 'heading',\n minOccurs: 0,\n fieldOptions: { label: 'Optional section containing a wizard' },\n description: 'While this section is empty, nothing in the wizard is required: Submit passes right away. Type into any field and the required fields gate again.',\n children: [{\n name: 'onboarding',\n wizard: true,\n fieldOptions: { label: 'Onboarding wizard' },\n children: [\n {\n name: 'company',\n type: 'heading',\n fieldOptions: { label: 'Company' },\n children: [\n { name: 'companyName', fieldOptions: { label: 'Company name (required once the section has a value)' }, fullWidth: true },\n { name: 'website', minOccurs: 0, fieldOptions: { label: 'Website (optional)' }, fullWidth: true },\n ],\n },\n {\n name: 'plan',\n type: 'heading',\n fieldOptions: { label: 'Plan' },\n children: [\n { name: 'planName', type: 'select', fieldOptions: { label: 'Plan (required once the section has a value)' }, options: planOptions },\n ],\n },\n ],\n }],\n}]);\n\nexport const wizardOptionalAncestorSampleValues = {\n registration: {\n onboarding: {\n company: { companyName: 'Acme Corp' },\n },\n },\n};\n\n// A disabled (maxOccurs: 0) ancestor reaches through the wizard: the wizard chrome and every page\n// field render disabled, and Submit passes because disabled fields are never required.\nexport const wizardDisabledAncestorTestCase = createTestCase([{\n name: 'archived',\n type: 'heading',\n maxOccurs: 0,\n fieldOptions: { label: 'Disabled section containing a wizard' },\n description: 'The whole section is disabled via maxOccurs: 0. Navigate the wizard: every page field is disabled and Submit passes without validating them.',\n children: [{\n name: 'onboarding',\n wizard: { allowForwardJump: true },\n fieldOptions: { label: 'Onboarding wizard' },\n children: [\n {\n name: 'company',\n type: 'heading',\n fieldOptions: { label: 'Company' },\n children: [\n { name: 'companyName', fieldOptions: { label: 'Company name' }, fullWidth: true },\n { name: 'website', minOccurs: 0, fieldOptions: { label: 'Website' }, fullWidth: true },\n ],\n },\n {\n name: 'plan',\n type: 'heading',\n fieldOptions: { label: 'Plan' },\n children: [\n { name: 'planName', type: 'select', fieldOptions: { label: 'Plan' }, options: planOptions },\n ],\n },\n ],\n }],\n}]);\n\nexport const wizardDisabledAncestorSampleValues = {\n archived: {\n onboarding: {\n company: { companyName: 'Acme Corp', website: 'https://acme.example' },\n plan: { planName: 'growth' },\n },\n },\n};\n\nexport function createTestCase(\n metadata: Metadata[],\n settings?: DynamicFormSettings,\n testCaseConfig: {\n initialEdit?: boolean\n hideFieldsWithoutValue?: boolean\n initialValues?: GenericObject\n } = {},\n) {\n return markRaw(defineComponent({\n // Overridable at runtime so a Storybook control can flip a case between empty and pre-filled\n // without a second component; an unset prop falls back to the baked testCaseConfig/settings.\n props: {\n initialValues: { type: Object as PropType<GenericObject>, default: undefined },\n initialEdit: { type: Boolean as PropType<boolean | undefined>, default: undefined },\n hideFieldsWithoutValue: { type: Boolean as PropType<boolean | undefined>, default: undefined },\n settings: { type: Object as PropType<DynamicFormSettings | undefined>, default: undefined },\n keepValuesOnUnmount: { type: Boolean as PropType<boolean | undefined>, default: undefined },\n },\n setup: props => () => h(TestForm, {\n metadata,\n settings: props.settings ?? settings,\n showDebugState: true,\n initialValues: props.initialValues ?? testCaseConfig.initialValues,\n initialEdit: props.initialEdit ?? testCaseConfig.initialEdit,\n hideFieldsWithoutValue: props.hideFieldsWithoutValue ?? testCaseConfig.hideFieldsWithoutValue,\n keepValuesOnUnmount: props.keepValuesOnUnmount,\n }),\n }));\n}\n","<script setup lang=\"ts\">\nimport type { Metadata } from './TestFormTemplate.vue';\nimport { computed, ref } from 'vue';\nimport TestForm from './TestForm.vue';\n\n// A fixed test-case template cannot conditionally unmount a subtree, so this component\n// owns its own metadata list and toggles the complex field in and out of it, which unmounts\n// (and remounts) its DynamicFormItem the same way a template-level v-if would.\nconst showContact = ref(true);\nconst keepValuesOnUnmount = ref(false);\n\nconst metadata = computed<Metadata[]>(() => [\n ...(showContact.value\n ? [{\n name: 'contact',\n fieldOptions: { label: 'Contact (complex field with an attribute)' },\n minOccurs: 0,\n fullWidth: true,\n attributes: [\n {\n name: 'certainty',\n type: 'select' as const,\n minOccurs: 0,\n fieldOptions: { label: 'Certainty' },\n options: [\n { key: 'verified', value: 'Verified' },\n { key: 'unverified', value: 'Unverified' },\n ],\n },\n ],\n }]\n : []),\n { name: 'note', fieldOptions: { label: 'Sibling field (always mounted)' }, minOccurs: 0, fullWidth: true },\n]);\n</script>\n\n<template>\n <div class=\"flex flex-col gap-4\">\n <div class=\"flex gap-6 flex-wrap\">\n <label class=\"flex items-center gap-2\">\n <input v-model=\"showContact\" type=\"checkbox\" data-testid=\"toggle-show-contact\">\n Show contact field (v-if unmount)\n </label>\n <label class=\"flex items-center gap-2\">\n <input v-model=\"keepValuesOnUnmount\" type=\"checkbox\" data-testid=\"toggle-keep-values-on-unmount\">\n keepValuesOnUnmount\n </label>\n </div>\n <TestForm :metadata :keep-values-on-unmount=\"keepValuesOnUnmount\" show-debug-state />\n </div>\n</template>\n"],"names":["_createElementBlock","__props","$emit","_openBlock","_hoisted_1","_cache","_createElementVNode","_hoisted_2","buttonClass","buttonPrimaryClass","metadata","defineMetadata","_createBlock","DynamicFormTemplate","_unref","fieldMetadata","errorMessage","label","disabled","canAddItems","addItem","canRemoveItems","removeItem","slotProps","_normalizeClass","_createTextVNode","_toDisplayString","IconButton","$event","_hoisted_3","_hoisted_4","_renderSlot","_ctx","_withCtx","required","showOptionalInsteadOfRequired","addChoiceOccurrence","removeChoiceOccurrence","canAddChoiceOccurrence","usedChoiceOccurrences","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_Fragment","_renderList","branch","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","branchKey","globalIndex","insertionOrder","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_createVNode","_hoisted_27","pages","currentStepIndex","pageCount","isFirst","isLast","isValidating","wizardConfig","next","prev","gotoStep","_hoisted_28","_hoisted_29","page","pageIndex","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","isCurrent","wizardPageUseVIf","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_51","_hoisted_52","_hoisted_53","_hoisted_54","_hoisted_55","_hoisted_56","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_60","_hoisted_61","_hoisted_62","_hoisted_63","_hoisted_64","_hoisted_65","_hoisted_66","value","handleBlur","handleChange","optionKey","optionValue","_hoisted_68","_hoisted_70","_vModelSelect","_vModelCheckbox","_vModelText","values","handleSubmit","errors","meta","useDynamicForm","computed","manualValues","ref","editMode","isSubmitted","metadataWithEdit","x","mapEachMetadataItem","item","thisField","fieldValue","checkTreeHasValue","_fieldValue","childFields","c","settings","submit","e","_values","_errors","error","key","DynamicForm","TestFormTemplate","defaultTestCase","createTestCase","defaultSampleValues","arrayTestCase","arraySampleValues","groupTestCase","groupSampleValues","choiceTestCase","choiceSampleValues","childFieldsTestCase","childFieldsSampleValues","inputTypesTestCase","inputTypesSampleValues","restrictionsTestCase","restrictionsSampleValues","arrayOccurrenceTestCase","arrayOccurrenceSampleValues","arrayMaxOccursTestCase","arrayMaxOccursSampleValues","choiceOccurrenceTestCase","choiceOccurrenceSampleValues","choiceMaxOccursTestCase","choiceMaxOccursSampleValues","explicitChoiceTestCase","explicitChoiceSampleValues","preserveOnSwitchTestCase","preserveOnSwitchSampleValues","explicitRepeatableChoiceTestCase","explicitRepeatableChoiceSampleValues","choiceDisplayOrderAddedTestCase","choiceDisplayOrderAddedSampleValues","choicePreserveOrderTestCase","choicePreserveOrderSampleValues","choicePreserveOrderScalarBranchTestCase","choicePreserveOrderScalarBranchSampleValues","computedPropsTestCase","field","length","filled","v","_value","computedPropsSampleValues","attributesTestCase","attributesSampleValues","complexTypeValuePropertyTestCase","complexTypeValuePropertySampleValues","createValidationTimingTestCase","description","validationTimingSampleValues","validateOnSubmitOnlyTestCase","validateOnBlurTestCase","validateAfterSubmitTestCase","validateWhenInErrorTestCase","showOptionalInsteadOfRequiredTestCase","showOptionalInsteadOfRequiredSampleValues","customMessagesTestCase","customMessagesSampleValues","individualTestCase","individualSampleValues","planOptions","wizardTestCase","wizardSampleValues","wizardForwardJumpTestCase","wizardForwardJumpSampleValues","wizardValidateOnJumpTestCase","wizardValidateOnJumpSampleValues","wizardCompositePagesTestCase","wizardCompositePagesSampleValues","choiceOfWizardsTestCase","choiceOfWizardsSampleValues","repeatedWizardTestCase","repeatedWizardSampleValues","wizardKeepValuesTestCase","wizardKeepValuesSampleValues","wizardOptionalAncestorTestCase","wizardOptionalAncestorSampleValues","wizardDisabledAncestorTestCase","wizardDisabledAncestorSampleValues","testCaseConfig","markRaw","defineComponent","props","h","TestForm","showContact","keepValuesOnUnmount"],"mappings":"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"}
1
+ {"version":3,"file":"examples.cjs.js","sources":["../src/examples/components/IconButton.vue","../src/examples/TestFormTemplate.vue","../src/examples/TestForm.vue","../src/examples/__tests__/TestFormTemplate.testcases.ts","../src/examples/KeepValuesOnUnmountTestCase.vue","../src/examples/ProgrammaticWritesTestCase.vue"],"sourcesContent":["<script lang=\"ts\" setup>\ninterface Props {\n icon: 'plus' | 'minus'\n color?: 'blue' | 'red'\n}\ninterface Emits {\n (e: 'click'): void\n}\nconst {\n icon,\n color = 'blue',\n} = defineProps<Props>();\ndefineEmits<Emits>();\n</script>\n\n<template>\n <button\n type=\"button\"\n class=\"cursor-pointer inline-flex items-center justify-center rounded-full size-5 text-white-800 cursor-pointer\"\n :class=\"{\n 'bg-blue-200 hover:bg-blue-300': color === 'blue',\n 'bg-red-200 hover:bg-red-300': color === 'red',\n }\"\n @click=\"$emit('click')\"\n >\n <svg v-if=\"icon === 'plus'\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-3\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 4.5v15m7.5-7.5h-15\" />\n </svg>\n <svg v-if=\"icon === 'minus'\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-3\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 12h14\" />\n </svg>\n </button>\n</template>\n","<script lang=\"ts\" setup>\nimport type { WizardGotoStepOptions } from '@/types/FieldMetadata';\nimport type { GetDynamicFormSettingsType } from '@/types/GetDynamicFormSettingsType';\nimport type { GetMetadataType } from '@/types/GetMetadataType';\nimport DynamicFormTemplate from '@/components/DynamicFormTemplate.vue';\nimport { defineMetadata } from '@/core/defineMetadata';\nimport IconButton from './components/IconButton.vue';\n\nexport type Metadata = GetMetadataType<typeof metadata>;\n\nexport type DynamicFormSettings = GetDynamicFormSettingsType<typeof metadata>;\n\nconst metadata = defineMetadata<\n {\n text: string\n textBoundByVModel: string\n select: string\n selectBoundByVModel: string\n checkbox: boolean\n checkboxBoundByVModel: boolean\n heading: never\n group: never\n },\n {\n description?: string\n options?: { key: string, value: string }[]\n fullWidth?: boolean\n disabled?: boolean\n hidden?: boolean\n },\n /**\n * Free to decide what attributes you want to pass internally between your templates.\n * You can add any attribute to a <slot /> and then it will be accessible in props.slotProps.\n */\n {\n hideLabel?: boolean\n /** Example on how to keep track of the levels */\n level?: number\n /** Helps identifying that we're below a choice field, so if we're rendering an array we can adjust our layout */\n belowChoiceField?: boolean\n hidden?: boolean\n /** Bound by the wizard page wrapper below, so a page's own content can offer \"jump to step\" affordances */\n gotoStep?: (index: number, options?: WizardGotoStepOptions) => Promise<void> | void\n },\n {\n showOptionalInsteadOfRequired?: boolean\n /**\n * Example-only switch for the wizard page wrapper: gate page visibility with `v-if` (unmounts\n * non-current pages) instead of the correct `v-show`. Lets a playground demonstrate the\n * clear-on-unmount data loss `v-show` avoids, and how `keepValuesOnUnmount` changes it.\n */\n wizardPageUseVIf?: boolean\n }\n>();\n\n// Shared harness-button styling; the primary variant only swaps the color tokens.\nconst buttonClass = 'inline-flex items-center h-9 px-3 text-sm border border-gray-300 rounded bg-gray-100 text-gray-900 cursor-pointer hover:bg-gray-200 disabled:opacity-50 disabled:cursor-not-allowed';\nconst buttonPrimaryClass = 'inline-flex items-center h-9 px-3 text-sm border border-blue-600 rounded bg-blue-600 text-white cursor-pointer hover:bg-blue-700 disabled:opacity-50 disabled:cursor-not-allowed';\n</script>\n\n<template>\n <DynamicFormTemplate :metadata-configuration=\"metadata\">\n <template #heading=\"{ fieldMetadata, fieldContext: { errorMessage, label }, disabled, canAddItems, addItem, canRemoveItems, removeItem, slotProps }\">\n <div v-if=\"!fieldMetadata.hidden\" class=\"mt-4\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <h3 v-if=\"label\" class=\"flex text-xl font-bold gap-2 items-center mb-2\" :class=\"{ 'text-gray-500': fieldMetadata.disabled || disabled }\">\n {{ label }}\n <IconButton v-if=\"canAddItems\" icon=\"plus\" tabindex=\"-1\" :data-testid=\"`${fieldMetadata.path}-add-button`\" @click=\"addItem\" />\n <IconButton v-if=\"canRemoveItems\" icon=\"minus\" tabindex=\"-1\" color=\"red\" :data-testid=\"`${fieldMetadata.path}-remove-button`\" @click=\"removeItem\" />\n <button\n v-if=\"slotProps?.gotoStep\"\n type=\"button\"\n :data-testid=\"`${fieldMetadata.path}-goto-first-step-button`\"\n @click=\"slotProps.gotoStep(0)\"\n >\n back to start\n </button>\n </h3>\n <pre class=\"text-sm whitespace-pre-wrap\">{{ fieldMetadata.description }}</pre>\n <span\n v-if=\"errorMessage.value\"\n class=\"text-red-600 text-sm\"\n :data-testid=\"`${fieldMetadata.path}-error-message`\"\n >{{ errorMessage.value }}</span>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <slot :level=\"(slotProps?.level ?? 0) + 1\" />\n </div>\n </div>\n </template>\n\n <template #heading-array=\"{ fieldMetadata, fieldContext: { label }, disabled, canAddItems, addItem, slotProps }\">\n <!--\n Repeatable heading: render the heading label and an add control once at the array level, then\n let each occurrence render label-less (mirrors how leaf arrays render through #default-array).\n Without this, every occurrence would repeat the heading label and offer no way to add another.\n -->\n <div v-if=\"!fieldMetadata.hidden\" class=\"mt-4 flex flex-col gap-2\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <h3 v-if=\"label\" class=\"flex text-xl font-bold gap-2 items-center\" :class=\"{ 'text-gray-500': fieldMetadata.disabled || disabled }\">\n {{ label }}\n <IconButton v-if=\"canAddItems\" icon=\"plus\" tabindex=\"-1\" :data-testid=\"`${fieldMetadata.path}-add-button`\" @click=\"addItem\" />\n </h3>\n <slot :hide-label=\"true\" :level=\"(slotProps?.level ?? 0) + 1\" />\n </div>\n </template>\n\n <template #default-choice=\"{ fieldMetadata, fieldContext: { errorMessage, label }, disabled, required, slotProps, settings: { showOptionalInsteadOfRequired }, addChoiceOccurrence, removeChoiceOccurrence, canAddChoiceOccurrence, usedChoiceOccurrences }\">\n <div v-if=\"!fieldMetadata.hidden\" class=\"flex flex-col gap-2\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <span class=\"flex gap-2 items-center\" :class=\"{ 'text-gray-500': disabled }\">\n {{ label }}\n <span v-if=\"required && !showOptionalInsteadOfRequired\" class=\"text-red-500 dark:text-rose-400\">*</span>\n <span v-if=\"!required && showOptionalInsteadOfRequired\" class=\"text-sm text-gray-400\">(optional)</span>\n </span>\n <!--\n Explicit-choice-selection test harness: exercises addChoiceOccurrence/removeChoiceOccurrence/\n canAddChoiceOccurrence through the real public slot-prop contract, the same way\n addItem/removeItem are already tested through #default-array.\n -->\n <div>Used choice occurrences: <span :data-testid=\"`${fieldMetadata.path}-used-choice-occurrences`\">{{ usedChoiceOccurrences }}</span></div>\n <div v-if=\"fieldMetadata.choice?.length\" class=\"flex gap-2 flex-wrap\">\n <button\n v-for=\"branch in fieldMetadata.choice\"\n :key=\"`${branch.name}-add`\"\n type=\"button\"\n :class=\"buttonClass\"\n :disabled=\"!canAddChoiceOccurrence(branch.name)\"\n :data-testid=\"`${fieldMetadata.path}.${branch.name}-add-choice-button`\"\n @click=\"addChoiceOccurrence(branch.name)\"\n >\n Add {{ branch.name }}\n </button>\n <button\n v-for=\"branch in fieldMetadata.choice\"\n :key=\"`${branch.name}-remove`\"\n type=\"button\"\n :class=\"buttonClass\"\n :data-testid=\"`${fieldMetadata.path}.${branch.name}-remove-choice-button`\"\n @click=\"removeChoiceOccurrence(branch.name)\"\n >\n Remove {{ branch.name }}\n </button>\n </div>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6 ms-6\">\n <slot :level=\"(slotProps?.level ?? 0) + 1\" :below-choice-field=\"true\" />\n </div>\n <pre class=\"text-sm whitespace-pre-wrap\">{{ fieldMetadata.description }}</pre>\n <span\n v-if=\"errorMessage.value\"\n class=\"text-red-600 text-sm\"\n :data-testid=\"`${fieldMetadata.path}-error-message`\"\n >{{ errorMessage.value }}</span>\n </div>\n </template>\n\n <!--\n Same harness as #default-choice, but for repeatable (maxOccurs > 1) choices, which\n dispatch through the -choice-array slot family. Identical markup and testids so tests\n drive both modes through the same selectors.\n -->\n <template #default-choice-array=\"{ fieldMetadata, fieldContext: { errorMessage, label }, disabled, required, slotProps, settings: { showOptionalInsteadOfRequired }, addChoiceOccurrence, removeChoiceOccurrence, canAddChoiceOccurrence, usedChoiceOccurrences }\">\n <div v-if=\"!fieldMetadata.hidden\" class=\"flex flex-col gap-2\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <span class=\"flex gap-2 items-center\" :class=\"{ 'text-gray-500': disabled }\">\n {{ label }}\n <span v-if=\"required && !showOptionalInsteadOfRequired\" class=\"text-red-500 dark:text-rose-400\">*</span>\n <span v-if=\"!required && showOptionalInsteadOfRequired\" class=\"text-sm text-gray-400\">(optional)</span>\n </span>\n <div>Used choice occurrences: <span :data-testid=\"`${fieldMetadata.path}-used-choice-occurrences`\">{{ usedChoiceOccurrences }}</span></div>\n <div v-if=\"fieldMetadata.choice?.length\" class=\"flex gap-2 flex-wrap\">\n <button\n v-for=\"branch in fieldMetadata.choice\"\n :key=\"`${branch.name}-add`\"\n type=\"button\"\n :class=\"buttonClass\"\n :disabled=\"!canAddChoiceOccurrence(branch.name)\"\n :data-testid=\"`${fieldMetadata.path}.${branch.name}-add-choice-button`\"\n @click=\"addChoiceOccurrence(branch.name)\"\n >\n Add {{ branch.name }}\n </button>\n <button\n v-for=\"branch in fieldMetadata.choice\"\n :key=\"`${branch.name}-remove`\"\n type=\"button\"\n :class=\"buttonClass\"\n :data-testid=\"`${fieldMetadata.path}.${branch.name}-remove-choice-button`\"\n @click=\"removeChoiceOccurrence(branch.name)\"\n >\n Remove {{ branch.name }}\n </button>\n </div>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6 ms-6\">\n <slot :level=\"(slotProps?.level ?? 0) + 1\" :below-choice-field=\"true\" />\n </div>\n <pre class=\"text-sm whitespace-pre-wrap\">{{ fieldMetadata.description }}</pre>\n <span\n v-if=\"errorMessage.value\"\n class=\"text-red-600 text-sm\"\n :data-testid=\"`${fieldMetadata.path}-error-message`\"\n >{{ errorMessage.value }}</span>\n </div>\n </template>\n\n <template #default-choice-array-item=\"{ fieldMetadata, slotProps, branchKey, globalIndex, insertionOrder, canAddItems, addItem, removeItem }\">\n <!--\n Repeatable explicit-choice occurrence test harness: renders the branchKey slot\n prop directly (as a \"kind badge\") so tests can assert it arrived as a real slot prop\n rather than being inferred from the path, plus add/remove buttons wired to\n addItem/removeItem (addItem appends another occurrence of this occurrence's own branch,\n so the occurrence behaves like a regular array item). Forwards the default slot for the\n occurrence's own fields, mirroring #default's own remove-button pattern. insertionOrder is optional (undefined for an occurrence never\n added this session), so its absence is asserted as \"the testid does not exist\" rather\n than a rendered \"undefined\" string.\n -->\n <div v-if=\"!fieldMetadata.hidden\" class=\"flex flex-col gap-2 border-s-2 ps-2\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <div class=\"flex gap-2 items-center\">\n <span :data-testid=\"`${fieldMetadata.path}-kind-badge`\">{{ branchKey }}</span>\n globalIndex: <span :data-testid=\"`${fieldMetadata.path}-global-index`\">{{ globalIndex }}</span>\n insertionOrder: <span v-if=\"insertionOrder !== undefined\" :data-testid=\"`${fieldMetadata.path}-insertion-order`\">{{ insertionOrder }}</span>\n <IconButton v-if=\"canAddItems\" icon=\"plus\" tabindex=\"-1\" :data-testid=\"`${fieldMetadata.path}-add-choice-button`\" @click=\"addItem\" />\n <IconButton icon=\"minus\" tabindex=\"-1\" color=\"red\" :data-testid=\"`${fieldMetadata.path}-remove-choice-button`\" @click=\"removeItem\" />\n </div>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <slot :level=\"(slotProps?.level ?? 0) + 1\" />\n </div>\n </div>\n </template>\n\n <!--\n Wizard container test harness: builds its stepper purely from the `pages` slot prop (never\n `fieldMetadata.children`), so a stepper/navigation desync would fail any test asserting the\n rendered step list against actual navigation. Buttons/spans mirror the -choice harness above.\n -->\n <template #default-wizard=\"{ fieldMetadata, fieldContext: { errorMessage, label }, pages, currentStepIndex, pageCount, isFirst, isLast, isValidating, wizardConfig, next, prev, gotoStep, slotProps }\">\n <div class=\"flex flex-col gap-2\">\n <span>{{ label }}</span>\n <div class=\"flex gap-2 flex-wrap\">\n <button\n v-for=\"(page, pageIndex) in pages\"\n :key=\"page.path\"\n type=\"button\"\n :class=\"buttonClass\"\n :data-testid=\"`${fieldMetadata.path}-goto-${pageIndex}-button`\"\n @click=\"gotoStep(pageIndex)\"\n >\n {{ page.name }}\n </button>\n </div>\n <div class=\"flex gap-2\">\n <button type=\"button\" :class=\"buttonClass\" :data-testid=\"`${fieldMetadata.path}-prev-button`\" @click=\"prev\">\n Previous\n </button>\n <button type=\"button\" :class=\"buttonPrimaryClass\" :data-testid=\"`${fieldMetadata.path}-next-button`\" @click=\"next\">\n Next\n </button>\n </div>\n <span\n v-if=\"errorMessage.value\"\n class=\"text-red-600 text-sm\"\n :data-testid=\"`${fieldMetadata.path}-error-message`\"\n >{{ errorMessage.value }}</span>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6 ms-6\">\n <slot :level=\"(slotProps?.level ?? 0) + 1\" />\n </div>\n <div>currentStepIndex: <span :data-testid=\"`${fieldMetadata.path}-currentStepIndex`\">{{ currentStepIndex }}</span></div>\n <div>pageCount: <span :data-testid=\"`${fieldMetadata.path}-pageCount`\">{{ pageCount }}</span></div>\n <div>isFirst: <span :data-testid=\"`${fieldMetadata.path}-isFirst`\">{{ isFirst }}</span></div>\n <div>isLast: <span :data-testid=\"`${fieldMetadata.path}-isLast`\">{{ isLast }}</span></div>\n <div>isValidating: <span :data-testid=\"`${fieldMetadata.path}-isValidating`\">{{ isValidating }}</span></div>\n <div>allowForwardJump: <span :data-testid=\"`${fieldMetadata.path}-wizardConfig-allowForwardJump`\">{{ wizardConfig.allowForwardJump }}</span></div>\n <div>validateOnJump: <span :data-testid=\"`${fieldMetadata.path}-wizardConfig-validateOnJump`\">{{ wizardConfig.validateOnJump }}</span></div>\n </div>\n </template>\n\n <!--\n Wizard page visibility wrapper. The correct implementation gates with v-show (keeps every\n page mounted so values and validation survive navigation). The wizardPageUseVIf setting flips\n it to v-if so a playground can show the clear-on-unmount data loss v-show avoids; it defaults\n off, so tests and every other consumer keep the correct v-show behaviour.\n\n Binds gotoStep onto its slot (and threads the level convention through) so a page's own\n content can offer jump-to-step affordances, e.g. edit links on a summary page.\n -->\n <template #default-wizard-page=\"{ fieldMetadata, isCurrent, gotoStep, slotProps, settings: { wizardPageUseVIf } }\">\n <div\n v-if=\"!wizardPageUseVIf\"\n v-show=\"isCurrent\"\n :data-testid=\"`${fieldMetadata.path}-page`\"\n :data-current=\"isCurrent\"\n >\n <slot :goto-step :level=\"slotProps?.level\" />\n </div>\n <div\n v-else-if=\"isCurrent\"\n :data-testid=\"`${fieldMetadata.path}-page`\"\n :data-current=\"isCurrent\"\n >\n <slot :goto-step :level=\"slotProps?.level\" />\n </div>\n </template>\n\n <template #default-array=\"{ fieldMetadata, fieldContext: { errorMessage, label }, disabled, required, canAddItems, addItem, settings: { showOptionalInsteadOfRequired } }\">\n <div v-if=\"!fieldMetadata.hidden\" class=\"flex flex-col gap-2\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <label :for=\"`${fieldMetadata.path}[0]`\" :class=\"{ 'text-gray-500': fieldMetadata.disabled || disabled }\" class=\"flex gap-2 items-center\">\n {{ label }}\n <span v-if=\"required && !showOptionalInsteadOfRequired\" class=\"text-red-500 dark:text-rose-400\">*</span>\n <span v-if=\"!required && showOptionalInsteadOfRequired\" class=\"text-sm text-gray-400\">(optional)</span>\n <IconButton v-if=\"canAddItems\" icon=\"plus\" tabindex=\"-1\" :data-testid=\"`${fieldMetadata.path}-add-button`\" @click=\"addItem\" />\n </label>\n <slot :hide-label=\"true\" />\n <pre class=\"text-sm whitespace-pre-wrap\">{{ fieldMetadata.description }}</pre>\n <span\n v-if=\"errorMessage.value\"\n class=\"text-red-600 text-sm\"\n :data-testid=\"`${fieldMetadata.path}-error-message`\"\n >{{ errorMessage.value }}</span>\n </div>\n </template>\n\n <template #default=\"{ fieldMetadata, fieldContext: { errorMessage, label }, disabled, required, canRemoveItems, removeItem, slotProps, settings: { showOptionalInsteadOfRequired } }\">\n <div v-if=\"!fieldMetadata.hidden\" class=\"flex flex-col gap-2\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <label v-if=\"!slotProps?.hideLabel\" :for=\"fieldMetadata.path\" :class=\"{ 'text-gray-500': fieldMetadata.disabled || disabled }\" class=\"flex gap-1 items-center\">\n {{ label }}\n <span v-if=\"required && !showOptionalInsteadOfRequired\" class=\"text-red-500 dark:text-rose-400\">*</span>\n <span v-if=\"!required && showOptionalInsteadOfRequired\" class=\"text-sm text-gray-400\">(optional)</span>\n </label>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex flex-col grow\">\n <slot />\n </div>\n <IconButton :class=\"{ invisible: !canRemoveItems }\" icon=\"minus\" tabindex=\"-1\" color=\"red\" :data-testid=\"`${fieldMetadata.path}-remove-button`\" @click=\"removeItem\" />\n </div>\n <pre class=\"text-sm whitespace-pre-wrap\">{{ fieldMetadata.description }}</pre>\n <span\n v-if=\"errorMessage.value\"\n class=\"text-red-600 text-sm\"\n :data-testid=\"`${fieldMetadata.path}-error-message`\"\n >{{ errorMessage.value }}</span>\n </div>\n <slot name=\"attributes\" />\n </template>\n\n <template #group-array=\"{ fieldMetadata, fieldContext: { errorMessage, label }, disabled, required, canAddItems, addItem, slotProps, settings: { showOptionalInsteadOfRequired } }\">\n <template v-if=\"fieldMetadata.hidden\" />\n <!-- In case we're below a choice field, the first array item is not automatically added, so show a label with buttons -->\n <div v-else-if=\"slotProps?.belowChoiceField\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <span class=\"flex gap-2 items-center mb-2\" :class=\"{ 'text-gray-500': fieldMetadata.disabled || disabled }\">\n {{ label }}\n <span v-if=\"required && !showOptionalInsteadOfRequired\" class=\"text-red-500 dark:text-rose-400\">*</span>\n <span v-if=\"!required && showOptionalInsteadOfRequired\" class=\"text-sm text-gray-400\">(optional)</span>\n <IconButton v-if=\"canAddItems\" icon=\"plus\" tabindex=\"-1\" :data-testid=\"`${fieldMetadata.path}-add-button`\" @click=\"addItem\" />\n </span>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6 ms-6\">\n <slot :level=\"(slotProps?.level ?? 0) + 1\" />\n </div>\n <pre class=\"text-sm whitespace-pre-wrap\">{{ fieldMetadata.description }}</pre>\n <span\n v-if=\"errorMessage.value\"\n class=\"text-red-600 text-sm\"\n :data-testid=\"`${fieldMetadata.path}-error-message`\"\n >{{ errorMessage.value }}</span>\n </div>\n <!-- In case we show an input directly, show a label and buttons -->\n <slot v-else />\n </template>\n\n <template #group=\"{ fieldMetadata, fieldContext: { errorMessage, label }, disabled, required, canAddItems, canRemoveItems, addItem, removeItem, slotProps, settings: { showOptionalInsteadOfRequired } }\">\n <!-- In case of a grouped field we render the field differently -->\n <div v-if=\"!fieldMetadata.hidden\" :class=\"{ 'md:col-span-2': fieldMetadata.fullWidth }\">\n <span v-if=\"!slotProps?.hideLabel\" class=\"flex gap-2 items-center mb-2\" :class=\"{ 'text-gray-500': fieldMetadata.disabled || disabled }\">\n {{ label }}\n <span v-if=\"required && !showOptionalInsteadOfRequired\" class=\"text-red-500 dark:text-rose-400\">*</span>\n <span v-if=\"!required && showOptionalInsteadOfRequired\" class=\"text-sm text-gray-400\">(optional)</span>\n <IconButton v-if=\"canAddItems\" icon=\"plus\" tabindex=\"-1\" :data-testid=\"`${fieldMetadata.path}-add-button`\" @click=\"addItem\" />\n <IconButton v-if=\"canRemoveItems\" icon=\"minus\" tabindex=\"-1\" :data-testid=\"`${fieldMetadata.path}-remove-button`\" color=\"red\" @click=\"removeItem\" />\n </span>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6 ms-6\">\n <slot :level=\"(slotProps?.level ?? 0) + 1\" />\n </div>\n <pre class=\"text-sm whitespace-pre-wrap\">{{ fieldMetadata.description }}</pre>\n <span\n v-if=\"errorMessage.value\"\n class=\"text-red-600 text-sm\"\n :data-testid=\"`${fieldMetadata.path}-error-message`\"\n >{{ errorMessage.value }}</span>\n </div>\n <slot name=\"attributes\" />\n </template>\n\n <template #select-input=\"{ fieldMetadata, fieldContext: { value, handleBlur, handleChange }, disabled }\">\n <select\n :id=\"fieldMetadata.path\"\n :value=\"value.value\"\n :disabled=\"fieldMetadata.disabled || disabled\"\n class=\"h-9 bg-gray-100 border-gray-200 border rounded px-3 text-sm\"\n @change=\"handleChange\"\n @blur=\"handleBlur\"\n >\n <option v-for=\"{ key: optionKey, value: optionValue } in fieldMetadata.options\" :key=\"optionKey\" :value=\"optionKey\">\n {{ optionValue }}\n </option>\n </select>\n </template>\n\n <template #selectBoundByVModel-input=\"{ fieldMetadata, fieldContext: { value, handleBlur }, disabled }\">\n <select\n :id=\"fieldMetadata.path\"\n v-model=\"value.value\"\n :disabled=\"fieldMetadata.disabled || disabled\"\n class=\"h-9 bg-gray-100 border-gray-200 border rounded px-3 text-sm\"\n @blur=\"handleBlur\"\n >\n <option v-for=\"{ key: optionKey, value: optionValue } in fieldMetadata.options\" :key=\"optionKey\" :value=\"optionKey\">\n {{ optionValue }}\n </option>\n </select>\n </template>\n\n <template #checkbox-input=\"{ fieldMetadata, fieldContext: { value, handleBlur, handleChange }, disabled }\">\n <input\n :id=\"fieldMetadata.path\"\n :checked=\"value.value\"\n :disabled=\"fieldMetadata.disabled || disabled\"\n type=\"checkbox\"\n class=\"h-6 bg-gray-100 border-gray-200 border rounded px-3 text-sm\"\n @change=\"handleChange(($event.target as HTMLInputElement).checked)\"\n @blur=\"handleBlur\"\n >\n </template>\n\n <template #checkboxBoundByVModel-input=\"{ fieldMetadata, fieldContext: { value, handleBlur }, disabled }\">\n <input\n :id=\"fieldMetadata.path\"\n v-model=\"value.value\"\n :disabled=\"fieldMetadata.disabled || disabled\"\n type=\"checkbox\"\n class=\"h-6 bg-gray-100 border-gray-200 border rounded px-3 text-sm\"\n @blur=\"handleBlur\"\n >\n </template>\n\n <template #textBoundByVModel-input=\"{ fieldMetadata, fieldContext: { value, handleBlur }, disabled }\">\n <input\n :id=\"fieldMetadata.path\"\n v-model=\"value.value\"\n :disabled=\"fieldMetadata.disabled || disabled\"\n type=\"text\"\n class=\"h-9 bg-gray-100 border-gray-200 border rounded px-3 text-sm\"\n @blur=\"handleBlur\"\n >\n </template>\n\n <template #default-input=\"{ fieldMetadata, fieldContext: { value, handleBlur, handleChange }, disabled }\">\n <input\n :id=\"fieldMetadata.path\"\n :value=\"value.value\"\n :disabled=\"fieldMetadata.disabled || disabled\"\n type=\"text\"\n class=\"h-9 bg-gray-100 border-gray-200 border rounded px-3 text-sm\"\n @input=\"handleChange\"\n @blur=\"handleBlur\"\n >\n </template>\n </DynamicFormTemplate>\n</template>\n","<script setup lang=\"ts\">\nimport type { GenericObject } from 'vee-validate';\n\nimport type { DynamicFormSettings, Metadata } from './TestFormTemplate.vue';\nimport { computed, ref } from 'vue';\nimport { checkTreeHasValue } from '@/utils/checkTreeHasValue';\nimport { mapEachMetadataItem } from '@/utils/mapEachMetadataItem';\nimport DynamicForm from '../components/DynamicForm.vue';\nimport { useDynamicForm } from '../core/useDynamicForm';\nimport TestFormTemplate from './TestFormTemplate.vue';\n\nexport interface Props {\n metadata: Metadata[]\n settings?: DynamicFormSettings\n showDebugState?: boolean\n initialEdit?: boolean\n hideFieldsWithoutValue?: boolean\n initialValues?: GenericObject\n keepValuesOnUnmount?: boolean\n}\n\nconst { metadata, settings: _settings, initialEdit = true, hideFieldsWithoutValue = false, showDebugState = false, initialValues, keepValuesOnUnmount } = defineProps<Props>();\n\nconst { values, handleSubmit, errors, meta, resetForm, resetField, setFieldValue, setValues } = useDynamicForm({\n initialValues,\n // Passed as a computed ref (not the destructured value directly) so a live toggle of the prop\n // after mount keeps affecting unmount behaviour, instead of freezing whatever it was at setup time.\n keepValuesOnUnmount: computed(() => keepValuesOnUnmount),\n});\nconst manualValues = ref();\nconst editMode = ref(initialEdit);\nconst isSubmitted = ref(false);\n\n// Add edit mode functionality to the form. In case we're not in edit mode, disable all items.\nconst metadataWithEdit = computed(() => metadata?.map(x => mapEachMetadataItem(x, (item) => {\n item.computedProps = item.computedProps ?? [];\n\n // Disable all fields when not in edit mode\n item.computedProps.push((thisField) => {\n if (!editMode.value)\n thisField.disabled = true;\n });\n\n if (hideFieldsWithoutValue) {\n // In view mode, hide fields that have no value\n item.computedProps.push((thisField, fieldValue) => {\n if (!editMode.value && !checkTreeHasValue(fieldValue.value))\n thisField.hidden = true;\n });\n\n // In view mode, hide a parent field when all of its children are hidden\n item.computedProps.push((thisField, _fieldValue, childFields) => {\n if (!editMode.value && childFields.value.length > 0 && childFields.value.every(c => c.hidden))\n thisField.hidden = true;\n });\n }\n\n return item;\n})));\n\nconst settings = computed(() => ({\n analytics: true,\n messages: {\n required: '{field} is required',\n minOccurs: 'At least {min} items required',\n maxOccurs: 'At most {max} items allowed',\n choiceMinOccurs: 'The following fields need to occur at least {min} time(s): {field}',\n choiceMaxOccurs: 'The following fields may occur at most {max} time(s): {field}',\n maxOccursTotal: 'This branch may occur at most {max} time(s) in total: {field}',\n minLength: 'The minimum length of {field} is {length}',\n maxLength: 'The maximum length of {field} is {length}',\n length: '{field} must be exactly {length} characters',\n pattern: '{field} does not match the required pattern',\n minInclusive: '{field} must be at least {min}',\n maxInclusive: '{field} must be at most {max}',\n minExclusive: '{field} must be greater than {min}',\n maxExclusive: '{field} must be less than {max}',\n enumeration: '{field} must be one of the allowed values',\n whiteSpace: '{field} contains invalid whitespace (mode: {mode})',\n fractionDigits: '{field} may have at most {digits} decimal place(s)',\n totalDigits: '{field} may have at most {digits} significant digit(s)',\n },\n ...(_settings ?? {}),\n}));\n\nfunction resetFirstField() {\n resetField(metadata[0].name as any);\n}\n\n// Exposed for tests and test cases that drive programmatic value changes.\ndefineExpose({ setFieldValue, setValues });\n\nfunction submit(e?: Event) {\n handleSubmit(\n (_values) => {\n isSubmitted.value = true;\n editMode.value = false;\n },\n ({ errors: _errors }) => {\n isSubmitted.value = false;\n },\n )(e);\n};\n</script>\n\n<template>\n <form @submit.prevent=\"submit\">\n <div class=\"flex justify-end gap-2\">\n <button v-if=\"!editMode\" type=\"button\" class=\"cursor-pointer mt-4 bg-blue-500 text-white px-4 py-2 rounded\" data-testid=\"submit\" @click=\"editMode = true\">\n Edit\n </button>\n <button v-if=\"editMode\" type=\"submit\" class=\"cursor-pointer mt-4 bg-blue-500 text-white px-4 py-2 rounded\" data-testid=\"submit\">\n Submit\n </button>\n <button v-if=\"editMode\" type=\"button\" class=\"cursor-pointer mt-4 bg-gray-200 text-black px-4 py-2 rounded\" data-testid=\"cancel\" @click=\"editMode = false\">\n Cancel\n </button>\n <button v-if=\"editMode\" type=\"button\" class=\"cursor-pointer mt-4 bg-gray-200 text-black px-4 py-2 rounded\" data-testid=\"reset\" @click=\"resetForm()\">\n Reset\n </button>\n <button v-if=\"editMode\" type=\"button\" class=\"cursor-pointer mt-4 bg-gray-200 text-black px-4 py-2 rounded\" data-testid=\"resetField\" @click=\"resetFirstField\">\n Reset field\n </button>\n </div>\n <div v-if=\"Object.values(errors).length\" data-testid=\"errors\" class=\"col-12 text-red-600\">\n Errors:\n <ul>\n <li v-for=\"(error, key) in errors\" :key=\"key\">\n <span v-html=\"error\" />\n </li>\n </ul>\n </div>\n <DynamicForm\n :template=\"TestFormTemplate\"\n :metadata=\"metadataWithEdit\"\n :settings\n @update:model-value=\"manualValues = $event\"\n />\n <span v-if=\"isSubmitted\" data-testid=\"isSubmitted\" />\n <pre v-if=\"showDebugState\" class=\"bg-gray-100 p-4 rounded-lg text-sm overflow-auto\">\nIsDirty: {{ meta.dirty }}\nPending: {{ meta.pending }}\nTouched: {{ meta.touched }}\nValid: {{ meta.valid }}\nSubmitted: {{ isSubmitted }}\n\n// form values:\n{{ JSON.stringify(values, null, 2) }}\n </pre>\n </form>\n</template>\n","import type { GenericObject } from 'vee-validate';\nimport type { PropType } from 'vue';\nimport type { DynamicFormSettings, Metadata } from '@/examples/TestFormTemplate.vue';\n\nimport { defineComponent, h, markRaw } from 'vue';\nimport TestForm from '@/examples/TestForm.vue';\n\nexport const defaultTestCase = createTestCase([{\n name: 'text',\n type: 'text',\n fieldOptions: { label: 'Text Input' },\n path: 'with.custom.structure',\n restriction: { maxLength: 10 },\n}]);\n\nexport const defaultSampleValues = {\n with: { custom: { structure: 'Order A204' } },\n};\n\nexport const arrayTestCase = createTestCase([{\n name: 'arrays',\n fieldOptions: { label: 'Array Fields' },\n type: 'heading',\n children: [\n { name: 'optionalItems', fieldOptions: { label: 'Optional field (max 3)' }, minOccurs: 0, maxOccurs: 3 },\n { name: 'requiredItems', fieldOptions: { label: 'Required field (max 3)' }, maxOccurs: 3 },\n { name: 'twoRequired', fieldOptions: { label: '2 Fields required' }, minOccurs: 2, maxOccurs: 4 },\n { name: 'sections', fieldOptions: { label: 'Section (2 sections required)' }, type: 'heading', minOccurs: 2, maxOccurs: 4, fullWidth: true, children: [\n { name: 'note', fieldOptions: { label: 'Nested field 1' } },\n { name: 'category', fieldOptions: { label: 'Required Nested field 2' }, type: 'select', options: [\n { key: 'option1', value: 'Option 1' },\n { key: 'option2', value: 'Option 2' },\n { key: 'option3', value: 'Option 3' },\n ] },\n { name: 'flag', fieldOptions: { label: 'Nested field 3' }, type: 'checkbox' },\n ] },\n ],\n}]);\n\nexport const arraySampleValues = {\n arrays: {\n optionalItems: ['First note'],\n requiredItems: ['Alpha', 'Beta'],\n twoRequired: ['One', 'Two'],\n sections: [\n { note: 'Section one', category: 'option2', flag: true },\n { note: 'Section two', category: 'option1', flag: false },\n ],\n },\n};\n\nexport const groupTestCase = createTestCase([{\n name: 'groups',\n fieldOptions: { label: 'Grouped Fields' },\n type: 'heading',\n children: [\n { name: 'requiredGroup', fieldOptions: { label: 'Required group' }, type: 'group', children: [\n { name: 'first', fieldOptions: { label: 'Required Nested field 1' }, fullWidth: true },\n { name: 'second', fieldOptions: { label: 'Required Nested field 2' }, fullWidth: true },\n ] },\n { name: 'optionalGroup', fieldOptions: { label: 'Optional group' }, type: 'group', minOccurs: 0, description: `The group is optional, therefore the children will only be required once 1 value is filled in.\n\nYou can test it by filling in one of the fields.`, children: [\n { name: 'first', fieldOptions: { label: 'Required Nested field 1' }, fullWidth: true },\n { name: 'second', fieldOptions: { label: 'Required Nested field 2' }, fullWidth: true },\n ] },\n ],\n}, {\n name: 'groupArrays',\n fieldOptions: { label: 'Grouped Array Fields' },\n type: 'heading',\n children: [\n { name: 'requiredGroups', fieldOptions: { label: 'Required group' }, type: 'group', maxOccurs: 5, fullWidth: true, children: [\n { name: 'first', fieldOptions: { label: 'Required Nested field 1' } },\n { name: 'second', fieldOptions: { label: 'Required Nested field 2' } },\n ] },\n { name: 'optionalGroups', fieldOptions: { label: 'Optional group' }, type: 'group', minOccurs: 0, maxOccurs: 5, fullWidth: true, children: [\n { name: 'first', fieldOptions: { label: 'Required Nested field 1' } },\n { name: 'second', fieldOptions: { label: 'Required Nested field 2' } },\n ] },\n ],\n}]);\n\nexport const groupSampleValues = {\n groups: {\n requiredGroup: { first: 'Ada', second: 'Lovelace' },\n optionalGroup: { first: 'Grace', second: 'Hopper' },\n },\n groupArrays: {\n requiredGroups: [\n { first: 'Alan', second: 'Turing' },\n { first: 'Edsger', second: 'Dijkstra' },\n ],\n optionalGroups: [\n { first: 'Barbara', second: 'Liskov' },\n ],\n },\n};\n\nexport const choiceTestCase = createTestCase([\n {\n name: 'simpleChoiceSection',\n fieldOptions: { label: 'Choice Fields (minOccurs 1, maxOccurs 1)' },\n type: 'heading',\n children: [\n { name: 'contactMethod', fieldOptions: { label: 'Simple Choice Field' }, fullWidth: true, description: `In a choice field, only 1 of the fields can be filled in.`, choice: [\n { name: 'primary', fieldOptions: { label: 'Nested Field 1' } },\n { name: 'secondary', fieldOptions: { label: 'Nested Field 2' } },\n ] },\n ],\n },\n {\n name: 'groupedChoiceSection',\n fieldOptions: { label: 'Choice Grouped Fields (minOccurs 1, maxOccurs 3)' },\n type: 'heading',\n children: [\n { name: 'pick', fieldOptions: { label: 'Array Choice Field' }, type: 'group', maxOccurs: 3, fullWidth: true, description: `In a choice field, only 1 of the fields can be filled in.`, choice: [\n { name: 'optionA', fieldOptions: { label: 'Nested Field 1' }, type: 'group', children: [\n { name: 'detail1', fieldOptions: { label: 'Nested Child Field 1' }, fullWidth: true },\n { name: 'detail2', fieldOptions: { label: 'Nested Child Field 2' }, fullWidth: true },\n ] },\n { name: 'optionB', fieldOptions: { label: 'Nested Field 2' }, type: 'group', children: [\n { name: 'detail1', fieldOptions: { label: 'Nested Child Field 1' }, fullWidth: true },\n { name: 'detail2', fieldOptions: { label: 'Nested Child Field 2' }, fullWidth: true },\n ] },\n ] },\n ],\n },\n {\n name: 'arrayChoiceSection',\n fieldOptions: { label: 'Choice Array Fields (minOccurs 1, maxOccurs 3)' },\n type: 'heading',\n children: [\n { name: 'pick', fieldOptions: { label: 'Array Choice Field' }, type: 'group', maxOccurs: 3, fullWidth: true, description: `In a choice field, only 1 of the fields can be filled in.`, choice: [\n { name: 'optionA', fieldOptions: { label: 'Nested Field 1' }, maxOccurs: 3 },\n { name: 'optionB', fieldOptions: { label: 'Nested Field 2' }, maxOccurs: 3 },\n ] },\n ],\n },\n]);\n\nexport const choiceSampleValues = {\n // Only one branch per choice carries a value, honouring the mutually exclusive rule.\n simpleChoiceSection: { contactMethod: { primary: 'Picked the first branch' } },\n groupedChoiceSection: {\n pick: { optionA: [{ detail1: 'Group A, item 1a', detail2: 'Group A, item 1b' }] },\n },\n arrayChoiceSection: {\n pick: { optionA: ['First entry', 'Second entry'] },\n },\n};\n\nexport const childFieldsTestCase = createTestCase([\n {\n fieldOptions: { label: 'Personal Info' },\n type: 'heading',\n name: 'person',\n description: 'Only showing the fields that have a value. Click edit to change.',\n fullWidth: true,\n children: [\n { name: 'firstName', fieldOptions: { label: 'First Name' } },\n { name: 'lastName', fieldOptions: { label: 'Last Name' } },\n { name: 'email', fieldOptions: { label: 'Email' } },\n ],\n },\n {\n fieldOptions: { label: 'Address' },\n type: 'heading',\n name: 'address',\n fullWidth: true,\n children: [\n { name: 'street', fieldOptions: { label: 'Street' }, minOccurs: 0 },\n { name: 'city', fieldOptions: { label: 'City' }, minOccurs: 0 },\n { name: 'country', fieldOptions: { label: 'Country' }, minOccurs: 0 },\n ],\n },\n], undefined, {\n initialEdit: false,\n hideFieldsWithoutValue: true,\n initialValues: {\n person: {\n firstName: 'Jack',\n lastName: 'Smit',\n },\n },\n});\n\nexport const childFieldsSampleValues = {\n person: {\n firstName: 'Ada',\n lastName: 'Lovelace',\n email: 'ada@example.com',\n },\n address: {\n street: 'Baker Street 221B',\n city: 'London',\n country: 'United Kingdom',\n },\n};\n\nexport const inputTypesTestCase = createTestCase([\n {\n name: 'inputs',\n fieldOptions: { label: 'All Input Types' },\n type: 'heading',\n description: 'Every dedicated input slot plus the default fallback, in both handleChange and v-model binding styles.',\n children: [\n { name: 'text', type: 'text', fieldOptions: { label: 'Text' } },\n { name: 'textBoundByVModel', type: 'textBoundByVModel', fieldOptions: { label: 'Text (v-model)' } },\n { name: 'select', type: 'select', fieldOptions: { label: 'Select' }, options: [\n { key: 'option1', value: 'Option 1' },\n { key: 'option2', value: 'Option 2' },\n { key: 'option3', value: 'Option 3' },\n ] },\n { name: 'selectBoundByVModel', type: 'selectBoundByVModel', fieldOptions: { label: 'Select (v-model)' }, options: [\n { key: 'option1', value: 'Option 1' },\n { key: 'option2', value: 'Option 2' },\n { key: 'option3', value: 'Option 3' },\n ] },\n { name: 'checkbox', type: 'checkbox', minOccurs: 0, fieldOptions: { label: 'Checkbox' } },\n { name: 'checkboxBoundByVModel', type: 'checkboxBoundByVModel', minOccurs: 0, fieldOptions: { label: 'Checkbox (v-model)' } },\n { name: 'noType', fieldOptions: { label: 'No type (default-input fallback)' } },\n ],\n },\n {\n name: 'staticProps',\n fieldOptions: { label: 'Static Field Props' },\n type: 'heading',\n description: 'One field here has hidden: true and should not render at all.',\n children: [\n { name: 'optionalField', minOccurs: 0, fieldOptions: { label: 'Optional field (minOccurs 0)' } },\n { name: 'disabledField', minOccurs: 0, disabled: true, fieldOptions: { label: 'Disabled field' } },\n { name: 'hiddenField', minOccurs: 0, hidden: true, fieldOptions: { label: 'Hidden field (should not be visible)' } },\n { name: 'fullWidthField', minOccurs: 0, fullWidth: true, fieldOptions: { label: 'Full width field' } },\n { name: 'describedField', minOccurs: 0, description: 'A per-field description rendered below the input.', fieldOptions: { label: 'Field with description' } },\n ],\n },\n]);\n\nexport const inputTypesSampleValues = {\n inputs: {\n text: 'Hello world',\n textBoundByVModel: 'Two-way bound',\n select: 'option2',\n selectBoundByVModel: 'option3',\n checkbox: true,\n checkboxBoundByVModel: false,\n noType: 'Fallback input',\n },\n staticProps: {\n optionalField: 'Filled optional',\n disabledField: 'Preset while disabled',\n fullWidthField: 'Spans the full width',\n describedField: 'Described value',\n },\n};\n\nexport const restrictionsTestCase = createTestCase([\n {\n name: 'strings',\n fieldOptions: { label: 'String Restrictions' },\n type: 'heading',\n description: 'All fields are optional so only the restriction errors surface.',\n children: [\n { name: 'minLength', minOccurs: 0, restriction: { minLength: 3 }, fieldOptions: { label: 'minLength 3' } },\n { name: 'maxLength', minOccurs: 0, restriction: { maxLength: 5 }, fieldOptions: { label: 'maxLength 5' } },\n { name: 'length', minOccurs: 0, restriction: { length: 4 }, fieldOptions: { label: 'length 4 (exact)' } },\n { name: 'pattern', minOccurs: 0, restriction: { pattern: '^[A-Z]{2}-\\\\d{3}$' }, description: 'Two uppercase letters, a dash, three digits (e.g. AB-123).', fieldOptions: { label: 'pattern' } },\n { name: 'enumeration', minOccurs: 0, restriction: { enumeration: ['red', 'green', 'blue'] }, description: 'Only red, green or blue are allowed.', fieldOptions: { label: 'enumeration' } },\n { name: 'whiteSpace', minOccurs: 0, restriction: { whiteSpace: 'collapse' }, description: 'Leading, trailing or double spaces are invalid.', fieldOptions: { label: 'whiteSpace collapse' } },\n ],\n },\n {\n name: 'numbers',\n fieldOptions: { label: 'Numeric Restrictions' },\n type: 'heading',\n children: [\n { name: 'minInclusive', minOccurs: 0, restriction: { minInclusive: 5 }, fieldOptions: { label: 'minInclusive 5 (value >= 5)' } },\n { name: 'maxInclusive', minOccurs: 0, restriction: { maxInclusive: 10 }, fieldOptions: { label: 'maxInclusive 10 (value <= 10)' } },\n { name: 'minExclusive', minOccurs: 0, restriction: { minExclusive: 0 }, fieldOptions: { label: 'minExclusive 0 (value > 0)' } },\n { name: 'maxExclusive', minOccurs: 0, restriction: { maxExclusive: 100 }, fieldOptions: { label: 'maxExclusive 100 (value < 100)' } },\n { name: 'fractionDigits', minOccurs: 0, restriction: { fractionDigits: 2 }, fieldOptions: { label: 'fractionDigits 2 (max 2 decimals)' } },\n { name: 'totalDigits', minOccurs: 0, restriction: { totalDigits: 5 }, fieldOptions: { label: 'totalDigits 5' } },\n ],\n },\n {\n name: 'mixed',\n fieldOptions: { label: 'Combined & Custom' },\n type: 'heading',\n children: [\n { name: 'combined', minOccurs: 0, restriction: { minLength: 2, maxLength: 6, pattern: '^[a-z]+$' }, description: 'minLength 2, maxLength 6 and lowercase-only pattern combined.', fieldOptions: { label: 'Combined restrictions' } },\n { name: 'requiredWithRestriction', restriction: { minLength: 3 }, fieldOptions: { label: 'Required + minLength 3' } },\n { name: 'customValidation', minOccurs: 0, validation: (value: unknown) => !value || String(value).startsWith('A') || 'Value must start with \"A\"', description: 'Custom vee-validate function via the validation property.', fieldOptions: { label: 'Custom validation function' } },\n ],\n },\n]);\n\nexport const restrictionsSampleValues = {\n // Every value here satisfies its restriction, so loading the sample form validates cleanly.\n strings: {\n minLength: 'abcd',\n maxLength: 'abc',\n length: 'code',\n pattern: 'AB-123',\n enumeration: 'green',\n whiteSpace: 'clean text',\n },\n numbers: {\n minInclusive: '7',\n maxInclusive: '9',\n minExclusive: '3',\n maxExclusive: '42',\n fractionDigits: '3.14',\n totalDigits: '12345',\n },\n mixed: {\n combined: 'hello',\n requiredWithRestriction: 'valid',\n customValidation: 'Apple',\n },\n};\n\nexport const arrayOccurrenceTestCase = createTestCase([\n {\n name: 'occurrences',\n fieldOptions: { label: 'Occurrence Variants' },\n type: 'heading',\n children: [\n { name: 'manualFirstItem', minOccurs: 1, maxOccurs: 3, autoAddMinOccurs: false, description: 'Starts empty even though 1 item is required (autoAddMinOccurs: false). Add the first item yourself; submitting while empty shows the minOccurs error.', fieldOptions: { label: 'No auto first item' } },\n { name: 'prefilledToMin', minOccurs: 2, maxOccurs: 4, description: 'Auto-fills 2 empty items on first render (the default behaviour).', fieldOptions: { label: 'Pre-filled to minOccurs 2' } },\n { name: 'manyAllowed', minOccurs: 0, maxOccurs: 10, fieldOptions: { label: 'Optional, up to 10 items' } },\n ],\n },\n {\n name: 'typedArrays',\n fieldOptions: { label: 'Arrays of Other Input Types' },\n type: 'heading',\n children: [\n { name: 'selects', type: 'select', minOccurs: 0, maxOccurs: 3, fieldOptions: { label: 'Select array (max 3)' }, options: [\n { key: 'option1', value: 'Option 1' },\n { key: 'option2', value: 'Option 2' },\n ] },\n { name: 'checkboxes', type: 'checkbox', minOccurs: 0, maxOccurs: 3, fieldOptions: { label: 'Checkbox array (max 3)' } },\n { name: 'vModelTexts', type: 'textBoundByVModel', minOccurs: 0, maxOccurs: 3, fieldOptions: { label: 'v-model text array (max 3)' } },\n ],\n },\n]);\n\nexport const arrayOccurrenceSampleValues = {\n occurrences: {\n manualFirstItem: ['Added by hand'],\n prefilledToMin: ['First', 'Second'],\n manyAllowed: ['One', 'Two', 'Three'],\n },\n typedArrays: {\n selects: ['option1', 'option2'],\n checkboxes: [true, false],\n vModelTexts: ['Alpha', 'Beta'],\n },\n};\n\n// Arrays that arrive already over their maxOccurs from outside the form (an API response, an\n// import, or programmatic initialValues). The \"Add\" button can only stop you going forward, so the\n// only way to reach an over-limit array is to load one: turn on \"Load sample data\" and submit.\nexport const arrayMaxOccursTestCase = createTestCase([\n {\n name: 'overLimit',\n fieldOptions: { label: 'Over-limit Arrays (loaded from initialValues)' },\n type: 'heading',\n children: [\n { name: 'requiredItems', minOccurs: 1, maxOccurs: 2, fieldOptions: { label: 'Required (max 2)' }, description: 'Loaded with 3 items, one over the maximum. Submit to see the xsd_maxOccurs error; the Add button is already disabled.' },\n { name: 'optionalItems', minOccurs: 0, maxOccurs: 2, fieldOptions: { label: 'Optional (max 2)' }, description: 'A non-required array carried no occurrence rule before; loaded with 3 items it now fails xsd_maxOccurs on submit too.' },\n ],\n },\n]);\n\nexport const arrayMaxOccursSampleValues = {\n overLimit: {\n requiredItems: ['First', 'Second', 'Third'],\n optionalItems: ['One', 'Two', 'Three'],\n },\n};\n\nexport const choiceOccurrenceTestCase = createTestCase([\n {\n name: 'optionalChoice',\n fieldOptions: { label: 'Optional Choice (minOccurs 0)' },\n type: 'heading',\n children: [\n { name: 'contact', fieldOptions: { label: 'Optional choice' }, minOccurs: 0, fullWidth: true, description: 'Valid when left completely empty; still only one branch may hold a value.', choice: [\n { name: 'email', fieldOptions: { label: 'Email' } },\n { name: 'phone', fieldOptions: { label: 'Phone' } },\n ] },\n ],\n },\n {\n name: 'twoOccurrence',\n fieldOptions: { label: 'Choice Requiring 2 Occurrences (minOccurs 2, maxOccurs 4)' },\n type: 'heading',\n children: [\n { name: 'contact', fieldOptions: { label: 'At least 2 occurrences' }, minOccurs: 2, maxOccurs: 4, fullWidth: true, description: 'Submit with fewer than 2 filled occurrences to see the choiceMinOccurs error.', choice: [\n { name: 'email', fieldOptions: { label: 'Email' } },\n { name: 'phone', fieldOptions: { label: 'Phone' } },\n ] },\n ],\n },\n {\n name: 'differentLimits',\n fieldOptions: { label: 'Branches With Different Limits (maxOccurs 3)' },\n type: 'heading',\n children: [\n { name: 'entries', fieldOptions: { label: 'Per-iteration branch limits' }, maxOccurs: 3, fullWidth: true, description: 'Branch A allows 2 items per choice iteration, branch B only 1; the choice itself may repeat 3 times.', choice: [\n { name: 'branchA', maxOccurs: 2, fieldOptions: { label: 'Branch A (maxOccurs 2)' } },\n { name: 'branchB', maxOccurs: 1, fieldOptions: { label: 'Branch B (maxOccurs 1)' } },\n ] },\n ],\n },\n {\n name: 'totalCap',\n fieldOptions: { label: 'Branch Total Cap (maxOccursTotal, maxOccurs 4)' },\n type: 'heading',\n children: [\n { name: 'entries', fieldOptions: { label: 'Capped branch totals' }, maxOccurs: 4, fullWidth: true, description: 'The capped branch may reach at most 3 items in total across the whole choice, even though the shared budget would allow more.', choice: [\n { name: 'capped', maxOccurs: 2, maxOccursTotal: 3, fieldOptions: { label: 'Capped (maxOccurs 2, maxOccursTotal 3)' } },\n { name: 'uncapped', maxOccurs: 2, fieldOptions: { label: 'Uncapped (maxOccurs 2)' } },\n ] },\n ],\n },\n {\n name: 'singleBranchCap',\n fieldOptions: { label: 'Single-Branch Total Cap (maxOccursTotal 2)' },\n type: 'heading',\n children: [\n { name: 'tags', fieldOptions: { label: 'Capped single branch' }, fullWidth: true, description: 'A one-branch choice renders its branch directly, with no occurrence budget to share. The branch declares maxOccurs 3 but maxOccursTotal 2, so the add button disables after 2 items.', choice: [\n { name: 'tag', maxOccurs: 3, maxOccursTotal: 2, fieldOptions: { label: 'Tag (maxOccurs 3, maxOccursTotal 2)' } },\n ] },\n { name: 'clamped', fieldOptions: { label: 'Cap above maxOccurs has no effect' }, fullWidth: true, description: 'maxOccursTotal can only tighten: this branch declares maxOccurs 2 with maxOccursTotal 5, and still stops at 2 items.', choice: [\n { name: 'item', maxOccurs: 2, maxOccursTotal: 5, fieldOptions: { label: 'Item (maxOccurs 2, maxOccursTotal 5)' } },\n ] },\n ],\n },\n]);\n\nexport const choiceOccurrenceSampleValues = {\n optionalChoice: { contact: { email: 'ada@example.com' } },\n // Two filled email occurrences satisfy the minOccurs 2 requirement.\n twoOccurrence: { contact: { email: ['ada@example.com', 'grace@example.com'] } },\n differentLimits: { entries: { branchA: ['A-one', 'A-two'] } },\n totalCap: { entries: { capped: ['C-one', 'C-two'] } },\n // Both single branches filled exactly to their effective cap, so every add button is disabled.\n singleBranchCap: { tags: { tag: ['T-one', 'T-two'] }, clamped: { item: ['I-one', 'I-two'] } },\n};\n\n// Choices that arrive already over a maximum from outside the form (an API response, an import, or\n// programmatic initialValues). As with arrays, the \"Add\" affordance only prevents going forward, so\n// the errors are reachable only by loading over-limit data: turn on \"Load sample data\" and submit.\nexport const choiceMaxOccursTestCase = createTestCase([\n {\n name: 'tooManyBranches',\n fieldOptions: { label: 'Choice Over maxOccurs (auto mode, maxOccurs 1)' },\n type: 'heading',\n children: [\n { name: 'contact', fieldOptions: { label: 'Only one branch allowed' }, maxOccurs: 1, fullWidth: true, description: 'Loaded with both email and phone filled at once. Two occupied branches exceed maxOccurs 1, so submit shows the xsd_choiceMaxOccurs error.', choice: [\n { name: 'email', fieldOptions: { label: 'Email' } },\n { name: 'phone', fieldOptions: { label: 'Phone' } },\n ] },\n ],\n },\n {\n name: 'branchOverTotal',\n fieldOptions: { label: 'Branch Over maxOccursTotal (maxOccurs 4)' },\n type: 'heading',\n children: [\n { name: 'entries', fieldOptions: { label: 'Capped branch over its total' }, maxOccurs: 4, fullWidth: true, description: 'The capped branch allows at most 2 items in total across the whole choice (maxOccursTotal 2) but is loaded with 3. Submit shows the maxOccursTotal error.', choice: [\n { name: 'capped', maxOccurs: 3, maxOccursTotal: 2, fieldOptions: { label: 'Capped (maxOccursTotal 2)' } },\n { name: 'uncapped', maxOccurs: 3, fieldOptions: { label: 'Uncapped' } },\n ] },\n ],\n },\n {\n name: 'singleBranchOverTotal',\n fieldOptions: { label: 'Single Branch Over maxOccursTotal' },\n type: 'heading',\n children: [\n { name: 'tags', fieldOptions: { label: 'Capped single branch over its total' }, fullWidth: true, description: 'A one-branch choice skips choice-level validation, so a breach surfaces as the branch\\'s own maxOccurs error instead: the branch is capped at 2 items (maxOccursTotal 2) but loaded with 3. Submit to see it.', choice: [\n { name: 'tag', maxOccurs: 3, maxOccursTotal: 2, fieldOptions: { label: 'Tag (maxOccursTotal 2)' } },\n ] },\n ],\n },\n]);\n\nexport const choiceMaxOccursSampleValues = {\n tooManyBranches: { contact: { email: 'ada@example.com', phone: '555-0100' } },\n branchOverTotal: { entries: { capped: ['C-one', 'C-two', 'C-three'] } },\n singleBranchOverTotal: { tags: { tag: ['T-one', 'T-two', 'T-three'] } },\n};\n\nexport const explicitChoiceTestCase = createTestCase([\n {\n name: 'explicitSection',\n fieldOptions: { label: 'Explicit Choice (selection-first)' },\n type: 'heading',\n children: [\n { name: 'contact', fieldOptions: { label: 'Contact method' }, fullWidth: true, explicitChoiceSelection: true, description: 'No branch renders until one is chosen via the add buttons; switching to the other branch clears the current one.', choice: [\n { name: 'email', type: 'group', fieldOptions: { label: 'Email' }, children: [\n { name: 'address', fullWidth: true, fieldOptions: { label: 'Email address' } },\n ] },\n { name: 'phone', type: 'group', fieldOptions: { label: 'Phone' }, children: [\n { name: 'number', fullWidth: true, fieldOptions: { label: 'Phone number' } },\n { name: 'allowSms', type: 'checkbox', minOccurs: 0, fieldOptions: { label: 'Allow SMS' } },\n ] },\n ] },\n ],\n },\n]);\n\nexport const explicitChoiceSampleValues = {\n // A loaded value auto-selects its branch, even though nothing was clicked.\n explicitSection: { contact: { email: { address: 'jane@example.com' } } },\n};\n\nexport const preserveOnSwitchTestCase = createTestCase([\n {\n name: 'preserveSection',\n fieldOptions: { label: 'Explicit Choice With preserveOnSwitch' },\n type: 'heading',\n children: [\n { name: 'contact', fieldOptions: { label: 'Contact method' }, fullWidth: true, explicitChoiceSelection: true, preserveOnSwitch: true, description: 'Fill in Email, switch to Phone and back: the Email value is restored from the stash, with fresh touched/validation state.', choice: [\n { name: 'email', type: 'group', fieldOptions: { label: 'Email' }, children: [\n { name: 'address', fullWidth: true, fieldOptions: { label: 'Email address' } },\n ] },\n { name: 'phone', type: 'group', fieldOptions: { label: 'Phone' }, children: [\n { name: 'number', fullWidth: true, fieldOptions: { label: 'Phone number' } },\n ] },\n ] },\n ],\n },\n]);\n\nexport const preserveOnSwitchSampleValues = {\n preserveSection: { contact: { email: { address: 'restore@example.com' } } },\n};\n\nexport const explicitRepeatableChoiceTestCase = createTestCase([\n {\n name: 'integrationsSection',\n fieldOptions: { label: 'Explicit Repeatable Choice (maxOccurs 5)' },\n type: 'heading',\n children: [\n { name: 'integrations', fieldOptions: { label: 'Integrations' }, fullWidth: true, maxOccurs: 5, explicitChoiceSelection: true, description: 'Add up to 5 occurrences in any mix; each kind is additionally capped at 3 in total (maxOccursTotal), so its add button disables independently.', choice: [\n { name: 'crmExport', maxOccurs: 1, maxOccursTotal: 3, fullWidth: true, fieldOptions: { label: 'CRM export' }, children: [\n { name: 'crmSystem', fieldOptions: { label: 'CRM system' } },\n { name: 'exportSchedule', fieldOptions: { label: 'Export schedule' } },\n ] },\n { name: 'apiEndpoint', maxOccurs: 1, maxOccursTotal: 3, fullWidth: true, fieldOptions: { label: 'API endpoint' }, children: [\n { name: 'url', fieldOptions: { label: 'Endpoint URL' } },\n { name: 'apiKey', fieldOptions: { label: 'API key' } },\n ] },\n ] },\n ],\n },\n]);\n\nexport const explicitRepeatableChoiceSampleValues = {\n // A mix of both kinds; each branch is its own array of occurrences.\n integrationsSection: {\n integrations: {\n crmExport: [\n { crmSystem: 'Salesforce', exportSchedule: 'Nightly' },\n ],\n apiEndpoint: [\n { url: 'https://api.example.com/orders', apiKey: 'key-1234' },\n { url: 'https://api.example.com/customers', apiKey: 'key-5678' },\n ],\n },\n },\n};\n\nexport const choiceDisplayOrderAddedTestCase = createTestCase([\n {\n name: 'timelineSection',\n fieldOptions: { label: 'Repeatable Explicit Choice (displayOrder: added)' },\n type: 'heading',\n children: [\n { name: 'events', fieldOptions: { label: 'Timeline entries' }, fullWidth: true, maxOccurs: 6, explicitChoiceSelection: true, displayOrder: 'added', description: 'Occurrences render in the order their add button was pressed, interleaved across both kinds, instead of grouped by kind. The global-index badge follows the rendered order; the insertion-order badge appears only on occurrences added this session. Pre-loaded occurrences have no add-order, so they sort first in grouped order; reloading drops the add-order entirely.', choice: [\n { name: 'note', maxOccurs: 6, fullWidth: true, fieldOptions: { label: 'Note' }, children: [\n { name: 'text', fullWidth: true, fieldOptions: { label: 'Note text' } },\n ] },\n { name: 'milestone', maxOccurs: 6, fullWidth: true, fieldOptions: { label: 'Milestone' }, children: [\n { name: 'title', fieldOptions: { label: 'Milestone title' } },\n { name: 'owner', fieldOptions: { label: 'Owner' } },\n ] },\n ] },\n ],\n },\n]);\n\nexport const choiceDisplayOrderAddedSampleValues = {\n // Both pre-loaded occurrences lack an add-order, so they render first in grouped order;\n // anything added afterwards appends below them in add-press order.\n timelineSection: {\n events: {\n note: [{ text: 'Loaded note (sorts first, grouped)' }],\n milestone: [{ title: 'Loaded milestone', owner: 'Ada' }],\n },\n },\n};\n\nexport const choicePreserveOrderTestCase = createTestCase([\n {\n name: 'stepsSection',\n fieldOptions: { label: 'Repeatable Explicit Choice (preserveOrder + displayOrder: added)' },\n type: 'heading',\n children: [\n { name: 'steps', fieldOptions: { label: 'Workflow steps' }, fullWidth: true, maxOccurs: 6, explicitChoiceSelection: true, displayOrder: 'added', preserveOrder: true, description: 'Each added occurrence writes a 1-based \"order\" field into its own values (watch the debug output below), counted across both kinds. Removing one compacts the survivors back to a contiguous 1..N. Unlike the ephemeral displayOrder-only case, this order is real submitted data and survives a reload. The pre-loaded occurrences arrive without \"order\" and are backfilled once from their grouped position.', choice: [\n { name: 'manual', maxOccurs: 6, fullWidth: true, fieldOptions: { label: 'Manual step' }, children: [\n { name: 'instruction', fullWidth: true, fieldOptions: { label: 'Instruction' } },\n ] },\n { name: 'automated', maxOccurs: 6, fullWidth: true, fieldOptions: { label: 'Automated step' }, children: [\n { name: 'script', fullWidth: true, fieldOptions: { label: 'Script' } },\n ] },\n ] },\n ],\n },\n]);\n\nexport const choicePreserveOrderSampleValues = {\n // Neither pre-loaded occurrence carries \"order\"; the mount-time backfill assigns 1 and 2 from\n // their grouped position before any add-press can occur.\n stepsSection: {\n steps: {\n manual: [{ instruction: 'Backfilled order 1' }],\n automated: [{ script: 'deploy.sh' }],\n },\n },\n};\n\nexport const choicePreserveOrderScalarBranchTestCase = createTestCase([\n {\n name: 'labelsSection',\n fieldOptions: { label: 'preserveOrder With a Scalar-Leaf Branch (per-branch no-op)' },\n type: 'heading',\n children: [\n { name: 'items', fieldOptions: { label: 'Mixed branches' }, fullWidth: true, maxOccurs: 6, explicitChoiceSelection: true, displayOrder: 'added', preserveOrder: false, description: 'The object branch (with children) gets an \"order\" field written into its values; the scalar-leaf branch (plain text, no children) has nowhere to attach \"order\", so preserveOrder is a no-op for it and logs a console.warn in development. Adding a scalar item still works, it just carries no persisted order.', choice: [\n { name: 'labelled', maxOccurs: 6, fullWidth: true, fieldOptions: { label: 'Labelled item (object branch)' }, children: [\n { name: 'label', fullWidth: true, fieldOptions: { label: 'Label' } },\n ] },\n { name: 'tag', maxOccurs: 6, type: 'text', fullWidth: true, fieldOptions: { label: 'Tag (scalar branch, no order)' } },\n ] },\n ],\n },\n]);\n\nexport const choicePreserveOrderScalarBranchSampleValues = {\n labelsSection: {\n items: {\n labelled: [{ label: 'Has an order field' }],\n tag: ['plain-tag-no-order'],\n },\n },\n};\n\nexport const computedPropsTestCase = createTestCase([\n {\n name: 'ownValue',\n fieldOptions: { label: 'Reacting to Own Value' },\n type: 'heading',\n children: [\n { name: 'charCounter', minOccurs: 0, restriction: { maxLength: 10 }, fieldOptions: { label: 'Character counter' }, computedProps: [\n (field, value) => {\n const length = typeof value.value === 'string' ? value.value.length : 0;\n field.description = `${10 - length} character(s) remaining`;\n },\n ] },\n { name: 'selfHiding', minOccurs: 0, fieldOptions: { label: 'Type \"hide\" to hide me' }, computedProps: [\n (field, value) => {\n if (value.value === 'hide')\n field.hidden = true;\n },\n ] },\n { name: 'selfDisabling', minOccurs: 0, fieldOptions: { label: 'Type \"lock\" to disable me' }, computedProps: [\n (field, value) => {\n if (value.value === 'lock')\n field.disabled = true;\n },\n ] },\n ],\n },\n {\n name: 'progress',\n fieldOptions: { label: 'Parent Reacting to Child Values (computeOnChildValueChange)' },\n type: 'heading',\n computeOnChildValueChange: true,\n computedProps: [\n (field, value) => {\n const childValues = Object.values((value.value ?? {}) as Record<string, unknown>);\n const filled = childValues.filter(v => v !== undefined && v !== null && v !== '').length;\n field.description = `${filled} of 3 fields filled in`;\n },\n ],\n children: [\n { name: 'first', minOccurs: 0, fieldOptions: { label: 'First' } },\n { name: 'second', minOccurs: 0, fieldOptions: { label: 'Second' } },\n { name: 'third', minOccurs: 0, fieldOptions: { label: 'Third' } },\n ],\n },\n {\n name: 'childFieldsDemo',\n fieldOptions: { label: 'Parent Reacting to Child Computed State (childFields)' },\n type: 'heading',\n description: 'Each child hides itself when its value is \"hide\"; once every child is hidden the parent heading hides too.',\n computedProps: [\n (field, _value, childFields) => {\n if (childFields.value.length > 0 && childFields.value.every(c => c.hidden))\n field.hidden = true;\n },\n ],\n children: [\n { name: 'childA', minOccurs: 0, fieldOptions: { label: 'Child A (type \"hide\")' }, computedProps: [\n (field, value) => {\n if (value.value === 'hide')\n field.hidden = true;\n },\n ] },\n { name: 'childB', minOccurs: 0, fieldOptions: { label: 'Child B (type \"hide\")' }, computedProps: [\n (field, value) => {\n if (value.value === 'hide')\n field.hidden = true;\n },\n ] },\n ],\n },\n]);\n\nexport const computedPropsSampleValues = {\n // Values that stay visible/enabled (typing \"hide\"/\"lock\" would trigger the self-hiding demos).\n ownValue: { charCounter: 'Counting', selfHiding: 'still shown', selfDisabling: 'still on' },\n progress: { first: 'Filled one', second: 'Filled two' },\n childFieldsDemo: { childA: 'kept visible' },\n};\n\nexport const attributesTestCase = createTestCase([\n {\n name: 'attributes',\n fieldOptions: { label: 'Attributes' },\n type: 'heading',\n description: 'Attributes render once the parent field has a value; the value becomes an object like { value, ...attributes }. Check the debug output below.',\n children: [\n { name: 'nickname', minOccurs: 0, fullWidth: true, fieldOptions: { label: 'Optional attribute (lang)' }, attributes: [\n { name: 'lang', minOccurs: 0, fieldOptions: { label: 'Language' } },\n ] },\n { name: 'verifiedPhone', fullWidth: true, fieldOptions: { label: 'Required attribute (certainty)' }, attributes: [\n { name: 'certainty', type: 'select', fieldOptions: { label: 'Certainty' }, options: [\n { key: 'verified', value: 'Verified' },\n { key: 'unverified', value: 'Unverified' },\n ] },\n ] },\n ],\n },\n {\n name: 'complexTypes',\n fieldOptions: { label: 'Complex Types' },\n type: 'heading',\n children: [\n { name: 'complexValue', minOccurs: 0, fullWidth: true, isComplexType: true, description: 'isComplexType without attributes: the value is stored as { value: ... }.', fieldOptions: { label: 'isComplexType' } },\n ],\n },\n]);\n\nexport const attributesSampleValues = {\n attributes: {\n // A complex type stores its value plus each attribute under one object.\n nickname: { value: 'Ace', lang: 'en' },\n verifiedPhone: { value: '+31 6 1234 5678', certainty: 'verified' },\n },\n complexTypes: {\n complexValue: { value: 'Wrapped in { value }' },\n },\n};\n\nexport const complexTypeValuePropertyTestCase = createTestCase([\n {\n name: 'customValueProp',\n fieldOptions: { label: 'Custom complexTypeValueProperty' },\n type: 'heading',\n description: 'The settings rename the complex type value property to \"val\", so the debug output shows { val: ..., lang: ... }.',\n children: [\n { name: 'title', minOccurs: 0, fullWidth: true, fieldOptions: { label: 'Title with lang attribute' }, attributes: [\n { name: 'lang', minOccurs: 0, fieldOptions: { label: 'Language' } },\n ] },\n ],\n },\n], {\n complexTypeValueProperty: 'val',\n});\n\nexport const complexTypeValuePropertySampleValues = {\n // The value lives under \"val\" (not \"value\") because of the complexTypeValueProperty setting.\n customValueProp: { title: { val: 'Hello world', lang: 'en' } },\n};\n\nfunction createValidationTimingTestCase(description: string, settings: DynamicFormSettings) {\n return createTestCase([\n {\n name: 'timing',\n fieldOptions: { label: 'Validation Timing' },\n type: 'heading',\n description,\n children: [\n { name: 'requiredField', fieldOptions: { label: 'Required field' } },\n { name: 'maxLengthField', minOccurs: 0, restriction: { maxLength: 5 }, fieldOptions: { label: 'maxLength 5' } },\n ],\n },\n ], settings);\n}\n\n// All four timing variants share the same two-field shape.\nexport const validationTimingSampleValues = {\n timing: { requiredField: 'Filled in', maxLengthField: 'abc' },\n};\n\nexport const validateOnSubmitOnlyTestCase = createValidationTimingTestCase(\n 'validateOnValueUpdate: false, validateWhenInError: false. Errors only appear on submit and stay unchanged while typing until the next submit.',\n { validateOnValueUpdate: false, validateWhenInError: false },\n);\n\nexport const validateOnBlurTestCase = createValidationTimingTestCase(\n 'validateOnBlur: true, validateOnValueUpdate: false. Errors appear when leaving a field, not while typing.',\n { validateOnBlur: true, validateOnValueUpdate: false },\n);\n\nexport const validateAfterSubmitTestCase = createValidationTimingTestCase(\n 'validateOnValueUpdateAfterSubmit: true, validateOnValueUpdate: false. Typing does not validate until the first submit; after that every change validates.',\n { validateOnValueUpdateAfterSubmit: true, validateOnValueUpdate: false },\n);\n\nexport const validateWhenInErrorTestCase = createValidationTimingTestCase(\n 'validateOnValueUpdate: false, validateWhenInError: true. A field only starts live-validating once it is in error (after a submit).',\n { validateOnValueUpdate: false, validateWhenInError: true },\n);\n\nexport const showOptionalInsteadOfRequiredTestCase = createTestCase([\n {\n name: 'optionalMarkers',\n fieldOptions: { label: 'Show \"(optional)\" Instead of \"*\"' },\n type: 'heading',\n description: 'With showOptionalInsteadOfRequired the required markers disappear and optional fields are marked instead.',\n children: [\n { name: 'requiredField', fieldOptions: { label: 'Required field' } },\n { name: 'optionalField', minOccurs: 0, fieldOptions: { label: 'Optional field' } },\n ],\n },\n], {\n showOptionalInsteadOfRequired: true,\n});\n\nexport const showOptionalInsteadOfRequiredSampleValues = {\n optionalMarkers: { requiredField: 'Required value', optionalField: 'Optional value' },\n};\n\nexport const customMessagesTestCase = createTestCase([\n {\n name: 'messages',\n fieldOptions: { label: 'Custom Validation Messages' },\n type: 'heading',\n description: 'The settings override the required, maxLength and minInclusive messages; rules without an override fall back to the library defaults.',\n children: [\n { name: 'requiredField', fieldOptions: { label: 'Required field' } },\n { name: 'maxLengthField', minOccurs: 0, restriction: { maxLength: 5 }, fieldOptions: { label: 'maxLength 5' } },\n { name: 'minInclusiveField', minOccurs: 0, restriction: { minInclusive: 10 }, fieldOptions: { label: 'minInclusive 10' } },\n ],\n },\n], {\n messages: {\n required: 'Custom message: please fill in {field}',\n maxLength: 'Custom message: {field} must stay under {length} characters',\n minInclusive: 'Custom message: {field} must be {min} or higher',\n },\n});\n\nexport const customMessagesSampleValues = {\n messages: { requiredField: 'Filled in', maxLengthField: 'abcd', minInclusiveField: '15' },\n};\n\nexport const individualTestCase = createTestCase(\n [{\n name: 'items',\n type: 'text',\n fieldOptions: { label: 'Items' },\n maxOccurs: 3,\n attributes: [{ name: 'lang', type: 'text', minOccurs: 0 }],\n }],\n {\n // validateOnValueUpdate: false,\n // validateOnValueUpdateAfterSubmit: false,\n // validateWhenInError: true,\n // validateOnBlur: true,\n },\n);\n\nexport const individualSampleValues = {\n // Each repeatable item is a complex type: its text under \"value\" plus the lang attribute.\n items: [\n { value: 'First item', lang: 'en' },\n { value: 'Second item', lang: 'nl' },\n ],\n};\n\n// ----- Wizard -----\n\nconst planOptions = [\n { key: 'starter', value: 'Starter' },\n { key: 'growth', value: 'Growth' },\n { key: 'enterprise', value: 'Enterprise' },\n];\n\n// A backward-only wizard (the default): every page carries a required field, so \"Next\" only\n// advances once the current page validates, and the stepper buttons can only jump to an\n// already-visited earlier page. \"isLast\" is true on the last page, where the form's own Submit\n// button takes over from \"Next\".\nexport const wizardTestCase = createTestCase([{\n name: 'onboarding',\n wizard: true,\n fieldOptions: { label: 'Onboarding wizard (backward-only)' },\n children: [\n {\n name: 'company',\n type: 'heading',\n fieldOptions: { label: 'Company' },\n children: [\n { name: 'companyName', fieldOptions: { label: 'Company name (required)' }, fullWidth: true },\n { name: 'website', minOccurs: 0, fieldOptions: { label: 'Website (optional)' }, fullWidth: true },\n ],\n },\n {\n name: 'plan',\n type: 'heading',\n fieldOptions: { label: 'Plan' },\n children: [\n { name: 'planName', type: 'select', fieldOptions: { label: 'Plan (required)' }, options: planOptions },\n { name: 'seats', minOccurs: 0, fieldOptions: { label: 'Seats (optional)' } },\n ],\n },\n {\n name: 'review',\n type: 'heading',\n fieldOptions: { label: 'Review' },\n children: [\n { name: 'termsAccepted', type: 'checkbox', fieldOptions: { label: 'I accept the terms (required)' } },\n ],\n },\n ],\n}]);\n\nexport const wizardSampleValues = {\n onboarding: {\n company: { companyName: 'Acme Corp', website: 'https://acme.example' },\n plan: { planName: 'growth', seats: '25' },\n review: { termsAccepted: true },\n },\n};\n\n// allowForwardJump: true lets the stepper buttons jump forward to a not-yet-visited page, not just\n// back. Forward jumps do not validate the pages they skip (validateOnJump is off here).\nexport const wizardForwardJumpTestCase = createTestCase([{\n name: 'onboarding',\n wizard: { allowForwardJump: true, validateOnJump: false },\n fieldOptions: { label: 'Wizard with forward jumping' },\n children: [\n {\n name: 'company',\n type: 'heading',\n fieldOptions: { label: 'Company' },\n children: [{ name: 'companyName', fieldOptions: { label: 'Company name (required)' }, fullWidth: true }],\n },\n {\n name: 'plan',\n type: 'heading',\n fieldOptions: { label: 'Plan' },\n children: [{ name: 'planName', type: 'select', fieldOptions: { label: 'Plan (required)' }, options: planOptions }],\n },\n {\n name: 'review',\n type: 'heading',\n fieldOptions: { label: 'Review' },\n children: [{ name: 'termsAccepted', type: 'checkbox', fieldOptions: { label: 'I accept the terms (required)' } }],\n },\n ],\n}]);\n\nexport const wizardForwardJumpSampleValues = {\n onboarding: {\n company: { companyName: 'Acme Corp' },\n plan: { planName: 'enterprise' },\n review: { termsAccepted: true },\n },\n};\n\n// validateOnJump: true (with allowForwardJump) gates every stepper jump on the current page's\n// validation: try jumping away from page 1 while its required field is empty and the jump is\n// blocked with the error shown, exactly like \"Next\".\nexport const wizardValidateOnJumpTestCase = createTestCase([{\n name: 'onboarding',\n wizard: { allowForwardJump: true, validateOnJump: true },\n fieldOptions: { label: 'Wizard with validate-on-jump' },\n children: [\n {\n name: 'company',\n type: 'heading',\n fieldOptions: { label: 'Company' },\n children: [{ name: 'companyName', fieldOptions: { label: 'Company name (required)' }, fullWidth: true }],\n },\n {\n name: 'plan',\n type: 'heading',\n fieldOptions: { label: 'Plan' },\n children: [{ name: 'planName', type: 'select', fieldOptions: { label: 'Plan (required)' }, options: planOptions }],\n },\n {\n name: 'review',\n type: 'heading',\n fieldOptions: { label: 'Review' },\n children: [{ name: 'termsAccepted', type: 'checkbox', fieldOptions: { label: 'I accept the terms (required)' } }],\n },\n ],\n}]);\n\nexport const wizardValidateOnJumpSampleValues = wizardForwardJumpSampleValues;\n\n// Pages of every shape behind one wizard: a plain group page, a repeatable array page, a choice\n// page, and a field-less summary page. Each page renders through its own shape (heading / array /\n// choice) inside the shape-agnostic wizard-page wrapper. allowForwardJump lets you reach them all.\nexport const wizardCompositePagesTestCase = createTestCase([{\n name: 'onboarding',\n wizard: { allowForwardJump: true },\n fieldOptions: { label: 'Wizard with group / array / choice / summary pages' },\n children: [\n {\n name: 'company',\n type: 'heading',\n fieldOptions: { label: 'Company (group page)' },\n children: [\n { name: 'companyName', fieldOptions: { label: 'Company name (required)' }, fullWidth: true },\n ],\n },\n {\n name: 'contacts',\n type: 'heading',\n maxOccurs: 4,\n minOccurs: 1,\n fullWidth: true,\n fieldOptions: { label: 'Contacts (repeatable array page)' },\n children: [\n { name: 'fullName', fieldOptions: { label: 'Full name' } },\n { name: 'email', minOccurs: 0, fieldOptions: { label: 'Email (optional)' } },\n ],\n },\n {\n name: 'launchApproach',\n type: 'heading',\n fullWidth: true,\n fieldOptions: { label: 'Launch approach (choice page)' },\n choice: [\n { name: 'selfServe', type: 'group', fieldOptions: { label: 'Self serve' }, children: [\n { name: 'startDate', fieldOptions: { label: 'Start date' } },\n ] },\n { name: 'guidedRollout', type: 'group', fieldOptions: { label: 'Guided rollout' }, children: [\n { name: 'accountManager', fieldOptions: { label: 'Account manager' } },\n ] },\n ],\n },\n {\n name: 'summary',\n type: 'heading',\n fieldOptions: { label: 'Summary (field-less page)' },\n },\n ],\n}]);\n\nexport const wizardCompositePagesSampleValues = {\n onboarding: {\n company: { companyName: 'Acme Corp' },\n contacts: [\n { fullName: 'Ada Lovelace', email: 'ada@acme.example' },\n { fullName: 'Grace Hopper' },\n ],\n launchApproach: { guidedRollout: { accountManager: 'Alan Turing' } },\n },\n};\n\n// A \"choice of wizards\": the top node is an ordinary explicit choice, and each branch is itself a\n// wizard. Selecting a branch mounts one independent wizard with its own step state; this falls out\n// of the existing choice mechanics with no wizard-specific code.\nexport const choiceOfWizardsTestCase = createTestCase([{\n name: 'setupPath',\n explicitChoiceSelection: true,\n fullWidth: true,\n fieldOptions: { label: 'Pick a setup path (choice of wizards)' },\n choice: [\n {\n name: 'quickStart',\n wizard: { allowForwardJump: true },\n fieldOptions: { label: 'Quick start wizard' },\n children: [\n { name: 'basics', type: 'heading', fieldOptions: { label: 'Basics' }, children: [\n { name: 'projectName', fieldOptions: { label: 'Project name (required)' }, fullWidth: true },\n ] },\n { name: 'done', type: 'heading', fieldOptions: { label: 'Done' }, children: [\n { name: 'confirm', type: 'checkbox', fieldOptions: { label: 'Looks good (required)' } },\n ] },\n ],\n },\n {\n name: 'guidedSetup',\n wizard: { allowForwardJump: true },\n fieldOptions: { label: 'Guided setup wizard' },\n children: [\n { name: 'company', type: 'heading', fieldOptions: { label: 'Company' }, children: [\n { name: 'companyName', fieldOptions: { label: 'Company name (required)' }, fullWidth: true },\n ] },\n { name: 'plan', type: 'heading', fieldOptions: { label: 'Plan' }, children: [\n { name: 'planName', type: 'select', fieldOptions: { label: 'Plan (required)' }, options: planOptions },\n ] },\n { name: 'review', type: 'heading', fieldOptions: { label: 'Review' }, children: [\n { name: 'termsAccepted', type: 'checkbox', fieldOptions: { label: 'Accept terms (required)' } },\n ] },\n ],\n },\n ],\n}]);\n\nexport const choiceOfWizardsSampleValues = {\n setupPath: {\n guidedSetup: {\n company: { companyName: 'Acme Corp' },\n plan: { planName: 'growth' },\n review: { termsAccepted: true },\n },\n },\n};\n\n// A repeated wizard: an array whose item children contain a wizard node. Each occurrence gets its\n// own wizard with independent step state, again with no wizard-specific composition code.\nexport const repeatedWizardTestCase = createTestCase([{\n name: 'teams',\n type: 'heading',\n maxOccurs: 3,\n minOccurs: 1,\n fullWidth: true,\n fieldOptions: { label: 'Teams (each team runs its own wizard)' },\n children: [{\n name: 'setup',\n wizard: { allowForwardJump: true },\n fieldOptions: { label: 'Team setup wizard' },\n children: [\n { name: 'team', type: 'heading', fieldOptions: { label: 'Team' }, children: [\n { name: 'teamName', fieldOptions: { label: 'Team name (required)' }, fullWidth: true },\n ] },\n { name: 'lead', type: 'heading', fieldOptions: { label: 'Lead' }, children: [\n { name: 'leadName', fieldOptions: { label: 'Lead name (required)' }, fullWidth: true },\n ] },\n ],\n }],\n}]);\n\nexport const repeatedWizardSampleValues = {\n teams: [\n { setup: { team: { teamName: 'Platform' }, lead: { leadName: 'Ada Lovelace' } } },\n { setup: { team: { teamName: 'Growth' }, lead: { leadName: 'Grace Hopper' } } },\n ],\n};\n\n// A wizard for exercising the page-gating contract by hand: fill a field on one page, navigate\n// away and back, and watch whether the value survived. All fields are optional so navigation is\n// never blocked by validation, keeping the focus on mount/unmount behaviour. Drive it from the\n// Storybook controls: gate pages with v-show (correct) or v-if (unmounts non-current pages), and\n// toggle keepValuesOnUnmount to see it preserve values even under v-if. The live form values are\n// shown in the debug panel at the bottom.\nexport const wizardKeepValuesTestCase = createTestCase([{\n name: 'onboarding',\n wizard: { allowForwardJump: true },\n fieldOptions: { label: 'Wizard: v-show vs v-if and keepValuesOnUnmount' },\n children: [\n {\n name: 'company',\n type: 'heading',\n fieldOptions: { label: 'Company' },\n children: [{ name: 'companyName', minOccurs: 1, fieldOptions: { label: 'Company name (type something, then navigate away and back)' }, fullWidth: true }],\n },\n {\n name: 'plan',\n type: 'heading',\n fieldOptions: { label: 'Plan' },\n children: [{ name: 'planName', minOccurs: 1, fieldOptions: { label: 'Plan name' }, fullWidth: true }],\n },\n ],\n}]);\n\nexport const wizardKeepValuesSampleValues = {\n onboarding: {\n company: { companyName: 'Acme Corp' },\n plan: { planName: 'Growth' },\n },\n};\n\n// An optional (minOccurs: 0) ancestor relaxes the wizard's pages while the section is untouched:\n// submitting the empty form passes even though the pages carry required fields. Any value typed\n// inside the section re-arms those requirements, so \"Next\" and Submit gate again.\nexport const wizardOptionalAncestorTestCase = createTestCase([{\n name: 'registration',\n type: 'heading',\n minOccurs: 0,\n fieldOptions: { label: 'Optional section containing a wizard' },\n description: 'While this section is empty, nothing in the wizard is required: Submit passes right away. Type into any field and the required fields gate again.',\n children: [{\n name: 'onboarding',\n wizard: true,\n fieldOptions: { label: 'Onboarding wizard' },\n children: [\n {\n name: 'company',\n type: 'heading',\n fieldOptions: { label: 'Company' },\n children: [\n { name: 'companyName', fieldOptions: { label: 'Company name (required once the section has a value)' }, fullWidth: true },\n { name: 'website', minOccurs: 0, fieldOptions: { label: 'Website (optional)' }, fullWidth: true },\n ],\n },\n {\n name: 'plan',\n type: 'heading',\n fieldOptions: { label: 'Plan' },\n children: [\n { name: 'planName', type: 'select', fieldOptions: { label: 'Plan (required once the section has a value)' }, options: planOptions },\n ],\n },\n ],\n }],\n}]);\n\nexport const wizardOptionalAncestorSampleValues = {\n registration: {\n onboarding: {\n company: { companyName: 'Acme Corp' },\n },\n },\n};\n\n// A disabled (maxOccurs: 0) ancestor reaches through the wizard: the wizard chrome and every page\n// field render disabled, and Submit passes because disabled fields are never required.\nexport const wizardDisabledAncestorTestCase = createTestCase([{\n name: 'archived',\n type: 'heading',\n maxOccurs: 0,\n fieldOptions: { label: 'Disabled section containing a wizard' },\n description: 'The whole section is disabled via maxOccurs: 0. Navigate the wizard: every page field is disabled and Submit passes without validating them.',\n children: [{\n name: 'onboarding',\n wizard: { allowForwardJump: true },\n fieldOptions: { label: 'Onboarding wizard' },\n children: [\n {\n name: 'company',\n type: 'heading',\n fieldOptions: { label: 'Company' },\n children: [\n { name: 'companyName', fieldOptions: { label: 'Company name' }, fullWidth: true },\n { name: 'website', minOccurs: 0, fieldOptions: { label: 'Website' }, fullWidth: true },\n ],\n },\n {\n name: 'plan',\n type: 'heading',\n fieldOptions: { label: 'Plan' },\n children: [\n { name: 'planName', type: 'select', fieldOptions: { label: 'Plan' }, options: planOptions },\n ],\n },\n ],\n }],\n}]);\n\nexport const wizardDisabledAncestorSampleValues = {\n archived: {\n onboarding: {\n company: { companyName: 'Acme Corp', website: 'https://acme.example' },\n plan: { planName: 'growth' },\n },\n },\n};\n\nexport function createTestCase(\n metadata: Metadata[],\n settings?: DynamicFormSettings,\n testCaseConfig: {\n initialEdit?: boolean\n hideFieldsWithoutValue?: boolean\n initialValues?: GenericObject\n } = {},\n) {\n return markRaw(defineComponent({\n // Overridable at runtime so a Storybook control can flip a case between empty and pre-filled\n // without a second component; an unset prop falls back to the baked testCaseConfig/settings.\n props: {\n initialValues: { type: Object as PropType<GenericObject>, default: undefined },\n initialEdit: { type: Boolean as PropType<boolean | undefined>, default: undefined },\n hideFieldsWithoutValue: { type: Boolean as PropType<boolean | undefined>, default: undefined },\n settings: { type: Object as PropType<DynamicFormSettings | undefined>, default: undefined },\n keepValuesOnUnmount: { type: Boolean as PropType<boolean | undefined>, default: undefined },\n },\n setup: props => () => h(TestForm, {\n metadata,\n settings: props.settings ?? settings,\n showDebugState: true,\n initialValues: props.initialValues ?? testCaseConfig.initialValues,\n initialEdit: props.initialEdit ?? testCaseConfig.initialEdit,\n hideFieldsWithoutValue: props.hideFieldsWithoutValue ?? testCaseConfig.hideFieldsWithoutValue,\n keepValuesOnUnmount: props.keepValuesOnUnmount,\n }),\n }));\n}\n","<script setup lang=\"ts\">\nimport type { Metadata } from './TestFormTemplate.vue';\nimport { computed, ref } from 'vue';\nimport TestForm from './TestForm.vue';\n\n// A fixed test-case template cannot conditionally unmount a subtree, so this component\n// owns its own metadata list and toggles the complex field in and out of it, which unmounts\n// (and remounts) its DynamicFormItem the same way a template-level v-if would.\nconst showContact = ref(true);\nconst keepValuesOnUnmount = ref(false);\n\nconst metadata = computed<Metadata[]>(() => [\n ...(showContact.value\n ? [{\n name: 'contact',\n fieldOptions: { label: 'Contact (complex field with an attribute)' },\n minOccurs: 0,\n fullWidth: true,\n attributes: [\n {\n name: 'certainty',\n type: 'select' as const,\n minOccurs: 0,\n fieldOptions: { label: 'Certainty' },\n options: [\n { key: 'verified', value: 'Verified' },\n { key: 'unverified', value: 'Unverified' },\n ],\n },\n ],\n }]\n : []),\n { name: 'note', fieldOptions: { label: 'Sibling field (always mounted)' }, minOccurs: 0, fullWidth: true },\n]);\n</script>\n\n<template>\n <div class=\"flex flex-col gap-4\">\n <div class=\"flex gap-6 flex-wrap\">\n <label class=\"flex items-center gap-2\">\n <input v-model=\"showContact\" type=\"checkbox\" data-testid=\"toggle-show-contact\">\n Show contact field (v-if unmount)\n </label>\n <label class=\"flex items-center gap-2\">\n <input v-model=\"keepValuesOnUnmount\" type=\"checkbox\" data-testid=\"toggle-keep-values-on-unmount\">\n keepValuesOnUnmount\n </label>\n </div>\n <TestForm :metadata :keep-values-on-unmount=\"keepValuesOnUnmount\" show-debug-state />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { Metadata } from './TestFormTemplate.vue';\nimport { ref, useTemplateRef } from 'vue';\nimport TestForm from './TestForm.vue';\n\n// Drives the form the way application code would (prefilling from an API response, applying a\n// draft, ...): through setFieldValue/setValues on the form owned by TestForm, reached via its\n// exposed handle. Every written value is deliberately invalid, so whether the write validated is\n// directly visible: with shouldValidate false no errors may appear until the value is edited by\n// hand or the form is submitted.\nconst form = useTemplateRef<InstanceType<typeof TestForm>>('form');\nconst shouldValidate = ref(false);\n\nconst metadata: Metadata[] = [\n { name: 'code', fieldOptions: { label: 'Code (required, maxLength 5)' }, restriction: { maxLength: 5 }, fullWidth: true },\n { name: 'quantity', fieldOptions: { label: 'Quantity (at most 10)' }, minOccurs: 0, restriction: { maxInclusive: 10 }, fullWidth: true },\n { name: 'tags', fieldOptions: { label: 'Tags (at least 2 items)' }, minOccurs: 2, maxOccurs: 4, fullWidth: true },\n];\n\nconst invalidValues = {\n code: 'far too long for five',\n quantity: '42',\n tags: ['only one'],\n};\n\nfunction writeOneField() {\n form.value?.setFieldValue('code', invalidValues.code, shouldValidate.value);\n}\n\nfunction writeAllFields() {\n form.value?.setValues({ ...invalidValues }, shouldValidate.value);\n}\n</script>\n\n<template>\n <div class=\"flex flex-col gap-4\">\n <div class=\"flex items-center gap-4 flex-wrap\">\n <button type=\"button\" class=\"cursor-pointer bg-gray-200 text-black px-4 py-2 rounded\" data-testid=\"set-field-value\" @click=\"writeOneField\">\n setFieldValue('code', ...)\n </button>\n <button type=\"button\" class=\"cursor-pointer bg-gray-200 text-black px-4 py-2 rounded\" data-testid=\"set-values\" @click=\"writeAllFields\">\n setValues({ ... })\n </button>\n <label class=\"flex items-center gap-2\">\n <input v-model=\"shouldValidate\" type=\"checkbox\" data-testid=\"toggle-should-validate\">\n shouldValidate\n </label>\n </div>\n <TestForm ref=\"form\" :metadata show-debug-state />\n </div>\n</template>\n"],"names":["_createElementBlock","__props","$emit","_openBlock","_hoisted_1","_cache","_createElementVNode","_hoisted_2","buttonClass","buttonPrimaryClass","metadata","defineMetadata","_createBlock","DynamicFormTemplate","_unref","fieldMetadata","errorMessage","label","disabled","canAddItems","addItem","canRemoveItems","removeItem","slotProps","_normalizeClass","_createTextVNode","_toDisplayString","IconButton","$event","_hoisted_3","_hoisted_4","_renderSlot","_ctx","_withCtx","required","showOptionalInsteadOfRequired","addChoiceOccurrence","removeChoiceOccurrence","canAddChoiceOccurrence","usedChoiceOccurrences","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_Fragment","_renderList","branch","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","branchKey","globalIndex","insertionOrder","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_createVNode","_hoisted_27","pages","currentStepIndex","pageCount","isFirst","isLast","isValidating","wizardConfig","next","prev","gotoStep","_hoisted_28","_hoisted_29","page","pageIndex","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","isCurrent","wizardPageUseVIf","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_51","_hoisted_52","_hoisted_53","_hoisted_54","_hoisted_55","_hoisted_56","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_60","_hoisted_61","_hoisted_62","_hoisted_63","_hoisted_64","_hoisted_65","_hoisted_66","value","handleBlur","handleChange","optionKey","optionValue","_hoisted_68","_hoisted_70","_vModelSelect","_vModelCheckbox","_vModelText","values","handleSubmit","errors","meta","resetForm","resetField","setFieldValue","setValues","useDynamicForm","computed","manualValues","ref","editMode","isSubmitted","metadataWithEdit","x","mapEachMetadataItem","item","thisField","fieldValue","checkTreeHasValue","_fieldValue","childFields","c","settings","resetFirstField","__expose","submit","e","_values","_errors","error","key","DynamicForm","TestFormTemplate","defaultTestCase","createTestCase","defaultSampleValues","arrayTestCase","arraySampleValues","groupTestCase","groupSampleValues","choiceTestCase","choiceSampleValues","childFieldsTestCase","childFieldsSampleValues","inputTypesTestCase","inputTypesSampleValues","restrictionsTestCase","restrictionsSampleValues","arrayOccurrenceTestCase","arrayOccurrenceSampleValues","arrayMaxOccursTestCase","arrayMaxOccursSampleValues","choiceOccurrenceTestCase","choiceOccurrenceSampleValues","choiceMaxOccursTestCase","choiceMaxOccursSampleValues","explicitChoiceTestCase","explicitChoiceSampleValues","preserveOnSwitchTestCase","preserveOnSwitchSampleValues","explicitRepeatableChoiceTestCase","explicitRepeatableChoiceSampleValues","choiceDisplayOrderAddedTestCase","choiceDisplayOrderAddedSampleValues","choicePreserveOrderTestCase","choicePreserveOrderSampleValues","choicePreserveOrderScalarBranchTestCase","choicePreserveOrderScalarBranchSampleValues","computedPropsTestCase","field","length","filled","v","_value","computedPropsSampleValues","attributesTestCase","attributesSampleValues","complexTypeValuePropertyTestCase","complexTypeValuePropertySampleValues","createValidationTimingTestCase","description","validationTimingSampleValues","validateOnSubmitOnlyTestCase","validateOnBlurTestCase","validateAfterSubmitTestCase","validateWhenInErrorTestCase","showOptionalInsteadOfRequiredTestCase","showOptionalInsteadOfRequiredSampleValues","customMessagesTestCase","customMessagesSampleValues","individualTestCase","individualSampleValues","planOptions","wizardTestCase","wizardSampleValues","wizardForwardJumpTestCase","wizardForwardJumpSampleValues","wizardValidateOnJumpTestCase","wizardValidateOnJumpSampleValues","wizardCompositePagesTestCase","wizardCompositePagesSampleValues","choiceOfWizardsTestCase","choiceOfWizardsSampleValues","repeatedWizardTestCase","repeatedWizardSampleValues","wizardKeepValuesTestCase","wizardKeepValuesSampleValues","wizardOptionalAncestorTestCase","wizardOptionalAncestorSampleValues","wizardDisabledAncestorTestCase","wizardDisabledAncestorSampleValues","testCaseConfig","markRaw","defineComponent","props","h","TestForm","showContact","keepValuesOnUnmount","form","useTemplateRef","shouldValidate","invalidValues","writeOneField","writeAllFields"],"mappings":"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"}