@defra/forms-model 3.0.586 → 3.0.588

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 (26) hide show
  1. package/dist/module/form/form-definition/index.js +10 -1
  2. package/dist/module/form/form-definition/index.js.map +1 -1
  3. package/dist/module/form/form-definition/types.js.map +1 -1
  4. package/dist/module/form/form-editor/preview/controller/summary-page-controller.js +27 -1
  5. package/dist/module/form/form-editor/preview/controller/summary-page-controller.js.map +1 -1
  6. package/dist/module/form/form-editor/preview/types.js.map +1 -1
  7. package/dist/module/form/form-manager/types.js +5 -0
  8. package/dist/module/form/form-manager/types.js.map +1 -1
  9. package/dist/types/form/form-definition/index.d.ts +5 -1
  10. package/dist/types/form/form-definition/index.d.ts.map +1 -1
  11. package/dist/types/form/form-definition/types.d.ts +1 -0
  12. package/dist/types/form/form-definition/types.d.ts.map +1 -1
  13. package/dist/types/form/form-editor/preview/controller/summary-page-controller.d.ts +21 -0
  14. package/dist/types/form/form-editor/preview/controller/summary-page-controller.d.ts.map +1 -1
  15. package/dist/types/form/form-editor/preview/types.d.ts +15 -0
  16. package/dist/types/form/form-editor/preview/types.d.ts.map +1 -1
  17. package/dist/types/form/form-manager/types.d.ts +1 -0
  18. package/dist/types/form/form-manager/types.d.ts.map +1 -1
  19. package/package.json +1 -1
  20. package/schemas/form-definition-schema.json +6 -0
  21. package/schemas/form-definition-v2-schema.json +42 -36
  22. package/src/form/form-definition/index.ts +27 -0
  23. package/src/form/form-definition/types.ts +1 -0
  24. package/src/form/form-editor/preview/controller/summary-page-controller.js +27 -1
  25. package/src/form/form-editor/preview/types.ts +10 -0
  26. package/src/form/form-manager/types.ts +5 -0
@@ -80,6 +80,7 @@ const incompatibleConditionValidator = (value, helpers) => {
80
80
  });
81
81
  };
82
82
  const sectionsSchema = Joi.object().description('A form section grouping related pages together').keys({
83
+ id: Joi.string().uuid().optional().description('Unique identifier for the section (UUID)'),
83
84
  name: Joi.string().trim().required().description('Unique identifier for the section, used in code and page references'),
84
85
  title: Joi.string().trim().required().description('Human-readable section title displayed to users'),
85
86
  hideTitle: Joi.boolean().optional().default(false).description('When true, the section title will not be displayed in the UI')
@@ -378,6 +379,13 @@ export const listSchema = Joi.object().description('Reusable list of options for
378
379
  export const listSchemaV2 = listSchema.keys({
379
380
  id: idSchema.description('Unique identifier for the list')
380
381
  }).description('List schema for V2 forms');
382
+
383
+ /**
384
+ * V2 Joi schema for Sections
385
+ */
386
+ export const sectionsSchemaV2 = sectionsSchema.keys({
387
+ id: idSchema.description('Unique identifier for the section')
388
+ }).description('Section schema for V2 forms');
381
389
  const feedbackSchema = Joi.object().description('Feedback configuration for the form').keys({
382
390
  url: Joi.string().trim().optional().allow('').description('URL to an external feedback form when not using built-in feedback'),
383
391
  emailAddress: Joi.string().trim().email({
@@ -434,7 +442,8 @@ export const formDefinitionV2Schema = formDefinitionSchema.keys({
434
442
  schema: Joi.number().integer().valid(SchemaVersion.V2).description('Form schema version to use (2)'),
435
443
  pages: Joi.array().items(pageSchemaV2).required().unique('id').unique('path').description('Pages schema for V2 forms').error(checkErrors([FormDefinitionError.UniquePageId, FormDefinitionError.UniquePagePath])),
436
444
  lists: Joi.array().items(listSchemaV2).unique('id').unique('name').unique('title').description('Lists schema for V2 forms').error(checkErrors([FormDefinitionError.UniqueListId, FormDefinitionError.UniqueListName, FormDefinitionError.UniqueListTitle])),
437
- conditions: Joi.array().items(conditionWrapperSchemaV2).unique('id').unique('displayName').description('Named conditions used for form logic').error(checkErrors([FormDefinitionError.UniqueConditionId, FormDefinitionError.UniqueConditionDisplayName]))
445
+ conditions: Joi.array().items(conditionWrapperSchemaV2).unique('id').unique('displayName').description('Named conditions used for form logic').error(checkErrors([FormDefinitionError.UniqueConditionId, FormDefinitionError.UniqueConditionDisplayName])),
446
+ sections: Joi.array().items(sectionsSchemaV2).unique('id').unique('name').unique('title').required().description('Sections schema for V2 forms').error(checkErrors([FormDefinitionError.UniqueSectionId, FormDefinitionError.UniqueSectionName, FormDefinitionError.UniqueSectionTitle]))
438
447
  }).description('Form definition schema for V2');
439
448
 
440
449
  // Maintain compatibility with legacy named export
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["JoiDate","JoiBase","v4","uuidV4","ComponentType","isConditionalType","ConditionType","OperatorName","isConditionListItemRefValueData","isFormDefinition","SchemaVersion","checkErrors","FormDefinitionError","FormDefinitionErrorType","ControllerType","hasComponents","hasComponentsEvenIfNoNext","Joi","extend","idSchemaOptional","string","uuid","idSchema","default","conditionIdRef","ref","in","adjust","conditions","map","condition","id","componentIdRef","pages","flatMap","page","components","filter","component","listIdRef","lists","list","listItemIdValidator","value","helpers","definition","state","ancestors","find","conditionValue","listId","itemIdExists","items","some","item","error","valids","errorType","Ref","errorCode","RefConditionItemId","incompatibleConditionValidator","componentId","foundComponents","comp","undefined","Boolean","foundComponentHandlesConditions","length","type","incompatibleObject","key","valueKey","Incompatible","IncompatibleConditionComponentType","reason","sectionsSchema","object","description","keys","name","trim","required","title","hideTitle","boolean","optional","conditionFieldSchema","display","conditionValueSchema","conditionListItemRefDataSchemaV2","when","is","exist","then","valid","RefConditionListId","itemId","custom","relativeDateValueDataSchemaV2","period","number","integer","positive","unit","direction","relativeDateValueDataSchema","conditionRefSchema","conditionName","conditionDisplayName","coordinator","conditionRefDataSchemaV2","conditionId","RefConditionConditionId","conditionSchema","field","operator","alternatives","try","MIN_NUMBER_OF_REPEAT_ITEMS","MAX_NUMBER_OF_REPEAT_ITEMS","conditionDataSchemaV2","RefConditionComponentId","Object","values","any","switch","BooleanValue","StringValue","NumberValue","DateValue","date","format","raw","ListItemRef","RelativeDate","messages","conditionGroupSchema","array","link","conditionsModelSchema","conditionWrapperSchema","displayName","conditionWrapperSchemaV2","min","conditional","otherwise","max","regexCustomValidator","_regex","RegExp","IncompatibleQuestionRegex","componentSchema","shortDescription","Details","Html","InsetText","Markdown","pattern","allow","hint","options","rows","empty","maxWords","maxDaysInPast","maxDaysInFuture","customValidationMessage","customValidationMessages","unknown","schema","regex","TextField","MultilineTextField","componentSchemaV2","RefPageComponentList","componentPayloadSchemaV2","fileUploadComponentSchema","FileUploadField","contentComponentSchema","List","nextSchema","path","redirect","repeatOptions","repeatSchema","pageRepeatSchema","eventSchema","method","url","uri","scheme","eventsSchema","onLoad","onSave","pageUploadComponentsSchema","unique","ignoreUndefined","pageSchema","disallow","section","controller","repeat","strip","next","events","view","pageSchemaV2","append","FileUpload","UniquePageComponentId","UniquePageComponentName","RefPageCondition","pagePayloadSchemaV2","baseListItemSchema","text","stringListItemSchema","numberListItemSchema","listSchema","UniqueListItemId","UniqueListItemText","UniqueListItemValue","listSchemaV2","feedbackSchema","emailAddress","email","tlds","phaseBannerSchema","phase","outputSchema","audience","version","formDefinitionSchema","engine","V1","feedback","startPage","sections","UniqueSectionName","UniqueSectionTitle","metadata","a","declaration","skipSummary","phaseBanner","outputEmail","output","outputs","formDefinitionV2Schema","V2","UniquePageId","UniquePagePath","UniqueListId","UniqueListName","UniqueListTitle","UniqueConditionId","UniqueConditionDisplayName","Schema"],"sources":["../../../../src/form/form-definition/index.ts"],"sourcesContent":["import JoiDate from '@joi/date'\nimport JoiBase, { type CustomHelpers, type LanguageMessages } from 'joi'\nimport { v4 as uuidV4 } from 'uuid'\n\nimport { ComponentType } from '~/src/components/enums.js'\nimport { isConditionalType } from '~/src/components/helpers.js'\nimport {\n type ComponentDef,\n type ContentComponentsDef,\n type FileUploadFieldComponent\n} from '~/src/components/types.js'\nimport { ConditionType, OperatorName } from '~/src/conditions/enums.js'\nimport {\n type ConditionData,\n type ConditionDataV2,\n type ConditionFieldData,\n type ConditionGroupData,\n type ConditionGroupDataV2,\n type ConditionListItemRefValueDataV2,\n type ConditionRefData,\n type ConditionRefDataV2,\n type ConditionValueData,\n type ConditionsModelData,\n type RelativeDateValueData,\n type RelativeDateValueDataV2\n} from '~/src/conditions/types.js'\nimport {\n isConditionListItemRefValueData,\n isFormDefinition\n} from '~/src/form/form-definition/helpers.js'\nimport {\n SchemaVersion,\n type ConditionWrapper,\n type ConditionWrapperV2,\n type Event,\n type EventOptions,\n type Events,\n type FormDefinition,\n type Item,\n type Link,\n type List,\n type Page,\n type PhaseBanner,\n type Repeat,\n type RepeatOptions,\n type RepeatSchema,\n type Section\n} from '~/src/form/form-definition/types.js'\nimport { checkErrors } from '~/src/form/form-manager/errors.js'\nimport {\n FormDefinitionError,\n FormDefinitionErrorType\n} from '~/src/form/form-manager/types.js'\nimport { ControllerType } from '~/src/pages/enums.js'\nimport {\n hasComponents,\n hasComponentsEvenIfNoNext\n} from '~/src/pages/helpers.js'\n\nconst Joi = JoiBase.extend(JoiDate) as JoiBase.Root\n\nconst idSchemaOptional = Joi.string().uuid()\n\nconst idSchema = idSchemaOptional.default(() => uuidV4())\n\nconst conditionIdRef = Joi.ref('/conditions', {\n in: true,\n adjust: (conditions: ConditionWrapperV2[]) =>\n conditions.map((condition) => condition.id)\n})\n\nconst componentIdRef = Joi.ref('/pages', {\n in: true,\n adjust: (pages: Page[]) =>\n pages.flatMap((page) =>\n hasComponents(page)\n ? page.components\n .filter((component) => component.id)\n .map((component) => component.id)\n : []\n )\n})\n\nconst listIdRef = Joi.ref('/lists', {\n in: true,\n adjust: (lists: List[]) =>\n lists.filter((list) => list.id).map((list) => list.id)\n})\n\nexport const listItemIdValidator = (\n value: string,\n helpers: CustomHelpers<ConditionListItemRefValueDataV2>\n) => {\n const definition = helpers.state.ancestors.find(isFormDefinition) as\n | FormDefinition\n | undefined\n\n // Validation may not have been fired on the full FormDefinition\n // therefore we are unable to verify the list & item combination\n if (!definition) {\n return value\n }\n\n const conditionValue = helpers.state.ancestors[0]\n\n if (!isConditionListItemRefValueData(conditionValue)) {\n return value\n }\n\n const listId = conditionValue.listId\n const list = definition.lists.find((list) => list.id === listId)\n\n // This check is just for type safety. It'll be impossible for the list to not exist here as it will be\n // handled by the `Joi.valid(listIdRef)` applied to the `ConditionListItemRefValueDataV2.listId` schema\n if (!list) {\n return value\n }\n\n const itemIdExists = list.items.some((item) => item.id === value)\n\n return itemIdExists\n ? value\n : helpers.error('any.only', {\n value,\n valids: list.items.map((item) => item.id),\n errorType: FormDefinitionErrorType.Ref,\n errorCode: FormDefinitionError.RefConditionItemId\n })\n}\n\nconst incompatibleConditionValidator = (\n value: ConditionDataV2,\n helpers: CustomHelpers<ConditionDataV2>\n) => {\n const { componentId } = value\n const definition = helpers.state.ancestors.find(isFormDefinition) as\n | FormDefinition\n | undefined\n\n // Validation may not have been fired on the full FormDefinition\n // therefore we are unable to verify at this point, but the 'save'\n // will eventually validate the full FormDefinition\n if (!definition) {\n return value\n }\n\n const foundComponents = definition.pages\n .map((page) =>\n hasComponentsEvenIfNoNext(page)\n ? page.components.find((comp) => comp.id === componentId)\n : undefined\n )\n .filter(Boolean)\n\n const foundComponentHandlesConditions = foundComponents.length\n ? isConditionalType(foundComponents[0]?.type)\n : false\n\n return foundComponentHandlesConditions\n ? value\n : helpers.error('custom.incompatible', {\n incompatibleObject: {\n key: 'type',\n value: foundComponents[0]\n },\n valueKey: 'componentId',\n value: componentId,\n errorType: FormDefinitionErrorType.Incompatible,\n errorCode: FormDefinitionError.IncompatibleConditionComponentType,\n reason: 'does not support conditions'\n })\n}\n\nconst sectionsSchema = Joi.object<Section>()\n .description('A form section grouping related pages together')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description(\n 'Unique identifier for the section, used in code and page references'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Human-readable section title displayed to users'),\n hideTitle: Joi.boolean()\n .optional()\n .default(false)\n .description(\n 'When true, the section title will not be displayed in the UI'\n )\n })\n\nconst conditionFieldSchema = Joi.object<ConditionFieldData>()\n .description('Field reference used in a condition')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Component name referenced by this condition'),\n type: Joi.string()\n .trim()\n .required()\n .description('Data type of the field (e.g., string, number, date)'),\n display: Joi.string()\n .trim()\n .required()\n .description('Human-readable name of the field for display purposes')\n })\n\nconst conditionValueSchema = Joi.object<ConditionValueData>()\n .description('Value specification for a condition')\n .keys({\n type: Joi.string()\n .trim()\n .required()\n .description('Data type of the value (e.g., string, number, date)'),\n value: Joi.string()\n .trim()\n .required()\n .description('The actual value to compare against'),\n display: Joi.string()\n .trim()\n .required()\n .description('Human-readable version of the value for display purposes')\n })\n\nconst conditionListItemRefDataSchemaV2 =\n Joi.object<ConditionListItemRefValueDataV2>()\n .description('List item ref specification for a condition')\n .keys({\n listId: Joi.string()\n .trim()\n .required()\n .when('/lists', {\n is: Joi.exist(),\n then: Joi.valid(listIdRef)\n })\n .description('The id of the list')\n .error(checkErrors(FormDefinitionError.RefConditionListId)),\n itemId: Joi.string()\n .trim()\n .required()\n .description('The id of the list item')\n .custom(listItemIdValidator)\n })\n\nconst relativeDateValueDataSchemaV2 = Joi.object<RelativeDateValueDataV2>()\n .description('Relative date specification for date-based conditions')\n .keys({\n period: Joi.number()\n .integer()\n .positive()\n .required()\n .description('Numeric amount of the time period, as a string'),\n unit: Joi.string()\n .trim()\n .required()\n .description('Time unit (e.g. days, weeks, months, years)'),\n direction: Joi.string()\n .trim()\n .required()\n .description('Temporal direction, either \"past\" or \"future\"')\n })\n\nconst relativeDateValueDataSchema = Joi.object<RelativeDateValueData>()\n .description('Relative date specification for date-based conditions')\n .keys({\n type: Joi.string()\n .trim()\n .valid('RelativeDate')\n .required()\n .description('Type of the condition value, should be \"RelativeDate\"'),\n period: Joi.string()\n .trim()\n .required()\n .description('Numeric amount of the time period, as a string'),\n unit: Joi.string()\n .trim()\n .required()\n .description('Time unit (e.g. days, weeks, months, years)'),\n direction: Joi.string()\n .trim()\n .required()\n .description('Temporal direction, either \"past\" or \"future\"')\n })\n\nconst conditionRefSchema = Joi.object<ConditionRefData>()\n .description('Reference to a named condition defined elsewhere')\n .keys({\n conditionName: Joi.string()\n .trim()\n .required()\n .description('Name of the referenced condition'),\n conditionDisplayName: Joi.string()\n .trim()\n .required()\n .description('Human-readable name of the condition for display purposes'),\n coordinator: Joi.string()\n .trim()\n .optional()\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n )\n })\n\nconst conditionRefDataSchemaV2 = Joi.object<ConditionRefDataV2>()\n .description('Reference to a named condition defined elsewhere')\n .keys({\n id: idSchema.description('Unique identifier for the referenced condition'),\n conditionId: Joi.string()\n .trim()\n .required()\n .when('/conditions', {\n is: Joi.exist(),\n then: Joi.valid(conditionIdRef)\n })\n .description('Name of the referenced condition')\n .error(checkErrors(FormDefinitionError.RefConditionConditionId))\n })\n\nconst conditionSchema = Joi.object<ConditionData>()\n .description('Condition definition specifying a logical comparison')\n .keys({\n field: conditionFieldSchema.description(\n 'The form field being evaluated in this condition'\n ),\n operator: Joi.string()\n .trim()\n .required()\n .description('Comparison operator (equals, greaterThan, contains, etc.)'),\n value: Joi.alternatives()\n .try(conditionValueSchema, relativeDateValueDataSchema)\n .description(\n 'Value to compare the field against, either fixed or relative date'\n ),\n coordinator: Joi.string()\n .trim()\n .optional()\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n )\n })\n\nexport const MIN_NUMBER_OF_REPEAT_ITEMS = 1\nexport const MAX_NUMBER_OF_REPEAT_ITEMS = 200\n\nexport const conditionDataSchemaV2 = Joi.object<ConditionDataV2>()\n .description('Condition definition')\n .keys({\n id: idSchema.description(\n 'Unique identifier used to reference this condition'\n ),\n componentId: Joi.string()\n .trim()\n .required()\n .when('/pages', {\n is: Joi.exist(),\n then: Joi.valid(componentIdRef)\n })\n .description(\n 'Reference to the component id being evaluated in this condition'\n )\n .error(checkErrors(FormDefinitionError.RefConditionComponentId)),\n operator: Joi.string()\n .trim()\n .valid(...Object.values(OperatorName))\n .required()\n .description('Comparison operator (equals, greaterThan, contains, etc.)'),\n type: Joi.string()\n .trim()\n .valid(...Object.values(ConditionType))\n .required()\n .description('Type of the condition value'),\n value: Joi.any()\n .required()\n .description('The actual value to compare against')\n .when('type', {\n switch: [\n { is: ConditionType.BooleanValue, then: Joi.boolean() },\n { is: ConditionType.StringValue, then: Joi.string() },\n { is: ConditionType.NumberValue, then: Joi.number() },\n {\n is: ConditionType.DateValue,\n then: Joi.date().format('YYYY-MM-DD').raw()\n },\n {\n is: ConditionType.ListItemRef,\n then: conditionListItemRefDataSchemaV2\n },\n {\n is: ConditionType.RelativeDate,\n then: relativeDateValueDataSchemaV2\n }\n ]\n })\n .description(\n 'Value to compare the field against, either fixed or relative date'\n )\n })\n .custom(incompatibleConditionValidator)\n .messages({\n // Custom error types require a corresponding messages\n 'custom.incompatible': 'Incompatible data value'\n })\n\nconst conditionGroupSchema = Joi.object<ConditionGroupData>()\n .description('Group of conditions combined with logical operators')\n .keys({\n conditions: Joi.array()\n .items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n Joi.link('#conditionGroupSchema')\n )\n )\n .description('Array of conditions or condition references in this group')\n })\n .id('conditionGroupSchema')\n\nconst conditionsModelSchema = Joi.object<ConditionsModelData>()\n .description('Complete condition model with name and condition set')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Unique identifier for the condition set'),\n conditions: Joi.array()\n .items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n conditionGroupSchema\n )\n )\n .description(\n 'Array of conditions, condition references, or condition groups'\n )\n })\n\nconst conditionWrapperSchema = Joi.object<ConditionWrapper>()\n .description('Container for a named condition with its definition')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Unique identifier used to reference this condition'),\n displayName: Joi.string()\n .trim()\n .description('Human-readable name for display in the UI'),\n value: conditionsModelSchema\n .required()\n .description('The complete condition definition')\n })\n\nexport const conditionWrapperSchemaV2 = Joi.object<ConditionWrapperV2>()\n .description('Container for a named condition with its definition')\n .keys({\n id: idSchema.description('Unique identifier for the condition'),\n displayName: Joi.string()\n .trim()\n .description('Human-readable name for display in the UI'),\n coordinator: Joi.string()\n .optional()\n .when('items', { is: Joi.array().min(2), then: Joi.required() })\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n ),\n items: Joi.array<ConditionGroupDataV2>()\n .items(\n Joi.alternatives().conditional('.componentId', {\n is: Joi.exist(),\n then: conditionDataSchemaV2,\n otherwise: conditionRefDataSchemaV2\n })\n )\n .min(1)\n .max(15)\n .description('Array of conditions or condition references')\n })\n .description('Condition schema for V2 forms')\n\nexport const regexCustomValidator = (\n value: string,\n helpers: CustomHelpers<string>\n) => {\n try {\n const _regex = new RegExp(value)\n } catch {\n return helpers.error('custom.incompatible', {\n errorType: FormDefinitionErrorType.Incompatible,\n errorCode: FormDefinitionError.IncompatibleQuestionRegex\n })\n }\n return value\n}\n\nexport const componentSchema = Joi.object<ComponentDef>()\n .description('Form component definition specifying UI element behavior')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the component'),\n type: Joi.string<ComponentType>()\n .trim()\n .required()\n .description('Component type (TextField, RadioButtons, DateField, etc.)'),\n shortDescription: Joi.string()\n .trim()\n .optional()\n .description('Brief description of the component purpose'),\n name: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.Details,\n ComponentType.Html,\n ComponentType.InsetText,\n ComponentType.Markdown\n ),\n then: Joi.string()\n .trim()\n .pattern(/^[a-zA-Z]+$/)\n .optional()\n .description('Optional identifier for display-only components'),\n otherwise: Joi.string()\n .trim()\n .pattern(/^[a-zA-Z]+$/)\n .required()\n .description('Unique identifier for the component, used in form data')\n }),\n title: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.Details,\n ComponentType.Html,\n ComponentType.InsetText,\n ComponentType.Markdown\n ),\n then: Joi.string()\n .trim()\n .optional()\n .description('Optional title for display-only components'),\n otherwise: Joi.string()\n .trim()\n .allow('')\n .description('Label displayed above the component')\n }),\n hint: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description(\n 'Additional guidance text displayed below the component title'\n ),\n options: Joi.object({\n rows: Joi.number()\n .empty('')\n .description('Number of rows for textarea components'),\n maxWords: Joi.number()\n .empty('')\n .description('Maximum number of words allowed in text inputs'),\n maxDaysInPast: Joi.number()\n .empty('')\n .description('Maximum days in the past allowed for date inputs'),\n maxDaysInFuture: Joi.number()\n .empty('')\n .description('Maximum days in the future allowed for date inputs'),\n customValidationMessage: Joi.string()\n .trim()\n .allow('')\n .description('Custom error message for validation failures'),\n customValidationMessages: Joi.object<LanguageMessages>()\n .unknown(true)\n .optional()\n .description('Custom error messages keyed by validation rule name')\n })\n .default({})\n .unknown(true)\n .description('Component-specific configuration options'),\n schema: Joi.object({\n min: Joi.number()\n .empty('')\n .description('Minimum value or length for validation'),\n max: Joi.number()\n .empty('')\n .description('Maximum value or length for validation'),\n length: Joi.number()\n .empty('')\n .description('Exact length required for validation'),\n regex: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.TextField,\n ComponentType.MultilineTextField\n ),\n then: Joi.string() // NOSONAR\n .trim()\n .optional()\n .description('Regex expression for validation of user field content')\n .custom(regexCustomValidator),\n otherwise: Joi.string().allow('')\n }).messages({ 'custom.incompatible': 'The regex expression is invalid' })\n })\n .unknown(true)\n .default({})\n .description('Validation rules for the component'),\n list: Joi.string()\n .trim()\n .optional()\n .description(\n 'Reference to a predefined list of options for select components'\n )\n })\n .unknown(true)\n\nexport const componentSchemaV2 = componentSchema\n .keys({\n id: idSchema.description('Unique identifier for the component'),\n list: Joi.string()\n .when('/lists', {\n is: Joi.exist(),\n then: Joi.valid(listIdRef)\n })\n .optional()\n .description(\n 'List id reference to a predefined list of options for select components'\n )\n .error(checkErrors(FormDefinitionError.RefPageComponentList))\n })\n .description('Component schema for V2 forms')\n\nexport const componentPayloadSchemaV2 = componentSchema\n .keys({\n id: idSchema.description('Unique identifier for the component'),\n list: Joi.string()\n .optional()\n .description(\n 'List id reference to a predefined list of options for select components'\n )\n })\n .description('Payload schema for component for V2 forms')\n\nexport const fileUploadComponentSchema = componentSchemaV2.keys({\n type: Joi.string<ComponentType.FileUploadField>()\n .trim()\n .valid(ComponentType.FileUploadField)\n .required()\n .description('Component that can only be a FileUploadField')\n})\n\nexport const contentComponentSchema = componentSchemaV2.keys({\n type: Joi.string<ComponentType>()\n .trim()\n .valid(ComponentType.Details)\n .valid(ComponentType.Html)\n .valid(ComponentType.Markdown)\n .valid(ComponentType.InsetText)\n .valid(ComponentType.List)\n .required()\n .description('Content only component type (Details, Html, Markdown, etc.)')\n})\n\nconst nextSchema = Joi.object<Link>()\n .description('Navigation link defining where to go after completing a page')\n .keys({\n path: Joi.string()\n .trim()\n .required()\n .description('The target page path to navigate to'),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description(\n 'Optional condition that determines if this path should be taken'\n ),\n redirect: Joi.string()\n .trim()\n .optional()\n .description(\n 'Optional external URL to redirect to instead of an internal page'\n )\n })\n\nconst repeatOptions = Joi.object<RepeatOptions>()\n .description('Configuration options for a repeatable page section')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description(\n 'Identifier for the repeatable section, used in data structure'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Title displayed for each repeatable item')\n })\n\nconst repeatSchema = Joi.object<RepeatSchema>()\n .description('Validation rules for a repeatable section')\n .keys({\n min: Joi.number()\n .empty('')\n .min(MIN_NUMBER_OF_REPEAT_ITEMS)\n .required()\n .description('Minimum number of repetitions required'),\n max: Joi.number()\n .empty('')\n .min(Joi.ref('min'))\n .max(MAX_NUMBER_OF_REPEAT_ITEMS)\n .required()\n .description('Maximum number of repetitions allowed')\n })\n\nexport const pageRepeatSchema = Joi.object<Repeat>()\n .description('Complete configuration for a repeatable page')\n .keys({\n options: repeatOptions\n .required()\n .description('Display and identification options for the repetition'),\n schema: repeatSchema\n .required()\n .description('Validation constraints for the number of repetitions')\n })\n\nconst eventSchema = Joi.object<Event>()\n .description('Event handler configuration for page lifecycle events')\n .keys({\n type: Joi.string()\n .trim()\n .allow('http')\n .required()\n .description(\n 'Type of the event handler (currently only \"http\" supported)'\n ),\n options: Joi.object<EventOptions>()\n .description('Options specific to the event handler type')\n .keys({\n method: Joi.string()\n .trim()\n .allow('POST')\n .required()\n .description('HTTP method to use for the request'),\n url: Joi.string()\n .trim()\n .uri({ scheme: ['http', 'https'] })\n .required()\n .description('URL endpoint to call when the event fires')\n })\n })\n\nconst eventsSchema = Joi.object<Events>()\n .description(\n 'Collection of event handlers for different page lifecycle events'\n )\n .keys({\n onLoad: eventSchema\n .optional()\n .description('Event handler triggered when the page is loaded'),\n onSave: eventSchema\n .optional()\n .description('Event handler triggered when the page data is saved')\n })\n\nexport const pageUploadComponentsSchema = Joi.array<\n FileUploadFieldComponent | ContentComponentsDef\n>()\n .items(\n fileUploadComponentSchema.required(),\n contentComponentSchema.optional()\n )\n .unique('id')\n .unique('name', { ignoreUndefined: true })\n .min(1)\n .max(2)\n .description('Components allowed on Page Upload schema')\n\n/**\n * `/status` is a special route for providing a user's application status.\n * It should not be configured via the designer.\n */\nexport const pageSchema = Joi.object<Page>()\n .description('Form page definition specifying content and behavior')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the page'),\n path: Joi.string()\n .trim()\n .required()\n .disallow('/status')\n .description(\n 'URL path for this page, must not be the reserved \"/status\" path'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Page title displayed at the top of the page'),\n section: Joi.string().trim().description('Section this page belongs to'),\n controller: Joi.string()\n .trim()\n .optional()\n .description('Custom controller class name for special page behavior'),\n components: Joi.array<ComponentDef>()\n .items(componentSchema)\n .unique('name')\n .description('UI components displayed on this page'),\n repeat: Joi.when('controller', {\n is: Joi.string().trim().valid('RepeatPageController').required(),\n then: pageRepeatSchema\n .required()\n .description(\n 'Configuration for repeatable pages, required when using RepeatPageController'\n ),\n otherwise: Joi.any().strip()\n }),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Optional condition that determines if this page is shown'),\n next: Joi.array<Link>()\n .items(nextSchema)\n .default([])\n .description('Possible navigation paths after this page'),\n events: eventsSchema\n .optional()\n .description('Event handlers for page lifecycle events'),\n view: Joi.string()\n .trim()\n .optional()\n .description(\n 'Optional custom view template to use for rendering this page'\n )\n })\n\n/**\n * V2 engine schema - used with new editor\n */\nexport const pageSchemaV2 = pageSchema\n .append({\n id: idSchema.description('Unique identifier for the page'),\n title: Joi.string()\n .trim()\n .allow('')\n .required()\n .description(\n 'Page title displayed at the top of the page (with support for empty titles in V2)'\n ),\n components: Joi.when('controller', {\n switch: [\n {\n is: Joi.string().trim().valid(ControllerType.FileUpload).required(),\n then: pageUploadComponentsSchema\n }\n ],\n otherwise: Joi.array<ComponentDef>()\n .items(componentSchemaV2)\n .unique('id')\n .unique('name', { ignoreUndefined: true })\n .description('Components schema for V2 forms')\n .error(\n checkErrors([\n FormDefinitionError.UniquePageComponentId,\n FormDefinitionError.UniquePageComponentName\n ])\n )\n }),\n condition: Joi.string()\n .trim()\n .when('/conditions', {\n is: Joi.exist(),\n then: Joi.valid(conditionIdRef)\n })\n .optional()\n .description('Optional condition that determines if this page is shown')\n .error(checkErrors(FormDefinitionError.RefPageCondition))\n })\n .description('Page schema for V2 forms')\n\nexport const pagePayloadSchemaV2 = pageSchemaV2\n .append({\n components: Joi.when('controller', {\n switch: [\n {\n is: Joi.string().trim().valid(ControllerType.FileUpload).required(),\n then: pageUploadComponentsSchema\n }\n ],\n otherwise: Joi.array<ComponentDef>()\n .items(componentPayloadSchemaV2)\n .unique('id')\n .unique('name')\n .description('Components schema for V2 forms')\n })\n })\n .description('Payload Page schema for V2 forms')\n\nconst baseListItemSchema = Joi.object<Item>()\n .description('Base schema for list items with common properties')\n .keys({\n id: idSchema.description('Unique identifier for the list item'),\n text: Joi.string()\n .trim()\n .allow('')\n .description('Display text shown to the user'),\n description: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Optional additional descriptive text for the item'),\n conditional: Joi.object<Item['conditional']>()\n .description('Optional components to show when this item is selected')\n .keys({\n components: Joi.array<ComponentDef>()\n .required()\n .items(componentSchema.unknown(true))\n .unique('name')\n .description('Components to display conditionally')\n })\n .optional(),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Condition that determines if this item is shown'),\n hint: Joi.object<Item['hint']>()\n .optional()\n .keys({\n id: idSchema,\n text: Joi.string().trim()\n })\n .description('Optional hint text to be shown on list item')\n })\n\nconst stringListItemSchema = baseListItemSchema\n .append({\n value: Joi.string()\n .trim()\n .required()\n .description('String value stored when this item is selected')\n })\n .description('List item with string value')\n\nconst numberListItemSchema = baseListItemSchema\n .append({\n value: Joi.number()\n .required()\n .description('Numeric value stored when this item is selected')\n })\n .description('List item with numeric value')\n\nexport const listSchema = Joi.object<List>()\n .description('Reusable list of options for select components')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the list'),\n name: Joi.string()\n .trim()\n .required()\n .description('Name used to reference this list from components'),\n title: Joi.string()\n .trim()\n .required()\n .description('Human-readable title for the list'),\n type: Joi.string()\n .trim()\n .required()\n .valid('string', 'number')\n .description('Data type for list values (string or number)'),\n items: Joi.when('type', {\n is: 'string',\n then: Joi.array()\n .items(stringListItemSchema)\n .unique('id')\n .unique('text')\n .unique('value')\n .description('Array of items with string values')\n .error(\n checkErrors([\n FormDefinitionError.UniqueListItemId,\n FormDefinitionError.UniqueListItemText,\n FormDefinitionError.UniqueListItemValue\n ])\n ),\n otherwise: Joi.array()\n .items(numberListItemSchema)\n .unique('id')\n .unique('text')\n .unique('value')\n .description('Array of items with numeric values')\n .error(\n checkErrors([\n FormDefinitionError.UniqueListItemId,\n FormDefinitionError.UniqueListItemText,\n FormDefinitionError.UniqueListItemValue\n ])\n )\n })\n })\n\n/**\n * V2 Joi schema for Lists\n */\nexport const listSchemaV2 = listSchema\n .keys({\n id: idSchema.description('Unique identifier for the list')\n })\n .description('List schema for V2 forms')\n\nconst feedbackSchema = Joi.object<FormDefinition['feedback']>()\n .description('Feedback configuration for the form')\n .keys({\n url: Joi.string()\n .trim()\n .optional()\n .allow('')\n .description(\n 'URL to an external feedback form when not using built-in feedback'\n ),\n emailAddress: Joi.string()\n .trim()\n .email({\n tlds: {\n allow: false\n }\n })\n .optional()\n .description('Email address where feedback is sent')\n })\n\nconst phaseBannerSchema = Joi.object<PhaseBanner>()\n .description('Phase banner configuration showing development status')\n .keys({\n phase: Joi.string()\n .trim()\n .valid('alpha', 'beta')\n .description('Development phase of the service (alpha or beta)')\n })\n\nconst outputSchema = Joi.object<FormDefinition['output']>()\n .description('Configuration for form submission output')\n .keys({\n audience: Joi.string()\n .trim()\n .valid('human', 'machine')\n .required()\n .description(\n 'Target audience for the output (human readable or machine processable)'\n ),\n version: Joi.string()\n .trim()\n .required()\n .description('Version identifier for the output format')\n })\n\n/**\n * Joi schema for `FormDefinition` interface\n * @see {@link FormDefinition}\n */\nexport const formDefinitionSchema = Joi.object<FormDefinition>()\n .description('Complete form definition describing all aspects of a form')\n .required()\n .keys({\n engine: Joi.string()\n .trim()\n .allow('V1', 'V2')\n .default('V1')\n .description('Form engine version to use (V1 or V2)'),\n schema: Joi.number()\n .integer()\n .valid(SchemaVersion.V1)\n .default(SchemaVersion.V1)\n .description('Form schema version to use (1 or 2)'),\n name: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Unique name identifying the form'),\n feedback: feedbackSchema\n .optional()\n .description('Feedback mechanism configuration'),\n startPage: Joi.string()\n .trim()\n .optional()\n .description('Path of the first page to show when starting the form'),\n pages: Joi.array<Page>()\n .required()\n .items(pageSchema)\n .description('Pages schema for V1 forms')\n .unique('path'),\n sections: Joi.array<Section>()\n .items(sectionsSchema)\n .unique('name')\n .unique('title')\n .required()\n .description('Sections grouping related pages together')\n .error(\n checkErrors([\n FormDefinitionError.UniqueSectionName,\n FormDefinitionError.UniqueSectionTitle\n ])\n ),\n conditions: Joi.array<ConditionWrapper>()\n .items(conditionWrapperSchema)\n .unique('name')\n .unique('displayName')\n .description('Named conditions used for form logic'),\n lists: Joi.array<List>()\n .items(listSchema)\n .unique('name')\n .unique('title')\n .description('Reusable lists of options for select components'),\n metadata: Joi.object({ a: Joi.any() })\n .unknown()\n .optional()\n .description('Custom metadata for the form'),\n declaration: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Declaration text shown on the summary page'),\n skipSummary: Joi.any()\n .strip()\n .description('option to skip the summary page'),\n phaseBanner: phaseBannerSchema\n .optional()\n .description('Phase banner configuration'),\n outputEmail: Joi.string()\n .trim()\n .email({ tlds: { allow: ['uk'] } })\n .optional()\n .description('Email address where form submissions are sent'),\n output: outputSchema\n .optional()\n .description('Configuration for submission output format'),\n outputs: Joi.array()\n .items({\n emailAddress: Joi.string()\n .trim()\n .email({ tlds: { allow: ['uk'] } })\n .description('Email address where form submissions are sent'),\n audience: Joi.string()\n .trim()\n .valid('human', 'machine')\n .required()\n .description(\n 'Target audience for the output (human readable or machine processable)'\n ),\n version: Joi.string()\n .trim()\n .required()\n .description('Version identifier for the output format')\n })\n .optional()\n .description('One or more email targets/types for submission emails')\n })\n\nexport const formDefinitionV2Schema = formDefinitionSchema\n .keys({\n schema: Joi.number()\n .integer()\n .valid(SchemaVersion.V2)\n .description('Form schema version to use (2)'),\n pages: Joi.array<Page>()\n .items(pageSchemaV2)\n .required()\n .unique('id')\n .unique('path')\n .description('Pages schema for V2 forms')\n .error(\n checkErrors([\n FormDefinitionError.UniquePageId,\n FormDefinitionError.UniquePagePath\n ])\n ),\n lists: Joi.array<List>()\n .items(listSchemaV2)\n .unique('id')\n .unique('name')\n .unique('title')\n .description('Lists schema for V2 forms')\n .error(\n checkErrors([\n FormDefinitionError.UniqueListId,\n FormDefinitionError.UniqueListName,\n FormDefinitionError.UniqueListTitle\n ])\n ),\n conditions: Joi.array<ConditionWrapperV2>()\n .items(conditionWrapperSchemaV2)\n .unique('id')\n .unique('displayName')\n .description('Named conditions used for form logic')\n .error(\n checkErrors([\n FormDefinitionError.UniqueConditionId,\n FormDefinitionError.UniqueConditionDisplayName\n ])\n )\n })\n .description('Form definition schema for V2')\n\n// Maintain compatibility with legacy named export\n// E.g. `import { Schema } from '@defra/forms-model'`\nexport const Schema = formDefinitionSchema\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["JoiDate","JoiBase","v4","uuidV4","ComponentType","isConditionalType","ConditionType","OperatorName","isConditionListItemRefValueData","isFormDefinition","SchemaVersion","checkErrors","FormDefinitionError","FormDefinitionErrorType","ControllerType","hasComponents","hasComponentsEvenIfNoNext","Joi","extend","idSchemaOptional","string","uuid","idSchema","default","conditionIdRef","ref","in","adjust","conditions","map","condition","id","componentIdRef","pages","flatMap","page","components","filter","component","listIdRef","lists","list","listItemIdValidator","value","helpers","definition","state","ancestors","find","conditionValue","listId","itemIdExists","items","some","item","error","valids","errorType","Ref","errorCode","RefConditionItemId","incompatibleConditionValidator","componentId","foundComponents","comp","undefined","Boolean","foundComponentHandlesConditions","length","type","incompatibleObject","key","valueKey","Incompatible","IncompatibleConditionComponentType","reason","sectionsSchema","object","description","keys","optional","name","trim","required","title","hideTitle","boolean","conditionFieldSchema","display","conditionValueSchema","conditionListItemRefDataSchemaV2","when","is","exist","then","valid","RefConditionListId","itemId","custom","relativeDateValueDataSchemaV2","period","number","integer","positive","unit","direction","relativeDateValueDataSchema","conditionRefSchema","conditionName","conditionDisplayName","coordinator","conditionRefDataSchemaV2","conditionId","RefConditionConditionId","conditionSchema","field","operator","alternatives","try","MIN_NUMBER_OF_REPEAT_ITEMS","MAX_NUMBER_OF_REPEAT_ITEMS","conditionDataSchemaV2","RefConditionComponentId","Object","values","any","switch","BooleanValue","StringValue","NumberValue","DateValue","date","format","raw","ListItemRef","RelativeDate","messages","conditionGroupSchema","array","link","conditionsModelSchema","conditionWrapperSchema","displayName","conditionWrapperSchemaV2","min","conditional","otherwise","max","regexCustomValidator","_regex","RegExp","IncompatibleQuestionRegex","componentSchema","shortDescription","Details","Html","InsetText","Markdown","pattern","allow","hint","options","rows","empty","maxWords","maxDaysInPast","maxDaysInFuture","customValidationMessage","customValidationMessages","unknown","schema","regex","TextField","MultilineTextField","componentSchemaV2","RefPageComponentList","componentPayloadSchemaV2","fileUploadComponentSchema","FileUploadField","contentComponentSchema","List","nextSchema","path","redirect","repeatOptions","repeatSchema","pageRepeatSchema","eventSchema","method","url","uri","scheme","eventsSchema","onLoad","onSave","pageUploadComponentsSchema","unique","ignoreUndefined","pageSchema","disallow","section","controller","repeat","strip","next","events","view","pageSchemaV2","append","FileUpload","UniquePageComponentId","UniquePageComponentName","RefPageCondition","pagePayloadSchemaV2","baseListItemSchema","text","stringListItemSchema","numberListItemSchema","listSchema","UniqueListItemId","UniqueListItemText","UniqueListItemValue","listSchemaV2","sectionsSchemaV2","feedbackSchema","emailAddress","email","tlds","phaseBannerSchema","phase","outputSchema","audience","version","formDefinitionSchema","engine","V1","feedback","startPage","sections","UniqueSectionName","UniqueSectionTitle","metadata","a","declaration","skipSummary","phaseBanner","outputEmail","output","outputs","formDefinitionV2Schema","V2","UniquePageId","UniquePagePath","UniqueListId","UniqueListName","UniqueListTitle","UniqueConditionId","UniqueConditionDisplayName","UniqueSectionId","Schema"],"sources":["../../../../src/form/form-definition/index.ts"],"sourcesContent":["import JoiDate from '@joi/date'\nimport JoiBase, { type CustomHelpers, type LanguageMessages } from 'joi'\nimport { v4 as uuidV4 } from 'uuid'\n\nimport { ComponentType } from '~/src/components/enums.js'\nimport { isConditionalType } from '~/src/components/helpers.js'\nimport {\n type ComponentDef,\n type ContentComponentsDef,\n type FileUploadFieldComponent\n} from '~/src/components/types.js'\nimport { ConditionType, OperatorName } from '~/src/conditions/enums.js'\nimport {\n type ConditionData,\n type ConditionDataV2,\n type ConditionFieldData,\n type ConditionGroupData,\n type ConditionGroupDataV2,\n type ConditionListItemRefValueDataV2,\n type ConditionRefData,\n type ConditionRefDataV2,\n type ConditionValueData,\n type ConditionsModelData,\n type RelativeDateValueData,\n type RelativeDateValueDataV2\n} from '~/src/conditions/types.js'\nimport {\n isConditionListItemRefValueData,\n isFormDefinition\n} from '~/src/form/form-definition/helpers.js'\nimport {\n SchemaVersion,\n type ConditionWrapper,\n type ConditionWrapperV2,\n type Event,\n type EventOptions,\n type Events,\n type FormDefinition,\n type Item,\n type Link,\n type List,\n type Page,\n type PhaseBanner,\n type Repeat,\n type RepeatOptions,\n type RepeatSchema,\n type Section\n} from '~/src/form/form-definition/types.js'\nimport { checkErrors } from '~/src/form/form-manager/errors.js'\nimport {\n FormDefinitionError,\n FormDefinitionErrorType\n} from '~/src/form/form-manager/types.js'\nimport { ControllerType } from '~/src/pages/enums.js'\nimport {\n hasComponents,\n hasComponentsEvenIfNoNext\n} from '~/src/pages/helpers.js'\n\nconst Joi = JoiBase.extend(JoiDate) as JoiBase.Root\n\nconst idSchemaOptional = Joi.string().uuid()\n\nconst idSchema = idSchemaOptional.default(() => uuidV4())\n\nconst conditionIdRef = Joi.ref('/conditions', {\n in: true,\n adjust: (conditions: ConditionWrapperV2[]) =>\n conditions.map((condition) => condition.id)\n})\n\nconst componentIdRef = Joi.ref('/pages', {\n in: true,\n adjust: (pages: Page[]) =>\n pages.flatMap((page) =>\n hasComponents(page)\n ? page.components\n .filter((component) => component.id)\n .map((component) => component.id)\n : []\n )\n})\n\nconst listIdRef = Joi.ref('/lists', {\n in: true,\n adjust: (lists: List[]) =>\n lists.filter((list) => list.id).map((list) => list.id)\n})\n\nexport const listItemIdValidator = (\n value: string,\n helpers: CustomHelpers<ConditionListItemRefValueDataV2>\n) => {\n const definition = helpers.state.ancestors.find(isFormDefinition) as\n | FormDefinition\n | undefined\n\n // Validation may not have been fired on the full FormDefinition\n // therefore we are unable to verify the list & item combination\n if (!definition) {\n return value\n }\n\n const conditionValue = helpers.state.ancestors[0]\n\n if (!isConditionListItemRefValueData(conditionValue)) {\n return value\n }\n\n const listId = conditionValue.listId\n const list = definition.lists.find((list) => list.id === listId)\n\n // This check is just for type safety. It'll be impossible for the list to not exist here as it will be\n // handled by the `Joi.valid(listIdRef)` applied to the `ConditionListItemRefValueDataV2.listId` schema\n if (!list) {\n return value\n }\n\n const itemIdExists = list.items.some((item) => item.id === value)\n\n return itemIdExists\n ? value\n : helpers.error('any.only', {\n value,\n valids: list.items.map((item) => item.id),\n errorType: FormDefinitionErrorType.Ref,\n errorCode: FormDefinitionError.RefConditionItemId\n })\n}\n\nconst incompatibleConditionValidator = (\n value: ConditionDataV2,\n helpers: CustomHelpers<ConditionDataV2>\n) => {\n const { componentId } = value\n const definition = helpers.state.ancestors.find(isFormDefinition) as\n | FormDefinition\n | undefined\n\n // Validation may not have been fired on the full FormDefinition\n // therefore we are unable to verify at this point, but the 'save'\n // will eventually validate the full FormDefinition\n if (!definition) {\n return value\n }\n\n const foundComponents = definition.pages\n .map((page) =>\n hasComponentsEvenIfNoNext(page)\n ? page.components.find((comp) => comp.id === componentId)\n : undefined\n )\n .filter(Boolean)\n\n const foundComponentHandlesConditions = foundComponents.length\n ? isConditionalType(foundComponents[0]?.type)\n : false\n\n return foundComponentHandlesConditions\n ? value\n : helpers.error('custom.incompatible', {\n incompatibleObject: {\n key: 'type',\n value: foundComponents[0]\n },\n valueKey: 'componentId',\n value: componentId,\n errorType: FormDefinitionErrorType.Incompatible,\n errorCode: FormDefinitionError.IncompatibleConditionComponentType,\n reason: 'does not support conditions'\n })\n}\n\nconst sectionsSchema = Joi.object<Section>()\n .description('A form section grouping related pages together')\n .keys({\n id: Joi.string()\n .uuid()\n .optional()\n .description('Unique identifier for the section (UUID)'),\n name: Joi.string()\n .trim()\n .required()\n .description(\n 'Unique identifier for the section, used in code and page references'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Human-readable section title displayed to users'),\n hideTitle: Joi.boolean()\n .optional()\n .default(false)\n .description(\n 'When true, the section title will not be displayed in the UI'\n )\n })\n\nconst conditionFieldSchema = Joi.object<ConditionFieldData>()\n .description('Field reference used in a condition')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Component name referenced by this condition'),\n type: Joi.string()\n .trim()\n .required()\n .description('Data type of the field (e.g., string, number, date)'),\n display: Joi.string()\n .trim()\n .required()\n .description('Human-readable name of the field for display purposes')\n })\n\nconst conditionValueSchema = Joi.object<ConditionValueData>()\n .description('Value specification for a condition')\n .keys({\n type: Joi.string()\n .trim()\n .required()\n .description('Data type of the value (e.g., string, number, date)'),\n value: Joi.string()\n .trim()\n .required()\n .description('The actual value to compare against'),\n display: Joi.string()\n .trim()\n .required()\n .description('Human-readable version of the value for display purposes')\n })\n\nconst conditionListItemRefDataSchemaV2 =\n Joi.object<ConditionListItemRefValueDataV2>()\n .description('List item ref specification for a condition')\n .keys({\n listId: Joi.string()\n .trim()\n .required()\n .when('/lists', {\n is: Joi.exist(),\n then: Joi.valid(listIdRef)\n })\n .description('The id of the list')\n .error(checkErrors(FormDefinitionError.RefConditionListId)),\n itemId: Joi.string()\n .trim()\n .required()\n .description('The id of the list item')\n .custom(listItemIdValidator)\n })\n\nconst relativeDateValueDataSchemaV2 = Joi.object<RelativeDateValueDataV2>()\n .description('Relative date specification for date-based conditions')\n .keys({\n period: Joi.number()\n .integer()\n .positive()\n .required()\n .description('Numeric amount of the time period, as a string'),\n unit: Joi.string()\n .trim()\n .required()\n .description('Time unit (e.g. days, weeks, months, years)'),\n direction: Joi.string()\n .trim()\n .required()\n .description('Temporal direction, either \"past\" or \"future\"')\n })\n\nconst relativeDateValueDataSchema = Joi.object<RelativeDateValueData>()\n .description('Relative date specification for date-based conditions')\n .keys({\n type: Joi.string()\n .trim()\n .valid('RelativeDate')\n .required()\n .description('Type of the condition value, should be \"RelativeDate\"'),\n period: Joi.string()\n .trim()\n .required()\n .description('Numeric amount of the time period, as a string'),\n unit: Joi.string()\n .trim()\n .required()\n .description('Time unit (e.g. days, weeks, months, years)'),\n direction: Joi.string()\n .trim()\n .required()\n .description('Temporal direction, either \"past\" or \"future\"')\n })\n\nconst conditionRefSchema = Joi.object<ConditionRefData>()\n .description('Reference to a named condition defined elsewhere')\n .keys({\n conditionName: Joi.string()\n .trim()\n .required()\n .description('Name of the referenced condition'),\n conditionDisplayName: Joi.string()\n .trim()\n .required()\n .description('Human-readable name of the condition for display purposes'),\n coordinator: Joi.string()\n .trim()\n .optional()\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n )\n })\n\nconst conditionRefDataSchemaV2 = Joi.object<ConditionRefDataV2>()\n .description('Reference to a named condition defined elsewhere')\n .keys({\n id: idSchema.description('Unique identifier for the referenced condition'),\n conditionId: Joi.string()\n .trim()\n .required()\n .when('/conditions', {\n is: Joi.exist(),\n then: Joi.valid(conditionIdRef)\n })\n .description('Name of the referenced condition')\n .error(checkErrors(FormDefinitionError.RefConditionConditionId))\n })\n\nconst conditionSchema = Joi.object<ConditionData>()\n .description('Condition definition specifying a logical comparison')\n .keys({\n field: conditionFieldSchema.description(\n 'The form field being evaluated in this condition'\n ),\n operator: Joi.string()\n .trim()\n .required()\n .description('Comparison operator (equals, greaterThan, contains, etc.)'),\n value: Joi.alternatives()\n .try(conditionValueSchema, relativeDateValueDataSchema)\n .description(\n 'Value to compare the field against, either fixed or relative date'\n ),\n coordinator: Joi.string()\n .trim()\n .optional()\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n )\n })\n\nexport const MIN_NUMBER_OF_REPEAT_ITEMS = 1\nexport const MAX_NUMBER_OF_REPEAT_ITEMS = 200\n\nexport const conditionDataSchemaV2 = Joi.object<ConditionDataV2>()\n .description('Condition definition')\n .keys({\n id: idSchema.description(\n 'Unique identifier used to reference this condition'\n ),\n componentId: Joi.string()\n .trim()\n .required()\n .when('/pages', {\n is: Joi.exist(),\n then: Joi.valid(componentIdRef)\n })\n .description(\n 'Reference to the component id being evaluated in this condition'\n )\n .error(checkErrors(FormDefinitionError.RefConditionComponentId)),\n operator: Joi.string()\n .trim()\n .valid(...Object.values(OperatorName))\n .required()\n .description('Comparison operator (equals, greaterThan, contains, etc.)'),\n type: Joi.string()\n .trim()\n .valid(...Object.values(ConditionType))\n .required()\n .description('Type of the condition value'),\n value: Joi.any()\n .required()\n .description('The actual value to compare against')\n .when('type', {\n switch: [\n { is: ConditionType.BooleanValue, then: Joi.boolean() },\n { is: ConditionType.StringValue, then: Joi.string() },\n { is: ConditionType.NumberValue, then: Joi.number() },\n {\n is: ConditionType.DateValue,\n then: Joi.date().format('YYYY-MM-DD').raw()\n },\n {\n is: ConditionType.ListItemRef,\n then: conditionListItemRefDataSchemaV2\n },\n {\n is: ConditionType.RelativeDate,\n then: relativeDateValueDataSchemaV2\n }\n ]\n })\n .description(\n 'Value to compare the field against, either fixed or relative date'\n )\n })\n .custom(incompatibleConditionValidator)\n .messages({\n // Custom error types require a corresponding messages\n 'custom.incompatible': 'Incompatible data value'\n })\n\nconst conditionGroupSchema = Joi.object<ConditionGroupData>()\n .description('Group of conditions combined with logical operators')\n .keys({\n conditions: Joi.array()\n .items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n Joi.link('#conditionGroupSchema')\n )\n )\n .description('Array of conditions or condition references in this group')\n })\n .id('conditionGroupSchema')\n\nconst conditionsModelSchema = Joi.object<ConditionsModelData>()\n .description('Complete condition model with name and condition set')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Unique identifier for the condition set'),\n conditions: Joi.array()\n .items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n conditionGroupSchema\n )\n )\n .description(\n 'Array of conditions, condition references, or condition groups'\n )\n })\n\nconst conditionWrapperSchema = Joi.object<ConditionWrapper>()\n .description('Container for a named condition with its definition')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Unique identifier used to reference this condition'),\n displayName: Joi.string()\n .trim()\n .description('Human-readable name for display in the UI'),\n value: conditionsModelSchema\n .required()\n .description('The complete condition definition')\n })\n\nexport const conditionWrapperSchemaV2 = Joi.object<ConditionWrapperV2>()\n .description('Container for a named condition with its definition')\n .keys({\n id: idSchema.description('Unique identifier for the condition'),\n displayName: Joi.string()\n .trim()\n .description('Human-readable name for display in the UI'),\n coordinator: Joi.string()\n .optional()\n .when('items', { is: Joi.array().min(2), then: Joi.required() })\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n ),\n items: Joi.array<ConditionGroupDataV2>()\n .items(\n Joi.alternatives().conditional('.componentId', {\n is: Joi.exist(),\n then: conditionDataSchemaV2,\n otherwise: conditionRefDataSchemaV2\n })\n )\n .min(1)\n .max(15)\n .description('Array of conditions or condition references')\n })\n .description('Condition schema for V2 forms')\n\nexport const regexCustomValidator = (\n value: string,\n helpers: CustomHelpers<string>\n) => {\n try {\n const _regex = new RegExp(value)\n } catch {\n return helpers.error('custom.incompatible', {\n errorType: FormDefinitionErrorType.Incompatible,\n errorCode: FormDefinitionError.IncompatibleQuestionRegex\n })\n }\n return value\n}\n\nexport const componentSchema = Joi.object<ComponentDef>()\n .description('Form component definition specifying UI element behavior')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the component'),\n type: Joi.string<ComponentType>()\n .trim()\n .required()\n .description('Component type (TextField, RadioButtons, DateField, etc.)'),\n shortDescription: Joi.string()\n .trim()\n .optional()\n .description('Brief description of the component purpose'),\n name: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.Details,\n ComponentType.Html,\n ComponentType.InsetText,\n ComponentType.Markdown\n ),\n then: Joi.string()\n .trim()\n .pattern(/^[a-zA-Z]+$/)\n .optional()\n .description('Optional identifier for display-only components'),\n otherwise: Joi.string()\n .trim()\n .pattern(/^[a-zA-Z]+$/)\n .required()\n .description('Unique identifier for the component, used in form data')\n }),\n title: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.Details,\n ComponentType.Html,\n ComponentType.InsetText,\n ComponentType.Markdown\n ),\n then: Joi.string()\n .trim()\n .optional()\n .description('Optional title for display-only components'),\n otherwise: Joi.string()\n .trim()\n .allow('')\n .description('Label displayed above the component')\n }),\n hint: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description(\n 'Additional guidance text displayed below the component title'\n ),\n options: Joi.object({\n rows: Joi.number()\n .empty('')\n .description('Number of rows for textarea components'),\n maxWords: Joi.number()\n .empty('')\n .description('Maximum number of words allowed in text inputs'),\n maxDaysInPast: Joi.number()\n .empty('')\n .description('Maximum days in the past allowed for date inputs'),\n maxDaysInFuture: Joi.number()\n .empty('')\n .description('Maximum days in the future allowed for date inputs'),\n customValidationMessage: Joi.string()\n .trim()\n .allow('')\n .description('Custom error message for validation failures'),\n customValidationMessages: Joi.object<LanguageMessages>()\n .unknown(true)\n .optional()\n .description('Custom error messages keyed by validation rule name')\n })\n .default({})\n .unknown(true)\n .description('Component-specific configuration options'),\n schema: Joi.object({\n min: Joi.number()\n .empty('')\n .description('Minimum value or length for validation'),\n max: Joi.number()\n .empty('')\n .description('Maximum value or length for validation'),\n length: Joi.number()\n .empty('')\n .description('Exact length required for validation'),\n regex: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.TextField,\n ComponentType.MultilineTextField\n ),\n then: Joi.string() // NOSONAR\n .trim()\n .optional()\n .description('Regex expression for validation of user field content')\n .custom(regexCustomValidator),\n otherwise: Joi.string().allow('')\n }).messages({ 'custom.incompatible': 'The regex expression is invalid' })\n })\n .unknown(true)\n .default({})\n .description('Validation rules for the component'),\n list: Joi.string()\n .trim()\n .optional()\n .description(\n 'Reference to a predefined list of options for select components'\n )\n })\n .unknown(true)\n\nexport const componentSchemaV2 = componentSchema\n .keys({\n id: idSchema.description('Unique identifier for the component'),\n list: Joi.string()\n .when('/lists', {\n is: Joi.exist(),\n then: Joi.valid(listIdRef)\n })\n .optional()\n .description(\n 'List id reference to a predefined list of options for select components'\n )\n .error(checkErrors(FormDefinitionError.RefPageComponentList))\n })\n .description('Component schema for V2 forms')\n\nexport const componentPayloadSchemaV2 = componentSchema\n .keys({\n id: idSchema.description('Unique identifier for the component'),\n list: Joi.string()\n .optional()\n .description(\n 'List id reference to a predefined list of options for select components'\n )\n })\n .description('Payload schema for component for V2 forms')\n\nexport const fileUploadComponentSchema = componentSchemaV2.keys({\n type: Joi.string<ComponentType.FileUploadField>()\n .trim()\n .valid(ComponentType.FileUploadField)\n .required()\n .description('Component that can only be a FileUploadField')\n})\n\nexport const contentComponentSchema = componentSchemaV2.keys({\n type: Joi.string<ComponentType>()\n .trim()\n .valid(ComponentType.Details)\n .valid(ComponentType.Html)\n .valid(ComponentType.Markdown)\n .valid(ComponentType.InsetText)\n .valid(ComponentType.List)\n .required()\n .description('Content only component type (Details, Html, Markdown, etc.)')\n})\n\nconst nextSchema = Joi.object<Link>()\n .description('Navigation link defining where to go after completing a page')\n .keys({\n path: Joi.string()\n .trim()\n .required()\n .description('The target page path to navigate to'),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description(\n 'Optional condition that determines if this path should be taken'\n ),\n redirect: Joi.string()\n .trim()\n .optional()\n .description(\n 'Optional external URL to redirect to instead of an internal page'\n )\n })\n\nconst repeatOptions = Joi.object<RepeatOptions>()\n .description('Configuration options for a repeatable page section')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description(\n 'Identifier for the repeatable section, used in data structure'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Title displayed for each repeatable item')\n })\n\nconst repeatSchema = Joi.object<RepeatSchema>()\n .description('Validation rules for a repeatable section')\n .keys({\n min: Joi.number()\n .empty('')\n .min(MIN_NUMBER_OF_REPEAT_ITEMS)\n .required()\n .description('Minimum number of repetitions required'),\n max: Joi.number()\n .empty('')\n .min(Joi.ref('min'))\n .max(MAX_NUMBER_OF_REPEAT_ITEMS)\n .required()\n .description('Maximum number of repetitions allowed')\n })\n\nexport const pageRepeatSchema = Joi.object<Repeat>()\n .description('Complete configuration for a repeatable page')\n .keys({\n options: repeatOptions\n .required()\n .description('Display and identification options for the repetition'),\n schema: repeatSchema\n .required()\n .description('Validation constraints for the number of repetitions')\n })\n\nconst eventSchema = Joi.object<Event>()\n .description('Event handler configuration for page lifecycle events')\n .keys({\n type: Joi.string()\n .trim()\n .allow('http')\n .required()\n .description(\n 'Type of the event handler (currently only \"http\" supported)'\n ),\n options: Joi.object<EventOptions>()\n .description('Options specific to the event handler type')\n .keys({\n method: Joi.string()\n .trim()\n .allow('POST')\n .required()\n .description('HTTP method to use for the request'),\n url: Joi.string()\n .trim()\n .uri({ scheme: ['http', 'https'] })\n .required()\n .description('URL endpoint to call when the event fires')\n })\n })\n\nconst eventsSchema = Joi.object<Events>()\n .description(\n 'Collection of event handlers for different page lifecycle events'\n )\n .keys({\n onLoad: eventSchema\n .optional()\n .description('Event handler triggered when the page is loaded'),\n onSave: eventSchema\n .optional()\n .description('Event handler triggered when the page data is saved')\n })\n\nexport const pageUploadComponentsSchema = Joi.array<\n FileUploadFieldComponent | ContentComponentsDef\n>()\n .items(\n fileUploadComponentSchema.required(),\n contentComponentSchema.optional()\n )\n .unique('id')\n .unique('name', { ignoreUndefined: true })\n .min(1)\n .max(2)\n .description('Components allowed on Page Upload schema')\n\n/**\n * `/status` is a special route for providing a user's application status.\n * It should not be configured via the designer.\n */\nexport const pageSchema = Joi.object<Page>()\n .description('Form page definition specifying content and behavior')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the page'),\n path: Joi.string()\n .trim()\n .required()\n .disallow('/status')\n .description(\n 'URL path for this page, must not be the reserved \"/status\" path'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Page title displayed at the top of the page'),\n section: Joi.string().trim().description('Section this page belongs to'),\n controller: Joi.string()\n .trim()\n .optional()\n .description('Custom controller class name for special page behavior'),\n components: Joi.array<ComponentDef>()\n .items(componentSchema)\n .unique('name')\n .description('UI components displayed on this page'),\n repeat: Joi.when('controller', {\n is: Joi.string().trim().valid('RepeatPageController').required(),\n then: pageRepeatSchema\n .required()\n .description(\n 'Configuration for repeatable pages, required when using RepeatPageController'\n ),\n otherwise: Joi.any().strip()\n }),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Optional condition that determines if this page is shown'),\n next: Joi.array<Link>()\n .items(nextSchema)\n .default([])\n .description('Possible navigation paths after this page'),\n events: eventsSchema\n .optional()\n .description('Event handlers for page lifecycle events'),\n view: Joi.string()\n .trim()\n .optional()\n .description(\n 'Optional custom view template to use for rendering this page'\n )\n })\n\n/**\n * V2 engine schema - used with new editor\n */\nexport const pageSchemaV2 = pageSchema\n .append({\n id: idSchema.description('Unique identifier for the page'),\n title: Joi.string()\n .trim()\n .allow('')\n .required()\n .description(\n 'Page title displayed at the top of the page (with support for empty titles in V2)'\n ),\n components: Joi.when('controller', {\n switch: [\n {\n is: Joi.string().trim().valid(ControllerType.FileUpload).required(),\n then: pageUploadComponentsSchema\n }\n ],\n otherwise: Joi.array<ComponentDef>()\n .items(componentSchemaV2)\n .unique('id')\n .unique('name', { ignoreUndefined: true })\n .description('Components schema for V2 forms')\n .error(\n checkErrors([\n FormDefinitionError.UniquePageComponentId,\n FormDefinitionError.UniquePageComponentName\n ])\n )\n }),\n condition: Joi.string()\n .trim()\n .when('/conditions', {\n is: Joi.exist(),\n then: Joi.valid(conditionIdRef)\n })\n .optional()\n .description('Optional condition that determines if this page is shown')\n .error(checkErrors(FormDefinitionError.RefPageCondition))\n })\n .description('Page schema for V2 forms')\n\nexport const pagePayloadSchemaV2 = pageSchemaV2\n .append({\n components: Joi.when('controller', {\n switch: [\n {\n is: Joi.string().trim().valid(ControllerType.FileUpload).required(),\n then: pageUploadComponentsSchema\n }\n ],\n otherwise: Joi.array<ComponentDef>()\n .items(componentPayloadSchemaV2)\n .unique('id')\n .unique('name')\n .description('Components schema for V2 forms')\n })\n })\n .description('Payload Page schema for V2 forms')\n\nconst baseListItemSchema = Joi.object<Item>()\n .description('Base schema for list items with common properties')\n .keys({\n id: idSchema.description('Unique identifier for the list item'),\n text: Joi.string()\n .trim()\n .allow('')\n .description('Display text shown to the user'),\n description: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Optional additional descriptive text for the item'),\n conditional: Joi.object<Item['conditional']>()\n .description('Optional components to show when this item is selected')\n .keys({\n components: Joi.array<ComponentDef>()\n .required()\n .items(componentSchema.unknown(true))\n .unique('name')\n .description('Components to display conditionally')\n })\n .optional(),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Condition that determines if this item is shown'),\n hint: Joi.object<Item['hint']>()\n .optional()\n .keys({\n id: idSchema,\n text: Joi.string().trim()\n })\n .description('Optional hint text to be shown on list item')\n })\n\nconst stringListItemSchema = baseListItemSchema\n .append({\n value: Joi.string()\n .trim()\n .required()\n .description('String value stored when this item is selected')\n })\n .description('List item with string value')\n\nconst numberListItemSchema = baseListItemSchema\n .append({\n value: Joi.number()\n .required()\n .description('Numeric value stored when this item is selected')\n })\n .description('List item with numeric value')\n\nexport const listSchema = Joi.object<List>()\n .description('Reusable list of options for select components')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the list'),\n name: Joi.string()\n .trim()\n .required()\n .description('Name used to reference this list from components'),\n title: Joi.string()\n .trim()\n .required()\n .description('Human-readable title for the list'),\n type: Joi.string()\n .trim()\n .required()\n .valid('string', 'number')\n .description('Data type for list values (string or number)'),\n items: Joi.when('type', {\n is: 'string',\n then: Joi.array()\n .items(stringListItemSchema)\n .unique('id')\n .unique('text')\n .unique('value')\n .description('Array of items with string values')\n .error(\n checkErrors([\n FormDefinitionError.UniqueListItemId,\n FormDefinitionError.UniqueListItemText,\n FormDefinitionError.UniqueListItemValue\n ])\n ),\n otherwise: Joi.array()\n .items(numberListItemSchema)\n .unique('id')\n .unique('text')\n .unique('value')\n .description('Array of items with numeric values')\n .error(\n checkErrors([\n FormDefinitionError.UniqueListItemId,\n FormDefinitionError.UniqueListItemText,\n FormDefinitionError.UniqueListItemValue\n ])\n )\n })\n })\n\n/**\n * V2 Joi schema for Lists\n */\nexport const listSchemaV2 = listSchema\n .keys({\n id: idSchema.description('Unique identifier for the list')\n })\n .description('List schema for V2 forms')\n\n/**\n * V2 Joi schema for Sections\n */\nexport const sectionsSchemaV2 = sectionsSchema\n .keys({\n id: idSchema.description('Unique identifier for the section')\n })\n .description('Section schema for V2 forms')\n\nconst feedbackSchema = Joi.object<FormDefinition['feedback']>()\n .description('Feedback configuration for the form')\n .keys({\n url: Joi.string()\n .trim()\n .optional()\n .allow('')\n .description(\n 'URL to an external feedback form when not using built-in feedback'\n ),\n emailAddress: Joi.string()\n .trim()\n .email({\n tlds: {\n allow: false\n }\n })\n .optional()\n .description('Email address where feedback is sent')\n })\n\nconst phaseBannerSchema = Joi.object<PhaseBanner>()\n .description('Phase banner configuration showing development status')\n .keys({\n phase: Joi.string()\n .trim()\n .valid('alpha', 'beta')\n .description('Development phase of the service (alpha or beta)')\n })\n\nconst outputSchema = Joi.object<FormDefinition['output']>()\n .description('Configuration for form submission output')\n .keys({\n audience: Joi.string()\n .trim()\n .valid('human', 'machine')\n .required()\n .description(\n 'Target audience for the output (human readable or machine processable)'\n ),\n version: Joi.string()\n .trim()\n .required()\n .description('Version identifier for the output format')\n })\n\n/**\n * Joi schema for `FormDefinition` interface\n * @see {@link FormDefinition}\n */\nexport const formDefinitionSchema = Joi.object<FormDefinition>()\n .description('Complete form definition describing all aspects of a form')\n .required()\n .keys({\n engine: Joi.string()\n .trim()\n .allow('V1', 'V2')\n .default('V1')\n .description('Form engine version to use (V1 or V2)'),\n schema: Joi.number()\n .integer()\n .valid(SchemaVersion.V1)\n .default(SchemaVersion.V1)\n .description('Form schema version to use (1 or 2)'),\n name: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Unique name identifying the form'),\n feedback: feedbackSchema\n .optional()\n .description('Feedback mechanism configuration'),\n startPage: Joi.string()\n .trim()\n .optional()\n .description('Path of the first page to show when starting the form'),\n pages: Joi.array<Page>()\n .required()\n .items(pageSchema)\n .description('Pages schema for V1 forms')\n .unique('path'),\n sections: Joi.array<Section>()\n .items(sectionsSchema)\n .unique('name')\n .unique('title')\n .required()\n .description('Sections grouping related pages together')\n .error(\n checkErrors([\n FormDefinitionError.UniqueSectionName,\n FormDefinitionError.UniqueSectionTitle\n ])\n ),\n conditions: Joi.array<ConditionWrapper>()\n .items(conditionWrapperSchema)\n .unique('name')\n .unique('displayName')\n .description('Named conditions used for form logic'),\n lists: Joi.array<List>()\n .items(listSchema)\n .unique('name')\n .unique('title')\n .description('Reusable lists of options for select components'),\n metadata: Joi.object({ a: Joi.any() })\n .unknown()\n .optional()\n .description('Custom metadata for the form'),\n declaration: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Declaration text shown on the summary page'),\n skipSummary: Joi.any()\n .strip()\n .description('option to skip the summary page'),\n phaseBanner: phaseBannerSchema\n .optional()\n .description('Phase banner configuration'),\n outputEmail: Joi.string()\n .trim()\n .email({ tlds: { allow: ['uk'] } })\n .optional()\n .description('Email address where form submissions are sent'),\n output: outputSchema\n .optional()\n .description('Configuration for submission output format'),\n outputs: Joi.array()\n .items({\n emailAddress: Joi.string()\n .trim()\n .email({ tlds: { allow: ['uk'] } })\n .description('Email address where form submissions are sent'),\n audience: Joi.string()\n .trim()\n .valid('human', 'machine')\n .required()\n .description(\n 'Target audience for the output (human readable or machine processable)'\n ),\n version: Joi.string()\n .trim()\n .required()\n .description('Version identifier for the output format')\n })\n .optional()\n .description('One or more email targets/types for submission emails')\n })\n\nexport const formDefinitionV2Schema = formDefinitionSchema\n .keys({\n schema: Joi.number()\n .integer()\n .valid(SchemaVersion.V2)\n .description('Form schema version to use (2)'),\n pages: Joi.array<Page>()\n .items(pageSchemaV2)\n .required()\n .unique('id')\n .unique('path')\n .description('Pages schema for V2 forms')\n .error(\n checkErrors([\n FormDefinitionError.UniquePageId,\n FormDefinitionError.UniquePagePath\n ])\n ),\n lists: Joi.array<List>()\n .items(listSchemaV2)\n .unique('id')\n .unique('name')\n .unique('title')\n .description('Lists schema for V2 forms')\n .error(\n checkErrors([\n FormDefinitionError.UniqueListId,\n FormDefinitionError.UniqueListName,\n FormDefinitionError.UniqueListTitle\n ])\n ),\n conditions: Joi.array<ConditionWrapperV2>()\n .items(conditionWrapperSchemaV2)\n .unique('id')\n .unique('displayName')\n .description('Named conditions used for form logic')\n .error(\n checkErrors([\n FormDefinitionError.UniqueConditionId,\n FormDefinitionError.UniqueConditionDisplayName\n ])\n ),\n sections: Joi.array<Section>()\n .items(sectionsSchemaV2)\n .unique('id')\n .unique('name')\n .unique('title')\n .required()\n .description('Sections schema for V2 forms')\n .error(\n checkErrors([\n FormDefinitionError.UniqueSectionId,\n FormDefinitionError.UniqueSectionName,\n FormDefinitionError.UniqueSectionTitle\n ])\n )\n })\n .description('Form definition schema for V2')\n\n// Maintain compatibility with legacy named export\n// E.g. `import { Schema } from '@defra/forms-model'`\nexport const Schema = formDefinitionSchema\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["Engine","SchemaVersion"],"sources":["../../../../src/form/form-definition/types.ts"],"sourcesContent":["import { type ComponentDef } from '~/src/components/types.js'\nimport { type Coordinator } from '~/src/conditions/enums.js'\nimport {\n type ConditionGroupDataV2,\n type ConditionsModelData\n} from '~/src/conditions/types.js'\nimport { type ControllerPath, type ControllerType } from '~/src/pages/enums.js'\n\nexport enum Engine {\n V1 = 'V1',\n V2 = 'V2'\n}\n\nexport enum SchemaVersion {\n V1 = 1,\n V2 = 2\n}\n\nexport interface Link {\n path: string\n condition?: string\n redirect?: string\n}\n\nexport interface EventOptions {\n method: string\n url: string\n}\n\nexport interface Event {\n type: string\n options: EventOptions\n}\n\nexport interface Events {\n onLoad?: Event\n onSave?: Event\n}\n\nexport interface PageBase {\n id?: string\n title: string\n path: string\n condition?: string\n events?: Events\n view?: string\n}\n\nexport interface RepeatOptions {\n name: string\n title: string\n}\n\nexport interface RepeatSchema {\n min: number\n max: number\n}\n\nexport interface Repeat {\n options: RepeatOptions\n schema: RepeatSchema\n}\n\nexport interface PageStart extends PageBase {\n path: ControllerPath.Start | string\n controller: ControllerType.Start\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageQuestion extends PageBase {\n controller?: ControllerType.Page\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageTerminal extends PageBase {\n controller?: ControllerType.Terminal\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageRepeat extends PageBase {\n controller: ControllerType.Repeat\n repeat: Repeat\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageFileUpload extends PageBase {\n controller: ControllerType.FileUpload\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageSummary extends PageBase {\n path: ControllerPath.Summary | string\n controller: ControllerType.Summary\n section?: undefined\n components?: ComponentDef[]\n}\n\nexport interface PageSummaryWithConfirmationEmail extends PageBase {\n path: ControllerPath.Summary | string\n controller: ControllerType.SummaryWithConfirmationEmail\n section?: undefined\n components?: ComponentDef[]\n}\n\nexport interface PageStatus extends PageBase {\n path: ControllerPath.Status | string\n controller: ControllerType.Status\n section?: undefined\n}\n\nexport type Page =\n | PageStart\n | PageQuestion\n | PageTerminal\n | PageFileUpload\n | PageRepeat\n | PageSummary\n | PageSummaryWithConfirmationEmail\n | PageStatus\n\nexport interface Section {\n name: string\n title: string\n hideTitle?: boolean\n}\n\nexport interface Item {\n id?: string\n text: string\n value: string | number | boolean\n description?: string\n conditional?: { components: ComponentDef[] }\n condition?: string\n hint?: {\n id?: string\n text: string\n }\n}\n\nexport interface List {\n id?: string\n name: string\n title: string\n type: ListTypeContent\n items: Item[]\n}\n\nexport type ListTypeOption = 'bulleted' | 'numbered'\nexport type ListTypeContent = 'string' | 'number' | 'boolean'\n\nexport interface Feedback {\n url?: string\n emailAddress?: string\n}\n\nexport interface PhaseBanner {\n phase?: 'alpha' | 'beta'\n feedbackUrl?: string\n}\n\nexport interface ConditionWrapper {\n name: string\n displayName: string\n value: ConditionsModelData\n}\n\nexport interface ConditionWrapperV2 {\n id: string\n displayName: string\n coordinator?: Coordinator\n items: ConditionGroupDataV2\n}\n\nexport type OutputAudience = 'human' | 'machine'\n\nexport interface Output {\n audience: OutputAudience\n version: string\n emailAddress: string\n}\n\n/**\n * Interface for `formDefinitionSchema` Joi schema\n */\nexport interface FormDefinition {\n engine?: Engine\n schema?: SchemaVersion\n pages: Page[]\n conditions: (ConditionWrapper | ConditionWrapperV2)[]\n lists: List[]\n sections: Section[]\n startPage?: string\n name?: string\n feedback?: Feedback\n phaseBanner?: PhaseBanner\n declaration?: string // Deprecated in v2\n skipSummary?: never\n metadata?: Record<string, unknown>\n outputEmail?: string // Deprecated\n output?: {\n audience: OutputAudience\n version: string\n }\n outputs?: Output[]\n}\n"],"mappings":"AAQA,WAAYA,MAAM,0BAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAAA,OAANA,MAAM;AAAA;AAKlB,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;;AAkLzB;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":["Engine","SchemaVersion"],"sources":["../../../../src/form/form-definition/types.ts"],"sourcesContent":["import { type ComponentDef } from '~/src/components/types.js'\nimport { type Coordinator } from '~/src/conditions/enums.js'\nimport {\n type ConditionGroupDataV2,\n type ConditionsModelData\n} from '~/src/conditions/types.js'\nimport { type ControllerPath, type ControllerType } from '~/src/pages/enums.js'\n\nexport enum Engine {\n V1 = 'V1',\n V2 = 'V2'\n}\n\nexport enum SchemaVersion {\n V1 = 1,\n V2 = 2\n}\n\nexport interface Link {\n path: string\n condition?: string\n redirect?: string\n}\n\nexport interface EventOptions {\n method: string\n url: string\n}\n\nexport interface Event {\n type: string\n options: EventOptions\n}\n\nexport interface Events {\n onLoad?: Event\n onSave?: Event\n}\n\nexport interface PageBase {\n id?: string\n title: string\n path: string\n condition?: string\n events?: Events\n view?: string\n}\n\nexport interface RepeatOptions {\n name: string\n title: string\n}\n\nexport interface RepeatSchema {\n min: number\n max: number\n}\n\nexport interface Repeat {\n options: RepeatOptions\n schema: RepeatSchema\n}\n\nexport interface PageStart extends PageBase {\n path: ControllerPath.Start | string\n controller: ControllerType.Start\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageQuestion extends PageBase {\n controller?: ControllerType.Page\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageTerminal extends PageBase {\n controller?: ControllerType.Terminal\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageRepeat extends PageBase {\n controller: ControllerType.Repeat\n repeat: Repeat\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageFileUpload extends PageBase {\n controller: ControllerType.FileUpload\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageSummary extends PageBase {\n path: ControllerPath.Summary | string\n controller: ControllerType.Summary\n section?: undefined\n components?: ComponentDef[]\n}\n\nexport interface PageSummaryWithConfirmationEmail extends PageBase {\n path: ControllerPath.Summary | string\n controller: ControllerType.SummaryWithConfirmationEmail\n section?: undefined\n components?: ComponentDef[]\n}\n\nexport interface PageStatus extends PageBase {\n path: ControllerPath.Status | string\n controller: ControllerType.Status\n section?: undefined\n}\n\nexport type Page =\n | PageStart\n | PageQuestion\n | PageTerminal\n | PageFileUpload\n | PageRepeat\n | PageSummary\n | PageSummaryWithConfirmationEmail\n | PageStatus\n\nexport interface Section {\n id?: string\n name: string\n title: string\n hideTitle?: boolean\n}\n\nexport interface Item {\n id?: string\n text: string\n value: string | number | boolean\n description?: string\n conditional?: { components: ComponentDef[] }\n condition?: string\n hint?: {\n id?: string\n text: string\n }\n}\n\nexport interface List {\n id?: string\n name: string\n title: string\n type: ListTypeContent\n items: Item[]\n}\n\nexport type ListTypeOption = 'bulleted' | 'numbered'\nexport type ListTypeContent = 'string' | 'number' | 'boolean'\n\nexport interface Feedback {\n url?: string\n emailAddress?: string\n}\n\nexport interface PhaseBanner {\n phase?: 'alpha' | 'beta'\n feedbackUrl?: string\n}\n\nexport interface ConditionWrapper {\n name: string\n displayName: string\n value: ConditionsModelData\n}\n\nexport interface ConditionWrapperV2 {\n id: string\n displayName: string\n coordinator?: Coordinator\n items: ConditionGroupDataV2\n}\n\nexport type OutputAudience = 'human' | 'machine'\n\nexport interface Output {\n audience: OutputAudience\n version: string\n emailAddress: string\n}\n\n/**\n * Interface for `formDefinitionSchema` Joi schema\n */\nexport interface FormDefinition {\n engine?: Engine\n schema?: SchemaVersion\n pages: Page[]\n conditions: (ConditionWrapper | ConditionWrapperV2)[]\n lists: List[]\n sections: Section[]\n startPage?: string\n name?: string\n feedback?: Feedback\n phaseBanner?: PhaseBanner\n declaration?: string // Deprecated in v2\n skipSummary?: never\n metadata?: Record<string, unknown>\n outputEmail?: string // Deprecated\n output?: {\n audience: OutputAudience\n version: string\n }\n outputs?: Output[]\n}\n"],"mappings":"AAQA,WAAYA,MAAM,0BAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAAA,OAANA,MAAM;AAAA;AAKlB,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;;AAmLzB;AACA;AACA","ignoreList":[]}
@@ -34,6 +34,16 @@ export class SummaryPageController extends PreviewPageControllerBase {
34
34
  * @private
35
35
  */
36
36
  _isConfirmationEmailSettingsPanel = false;
37
+ /**
38
+ * @type {SectionForPreview[]}
39
+ * @private
40
+ */
41
+ _sections = [];
42
+ /**
43
+ * @type {Array<{ title: string }>}
44
+ * @private
45
+ */
46
+ _unassignedPages = [];
37
47
 
38
48
  /**
39
49
  * @param {SummaryPageElements} elements
@@ -52,6 +62,8 @@ export class SummaryPageController extends PreviewPageControllerBase {
52
62
  this._showConfirmationEmail = elements.showConfirmationEmail;
53
63
  this._guidanceComponent.content = elements.guidance;
54
64
  this._isConfirmationEmailSettingsPanel = elements.isConfirmationEmailSettingsPanel;
65
+ this._sections = elements.sections ?? [];
66
+ this._unassignedPages = elements.unassignedPages ?? [];
55
67
  }
56
68
 
57
69
  /**
@@ -145,6 +157,20 @@ export class SummaryPageController extends PreviewPageControllerBase {
145
157
  return this._showConfirmationEmail;
146
158
  }
147
159
 
160
+ /**
161
+ * @returns {SectionForPreview[]}
162
+ */
163
+ get sections() {
164
+ return this._sections;
165
+ }
166
+
167
+ /**
168
+ * @returns {Array<{ title: string }>}
169
+ */
170
+ get unassignedPages() {
171
+ return this._unassignedPages;
172
+ }
173
+
148
174
  /**
149
175
  * @returns {Markdown[]}
150
176
  * @protected
@@ -171,7 +197,7 @@ export class SummaryPageController extends PreviewPageControllerBase {
171
197
  /**
172
198
  * @import { ComponentDef, ContentComponentsDef, ListComponent, FormComponentsDef } from '~/src/components/types.js'
173
199
  * @import { FormDefinition } from '~/src/form/form-definition/types.js'
174
- * @import { PageRenderer, PagePreviewBaseElements, SummaryPageElements } from '~/src/form/form-editor/preview/types.js'
200
+ * @import { PageRenderer, PagePreviewBaseElements, SummaryPageElements, SectionForPreview } from '~/src/form/form-editor/preview/types.js'
175
201
  * @import { SummaryRowActionItem, SummaryRow } from '~/src/form/form-editor/macros/types.js'
176
202
  * @import { Markdown } from '~/src/form/form-editor/preview/markdown.js'
177
203
  */
@@ -1 +1 @@
1
- {"version":3,"file":"summary-page-controller.js","names":["hasFormField","HIGHLIGHT_CLASS","PreviewPageControllerBase","hasComponents","EXAMPLE_TEXT","SummaryPageController","_pageTemplate","PATH","_guidanceComponent","createGuidanceComponent","_componentDefs","_makeDeclaration","_showConfirmationEmail","_isConfirmationEmailSettingsPanel","constructor","elements","formDefinition","renderer","pages","flatMap","page","components","filter","declaration","showConfirmationEmail","content","guidance","isConfirmationEmailSettingsPanel","componentRows","rows","map","component","summaryRowHeading","shortDescription","key","text","value","actions","items","href","visuallyHiddenText","pageTitle","classes","guidanceHighlighted","_highlighted","_guidanceText","length","declarationText","guidanceText","setMakeDeclaration","render","unsetMakeDeclaration","makeDeclaration","highlightDeclaration","highlightGuidance","unhighlightDeclaration","clearHighlight","_getGuidanceComponents","buttonText","setShowConfirmationEmail","unsetShowConfirmationEmail"],"sources":["../../../../../../src/form/form-editor/preview/controller/summary-page-controller.js"],"sourcesContent":["import { hasFormField } from '~/src/components/helpers.js'\nimport { HIGHLIGHT_CLASS } from '~/src/form/form-editor/preview/constants.js'\nimport { PreviewPageControllerBase } from '~/src/form/form-editor/preview/controller/page-controller-base.js'\nimport { hasComponents } from '~/src/pages/helpers.js'\n\nconst EXAMPLE_TEXT = 'Answer goes here'\n\nexport class SummaryPageController extends PreviewPageControllerBase {\n /**\n * @type {string}\n * @protected\n */\n _pageTemplate = PreviewPageControllerBase.PATH + 'summary-controller.njk'\n /**\n * @type {Markdown}\n * @protected\n */\n _guidanceComponent = PreviewPageControllerBase.createGuidanceComponent(false)\n /**\n * @type {FormComponentsDef[]}\n * @private\n */\n _componentDefs = []\n /**\n * @type {boolean}\n * @private\n */\n _makeDeclaration = false\n /**\n * @type {boolean}\n * @private\n */\n _showConfirmationEmail = false\n /**\n * @type {boolean}\n * @private\n */\n _isConfirmationEmailSettingsPanel = false\n\n /**\n * @param {SummaryPageElements} elements\n * @param {FormDefinition} formDefinition\n * @param {PageRenderer} renderer\n */\n constructor(elements, formDefinition, renderer) {\n super(elements, renderer)\n this._componentDefs = formDefinition.pages.flatMap((page) => {\n if (hasComponents(page)) {\n return page.components.filter(hasFormField)\n }\n return []\n })\n this._makeDeclaration = elements.declaration\n this._showConfirmationEmail = elements.showConfirmationEmail\n this._guidanceComponent.content = elements.guidance\n this._isConfirmationEmailSettingsPanel =\n elements.isConfirmationEmailSettingsPanel\n }\n\n /**\n * @returns {{ rows: SummaryRow[] }}\n */\n get componentRows() {\n const rows = this._componentDefs.map((component) => {\n const summaryRowHeading = component.shortDescription ?? ''\n return {\n key: { text: summaryRowHeading },\n value: { text: EXAMPLE_TEXT },\n actions: {\n items: [\n { href: '#', text: 'Change', visuallyHiddenText: summaryRowHeading }\n ]\n }\n }\n })\n return {\n rows\n }\n }\n\n /**\n * @returns {{ text: string; classes: string }}\n */\n get pageTitle() {\n return {\n text: 'Check your answers before sending your form',\n classes: ''\n }\n }\n\n get guidance() {\n if (!this._makeDeclaration) {\n return {\n classes: '',\n text: ''\n }\n }\n const guidanceHighlighted = this._highlighted === 'guidance'\n const classes = guidanceHighlighted ? HIGHLIGHT_CLASS : ''\n let text = this._guidanceText.length ? this._guidanceText : ''\n\n if (!text.length && guidanceHighlighted) {\n text = 'Declaration text'\n }\n return {\n text,\n classes\n }\n }\n\n /**\n * @param {string} declarationText\n */\n set declarationText(declarationText) {\n this.guidanceText = declarationText\n }\n\n get declarationText() {\n return this.guidanceText\n }\n\n get declaration() {\n return this.guidance\n }\n\n get isConfirmationEmailSettingsPanel() {\n return this._isConfirmationEmailSettingsPanel\n }\n\n setMakeDeclaration() {\n this._makeDeclaration = true\n this.render()\n }\n\n unsetMakeDeclaration() {\n this._makeDeclaration = false\n this.render()\n }\n\n get makeDeclaration() {\n return this._makeDeclaration\n }\n\n highlightDeclaration() {\n this.highlightGuidance()\n }\n\n unhighlightDeclaration() {\n this.clearHighlight()\n }\n\n get showConfirmationEmail() {\n return this._showConfirmationEmail\n }\n\n /**\n * @returns {Markdown[]}\n * @protected\n */\n _getGuidanceComponents() {\n if (!this._makeDeclaration) {\n return []\n }\n return super._getGuidanceComponents()\n }\n\n get buttonText() {\n return this.makeDeclaration ? 'Accept and send' : 'Send'\n }\n\n setShowConfirmationEmail() {\n this._showConfirmationEmail = true\n this.render()\n }\n\n unsetShowConfirmationEmail() {\n this._showConfirmationEmail = false\n this.render()\n }\n}\n\n/**\n * @import { ComponentDef, ContentComponentsDef, ListComponent, FormComponentsDef } from '~/src/components/types.js'\n * @import { FormDefinition } from '~/src/form/form-definition/types.js'\n * @import { PageRenderer, PagePreviewBaseElements, SummaryPageElements } from '~/src/form/form-editor/preview/types.js'\n * @import { SummaryRowActionItem, SummaryRow } from '~/src/form/form-editor/macros/types.js'\n * @import { Markdown } from '~/src/form/form-editor/preview/markdown.js'\n */\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"summary-page-controller.js","names":["hasFormField","HIGHLIGHT_CLASS","PreviewPageControllerBase","hasComponents","EXAMPLE_TEXT","SummaryPageController","_pageTemplate","PATH","_guidanceComponent","createGuidanceComponent","_componentDefs","_makeDeclaration","_showConfirmationEmail","_isConfirmationEmailSettingsPanel","_sections","_unassignedPages","constructor","elements","formDefinition","renderer","pages","flatMap","page","components","filter","declaration","showConfirmationEmail","content","guidance","isConfirmationEmailSettingsPanel","sections","unassignedPages","componentRows","rows","map","component","summaryRowHeading","shortDescription","key","text","value","actions","items","href","visuallyHiddenText","pageTitle","classes","guidanceHighlighted","_highlighted","_guidanceText","length","declarationText","guidanceText","setMakeDeclaration","render","unsetMakeDeclaration","makeDeclaration","highlightDeclaration","highlightGuidance","unhighlightDeclaration","clearHighlight","_getGuidanceComponents","buttonText","setShowConfirmationEmail","unsetShowConfirmationEmail"],"sources":["../../../../../../src/form/form-editor/preview/controller/summary-page-controller.js"],"sourcesContent":["import { hasFormField } from '~/src/components/helpers.js'\nimport { HIGHLIGHT_CLASS } from '~/src/form/form-editor/preview/constants.js'\nimport { PreviewPageControllerBase } from '~/src/form/form-editor/preview/controller/page-controller-base.js'\nimport { hasComponents } from '~/src/pages/helpers.js'\n\nconst EXAMPLE_TEXT = 'Answer goes here'\n\nexport class SummaryPageController extends PreviewPageControllerBase {\n /**\n * @type {string}\n * @protected\n */\n _pageTemplate = PreviewPageControllerBase.PATH + 'summary-controller.njk'\n /**\n * @type {Markdown}\n * @protected\n */\n _guidanceComponent = PreviewPageControllerBase.createGuidanceComponent(false)\n /**\n * @type {FormComponentsDef[]}\n * @private\n */\n _componentDefs = []\n /**\n * @type {boolean}\n * @private\n */\n _makeDeclaration = false\n /**\n * @type {boolean}\n * @private\n */\n _showConfirmationEmail = false\n /**\n * @type {boolean}\n * @private\n */\n _isConfirmationEmailSettingsPanel = false\n /**\n * @type {SectionForPreview[]}\n * @private\n */\n _sections = []\n /**\n * @type {Array<{ title: string }>}\n * @private\n */\n _unassignedPages = []\n\n /**\n * @param {SummaryPageElements} elements\n * @param {FormDefinition} formDefinition\n * @param {PageRenderer} renderer\n */\n constructor(elements, formDefinition, renderer) {\n super(elements, renderer)\n this._componentDefs = formDefinition.pages.flatMap((page) => {\n if (hasComponents(page)) {\n return page.components.filter(hasFormField)\n }\n return []\n })\n this._makeDeclaration = elements.declaration\n this._showConfirmationEmail = elements.showConfirmationEmail\n this._guidanceComponent.content = elements.guidance\n this._isConfirmationEmailSettingsPanel =\n elements.isConfirmationEmailSettingsPanel\n this._sections = elements.sections ?? []\n this._unassignedPages = elements.unassignedPages ?? []\n }\n\n /**\n * @returns {{ rows: SummaryRow[] }}\n */\n get componentRows() {\n const rows = this._componentDefs.map((component) => {\n const summaryRowHeading = component.shortDescription ?? ''\n return {\n key: { text: summaryRowHeading },\n value: { text: EXAMPLE_TEXT },\n actions: {\n items: [\n { href: '#', text: 'Change', visuallyHiddenText: summaryRowHeading }\n ]\n }\n }\n })\n return {\n rows\n }\n }\n\n /**\n * @returns {{ text: string; classes: string }}\n */\n get pageTitle() {\n return {\n text: 'Check your answers before sending your form',\n classes: ''\n }\n }\n\n get guidance() {\n if (!this._makeDeclaration) {\n return {\n classes: '',\n text: ''\n }\n }\n const guidanceHighlighted = this._highlighted === 'guidance'\n const classes = guidanceHighlighted ? HIGHLIGHT_CLASS : ''\n let text = this._guidanceText.length ? this._guidanceText : ''\n\n if (!text.length && guidanceHighlighted) {\n text = 'Declaration text'\n }\n return {\n text,\n classes\n }\n }\n\n /**\n * @param {string} declarationText\n */\n set declarationText(declarationText) {\n this.guidanceText = declarationText\n }\n\n get declarationText() {\n return this.guidanceText\n }\n\n get declaration() {\n return this.guidance\n }\n\n get isConfirmationEmailSettingsPanel() {\n return this._isConfirmationEmailSettingsPanel\n }\n\n setMakeDeclaration() {\n this._makeDeclaration = true\n this.render()\n }\n\n unsetMakeDeclaration() {\n this._makeDeclaration = false\n this.render()\n }\n\n get makeDeclaration() {\n return this._makeDeclaration\n }\n\n highlightDeclaration() {\n this.highlightGuidance()\n }\n\n unhighlightDeclaration() {\n this.clearHighlight()\n }\n\n get showConfirmationEmail() {\n return this._showConfirmationEmail\n }\n\n /**\n * @returns {SectionForPreview[]}\n */\n get sections() {\n return this._sections\n }\n\n /**\n * @returns {Array<{ title: string }>}\n */\n get unassignedPages() {\n return this._unassignedPages\n }\n\n /**\n * @returns {Markdown[]}\n * @protected\n */\n _getGuidanceComponents() {\n if (!this._makeDeclaration) {\n return []\n }\n return super._getGuidanceComponents()\n }\n\n get buttonText() {\n return this.makeDeclaration ? 'Accept and send' : 'Send'\n }\n\n setShowConfirmationEmail() {\n this._showConfirmationEmail = true\n this.render()\n }\n\n unsetShowConfirmationEmail() {\n this._showConfirmationEmail = false\n this.render()\n }\n}\n\n/**\n * @import { ComponentDef, ContentComponentsDef, ListComponent, FormComponentsDef } from '~/src/components/types.js'\n * @import { FormDefinition } from '~/src/form/form-definition/types.js'\n * @import { PageRenderer, PagePreviewBaseElements, SummaryPageElements, SectionForPreview } from '~/src/form/form-editor/preview/types.js'\n * @import { SummaryRowActionItem, SummaryRow } from '~/src/form/form-editor/macros/types.js'\n * @import { Markdown } from '~/src/form/form-editor/preview/markdown.js'\n */\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../../src/form/form-editor/preview/types.ts"],"sourcesContent":["import {\n type PagePreviewPanelMacro,\n type QuestionBaseModel\n} from '~/src/form/form-editor/macros/types.js'\nimport { type AutocompleteQuestion } from '~/src/form/form-editor/preview/autocomplete.js'\nimport { type DateInputQuestion } from '~/src/form/form-editor/preview/date-input.js'\nimport { type EmailAddressQuestion } from '~/src/form/form-editor/preview/email-address.js'\nimport { type ListSortableQuestion } from '~/src/form/form-editor/preview/list-sortable.js'\nimport { type LongAnswerQuestion } from '~/src/form/form-editor/preview/long-answer.js'\nimport { type PhoneNumberQuestion } from '~/src/form/form-editor/preview/phone-number.js'\nimport { type Question } from '~/src/form/form-editor/preview/question.js'\nimport { type RadioSortableQuestion } from '~/src/form/form-editor/preview/radio-sortable.js'\nimport { type SelectSortableQuestion } from '~/src/form/form-editor/preview/select-sortable.js'\nimport { type ShortAnswerQuestion } from '~/src/form/form-editor/preview/short-answer.js'\nimport { type UkAddressQuestion } from '~/src/form/form-editor/preview/uk-address.js'\nimport { type ListElement } from '~/src/form/form-editor/types.js'\nexport { type QuestionBaseModel } from '~/src/form/form-editor/macros/types.js'\nexport interface BaseSettings {\n question: string\n hintText: string\n optional: boolean\n shortDesc: string\n userClasses: string\n items: ListElement[]\n content: string\n attributes?: Record<string, string>\n}\n\nexport interface DefaultComponent {\n id?: string\n text: string\n classes: string\n isPageHeading?: boolean\n}\n\nexport interface GovukFieldset {\n legend: DefaultComponent\n}\n\nexport type ListenerRow = [\n HTMLInputElement | HTMLTextAreaElement | null,\n (target: HTMLInputElement | HTMLTextAreaElement, e: Event) => void,\n keyof HTMLElementEventMap\n]\n\nexport interface DomElementsBase {\n readonly values?: BaseSettings\n autocompleteOptions?: string\n setPreviewHTML(value: string): void\n setPreviewDOM(element: HTMLElement): void\n}\n\nexport interface QuestionElements extends DomElementsBase {\n readonly values: BaseSettings\n}\n\nexport interface AutocompleteElements extends QuestionElements {\n autocompleteOptions: string\n}\n\nexport interface NumberSettings extends BaseSettings {\n prefix: string\n suffix: string\n}\n\nexport interface DeclarationSettings extends BaseSettings {\n declarationText: string\n}\n\nexport interface DeclarationElements extends DomElementsBase {\n readonly values: DeclarationSettings\n}\n\nexport interface UkAddressSettings extends BaseSettings {\n usePostcodeLookup?: boolean\n}\n\nexport interface UkAddressElements extends DomElementsBase {\n readonly values: UkAddressSettings\n}\n\nexport interface NumberElements extends DomElementsBase {\n readonly values: NumberSettings\n}\n\nexport interface LocationSettings extends BaseSettings {\n instructionText: string\n}\n\nexport interface LocationElements extends DomElementsBase {\n readonly values: LocationSettings\n}\n\nexport interface LocationFieldModel extends QuestionBaseModel {\n userClasses: string\n fieldset: {\n legend: {\n text: string\n classes: string\n }\n }\n instructionText: string\n details: {\n classes: string\n }\n}\n\nexport interface RenderBase {\n render(questionTemplate: string, renderContext: RenderContext): void\n}\n\nexport interface QuestionRenderContext {\n model: QuestionBaseModel\n}\n\nexport interface PageRenderContext {\n params: PagePreviewPanelMacro\n}\n\nexport type RenderContext = QuestionRenderContext | PageRenderContext\n\nexport interface HTMLBuilder {\n buildHTML(questionTemplate: string, renderContext: RenderContext): string\n}\n\nexport interface QuestionRenderer {\n render(questionTemplate: string, questionBaseModel: QuestionBaseModel): void\n}\n\nexport interface PageRenderer {\n render(pageTemplate: string, pagePreview: PagePreviewPanelMacro): void\n}\n\nexport type Renderer = QuestionRenderer | PageRenderer\n\nexport interface ListElements extends QuestionElements {\n afterInputsHTML: string\n}\n\nexport interface PagePreviewBaseElements {\n heading: string\n guidance: string\n}\n\nexport interface PageOverviewElements extends PagePreviewBaseElements {\n addHeading: boolean\n repeatQuestion: string | undefined\n hasRepeater: boolean\n}\n\nexport interface SummaryPageElements extends PagePreviewBaseElements {\n declaration: boolean\n showConfirmationEmail: boolean\n isConfirmationEmailSettingsPanel: boolean\n}\n\nexport interface SummaryPageInitialState {\n showConfirmationEmail: boolean\n declarationText: string\n needDeclaration: boolean\n isConfirmationEmailSettingsPanel: boolean\n}\n\nexport type PreviewQuestion =\n | DateInputQuestion\n | EmailAddressQuestion\n | ListSortableQuestion\n | LongAnswerQuestion\n | PhoneNumberQuestion\n | Question\n | RadioSortableQuestion\n | SelectSortableQuestion\n | ShortAnswerQuestion\n | UkAddressQuestion\n | AutocompleteQuestion\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../../src/form/form-editor/preview/types.ts"],"sourcesContent":["import {\n type PagePreviewPanelMacro,\n type QuestionBaseModel\n} from '~/src/form/form-editor/macros/types.js'\nimport { type AutocompleteQuestion } from '~/src/form/form-editor/preview/autocomplete.js'\nimport { type DateInputQuestion } from '~/src/form/form-editor/preview/date-input.js'\nimport { type EmailAddressQuestion } from '~/src/form/form-editor/preview/email-address.js'\nimport { type ListSortableQuestion } from '~/src/form/form-editor/preview/list-sortable.js'\nimport { type LongAnswerQuestion } from '~/src/form/form-editor/preview/long-answer.js'\nimport { type PhoneNumberQuestion } from '~/src/form/form-editor/preview/phone-number.js'\nimport { type Question } from '~/src/form/form-editor/preview/question.js'\nimport { type RadioSortableQuestion } from '~/src/form/form-editor/preview/radio-sortable.js'\nimport { type SelectSortableQuestion } from '~/src/form/form-editor/preview/select-sortable.js'\nimport { type ShortAnswerQuestion } from '~/src/form/form-editor/preview/short-answer.js'\nimport { type UkAddressQuestion } from '~/src/form/form-editor/preview/uk-address.js'\nimport { type ListElement } from '~/src/form/form-editor/types.js'\nexport { type QuestionBaseModel } from '~/src/form/form-editor/macros/types.js'\nexport interface BaseSettings {\n question: string\n hintText: string\n optional: boolean\n shortDesc: string\n userClasses: string\n items: ListElement[]\n content: string\n attributes?: Record<string, string>\n}\n\nexport interface DefaultComponent {\n id?: string\n text: string\n classes: string\n isPageHeading?: boolean\n}\n\nexport interface GovukFieldset {\n legend: DefaultComponent\n}\n\nexport type ListenerRow = [\n HTMLInputElement | HTMLTextAreaElement | null,\n (target: HTMLInputElement | HTMLTextAreaElement, e: Event) => void,\n keyof HTMLElementEventMap\n]\n\nexport interface DomElementsBase {\n readonly values?: BaseSettings\n autocompleteOptions?: string\n setPreviewHTML(value: string): void\n setPreviewDOM(element: HTMLElement): void\n}\n\nexport interface QuestionElements extends DomElementsBase {\n readonly values: BaseSettings\n}\n\nexport interface AutocompleteElements extends QuestionElements {\n autocompleteOptions: string\n}\n\nexport interface NumberSettings extends BaseSettings {\n prefix: string\n suffix: string\n}\n\nexport interface DeclarationSettings extends BaseSettings {\n declarationText: string\n}\n\nexport interface DeclarationElements extends DomElementsBase {\n readonly values: DeclarationSettings\n}\n\nexport interface UkAddressSettings extends BaseSettings {\n usePostcodeLookup?: boolean\n}\n\nexport interface UkAddressElements extends DomElementsBase {\n readonly values: UkAddressSettings\n}\n\nexport interface NumberElements extends DomElementsBase {\n readonly values: NumberSettings\n}\n\nexport interface LocationSettings extends BaseSettings {\n instructionText: string\n}\n\nexport interface LocationElements extends DomElementsBase {\n readonly values: LocationSettings\n}\n\nexport interface LocationFieldModel extends QuestionBaseModel {\n userClasses: string\n fieldset: {\n legend: {\n text: string\n classes: string\n }\n }\n instructionText: string\n details: {\n classes: string\n }\n}\n\nexport interface RenderBase {\n render(questionTemplate: string, renderContext: RenderContext): void\n}\n\nexport interface QuestionRenderContext {\n model: QuestionBaseModel\n}\n\nexport interface PageRenderContext {\n params: PagePreviewPanelMacro\n}\n\nexport type RenderContext = QuestionRenderContext | PageRenderContext\n\nexport interface HTMLBuilder {\n buildHTML(questionTemplate: string, renderContext: RenderContext): string\n}\n\nexport interface QuestionRenderer {\n render(questionTemplate: string, questionBaseModel: QuestionBaseModel): void\n}\n\nexport interface PageRenderer {\n render(pageTemplate: string, pagePreview: PagePreviewPanelMacro): void\n}\n\nexport type Renderer = QuestionRenderer | PageRenderer\n\nexport interface ListElements extends QuestionElements {\n afterInputsHTML: string\n}\n\nexport interface PagePreviewBaseElements {\n heading: string\n guidance: string\n}\n\nexport interface PageOverviewElements extends PagePreviewBaseElements {\n addHeading: boolean\n repeatQuestion: string | undefined\n hasRepeater: boolean\n}\n\nexport interface SectionForPreview {\n name: string\n title: string\n pages: { title: string }[]\n}\n\nexport interface SummaryPageElements extends PagePreviewBaseElements {\n declaration: boolean\n showConfirmationEmail: boolean\n isConfirmationEmailSettingsPanel: boolean\n sections?: SectionForPreview[]\n unassignedPages?: { title: string }[]\n}\n\nexport interface SummaryPageInitialState {\n showConfirmationEmail: boolean\n declarationText: string\n needDeclaration: boolean\n isConfirmationEmailSettingsPanel: boolean\n sections?: SectionForPreview[]\n unassignedPages?: { title: string }[]\n}\n\nexport type PreviewQuestion =\n | DateInputQuestion\n | EmailAddressQuestion\n | ListSortableQuestion\n | LongAnswerQuestion\n | PhoneNumberQuestion\n | Question\n | RadioSortableQuestion\n | SelectSortableQuestion\n | ShortAnswerQuestion\n | UkAddressQuestion\n | AutocompleteQuestion\n"],"mappings":"","ignoreList":[]}
@@ -13,6 +13,7 @@ export let FormDefinitionError = /*#__PURE__*/function (FormDefinitionError) {
13
13
  FormDefinitionError["UniquePagePath"] = "unique_page_path";
14
14
  FormDefinitionError["UniquePageComponentId"] = "unique_page_component_id";
15
15
  FormDefinitionError["UniquePageComponentName"] = "unique_page_component_name";
16
+ FormDefinitionError["UniqueSectionId"] = "unique_section_id";
16
17
  FormDefinitionError["UniqueSectionName"] = "unique_section_name";
17
18
  FormDefinitionError["UniqueSectionTitle"] = "unique_section_title";
18
19
  FormDefinitionError["UniqueListId"] = "unique_list_id";
@@ -52,6 +53,10 @@ export const formDefinitionErrors = {
52
53
  key: 'name',
53
54
  type: FormDefinitionErrorType.Unique
54
55
  },
56
+ [FormDefinitionError.UniqueSectionId]: {
57
+ key: 'id',
58
+ type: FormDefinitionErrorType.Unique
59
+ },
55
60
  [FormDefinitionError.UniqueSectionName]: {
56
61
  key: 'name',
57
62
  type: FormDefinitionErrorType.Unique
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["FormDefinitionErrorType","FormDefinitionError","formDefinitionErrors","UniquePagePath","key","type","Unique","UniquePageId","UniquePageComponentId","UniquePageComponentName","UniqueSectionName","UniqueSectionTitle","UniqueListId","UniqueListTitle","UniqueListName","UniqueConditionDisplayName","UniqueConditionId","UniqueListItemId","UniqueListItemText","UniqueListItemValue","RefPageCondition","Ref","RefConditionComponentId","RefConditionListId","RefConditionItemId","RefConditionConditionId","RefPageComponentList","IncompatibleConditionComponentType","Incompatible","IncompatibleQuestionRegex","Other","Type"],"sources":["../../../../src/form/form-manager/types.ts"],"sourcesContent":["import { type Context } from 'joi'\n\nimport { type Repeat } from '~/src/form/form-definition/types.js'\nimport { type ControllerType } from '~/src/pages/enums.js'\n\nexport interface PatchPageFields {\n title?: string\n path?: string\n controller?: ControllerType | null\n repeat?: Repeat\n condition?: string | null\n}\n\nexport interface AddComponentQueryOptions {\n prepend?: boolean\n}\n\n// Enum of error types that can be raised through validating the form definition\nexport enum FormDefinitionErrorType {\n Unique = 'unique', // Unique constraint\n Ref = 'ref', // Referential integrity\n Type = 'type', // General schema type error\n Incompatible = 'incompatible' // Data values/types that are not compatible\n}\n\n// Enum for errors that can exist in a form definition\nexport enum FormDefinitionError {\n UniquePageId = 'unique_page_id',\n UniquePagePath = 'unique_page_path',\n UniquePageComponentId = 'unique_page_component_id',\n UniquePageComponentName = 'unique_page_component_name',\n UniqueSectionName = 'unique_section_name',\n UniqueSectionTitle = 'unique_section_title',\n UniqueListId = 'unique_list_id',\n UniqueListTitle = 'unique_list_title',\n UniqueListName = 'unique_list_name',\n UniqueConditionId = 'unique_condition_id',\n UniqueConditionDisplayName = 'unique_condition_displayname',\n UniqueListItemId = 'unique_list_item_id',\n UniqueListItemText = 'unique_list_item_text',\n UniqueListItemValue = 'unique_list_item_value',\n RefPageCondition = 'ref_page_condition',\n RefConditionComponentId = 'ref_condition_component_id',\n RefConditionListId = 'ref_condition_list_id',\n RefConditionItemId = 'ref_condition_item_id',\n RefConditionConditionId = 'ref_condition_condition_id',\n RefPageComponentList = 'ref_page_component_list',\n IncompatibleConditionComponentType = 'incompatible_condition_component_type',\n IncompatibleQuestionRegex = 'incompatible_question_regex',\n Other = 'other'\n}\n\nexport interface ErrorMatchValue {\n key: string\n type: FormDefinitionErrorType\n}\n\nexport type FormDefinitionErrors = Record<FormDefinitionError, ErrorMatchValue>\n\n// The errors that can exist in the form definition\nexport const formDefinitionErrors: FormDefinitionErrors = {\n [FormDefinitionError.UniquePagePath]: {\n key: 'path',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniquePageId]: {\n key: 'id',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniquePageComponentId]: {\n key: 'id',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniquePageComponentName]: {\n key: 'name',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueSectionName]: {\n key: 'name',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueSectionTitle]: {\n key: 'title',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueListId]: {\n key: 'id',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueListTitle]: {\n key: 'title',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueListName]: {\n key: 'name',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueConditionDisplayName]: {\n key: 'displayName',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueConditionId]: {\n key: 'id',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueListItemId]: {\n key: 'id',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueListItemText]: {\n key: 'text',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueListItemValue]: {\n key: 'value',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.RefPageCondition]: {\n key: 'condition',\n type: FormDefinitionErrorType.Ref\n },\n [FormDefinitionError.RefConditionComponentId]: {\n key: 'componentId',\n type: FormDefinitionErrorType.Ref\n },\n [FormDefinitionError.RefConditionListId]: {\n key: 'listId',\n type: FormDefinitionErrorType.Ref\n },\n [FormDefinitionError.RefConditionItemId]: {\n key: 'itemId',\n type: FormDefinitionErrorType.Ref\n },\n [FormDefinitionError.RefConditionConditionId]: {\n key: 'conditionId',\n type: FormDefinitionErrorType.Ref\n },\n [FormDefinitionError.RefPageComponentList]: {\n key: 'list',\n type: FormDefinitionErrorType.Ref\n },\n [FormDefinitionError.IncompatibleConditionComponentType]: {\n key: 'componentId',\n type: FormDefinitionErrorType.Incompatible\n },\n [FormDefinitionError.IncompatibleQuestionRegex]: {\n key: 'regex',\n type: FormDefinitionErrorType.Incompatible\n },\n [FormDefinitionError.Other]: {\n key: '',\n type: FormDefinitionErrorType.Type\n }\n}\n\nexport type FormDefinitionErrorCauseDetailPath = (string | number)[]\n\nexport interface FormDefinitionErrorCauseDetailUnique {\n path: FormDefinitionErrorCauseDetailPath\n pos: number\n dupePos: number\n}\n\nexport interface FormDefinitionErrorCauseDetailRef {\n path: FormDefinitionErrorCauseDetailPath\n}\n\nexport interface FormDefinitionErrorCauseDetailIncompatible {\n path: FormDefinitionErrorCauseDetailPath\n valueKey?: string\n incompatibleObject: {\n key?: string\n value?: unknown\n }\n reason: string\n}\n\nexport type FormDefinitionErrorCause =\n | {\n id: FormDefinitionError\n type: FormDefinitionErrorType.Unique\n message: string\n detail: FormDefinitionErrorCauseDetailUnique\n }\n | {\n id: FormDefinitionError\n type: FormDefinitionErrorType.Ref\n message: string\n detail: FormDefinitionErrorCauseDetailRef\n }\n | {\n id: FormDefinitionError\n type: FormDefinitionErrorType.Type\n message: string\n detail: Context | undefined\n }\n | {\n id: FormDefinitionError\n type: FormDefinitionErrorType.Incompatible\n message: string\n detail: FormDefinitionErrorCauseDetailIncompatible\n }\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":["FormDefinitionErrorType","FormDefinitionError","formDefinitionErrors","UniquePagePath","key","type","Unique","UniquePageId","UniquePageComponentId","UniquePageComponentName","UniqueSectionId","UniqueSectionName","UniqueSectionTitle","UniqueListId","UniqueListTitle","UniqueListName","UniqueConditionDisplayName","UniqueConditionId","UniqueListItemId","UniqueListItemText","UniqueListItemValue","RefPageCondition","Ref","RefConditionComponentId","RefConditionListId","RefConditionItemId","RefConditionConditionId","RefPageComponentList","IncompatibleConditionComponentType","Incompatible","IncompatibleQuestionRegex","Other","Type"],"sources":["../../../../src/form/form-manager/types.ts"],"sourcesContent":["import { type Context } from 'joi'\n\nimport { type Repeat } from '~/src/form/form-definition/types.js'\nimport { type ControllerType } from '~/src/pages/enums.js'\n\nexport interface PatchPageFields {\n title?: string\n path?: string\n controller?: ControllerType | null\n repeat?: Repeat\n condition?: string | null\n}\n\nexport interface AddComponentQueryOptions {\n prepend?: boolean\n}\n\n// Enum of error types that can be raised through validating the form definition\nexport enum FormDefinitionErrorType {\n Unique = 'unique', // Unique constraint\n Ref = 'ref', // Referential integrity\n Type = 'type', // General schema type error\n Incompatible = 'incompatible' // Data values/types that are not compatible\n}\n\n// Enum for errors that can exist in a form definition\nexport enum FormDefinitionError {\n UniquePageId = 'unique_page_id',\n UniquePagePath = 'unique_page_path',\n UniquePageComponentId = 'unique_page_component_id',\n UniquePageComponentName = 'unique_page_component_name',\n UniqueSectionId = 'unique_section_id',\n UniqueSectionName = 'unique_section_name',\n UniqueSectionTitle = 'unique_section_title',\n UniqueListId = 'unique_list_id',\n UniqueListTitle = 'unique_list_title',\n UniqueListName = 'unique_list_name',\n UniqueConditionId = 'unique_condition_id',\n UniqueConditionDisplayName = 'unique_condition_displayname',\n UniqueListItemId = 'unique_list_item_id',\n UniqueListItemText = 'unique_list_item_text',\n UniqueListItemValue = 'unique_list_item_value',\n RefPageCondition = 'ref_page_condition',\n RefConditionComponentId = 'ref_condition_component_id',\n RefConditionListId = 'ref_condition_list_id',\n RefConditionItemId = 'ref_condition_item_id',\n RefConditionConditionId = 'ref_condition_condition_id',\n RefPageComponentList = 'ref_page_component_list',\n IncompatibleConditionComponentType = 'incompatible_condition_component_type',\n IncompatibleQuestionRegex = 'incompatible_question_regex',\n Other = 'other'\n}\n\nexport interface ErrorMatchValue {\n key: string\n type: FormDefinitionErrorType\n}\n\nexport type FormDefinitionErrors = Record<FormDefinitionError, ErrorMatchValue>\n\n// The errors that can exist in the form definition\nexport const formDefinitionErrors: FormDefinitionErrors = {\n [FormDefinitionError.UniquePagePath]: {\n key: 'path',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniquePageId]: {\n key: 'id',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniquePageComponentId]: {\n key: 'id',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniquePageComponentName]: {\n key: 'name',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueSectionId]: {\n key: 'id',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueSectionName]: {\n key: 'name',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueSectionTitle]: {\n key: 'title',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueListId]: {\n key: 'id',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueListTitle]: {\n key: 'title',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueListName]: {\n key: 'name',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueConditionDisplayName]: {\n key: 'displayName',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueConditionId]: {\n key: 'id',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueListItemId]: {\n key: 'id',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueListItemText]: {\n key: 'text',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.UniqueListItemValue]: {\n key: 'value',\n type: FormDefinitionErrorType.Unique\n },\n [FormDefinitionError.RefPageCondition]: {\n key: 'condition',\n type: FormDefinitionErrorType.Ref\n },\n [FormDefinitionError.RefConditionComponentId]: {\n key: 'componentId',\n type: FormDefinitionErrorType.Ref\n },\n [FormDefinitionError.RefConditionListId]: {\n key: 'listId',\n type: FormDefinitionErrorType.Ref\n },\n [FormDefinitionError.RefConditionItemId]: {\n key: 'itemId',\n type: FormDefinitionErrorType.Ref\n },\n [FormDefinitionError.RefConditionConditionId]: {\n key: 'conditionId',\n type: FormDefinitionErrorType.Ref\n },\n [FormDefinitionError.RefPageComponentList]: {\n key: 'list',\n type: FormDefinitionErrorType.Ref\n },\n [FormDefinitionError.IncompatibleConditionComponentType]: {\n key: 'componentId',\n type: FormDefinitionErrorType.Incompatible\n },\n [FormDefinitionError.IncompatibleQuestionRegex]: {\n key: 'regex',\n type: FormDefinitionErrorType.Incompatible\n },\n [FormDefinitionError.Other]: {\n key: '',\n type: FormDefinitionErrorType.Type\n }\n}\n\nexport type FormDefinitionErrorCauseDetailPath = (string | number)[]\n\nexport interface FormDefinitionErrorCauseDetailUnique {\n path: FormDefinitionErrorCauseDetailPath\n pos: number\n dupePos: number\n}\n\nexport interface FormDefinitionErrorCauseDetailRef {\n path: FormDefinitionErrorCauseDetailPath\n}\n\nexport interface FormDefinitionErrorCauseDetailIncompatible {\n path: FormDefinitionErrorCauseDetailPath\n valueKey?: string\n incompatibleObject: {\n key?: string\n value?: unknown\n }\n reason: string\n}\n\nexport type FormDefinitionErrorCause =\n | {\n id: FormDefinitionError\n type: FormDefinitionErrorType.Unique\n message: string\n detail: FormDefinitionErrorCauseDetailUnique\n }\n | {\n id: FormDefinitionError\n type: FormDefinitionErrorType.Ref\n message: string\n detail: FormDefinitionErrorCauseDetailRef\n }\n | {\n id: FormDefinitionError\n type: FormDefinitionErrorType.Type\n message: string\n detail: Context | undefined\n }\n | {\n id: FormDefinitionError\n type: FormDefinitionErrorType.Incompatible\n message: string\n detail: FormDefinitionErrorCauseDetailIncompatible\n }\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import JoiBase, { type CustomHelpers } from 'joi';
2
2
  import { type ComponentDef, type ContentComponentsDef, type FileUploadFieldComponent } from '../../components/types.js';
3
3
  import { type ConditionDataV2, type ConditionListItemRefValueDataV2 } from '../../conditions/types.js';
4
- import { type ConditionWrapperV2, type FormDefinition, type List, type Page, type Repeat } from '../../form/form-definition/types.js';
4
+ import { type ConditionWrapperV2, type FormDefinition, type List, type Page, type Repeat, type Section } from '../../form/form-definition/types.js';
5
5
  export declare const listItemIdValidator: (value: string, helpers: CustomHelpers<ConditionListItemRefValueDataV2>) => string | JoiBase.ErrorReport;
6
6
  export declare const MIN_NUMBER_OF_REPEAT_ITEMS = 1;
7
7
  export declare const MAX_NUMBER_OF_REPEAT_ITEMS = 200;
@@ -30,6 +30,10 @@ export declare const listSchema: JoiBase.ObjectSchema<List>;
30
30
  * V2 Joi schema for Lists
31
31
  */
32
32
  export declare const listSchemaV2: JoiBase.ObjectSchema<List>;
33
+ /**
34
+ * V2 Joi schema for Sections
35
+ */
36
+ export declare const sectionsSchemaV2: JoiBase.ObjectSchema<Section>;
33
37
  /**
34
38
  * Joi schema for `FormDefinition` interface
35
39
  * @see {@link FormDefinition}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/index.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,EAAE,EAAE,KAAK,aAAa,EAAyB,MAAM,KAAK,CAAA;AAKxE,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC9B,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAEL,KAAK,eAAe,EAIpB,KAAK,+BAA+B,EAOrC,MAAM,2BAA2B,CAAA;AAKlC,OAAO,EAGL,KAAK,kBAAkB,EAIvB,KAAK,cAAc,EAGnB,KAAK,IAAI,EACT,KAAK,IAAI,EAET,KAAK,MAAM,EAIZ,MAAM,qCAAqC,CAAA;AA0C5C,eAAO,MAAM,mBAAmB,GAC9B,OAAO,MAAM,EACb,SAAS,aAAa,CAAC,+BAA+B,CAAC,iCAqCxD,CAAA;AAyND,eAAO,MAAM,0BAA0B,IAAI,CAAA;AAC3C,eAAO,MAAM,0BAA0B,MAAM,CAAA;AAE7C,eAAO,MAAM,qBAAqB,uCAyD9B,CAAA;AAoDJ,eAAO,MAAM,wBAAwB,0CAyBU,CAAA;AAE/C,eAAO,MAAM,oBAAoB,GAC/B,OAAO,MAAM,EACb,SAAS,aAAa,CAAC,MAAM,CAAC,iCAW/B,CAAA;AAED,eAAO,MAAM,eAAe,oCA+GZ,CAAA;AAEhB,eAAO,MAAM,iBAAiB,oCAciB,CAAA;AAE/C,eAAO,MAAM,wBAAwB,oCASsB,CAAA;AAE3D,eAAO,MAAM,yBAAyB,oCAMpC,CAAA;AAEF,eAAO,MAAM,sBAAsB,oCAUjC,CAAA;AAuDF,eAAO,MAAM,gBAAgB,8BASzB,CAAA;AAyCJ,eAAO,MAAM,0BAA0B,sEAWmB,CAAA;AAE1D;;;GAGG;AACH,eAAO,MAAM,UAAU,4BAmDnB,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,YAAY,4BAuCiB,CAAA;AAE1C,eAAO,MAAM,mBAAmB,4BAgBkB,CAAA;AAwDlD,eAAO,MAAM,UAAU,4BA8CnB,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,YAAY,4BAIiB,CAAA;AAgD1C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,sCAgG7B,CAAA;AAEJ,eAAO,MAAM,sBAAsB,sCA2CY,CAAA;AAI/C,eAAO,MAAM,MAAM,sCAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/index.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,EAAE,EAAE,KAAK,aAAa,EAAyB,MAAM,KAAK,CAAA;AAKxE,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC9B,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAEL,KAAK,eAAe,EAIpB,KAAK,+BAA+B,EAOrC,MAAM,2BAA2B,CAAA;AAKlC,OAAO,EAGL,KAAK,kBAAkB,EAIvB,KAAK,cAAc,EAGnB,KAAK,IAAI,EACT,KAAK,IAAI,EAET,KAAK,MAAM,EAGX,KAAK,OAAO,EACb,MAAM,qCAAqC,CAAA;AA0C5C,eAAO,MAAM,mBAAmB,GAC9B,OAAO,MAAM,EACb,SAAS,aAAa,CAAC,+BAA+B,CAAC,iCAqCxD,CAAA;AA6ND,eAAO,MAAM,0BAA0B,IAAI,CAAA;AAC3C,eAAO,MAAM,0BAA0B,MAAM,CAAA;AAE7C,eAAO,MAAM,qBAAqB,uCAyD9B,CAAA;AAoDJ,eAAO,MAAM,wBAAwB,0CAyBU,CAAA;AAE/C,eAAO,MAAM,oBAAoB,GAC/B,OAAO,MAAM,EACb,SAAS,aAAa,CAAC,MAAM,CAAC,iCAW/B,CAAA;AAED,eAAO,MAAM,eAAe,oCA+GZ,CAAA;AAEhB,eAAO,MAAM,iBAAiB,oCAciB,CAAA;AAE/C,eAAO,MAAM,wBAAwB,oCASsB,CAAA;AAE3D,eAAO,MAAM,yBAAyB,oCAMpC,CAAA;AAEF,eAAO,MAAM,sBAAsB,oCAUjC,CAAA;AAuDF,eAAO,MAAM,gBAAgB,8BASzB,CAAA;AAyCJ,eAAO,MAAM,0BAA0B,sEAWmB,CAAA;AAE1D;;;GAGG;AACH,eAAO,MAAM,UAAU,4BAmDnB,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,YAAY,4BAuCiB,CAAA;AAE1C,eAAO,MAAM,mBAAmB,4BAgBkB,CAAA;AAwDlD,eAAO,MAAM,UAAU,4BA8CnB,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,YAAY,4BAIiB,CAAA;AAE1C;;GAEG;AACH,eAAO,MAAM,gBAAgB,+BAIgB,CAAA;AAgD7C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,sCAgG7B,CAAA;AAEJ,eAAO,MAAM,sBAAsB,sCAyDY,CAAA;AAI/C,eAAO,MAAM,MAAM,sCAAuB,CAAA"}
@@ -98,6 +98,7 @@ export interface PageStatus extends PageBase {
98
98
  }
99
99
  export type Page = PageStart | PageQuestion | PageTerminal | PageFileUpload | PageRepeat | PageSummary | PageSummaryWithConfirmationEmail | PageStatus;
100
100
  export interface Section {
101
+ id?: string;
101
102
  name: string;
102
103
  title: string;
103
104
  hideTitle?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/types.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,16 @@ export class SummaryPageController extends PreviewPageControllerBase {
25
25
  * @private
26
26
  */
27
27
  private _isConfirmationEmailSettingsPanel;
28
+ /**
29
+ * @type {SectionForPreview[]}
30
+ * @private
31
+ */
32
+ private _sections;
33
+ /**
34
+ * @type {Array<{ title: string }>}
35
+ * @private
36
+ */
37
+ private _unassignedPages;
28
38
  /**
29
39
  * @returns {{ rows: SummaryRow[] }}
30
40
  */
@@ -47,12 +57,23 @@ export class SummaryPageController extends PreviewPageControllerBase {
47
57
  highlightDeclaration(): void;
48
58
  unhighlightDeclaration(): void;
49
59
  get showConfirmationEmail(): boolean;
60
+ /**
61
+ * @returns {SectionForPreview[]}
62
+ */
63
+ get sections(): SectionForPreview[];
64
+ /**
65
+ * @returns {Array<{ title: string }>}
66
+ */
67
+ get unassignedPages(): Array<{
68
+ title: string;
69
+ }>;
50
70
  get buttonText(): "Accept and send" | "Send";
51
71
  setShowConfirmationEmail(): void;
52
72
  unsetShowConfirmationEmail(): void;
53
73
  }
54
74
  import { PreviewPageControllerBase } from '../../../../form/form-editor/preview/controller/page-controller-base.js';
55
75
  import type { SummaryRow } from '../../../../form/form-editor/macros/types.js';
76
+ import type { SectionForPreview } from '../../../../form/form-editor/preview/types.js';
56
77
  import type { SummaryPageElements } from '../../../../form/form-editor/preview/types.js';
57
78
  import type { FormDefinition } from '../../../../form/form-definition/types.js';
58
79
  import type { PageRenderer } from '../../../../form/form-editor/preview/types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"summary-page-controller.d.ts","sourceRoot":"","sources":["../../../../../../src/form/form-editor/preview/controller/summary-page-controller.js"],"names":[],"mappings":"AAOA;IAgCE;;;;OAIG;IACH,sBAJW,mBAAmB,kBACnB,cAAc,YACd,YAAY,EAetB;IAvCD;;;OAGG;IACH,uBAAmB;IACnB;;;OAGG;IACH,yBAAwB;IACxB;;;OAGG;IACH,+BAA8B;IAC9B;;;OAGG;IACH,0CAAyC;IAsBzC;;OAEG;IACH,qBAFa;QAAE,IAAI,EAAE,UAAU,EAAE,CAAA;KAAE,CAkBlC;IAgCD;;OAEG;IACH,qCAFW,MAAM,EAIhB;IAED,uBANW,MAAM,CAQhB;IAED;;;MAEC;IAED,gDAEC;IAED,2BAGC;IAED,6BAGC;IAED,+BAEC;IAED,6BAEC;IAED,+BAEC;IAED,qCAEC;IAaD,6CAEC;IAED,iCAGC;IAED,mCAGC;CACF;0CAjLyC,mEAAmE;gCAuLxD,wCAAwC;yCADd,yCAAyC;oCADrF,qCAAqC;kCACO,yCAAyC"}
1
+ {"version":3,"file":"summary-page-controller.d.ts","sourceRoot":"","sources":["../../../../../../src/form/form-editor/preview/controller/summary-page-controller.js"],"names":[],"mappings":"AAOA;IA0CE;;;;OAIG;IACH,sBAJW,mBAAmB,kBACnB,cAAc,YACd,YAAY,EAiBtB;IAnDD;;;OAGG;IACH,uBAAmB;IACnB;;;OAGG;IACH,yBAAwB;IACxB;;;OAGG;IACH,+BAA8B;IAC9B;;;OAGG;IACH,0CAAyC;IACzC;;;OAGG;IACH,kBAAc;IACd;;;OAGG;IACH,yBAAqB;IAwBrB;;OAEG;IACH,qBAFa;QAAE,IAAI,EAAE,UAAU,EAAE,CAAA;KAAE,CAkBlC;IAgCD;;OAEG;IACH,qCAFW,MAAM,EAIhB;IAED,uBANW,MAAM,CAQhB;IAED;;;MAEC;IAED,gDAEC;IAED,2BAGC;IAED,6BAGC;IAED,+BAEC;IAED,6BAEC;IAED,+BAEC;IAED,qCAEC;IAED;;OAEG;IACH,gBAFa,iBAAiB,EAAE,CAI/B;IAED;;OAEG;IACH,uBAFa,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAIpC;IAaD,6CAEC;IAED,iCAGC;IAED,mCAGC;CACF;0CA3MyC,mEAAmE;gCAiNxD,wCAAwC;uCADK,yCAAyC;yCAAzC,yCAAyC;oCADxG,qCAAqC;kCAC0B,yCAAyC"}
@@ -118,16 +118,31 @@ export interface PageOverviewElements extends PagePreviewBaseElements {
118
118
  repeatQuestion: string | undefined;
119
119
  hasRepeater: boolean;
120
120
  }
121
+ export interface SectionForPreview {
122
+ name: string;
123
+ title: string;
124
+ pages: {
125
+ title: string;
126
+ }[];
127
+ }
121
128
  export interface SummaryPageElements extends PagePreviewBaseElements {
122
129
  declaration: boolean;
123
130
  showConfirmationEmail: boolean;
124
131
  isConfirmationEmailSettingsPanel: boolean;
132
+ sections?: SectionForPreview[];
133
+ unassignedPages?: {
134
+ title: string;
135
+ }[];
125
136
  }
126
137
  export interface SummaryPageInitialState {
127
138
  showConfirmationEmail: boolean;
128
139
  declarationText: string;
129
140
  needDeclaration: boolean;
130
141
  isConfirmationEmailSettingsPanel: boolean;
142
+ sections?: SectionForPreview[];
143
+ unassignedPages?: {
144
+ title: string;
145
+ }[];
131
146
  }
132
147
  export type PreviewQuestion = DateInputQuestion | EmailAddressQuestion | ListSortableQuestion | LongAnswerQuestion | PhoneNumberQuestion | Question | RadioSortableQuestion | SelectSortableQuestion | ShortAnswerQuestion | UkAddressQuestion | AutocompleteQuestion;
133
148
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/form/form-editor/preview/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/form/form-editor/preview/types.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ export declare enum FormDefinitionError {
22
22
  UniquePagePath = "unique_page_path",
23
23
  UniquePageComponentId = "unique_page_component_id",
24
24
  UniquePageComponentName = "unique_page_component_name",
25
+ UniqueSectionId = "unique_section_id",
25
26
  UniqueSectionName = "unique_section_name",
26
27
  UniqueSectionTitle = "unique_section_title",
27
28
  UniqueListId = "unique_list_id",
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-manager/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-manager/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defra/forms-model",
3
- "version": "3.0.586",
3
+ "version": "3.0.588",
4
4
  "description": "A hapi plugin providing the model for Defra forms",
5
5
  "homepage": "https://github.com/DEFRA/forms-designer/tree/main/model#readme",
6
6
  "types": "dist/types/index.d.ts",
@@ -491,6 +491,12 @@
491
491
  "type": "object",
492
492
  "description": "A form section grouping related pages together",
493
493
  "properties": {
494
+ "id": {
495
+ "type": "string",
496
+ "description": "Unique identifier for the section (UUID)",
497
+ "format": "uuid",
498
+ "title": "Id"
499
+ },
494
500
  "name": {
495
501
  "type": "string",
496
502
  "description": "Unique identifier for the section, used in code and page references",
@@ -37,40 +37,6 @@
37
37
  "description": "Path of the first page to show when starting the form",
38
38
  "title": "Start Page"
39
39
  },
40
- "sections": {
41
- "type": "array",
42
- "description": "Sections grouping related pages together",
43
- "uniqueItems": true,
44
- "items": {
45
- "type": "object",
46
- "description": "A form section grouping related pages together",
47
- "properties": {
48
- "name": {
49
- "type": "string",
50
- "description": "Unique identifier for the section, used in code and page references",
51
- "title": "Name"
52
- },
53
- "title": {
54
- "type": "string",
55
- "description": "Human-readable section title displayed to users",
56
- "title": "Title"
57
- },
58
- "hideTitle": {
59
- "type": "boolean",
60
- "description": "When true, the section title will not be displayed in the UI",
61
- "default": false,
62
- "title": "Hide Title"
63
- }
64
- },
65
- "required": [
66
- "name",
67
- "title"
68
- ],
69
- "additionalProperties": false,
70
- "title": "Sections Item"
71
- },
72
- "title": "Sections"
73
- },
74
40
  "metadata": {
75
41
  "type": "object",
76
42
  "description": "Custom metadata for the form",
@@ -1855,11 +1821,51 @@
1855
1821
  "title": "Conditions Item"
1856
1822
  },
1857
1823
  "title": "Conditions"
1824
+ },
1825
+ "sections": {
1826
+ "type": "array",
1827
+ "description": "Sections schema for V2 forms",
1828
+ "uniqueItems": true,
1829
+ "items": {
1830
+ "type": "object",
1831
+ "description": "Section schema for V2 forms",
1832
+ "properties": {
1833
+ "name": {
1834
+ "type": "string",
1835
+ "description": "Unique identifier for the section, used in code and page references",
1836
+ "title": "Name"
1837
+ },
1838
+ "title": {
1839
+ "type": "string",
1840
+ "description": "Human-readable section title displayed to users",
1841
+ "title": "Title"
1842
+ },
1843
+ "hideTitle": {
1844
+ "type": "boolean",
1845
+ "description": "When true, the section title will not be displayed in the UI",
1846
+ "default": false,
1847
+ "title": "Hide Title"
1848
+ },
1849
+ "id": {
1850
+ "type": "string",
1851
+ "description": "Unique identifier for the section",
1852
+ "format": "uuid",
1853
+ "title": "Id"
1854
+ }
1855
+ },
1856
+ "required": [
1857
+ "name",
1858
+ "title"
1859
+ ],
1860
+ "additionalProperties": false,
1861
+ "title": "Sections Item"
1862
+ },
1863
+ "title": "Sections"
1858
1864
  }
1859
1865
  },
1860
1866
  "required": [
1861
- "sections",
1862
- "pages"
1867
+ "pages",
1868
+ "sections"
1863
1869
  ],
1864
1870
  "additionalProperties": false,
1865
1871
  "$schema": "http://json-schema.org/draft-07/schema#",
@@ -174,6 +174,10 @@ const incompatibleConditionValidator = (
174
174
  const sectionsSchema = Joi.object<Section>()
175
175
  .description('A form section grouping related pages together')
176
176
  .keys({
177
+ id: Joi.string()
178
+ .uuid()
179
+ .optional()
180
+ .description('Unique identifier for the section (UUID)'),
177
181
  name: Joi.string()
178
182
  .trim()
179
183
  .required()
@@ -1003,6 +1007,15 @@ export const listSchemaV2 = listSchema
1003
1007
  })
1004
1008
  .description('List schema for V2 forms')
1005
1009
 
1010
+ /**
1011
+ * V2 Joi schema for Sections
1012
+ */
1013
+ export const sectionsSchemaV2 = sectionsSchema
1014
+ .keys({
1015
+ id: idSchema.description('Unique identifier for the section')
1016
+ })
1017
+ .description('Section schema for V2 forms')
1018
+
1006
1019
  const feedbackSchema = Joi.object<FormDefinition['feedback']>()
1007
1020
  .description('Feedback configuration for the form')
1008
1021
  .keys({
@@ -1192,6 +1205,20 @@ export const formDefinitionV2Schema = formDefinitionSchema
1192
1205
  FormDefinitionError.UniqueConditionId,
1193
1206
  FormDefinitionError.UniqueConditionDisplayName
1194
1207
  ])
1208
+ ),
1209
+ sections: Joi.array<Section>()
1210
+ .items(sectionsSchemaV2)
1211
+ .unique('id')
1212
+ .unique('name')
1213
+ .unique('title')
1214
+ .required()
1215
+ .description('Sections schema for V2 forms')
1216
+ .error(
1217
+ checkErrors([
1218
+ FormDefinitionError.UniqueSectionId,
1219
+ FormDefinitionError.UniqueSectionName,
1220
+ FormDefinitionError.UniqueSectionTitle
1221
+ ])
1195
1222
  )
1196
1223
  })
1197
1224
  .description('Form definition schema for V2')
@@ -129,6 +129,7 @@ export type Page =
129
129
  | PageStatus
130
130
 
131
131
  export interface Section {
132
+ id?: string
132
133
  name: string
133
134
  title: string
134
135
  hideTitle?: boolean
@@ -36,6 +36,16 @@ export class SummaryPageController extends PreviewPageControllerBase {
36
36
  * @private
37
37
  */
38
38
  _isConfirmationEmailSettingsPanel = false
39
+ /**
40
+ * @type {SectionForPreview[]}
41
+ * @private
42
+ */
43
+ _sections = []
44
+ /**
45
+ * @type {Array<{ title: string }>}
46
+ * @private
47
+ */
48
+ _unassignedPages = []
39
49
 
40
50
  /**
41
51
  * @param {SummaryPageElements} elements
@@ -55,6 +65,8 @@ export class SummaryPageController extends PreviewPageControllerBase {
55
65
  this._guidanceComponent.content = elements.guidance
56
66
  this._isConfirmationEmailSettingsPanel =
57
67
  elements.isConfirmationEmailSettingsPanel
68
+ this._sections = elements.sections ?? []
69
+ this._unassignedPages = elements.unassignedPages ?? []
58
70
  }
59
71
 
60
72
  /**
@@ -153,6 +165,20 @@ export class SummaryPageController extends PreviewPageControllerBase {
153
165
  return this._showConfirmationEmail
154
166
  }
155
167
 
168
+ /**
169
+ * @returns {SectionForPreview[]}
170
+ */
171
+ get sections() {
172
+ return this._sections
173
+ }
174
+
175
+ /**
176
+ * @returns {Array<{ title: string }>}
177
+ */
178
+ get unassignedPages() {
179
+ return this._unassignedPages
180
+ }
181
+
156
182
  /**
157
183
  * @returns {Markdown[]}
158
184
  * @protected
@@ -182,7 +208,7 @@ export class SummaryPageController extends PreviewPageControllerBase {
182
208
  /**
183
209
  * @import { ComponentDef, ContentComponentsDef, ListComponent, FormComponentsDef } from '~/src/components/types.js'
184
210
  * @import { FormDefinition } from '~/src/form/form-definition/types.js'
185
- * @import { PageRenderer, PagePreviewBaseElements, SummaryPageElements } from '~/src/form/form-editor/preview/types.js'
211
+ * @import { PageRenderer, PagePreviewBaseElements, SummaryPageElements, SectionForPreview } from '~/src/form/form-editor/preview/types.js'
186
212
  * @import { SummaryRowActionItem, SummaryRow } from '~/src/form/form-editor/macros/types.js'
187
213
  * @import { Markdown } from '~/src/form/form-editor/preview/markdown.js'
188
214
  */
@@ -148,10 +148,18 @@ export interface PageOverviewElements extends PagePreviewBaseElements {
148
148
  hasRepeater: boolean
149
149
  }
150
150
 
151
+ export interface SectionForPreview {
152
+ name: string
153
+ title: string
154
+ pages: { title: string }[]
155
+ }
156
+
151
157
  export interface SummaryPageElements extends PagePreviewBaseElements {
152
158
  declaration: boolean
153
159
  showConfirmationEmail: boolean
154
160
  isConfirmationEmailSettingsPanel: boolean
161
+ sections?: SectionForPreview[]
162
+ unassignedPages?: { title: string }[]
155
163
  }
156
164
 
157
165
  export interface SummaryPageInitialState {
@@ -159,6 +167,8 @@ export interface SummaryPageInitialState {
159
167
  declarationText: string
160
168
  needDeclaration: boolean
161
169
  isConfirmationEmailSettingsPanel: boolean
170
+ sections?: SectionForPreview[]
171
+ unassignedPages?: { title: string }[]
162
172
  }
163
173
 
164
174
  export type PreviewQuestion =
@@ -29,6 +29,7 @@ export enum FormDefinitionError {
29
29
  UniquePagePath = 'unique_page_path',
30
30
  UniquePageComponentId = 'unique_page_component_id',
31
31
  UniquePageComponentName = 'unique_page_component_name',
32
+ UniqueSectionId = 'unique_section_id',
32
33
  UniqueSectionName = 'unique_section_name',
33
34
  UniqueSectionTitle = 'unique_section_title',
34
35
  UniqueListId = 'unique_list_id',
@@ -75,6 +76,10 @@ export const formDefinitionErrors: FormDefinitionErrors = {
75
76
  key: 'name',
76
77
  type: FormDefinitionErrorType.Unique
77
78
  },
79
+ [FormDefinitionError.UniqueSectionId]: {
80
+ key: 'id',
81
+ type: FormDefinitionErrorType.Unique
82
+ },
78
83
  [FormDefinitionError.UniqueSectionName]: {
79
84
  key: 'name',
80
85
  type: FormDefinitionErrorType.Unique