@defra/forms-model 3.0.555 → 3.0.556

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.
@@ -81,6 +81,8 @@ const conditionSchema = Joi.object().description('Condition definition specifyin
81
81
  value: Joi.alternatives().try(conditionValueSchema, relativeDateValueDataSchema).description('Value to compare the field against, either fixed or relative date'),
82
82
  coordinator: Joi.string().trim().optional().description('Logical operator connecting this condition with others (AND, OR)')
83
83
  });
84
+ export const MIN_NUMBER_OF_REPEAT_ITEMS = 1;
85
+ export const MAX_NUMBER_OF_REPEAT_ITEMS = 200;
84
86
  export const conditionDataSchemaV2 = Joi.object().description('Condition definition').keys({
85
87
  id: idSchema.description('Unique identifier used to reference this condition'),
86
88
  componentId: Joi.string().trim().required().when('/pages', {
@@ -193,8 +195,8 @@ const repeatOptions = Joi.object().description('Configuration options for a repe
193
195
  title: Joi.string().trim().required().description('Title displayed for each repeatable item')
194
196
  });
195
197
  const repeatSchema = Joi.object().description('Validation rules for a repeatable section').keys({
196
- min: Joi.number().empty('').required().description('Minimum number of repetitions required'),
197
- max: Joi.number().empty('').required().description('Maximum number of repetitions allowed')
198
+ min: Joi.number().empty('').min(MIN_NUMBER_OF_REPEAT_ITEMS).required().description('Minimum number of repetitions required'),
199
+ max: Joi.number().empty('').min(Joi.ref('min')).max(MAX_NUMBER_OF_REPEAT_ITEMS).required().description('Maximum number of repetitions allowed')
198
200
  });
199
201
  export const pageRepeatSchema = Joi.object().description('Complete configuration for a repeatable page').keys({
200
202
  options: repeatOptions.required().description('Display and identification options for the repetition'),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["JoiDate","JoiBase","v4","uuidV4","ComponentType","ConditionType","OperatorName","SchemaVersion","checkErrors","FormDefinitionError","ControllerType","hasComponents","Joi","extend","idSchemaOptional","string","uuid","idSchema","default","conditionIdRef","ref","in","adjust","conditions","map","condition","id","componentIdRefSchema","pages","flatMap","page","components","filter","component","listIdRef","lists","list","listItemIdRef","items","item","sectionsSchema","object","description","keys","name","trim","required","title","hideTitle","boolean","optional","conditionFieldSchema","type","display","conditionValueSchema","value","conditionListItemRefDataSchemaV2","listId","when","is","exist","then","valid","error","RefConditionListId","itemId","RefConditionItemId","relativeDateValueDataSchemaV2","period","number","integer","positive","unit","direction","relativeDateValueDataSchema","conditionRefSchema","conditionName","conditionDisplayName","coordinator","conditionRefDataSchemaV2","conditionId","RefConditionConditionId","conditionSchema","field","operator","alternatives","try","conditionDataSchemaV2","componentId","RefConditionComponentId","Object","values","any","switch","BooleanValue","StringValue","NumberValue","DateValue","date","format","raw","ListItemRef","RelativeDate","conditionGroupSchema","array","link","conditionsModelSchema","conditionWrapperSchema","displayName","conditionWrapperSchemaV2","min","conditional","otherwise","max","componentSchema","shortDescription","Details","Html","InsetText","Markdown","pattern","allow","hint","options","rows","empty","maxWords","maxDaysInPast","maxDaysInFuture","customValidationMessage","customValidationMessages","unknown","schema","length","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","feedbackForm","emailAddress","email","tlds","phaseBannerSchema","phase","outputSchema","audience","version","formDefinitionSchema","engine","V1","feedback","startPage","sections","UniqueSectionName","UniqueSectionTitle","metadata","a","declaration","skipSummary","phaseBanner","outputEmail","output","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 LanguageMessages } from 'joi'\nimport { v4 as uuidV4 } from 'uuid'\n\nimport { ComponentType } from '~/src/components/enums.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 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 { FormDefinitionError } from '~/src/form/form-manager/types.js'\nimport { ControllerType } from '~/src/pages/enums.js'\nimport { hasComponents } 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 componentIdRefSchema = 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\nconst listItemIdRef = Joi.ref('/lists', {\n in: true,\n adjust: (lists: List[]) =>\n lists.flatMap((list) =>\n list.items.filter((item) => item.id).map((item) => item.id)\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 .when('/lists', {\n is: Joi.exist(),\n then: Joi.valid(listItemIdRef)\n })\n .required()\n .description('The id of the list item')\n .error(checkErrors(FormDefinitionError.RefConditionItemId))\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 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(componentIdRefSchema)\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\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 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 })\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 .required()\n .description('Minimum number of repetitions required'),\n max: Joi.number()\n .empty('')\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 feedbackForm: Joi.boolean()\n .default(false)\n .description('Whether to show the built-in feedback form'),\n url: Joi.when('feedbackForm', {\n is: Joi.boolean().valid(false),\n then: 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 }),\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 })\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","ConditionType","OperatorName","SchemaVersion","checkErrors","FormDefinitionError","ControllerType","hasComponents","Joi","extend","idSchemaOptional","string","uuid","idSchema","default","conditionIdRef","ref","in","adjust","conditions","map","condition","id","componentIdRefSchema","pages","flatMap","page","components","filter","component","listIdRef","lists","list","listItemIdRef","items","item","sectionsSchema","object","description","keys","name","trim","required","title","hideTitle","boolean","optional","conditionFieldSchema","type","display","conditionValueSchema","value","conditionListItemRefDataSchemaV2","listId","when","is","exist","then","valid","error","RefConditionListId","itemId","RefConditionItemId","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","componentId","RefConditionComponentId","Object","values","any","switch","BooleanValue","StringValue","NumberValue","DateValue","date","format","raw","ListItemRef","RelativeDate","conditionGroupSchema","array","link","conditionsModelSchema","conditionWrapperSchema","displayName","conditionWrapperSchemaV2","min","conditional","otherwise","max","componentSchema","shortDescription","Details","Html","InsetText","Markdown","pattern","allow","hint","options","rows","empty","maxWords","maxDaysInPast","maxDaysInFuture","customValidationMessage","customValidationMessages","unknown","schema","length","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","feedbackForm","emailAddress","email","tlds","phaseBannerSchema","phase","outputSchema","audience","version","formDefinitionSchema","engine","V1","feedback","startPage","sections","UniqueSectionName","UniqueSectionTitle","metadata","a","declaration","skipSummary","phaseBanner","outputEmail","output","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 LanguageMessages } from 'joi'\nimport { v4 as uuidV4 } from 'uuid'\n\nimport { ComponentType } from '~/src/components/enums.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 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 { FormDefinitionError } from '~/src/form/form-manager/types.js'\nimport { ControllerType } from '~/src/pages/enums.js'\nimport { hasComponents } 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 componentIdRefSchema = 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\nconst listItemIdRef = Joi.ref('/lists', {\n in: true,\n adjust: (lists: List[]) =>\n lists.flatMap((list) =>\n list.items.filter((item) => item.id).map((item) => item.id)\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 .when('/lists', {\n is: Joi.exist(),\n then: Joi.valid(listItemIdRef)\n })\n .required()\n .description('The id of the list item')\n .error(checkErrors(FormDefinitionError.RefConditionItemId))\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(componentIdRefSchema)\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\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 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 })\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 feedbackForm: Joi.boolean()\n .default(false)\n .description('Whether to show the built-in feedback form'),\n url: Joi.when('feedbackForm', {\n is: Joi.boolean().valid(false),\n then: 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 }),\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 })\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,5 +1,6 @@
1
1
  import Joi from 'joi';
2
2
  import { ComponentType } from "../../components/enums.js";
3
+ import { MAX_NUMBER_OF_REPEAT_ITEMS, MIN_NUMBER_OF_REPEAT_ITEMS } from "../form-definition/index.js";
3
4
  export let QuestionTypeSubGroup = /*#__PURE__*/function (QuestionTypeSubGroup) {
4
5
  QuestionTypeSubGroup["WrittenAnswerSubGroup"] = "writtenAnswerSub";
5
6
  QuestionTypeSubGroup["DateSubGroup"] = "dateSub";
@@ -37,8 +38,8 @@ export const pageHeadingSchema = Joi.string().trim().required().description('Mai
37
38
  export const guidanceTextSchema = Joi.string().trim().description('Guidance text to assist users in completing the page');
38
39
  export const exitPageSchema = Joi.boolean().default(false).optional().description('Determines if page is set as an Exit Page');
39
40
  export const repeaterSchema = Joi.string().trim().optional().description('Combined min/max items and question set name for the repeater page');
40
- export const minItemsSchema = Joi.number().empty('').min(1).description('The minimum number of repeater items');
41
- export const maxItemsSchema = Joi.number().empty('').max(25).description('The maximum number of repeater items');
41
+ export const minItemsSchema = Joi.number().empty('').min(MIN_NUMBER_OF_REPEAT_ITEMS).description('The minimum number of repeater items');
42
+ export const maxItemsSchema = Joi.number().empty('').max(MAX_NUMBER_OF_REPEAT_ITEMS).description('The maximum number of repeater items');
42
43
  export const questionSetNameSchema = Joi.string().trim().description('The repeater question set name');
43
44
  export const needDeclarationSchema = Joi.string().trim().required().description('Whether a declaration is needed');
44
45
  export const declarationTextSchema = Joi.string().trim().required().description('Text of the declaration that users must agree to');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Joi","ComponentType","QuestionTypeSubGroup","pageTypeSchema","string","required","valid","description","questionTypeSchema","WrittenAnswerSubGroup","DateSubGroup","UkAddressField","TelephoneNumberField","FileUploadField","EmailAddressField","ListSubGroup","YesNoField","CheckboxesField","RadiosField","AutocompleteField","questionTypeFullSchema","TextField","MultilineTextField","NumberField","DatePartsField","MonthYearField","SelectField","writtenAnswerSubSchema","dateSubSchema","listSubSchema","nameSchema","trim","questionSchema","hintTextSchema","optional","allow","questionOptionalSchema","listForQuestionSchema","listItemCountSchema","number","listItemsDataSchema","exactFilesSchema","empty","integer","min","max","minFilesSchema","maxFilesSchema","fileTypesSchema","array","items","single","default","documentTypesSchema","imageTypesSchema","tabularDataTypesSchema","enhancedActionSchema","radioIdSchema","radioTextSchema","radioHintSchema","radioValueSchema","shortDescriptionSchema","pageHeadingAndGuidanceSchema","pageHeadingSchema","guidanceTextSchema","exitPageSchema","boolean","repeaterSchema","minItemsSchema","maxItemsSchema","questionSetNameSchema","needDeclarationSchema","declarationTextSchema","minSchema","maxSchema","minLengthSchema","maxLengthSchema","maxFutureSchema","maxPastSchema","precisionSchema","prefixSchema","regexSchema","rowsSchema","suffixSchema","classesSchema","jsEnabledSchema","customValidator","extend","joi","type","base","messages","coerce","from","method","value","helpers","rowSeparatorRule","schema","$_getRule","colSeparatorRule","keysRule","rowSeparator","args","rows","split","map","v","filter","Boolean","colSeparator","keys","coercedValue","row","reduce","acc","col","idx","_err","console","error","errors","rules","convert","alias","$_addRule","name","ref","assert","RegExp","message","Array","isArray","every","k","autoCompleteOptionsSchema","dsv","object","text","disallow","parent","unique","ignoreUndefined","questionDetailsFullSchema","formEditorInputPageKeys","pageType","questionType","formEditorInputPageSchema","formEditorInputheckAnswersSettingsKeys","declarationText","formEditorInputCheckAnswersSettingSchema","formEditorInputQuestionKeys","question","shortDescription","hintText","questionOptional","formEditorInputQuestionSchema","formEditorInputPageSettingsKeys","pageHeadingAndGuidance","pageHeading","guidanceText","formEditorInputPageSettingsSchema","govukFieldValueIsString","govukField","includes","govukFieldIsQuestionOptional","checkedValue","checked","allowedErrorTemplateFunctions"],"sources":["../../../../src/form/form-editor/index.ts"],"sourcesContent":["import Joi, { type ArraySchema, type GetRuleOptions } from 'joi'\n\nimport { ComponentType } from '~/src/components/enums.js'\nimport {\n type FormEditorInputCheckAnswersSettings,\n type FormEditorInputPage,\n type FormEditorInputPageSettings,\n type FormEditorInputQuestion,\n type GovukField,\n type GovukFieldQuestionOptional,\n type GovukStringField\n} from '~/src/form/form-editor/types.js'\n\nexport enum QuestionTypeSubGroup {\n WrittenAnswerSubGroup = 'writtenAnswerSub',\n DateSubGroup = 'dateSub',\n ListSubGroup = 'listSub'\n}\n\nexport const pageTypeSchema = Joi.string()\n .required()\n .valid('question', 'guidance')\n .description('Type of page - either a question page or guidance page')\n\nexport const questionTypeSchema = Joi.string()\n .required()\n .valid(\n QuestionTypeSubGroup.WrittenAnswerSubGroup,\n QuestionTypeSubGroup.DateSubGroup,\n ComponentType.UkAddressField,\n ComponentType.TelephoneNumberField,\n ComponentType.FileUploadField,\n ComponentType.EmailAddressField,\n QuestionTypeSubGroup.ListSubGroup,\n ComponentType.YesNoField,\n ComponentType.CheckboxesField,\n ComponentType.RadiosField,\n ComponentType.AutocompleteField\n )\n .description('The high-level type of question, including grouped types')\n\nexport const questionTypeFullSchema = Joi.string()\n .required()\n .valid(\n ComponentType.TextField,\n ComponentType.MultilineTextField,\n ComponentType.NumberField,\n ComponentType.DatePartsField,\n ComponentType.MonthYearField,\n ComponentType.UkAddressField,\n ComponentType.TelephoneNumberField,\n ComponentType.FileUploadField,\n ComponentType.EmailAddressField,\n ComponentType.YesNoField,\n ComponentType.CheckboxesField,\n ComponentType.RadiosField,\n ComponentType.AutocompleteField,\n ComponentType.SelectField\n )\n .description('The specific component type to use for this question')\n\nexport const writtenAnswerSubSchema = Joi.string()\n .required()\n .valid(\n ComponentType.TextField,\n ComponentType.MultilineTextField,\n ComponentType.NumberField\n )\n .description('Subtype for written answer questions')\n\nexport const dateSubSchema = Joi.string()\n .required()\n .valid(ComponentType.DatePartsField, ComponentType.MonthYearField)\nexport const listSubSchema = Joi.string()\n .required()\n .valid(\n ComponentType.YesNoField,\n ComponentType.CheckboxesField,\n ComponentType.RadiosField,\n ComponentType.AutocompleteField,\n ComponentType.SelectField\n )\n .description('Subtype for date-related questions')\n\nexport const nameSchema = Joi.string()\n .trim()\n .required()\n .description('Unique identifier for the field')\n\nexport const questionSchema = Joi.string()\n .trim()\n .required()\n .description('The question text displayed to the user')\n\nexport const hintTextSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Optional guidance text displayed below the question')\n\nexport const questionOptionalSchema = Joi.string()\n .trim()\n .optional()\n .valid('', 'true')\n .description(\n 'Indicates whether a question is optional. Empty string or \"true\" values are accepted.'\n )\n\nexport const listForQuestionSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Unique identifier for the list used by the field')\n\nexport const listItemCountSchema = Joi.number()\n .optional()\n .description('Number of list items in the list used by the field')\n\nexport const listItemsDataSchema = Joi.string()\n .allow('')\n .description('List items in JSON format, such as for radios or checkboxes.')\n\nexport const exactFilesSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .max(25)\n .description(\n 'Specifies the exact number of files required for upload. Must be between 1 and 25.'\n )\n\nexport const minFilesSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .max(25)\n .description(\n 'Minimum number of files required for upload. Must be between 1 and 25.'\n )\n\nexport const maxFilesSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .max(25)\n .description(\n 'Maximum number of files allowed for upload. Must be between 1 and 25.'\n )\n\nexport const fileTypesSchema = Joi.array()\n .items(Joi.string())\n .single()\n .empty(null)\n .default([])\n .description(\n 'Array of allowed file types. Can be provided as a single value or an array.'\n )\n\nexport const documentTypesSchema = Joi.array()\n .items(Joi.string())\n .single()\n .empty(null)\n .default([])\n .description(\n 'Array of allowed document types. Can be provided as a single value or an array.'\n )\n\nexport const imageTypesSchema = Joi.array()\n .items(Joi.string())\n .single()\n .empty(null)\n .default([])\n .description(\n 'Array of allowed image types. Can be provided as a single value or an array.'\n )\n\nexport const tabularDataTypesSchema = Joi.array()\n .items(Joi.string())\n .single()\n .empty(null)\n .default([])\n\nexport const enhancedActionSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Action field that can include enhanced functionality')\n\nexport const radioIdSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Unique identifier for radio options')\n\nexport const radioTextSchema = Joi.string()\n .trim()\n .required()\n .description('The visible text shown next to radio options')\n\nexport const radioHintSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description(\n 'Optional hint text displayed with radio buttons to provide additional guidance'\n )\n\nexport const radioValueSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description(\n 'Array of allowed tabular data types. Can be provided as a single value or an array.'\n )\n\nexport const shortDescriptionSchema = Joi.string()\n .trim()\n .required()\n .description('Brief description of the question for internal use')\n\nexport const pageHeadingAndGuidanceSchema = Joi.string()\n .trim()\n .optional()\n .description('Combined heading and guidance for the page')\n\nexport const pageHeadingSchema = Joi.string()\n .trim()\n .required()\n .description('Main heading displayed at the top of the page')\n\nexport const guidanceTextSchema = Joi.string()\n .trim()\n .description('Guidance text to assist users in completing the page')\n\nexport const exitPageSchema = Joi.boolean()\n .default(false)\n .optional()\n .description('Determines if page is set as an Exit Page')\n\nexport const repeaterSchema = Joi.string()\n .trim()\n .optional()\n .description(\n 'Combined min/max items and question set name for the repeater page'\n )\n\nexport const minItemsSchema = Joi.number()\n .empty('')\n .min(1)\n .description('The minimum number of repeater items')\n\nexport const maxItemsSchema = Joi.number()\n .empty('')\n .max(25)\n .description('The maximum number of repeater items')\n\nexport const questionSetNameSchema = Joi.string()\n .trim()\n .description('The repeater question set name')\n\nexport const needDeclarationSchema = Joi.string()\n .trim()\n .required()\n .description('Whether a declaration is needed')\n\nexport const declarationTextSchema = Joi.string()\n .trim()\n .required()\n .description('Text of the declaration that users must agree to')\n\nexport const minSchema = Joi.number()\n .empty('')\n .integer()\n .description('Minimum value for numeric inputs')\n\nexport const maxSchema = Joi.number()\n .empty('')\n .integer()\n .description('Maximum value for numeric inputs')\n\nexport const minLengthSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .description('Minimum character length for text inputs')\n\nexport const maxLengthSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .description('Maximum character length for text inputs')\n\nexport const maxFutureSchema = Joi.number()\n .empty('')\n .integer()\n .min(0)\n .description('Maximum days in the future allowed for date inputs')\n\nexport const maxPastSchema = Joi.number()\n .empty('')\n .integer()\n .min(0)\n .description('Maximum days in the past allowed for date inputs')\n\nexport const precisionSchema = Joi.number()\n .empty('')\n .integer()\n .min(0)\n .description('Decimal precision for numeric inputs')\n\nexport const prefixSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Text to display before the input (e.g., £)')\n\nexport const regexSchema = Joi.string()\n .optional()\n .allow('')\n .description('Regular expression pattern for validation')\n\nexport const rowsSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .description('Number of rows for multiline text fields')\n\nexport const suffixSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Text to display after the input (e.g., kg)')\n\nexport const classesSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Custom CSS classes to apply to the component')\n\nexport const jsEnabledSchema = Joi.string()\n .trim()\n .optional()\n .allow('false', 'true')\n .description('Flag to show if Javascript is enabled or not')\n\ntype GenericRuleOptions<K extends string, T> = Omit<GetRuleOptions, 'args'> & {\n args: Record<K, T>\n}\n\ninterface DSLSchema<TSchema = Record<string, unknown>[]>\n extends ArraySchema<TSchema> {\n rowSeparator: (rowSep: string | RegExp) => DSLSchema<TSchema>\n row: (rowSep: string | RegExp) => DSLSchema<TSchema>\n colSeparator: (colSep: string | RegExp) => DSLSchema<TSchema>\n col: (colSep: string | RegExp) => DSLSchema<TSchema>\n keys: (keys: string[]) => DSLSchema<TSchema>\n}\n\ninterface CustomValidator extends Joi.Root {\n dsv<TSchema>(): DSLSchema<TSchema>\n}\n\nexport const customValidator = Joi.extend((joi: Joi.Root) => {\n return {\n type: 'dsv',\n base: joi.array(),\n messages: {\n 'dsv.invalid': 'Invalid parse string'\n },\n coerce: {\n from: 'string',\n method(value: string, helpers) {\n try {\n // Only called when prefs.convert is true\n // Rules\n const rowSeparatorRule = helpers.schema.$_getRule('rowSeparator') as\n | undefined\n | GenericRuleOptions<'rowSeparator', string | RegExp>\n const colSeparatorRule = helpers.schema.$_getRule('colSeparator') as\n | undefined\n | GenericRuleOptions<'colSeparator', string | RegExp>\n const keysRule = helpers.schema.$_getRule('keys') as\n | undefined\n | GenericRuleOptions<'keys', string[]>\n\n // Rows\n const rowSeparator = rowSeparatorRule?.args.rowSeparator ?? /\\r?\\n/\n const rows = value\n .split(rowSeparator)\n .map((v) => v.trim())\n .filter(Boolean)\n\n // Columns\n const colSeparator = colSeparatorRule?.args.colSeparator ?? ','\n const keys = keysRule?.args.keys ?? ['key', 'value']\n\n const coercedValue = rows.map((row) => {\n return row\n .split(colSeparator)\n .reduce<Record<string, string>>((acc, col, idx) => {\n return {\n ...acc,\n [keys[idx]]: col.trim()\n }\n }, {})\n })\n return { value: coercedValue }\n } catch (_err) {\n // eslint-disable-next-line no-console\n console.error(_err)\n return { value, errors: [helpers.error('dsv.invalid')] }\n }\n }\n },\n rules: {\n rowSeparator: {\n convert: true,\n alias: 'row',\n method(rowSeparator: string) {\n return this.$_addRule({\n name: 'rowSeparator',\n args: { rowSeparator }\n })\n },\n args: [\n {\n name: 'rowSeparator',\n ref: true,\n assert: (value) =>\n typeof value === 'string' || value instanceof RegExp,\n message: 'must be a string or regex'\n }\n ]\n },\n colSeparator: {\n convert: true,\n alias: 'col',\n method(colSeparator: string) {\n return this.$_addRule({\n name: 'colSeparator',\n args: { colSeparator }\n })\n },\n args: [\n {\n name: 'colSeparator',\n ref: true,\n assert: (value) =>\n typeof value === 'string' || value instanceof RegExp,\n message: 'must be a string or regex'\n }\n ]\n },\n keys: {\n convert: true,\n method(keys: string[]) {\n return this.$_addRule({ name: 'keys', args: { keys } })\n },\n args: [\n {\n name: 'keys',\n ref: true,\n assert: (value) =>\n Array.isArray(value) && value.every((k) => typeof k === 'string'),\n message: 'must be an array of strings'\n }\n ]\n }\n }\n }\n}) as CustomValidator\n\nexport const autoCompleteOptionsSchema = customValidator\n .dsv<{ text: string; value: string }[]>()\n .row(/\\r?\\n/)\n .col(':')\n .keys(['text', 'value'])\n .items(\n customValidator.object({\n text: customValidator.string().min(1).disallow('').required(),\n value: customValidator\n .string()\n .default((parent: { text: string; value?: string }) => parent.text)\n .min(1)\n .disallow('')\n })\n )\n .min(1)\n .unique('text')\n .unique('value', { ignoreUndefined: true })\n .required()\n\nexport const questionDetailsFullSchema = {\n autoCompleteOptionsSchema,\n classesSchema,\n documentTypesSchema,\n enhancedActionSchema,\n exactFilesSchema,\n fileTypesSchema,\n hintTextSchema,\n imageTypesSchema,\n jsEnabledSchema,\n listForQuestionSchema,\n listItemCountSchema,\n listItemsDataSchema,\n maxFilesSchema,\n maxFutureSchema,\n maxLengthSchema,\n maxPastSchema,\n maxSchema,\n minFilesSchema,\n minLengthSchema,\n minSchema,\n nameSchema,\n precisionSchema,\n prefixSchema,\n questionOptionalSchema,\n questionSchema,\n questionTypeFullSchema,\n radioHintSchema,\n radioIdSchema,\n radioTextSchema,\n radioValueSchema,\n regexSchema,\n rowsSchema,\n shortDescriptionSchema,\n suffixSchema,\n tabularDataTypesSchema\n}\n\nexport const formEditorInputPageKeys = {\n pageType: pageTypeSchema,\n questionType: questionTypeSchema\n}\n\n/**\n * Joi schema for `FormEditorInputPage` interface\n * @see {@link FormEditorInputPage}\n */\nexport const formEditorInputPageSchema = Joi.object<FormEditorInputPage>()\n .keys(formEditorInputPageKeys)\n .required()\n .description('Input schema for creating a new page in the form editor')\n\nexport const formEditorInputheckAnswersSettingsKeys = {\n declarationText: shortDescriptionSchema\n}\n\n/**\n * Joi schema for `FormEditorInputCheckAnswersSettings` interface\n * @see {@link FormEditorInputCheckAnswersSettings}\n */\nexport const formEditorInputCheckAnswersSettingSchema =\n Joi.object<FormEditorInputCheckAnswersSettings>()\n .keys(formEditorInputheckAnswersSettingsKeys)\n .required()\n .description('Configuration for the check-answers page')\n\nexport const formEditorInputQuestionKeys = {\n question: questionSchema,\n shortDescription: shortDescriptionSchema,\n hintText: hintTextSchema,\n questionOptional: questionOptionalSchema\n}\n\n/**\n * Joi schema for `FormEditorInputQuestion` interface\n * @see {@link FormEditorInputQuestion}\n */\nexport const formEditorInputQuestionSchema =\n Joi.object<FormEditorInputQuestion>()\n .keys(formEditorInputQuestionKeys)\n .required()\n .description(\n 'Input schema for creating or updating a question in the form editor'\n )\n\nexport const formEditorInputPageSettingsKeys = {\n pageHeadingAndGuidance: pageHeadingAndGuidanceSchema,\n pageHeading: pageHeadingSchema,\n guidanceText: guidanceTextSchema\n}\n\n/**\n * Joi schema for `FormEditorInputPageSettings` interface\n * @see {@link FormEditorInputPageSettings}\n */\nexport const formEditorInputPageSettingsSchema =\n Joi.object<FormEditorInputPageSettings>()\n .keys(formEditorInputPageSettingsKeys)\n .required()\n .description('Settings for page content and display in the form editor')\n\nexport function govukFieldValueIsString(\n govukField: GovukField\n): govukField is GovukStringField {\n return [\n 'question',\n 'hintText',\n 'shortDescription',\n 'autoCompleteOptions'\n ].includes(`${govukField.name}`)\n}\n\nexport function govukFieldIsQuestionOptional(\n govukField: GovukField\n): govukField is GovukFieldQuestionOptional {\n if (govukField.name !== 'questionOptional') {\n return false\n }\n const checkedValue = govukField.items?.[0].checked\n return typeof checkedValue === 'boolean'\n}\n\n// A list of allowed template funtions for use within error message templates\nexport const allowedErrorTemplateFunctions = ['lowerFirst', 'capitalise']\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Joi","ComponentType","MAX_NUMBER_OF_REPEAT_ITEMS","MIN_NUMBER_OF_REPEAT_ITEMS","QuestionTypeSubGroup","pageTypeSchema","string","required","valid","description","questionTypeSchema","WrittenAnswerSubGroup","DateSubGroup","UkAddressField","TelephoneNumberField","FileUploadField","EmailAddressField","ListSubGroup","YesNoField","CheckboxesField","RadiosField","AutocompleteField","questionTypeFullSchema","TextField","MultilineTextField","NumberField","DatePartsField","MonthYearField","SelectField","writtenAnswerSubSchema","dateSubSchema","listSubSchema","nameSchema","trim","questionSchema","hintTextSchema","optional","allow","questionOptionalSchema","listForQuestionSchema","listItemCountSchema","number","listItemsDataSchema","exactFilesSchema","empty","integer","min","max","minFilesSchema","maxFilesSchema","fileTypesSchema","array","items","single","default","documentTypesSchema","imageTypesSchema","tabularDataTypesSchema","enhancedActionSchema","radioIdSchema","radioTextSchema","radioHintSchema","radioValueSchema","shortDescriptionSchema","pageHeadingAndGuidanceSchema","pageHeadingSchema","guidanceTextSchema","exitPageSchema","boolean","repeaterSchema","minItemsSchema","maxItemsSchema","questionSetNameSchema","needDeclarationSchema","declarationTextSchema","minSchema","maxSchema","minLengthSchema","maxLengthSchema","maxFutureSchema","maxPastSchema","precisionSchema","prefixSchema","regexSchema","rowsSchema","suffixSchema","classesSchema","jsEnabledSchema","customValidator","extend","joi","type","base","messages","coerce","from","method","value","helpers","rowSeparatorRule","schema","$_getRule","colSeparatorRule","keysRule","rowSeparator","args","rows","split","map","v","filter","Boolean","colSeparator","keys","coercedValue","row","reduce","acc","col","idx","_err","console","error","errors","rules","convert","alias","$_addRule","name","ref","assert","RegExp","message","Array","isArray","every","k","autoCompleteOptionsSchema","dsv","object","text","disallow","parent","unique","ignoreUndefined","questionDetailsFullSchema","formEditorInputPageKeys","pageType","questionType","formEditorInputPageSchema","formEditorInputheckAnswersSettingsKeys","declarationText","formEditorInputCheckAnswersSettingSchema","formEditorInputQuestionKeys","question","shortDescription","hintText","questionOptional","formEditorInputQuestionSchema","formEditorInputPageSettingsKeys","pageHeadingAndGuidance","pageHeading","guidanceText","formEditorInputPageSettingsSchema","govukFieldValueIsString","govukField","includes","govukFieldIsQuestionOptional","checkedValue","checked","allowedErrorTemplateFunctions"],"sources":["../../../../src/form/form-editor/index.ts"],"sourcesContent":["import Joi, { type ArraySchema, type GetRuleOptions } from 'joi'\n\nimport { ComponentType } from '~/src/components/enums.js'\nimport {\n MAX_NUMBER_OF_REPEAT_ITEMS,\n MIN_NUMBER_OF_REPEAT_ITEMS\n} from '~/src/form/form-definition/index.js'\nimport {\n type FormEditorInputCheckAnswersSettings,\n type FormEditorInputPage,\n type FormEditorInputPageSettings,\n type FormEditorInputQuestion,\n type GovukField,\n type GovukFieldQuestionOptional,\n type GovukStringField\n} from '~/src/form/form-editor/types.js'\n\nexport enum QuestionTypeSubGroup {\n WrittenAnswerSubGroup = 'writtenAnswerSub',\n DateSubGroup = 'dateSub',\n ListSubGroup = 'listSub'\n}\n\nexport const pageTypeSchema = Joi.string()\n .required()\n .valid('question', 'guidance')\n .description('Type of page - either a question page or guidance page')\n\nexport const questionTypeSchema = Joi.string()\n .required()\n .valid(\n QuestionTypeSubGroup.WrittenAnswerSubGroup,\n QuestionTypeSubGroup.DateSubGroup,\n ComponentType.UkAddressField,\n ComponentType.TelephoneNumberField,\n ComponentType.FileUploadField,\n ComponentType.EmailAddressField,\n QuestionTypeSubGroup.ListSubGroup,\n ComponentType.YesNoField,\n ComponentType.CheckboxesField,\n ComponentType.RadiosField,\n ComponentType.AutocompleteField\n )\n .description('The high-level type of question, including grouped types')\n\nexport const questionTypeFullSchema = Joi.string()\n .required()\n .valid(\n ComponentType.TextField,\n ComponentType.MultilineTextField,\n ComponentType.NumberField,\n ComponentType.DatePartsField,\n ComponentType.MonthYearField,\n ComponentType.UkAddressField,\n ComponentType.TelephoneNumberField,\n ComponentType.FileUploadField,\n ComponentType.EmailAddressField,\n ComponentType.YesNoField,\n ComponentType.CheckboxesField,\n ComponentType.RadiosField,\n ComponentType.AutocompleteField,\n ComponentType.SelectField\n )\n .description('The specific component type to use for this question')\n\nexport const writtenAnswerSubSchema = Joi.string()\n .required()\n .valid(\n ComponentType.TextField,\n ComponentType.MultilineTextField,\n ComponentType.NumberField\n )\n .description('Subtype for written answer questions')\n\nexport const dateSubSchema = Joi.string()\n .required()\n .valid(ComponentType.DatePartsField, ComponentType.MonthYearField)\nexport const listSubSchema = Joi.string()\n .required()\n .valid(\n ComponentType.YesNoField,\n ComponentType.CheckboxesField,\n ComponentType.RadiosField,\n ComponentType.AutocompleteField,\n ComponentType.SelectField\n )\n .description('Subtype for date-related questions')\n\nexport const nameSchema = Joi.string()\n .trim()\n .required()\n .description('Unique identifier for the field')\n\nexport const questionSchema = Joi.string()\n .trim()\n .required()\n .description('The question text displayed to the user')\n\nexport const hintTextSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Optional guidance text displayed below the question')\n\nexport const questionOptionalSchema = Joi.string()\n .trim()\n .optional()\n .valid('', 'true')\n .description(\n 'Indicates whether a question is optional. Empty string or \"true\" values are accepted.'\n )\n\nexport const listForQuestionSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Unique identifier for the list used by the field')\n\nexport const listItemCountSchema = Joi.number()\n .optional()\n .description('Number of list items in the list used by the field')\n\nexport const listItemsDataSchema = Joi.string()\n .allow('')\n .description('List items in JSON format, such as for radios or checkboxes.')\n\nexport const exactFilesSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .max(25)\n .description(\n 'Specifies the exact number of files required for upload. Must be between 1 and 25.'\n )\n\nexport const minFilesSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .max(25)\n .description(\n 'Minimum number of files required for upload. Must be between 1 and 25.'\n )\n\nexport const maxFilesSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .max(25)\n .description(\n 'Maximum number of files allowed for upload. Must be between 1 and 25.'\n )\n\nexport const fileTypesSchema = Joi.array()\n .items(Joi.string())\n .single()\n .empty(null)\n .default([])\n .description(\n 'Array of allowed file types. Can be provided as a single value or an array.'\n )\n\nexport const documentTypesSchema = Joi.array()\n .items(Joi.string())\n .single()\n .empty(null)\n .default([])\n .description(\n 'Array of allowed document types. Can be provided as a single value or an array.'\n )\n\nexport const imageTypesSchema = Joi.array()\n .items(Joi.string())\n .single()\n .empty(null)\n .default([])\n .description(\n 'Array of allowed image types. Can be provided as a single value or an array.'\n )\n\nexport const tabularDataTypesSchema = Joi.array()\n .items(Joi.string())\n .single()\n .empty(null)\n .default([])\n\nexport const enhancedActionSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Action field that can include enhanced functionality')\n\nexport const radioIdSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Unique identifier for radio options')\n\nexport const radioTextSchema = Joi.string()\n .trim()\n .required()\n .description('The visible text shown next to radio options')\n\nexport const radioHintSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description(\n 'Optional hint text displayed with radio buttons to provide additional guidance'\n )\n\nexport const radioValueSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description(\n 'Array of allowed tabular data types. Can be provided as a single value or an array.'\n )\n\nexport const shortDescriptionSchema = Joi.string()\n .trim()\n .required()\n .description('Brief description of the question for internal use')\n\nexport const pageHeadingAndGuidanceSchema = Joi.string()\n .trim()\n .optional()\n .description('Combined heading and guidance for the page')\n\nexport const pageHeadingSchema = Joi.string()\n .trim()\n .required()\n .description('Main heading displayed at the top of the page')\n\nexport const guidanceTextSchema = Joi.string()\n .trim()\n .description('Guidance text to assist users in completing the page')\n\nexport const exitPageSchema = Joi.boolean()\n .default(false)\n .optional()\n .description('Determines if page is set as an Exit Page')\n\nexport const repeaterSchema = Joi.string()\n .trim()\n .optional()\n .description(\n 'Combined min/max items and question set name for the repeater page'\n )\n\nexport const minItemsSchema = Joi.number()\n .empty('')\n .min(MIN_NUMBER_OF_REPEAT_ITEMS)\n .description('The minimum number of repeater items')\n\nexport const maxItemsSchema = Joi.number()\n .empty('')\n .max(MAX_NUMBER_OF_REPEAT_ITEMS)\n .description('The maximum number of repeater items')\n\nexport const questionSetNameSchema = Joi.string()\n .trim()\n .description('The repeater question set name')\n\nexport const needDeclarationSchema = Joi.string()\n .trim()\n .required()\n .description('Whether a declaration is needed')\n\nexport const declarationTextSchema = Joi.string()\n .trim()\n .required()\n .description('Text of the declaration that users must agree to')\n\nexport const minSchema = Joi.number()\n .empty('')\n .integer()\n .description('Minimum value for numeric inputs')\n\nexport const maxSchema = Joi.number()\n .empty('')\n .integer()\n .description('Maximum value for numeric inputs')\n\nexport const minLengthSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .description('Minimum character length for text inputs')\n\nexport const maxLengthSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .description('Maximum character length for text inputs')\n\nexport const maxFutureSchema = Joi.number()\n .empty('')\n .integer()\n .min(0)\n .description('Maximum days in the future allowed for date inputs')\n\nexport const maxPastSchema = Joi.number()\n .empty('')\n .integer()\n .min(0)\n .description('Maximum days in the past allowed for date inputs')\n\nexport const precisionSchema = Joi.number()\n .empty('')\n .integer()\n .min(0)\n .description('Decimal precision for numeric inputs')\n\nexport const prefixSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Text to display before the input (e.g., £)')\n\nexport const regexSchema = Joi.string()\n .optional()\n .allow('')\n .description('Regular expression pattern for validation')\n\nexport const rowsSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .description('Number of rows for multiline text fields')\n\nexport const suffixSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Text to display after the input (e.g., kg)')\n\nexport const classesSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Custom CSS classes to apply to the component')\n\nexport const jsEnabledSchema = Joi.string()\n .trim()\n .optional()\n .allow('false', 'true')\n .description('Flag to show if Javascript is enabled or not')\n\ntype GenericRuleOptions<K extends string, T> = Omit<GetRuleOptions, 'args'> & {\n args: Record<K, T>\n}\n\ninterface DSLSchema<TSchema = Record<string, unknown>[]>\n extends ArraySchema<TSchema> {\n rowSeparator: (rowSep: string | RegExp) => DSLSchema<TSchema>\n row: (rowSep: string | RegExp) => DSLSchema<TSchema>\n colSeparator: (colSep: string | RegExp) => DSLSchema<TSchema>\n col: (colSep: string | RegExp) => DSLSchema<TSchema>\n keys: (keys: string[]) => DSLSchema<TSchema>\n}\n\ninterface CustomValidator extends Joi.Root {\n dsv<TSchema>(): DSLSchema<TSchema>\n}\n\nexport const customValidator = Joi.extend((joi: Joi.Root) => {\n return {\n type: 'dsv',\n base: joi.array(),\n messages: {\n 'dsv.invalid': 'Invalid parse string'\n },\n coerce: {\n from: 'string',\n method(value: string, helpers) {\n try {\n // Only called when prefs.convert is true\n // Rules\n const rowSeparatorRule = helpers.schema.$_getRule('rowSeparator') as\n | undefined\n | GenericRuleOptions<'rowSeparator', string | RegExp>\n const colSeparatorRule = helpers.schema.$_getRule('colSeparator') as\n | undefined\n | GenericRuleOptions<'colSeparator', string | RegExp>\n const keysRule = helpers.schema.$_getRule('keys') as\n | undefined\n | GenericRuleOptions<'keys', string[]>\n\n // Rows\n const rowSeparator = rowSeparatorRule?.args.rowSeparator ?? /\\r?\\n/\n const rows = value\n .split(rowSeparator)\n .map((v) => v.trim())\n .filter(Boolean)\n\n // Columns\n const colSeparator = colSeparatorRule?.args.colSeparator ?? ','\n const keys = keysRule?.args.keys ?? ['key', 'value']\n\n const coercedValue = rows.map((row) => {\n return row\n .split(colSeparator)\n .reduce<Record<string, string>>((acc, col, idx) => {\n return {\n ...acc,\n [keys[idx]]: col.trim()\n }\n }, {})\n })\n return { value: coercedValue }\n } catch (_err) {\n // eslint-disable-next-line no-console\n console.error(_err)\n return { value, errors: [helpers.error('dsv.invalid')] }\n }\n }\n },\n rules: {\n rowSeparator: {\n convert: true,\n alias: 'row',\n method(rowSeparator: string) {\n return this.$_addRule({\n name: 'rowSeparator',\n args: { rowSeparator }\n })\n },\n args: [\n {\n name: 'rowSeparator',\n ref: true,\n assert: (value) =>\n typeof value === 'string' || value instanceof RegExp,\n message: 'must be a string or regex'\n }\n ]\n },\n colSeparator: {\n convert: true,\n alias: 'col',\n method(colSeparator: string) {\n return this.$_addRule({\n name: 'colSeparator',\n args: { colSeparator }\n })\n },\n args: [\n {\n name: 'colSeparator',\n ref: true,\n assert: (value) =>\n typeof value === 'string' || value instanceof RegExp,\n message: 'must be a string or regex'\n }\n ]\n },\n keys: {\n convert: true,\n method(keys: string[]) {\n return this.$_addRule({ name: 'keys', args: { keys } })\n },\n args: [\n {\n name: 'keys',\n ref: true,\n assert: (value) =>\n Array.isArray(value) && value.every((k) => typeof k === 'string'),\n message: 'must be an array of strings'\n }\n ]\n }\n }\n }\n}) as CustomValidator\n\nexport const autoCompleteOptionsSchema = customValidator\n .dsv<{ text: string; value: string }[]>()\n .row(/\\r?\\n/)\n .col(':')\n .keys(['text', 'value'])\n .items(\n customValidator.object({\n text: customValidator.string().min(1).disallow('').required(),\n value: customValidator\n .string()\n .default((parent: { text: string; value?: string }) => parent.text)\n .min(1)\n .disallow('')\n })\n )\n .min(1)\n .unique('text')\n .unique('value', { ignoreUndefined: true })\n .required()\n\nexport const questionDetailsFullSchema = {\n autoCompleteOptionsSchema,\n classesSchema,\n documentTypesSchema,\n enhancedActionSchema,\n exactFilesSchema,\n fileTypesSchema,\n hintTextSchema,\n imageTypesSchema,\n jsEnabledSchema,\n listForQuestionSchema,\n listItemCountSchema,\n listItemsDataSchema,\n maxFilesSchema,\n maxFutureSchema,\n maxLengthSchema,\n maxPastSchema,\n maxSchema,\n minFilesSchema,\n minLengthSchema,\n minSchema,\n nameSchema,\n precisionSchema,\n prefixSchema,\n questionOptionalSchema,\n questionSchema,\n questionTypeFullSchema,\n radioHintSchema,\n radioIdSchema,\n radioTextSchema,\n radioValueSchema,\n regexSchema,\n rowsSchema,\n shortDescriptionSchema,\n suffixSchema,\n tabularDataTypesSchema\n}\n\nexport const formEditorInputPageKeys = {\n pageType: pageTypeSchema,\n questionType: questionTypeSchema\n}\n\n/**\n * Joi schema for `FormEditorInputPage` interface\n * @see {@link FormEditorInputPage}\n */\nexport const formEditorInputPageSchema = Joi.object<FormEditorInputPage>()\n .keys(formEditorInputPageKeys)\n .required()\n .description('Input schema for creating a new page in the form editor')\n\nexport const formEditorInputheckAnswersSettingsKeys = {\n declarationText: shortDescriptionSchema\n}\n\n/**\n * Joi schema for `FormEditorInputCheckAnswersSettings` interface\n * @see {@link FormEditorInputCheckAnswersSettings}\n */\nexport const formEditorInputCheckAnswersSettingSchema =\n Joi.object<FormEditorInputCheckAnswersSettings>()\n .keys(formEditorInputheckAnswersSettingsKeys)\n .required()\n .description('Configuration for the check-answers page')\n\nexport const formEditorInputQuestionKeys = {\n question: questionSchema,\n shortDescription: shortDescriptionSchema,\n hintText: hintTextSchema,\n questionOptional: questionOptionalSchema\n}\n\n/**\n * Joi schema for `FormEditorInputQuestion` interface\n * @see {@link FormEditorInputQuestion}\n */\nexport const formEditorInputQuestionSchema =\n Joi.object<FormEditorInputQuestion>()\n .keys(formEditorInputQuestionKeys)\n .required()\n .description(\n 'Input schema for creating or updating a question in the form editor'\n )\n\nexport const formEditorInputPageSettingsKeys = {\n pageHeadingAndGuidance: pageHeadingAndGuidanceSchema,\n pageHeading: pageHeadingSchema,\n guidanceText: guidanceTextSchema\n}\n\n/**\n * Joi schema for `FormEditorInputPageSettings` interface\n * @see {@link FormEditorInputPageSettings}\n */\nexport const formEditorInputPageSettingsSchema =\n Joi.object<FormEditorInputPageSettings>()\n .keys(formEditorInputPageSettingsKeys)\n .required()\n .description('Settings for page content and display in the form editor')\n\nexport function govukFieldValueIsString(\n govukField: GovukField\n): govukField is GovukStringField {\n return [\n 'question',\n 'hintText',\n 'shortDescription',\n 'autoCompleteOptions'\n ].includes(`${govukField.name}`)\n}\n\nexport function govukFieldIsQuestionOptional(\n govukField: GovukField\n): govukField is GovukFieldQuestionOptional {\n if (govukField.name !== 'questionOptional') {\n return false\n }\n const checkedValue = govukField.items?.[0].checked\n return typeof checkedValue === 'boolean'\n}\n\n// A list of allowed template funtions for use within error message templates\nexport const allowedErrorTemplateFunctions = ['lowerFirst', 'capitalise']\n"],"mappings":"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","ignoreList":[]}
@@ -2,6 +2,8 @@ import JoiBase from 'joi';
2
2
  import { type ComponentDef, type ContentComponentsDef, type FileUploadFieldComponent } from '../../components/types.js';
3
3
  import { type ConditionDataV2 } from '../../conditions/types.js';
4
4
  import { type ConditionWrapperV2, type FormDefinition, type List, type Page, type Repeat } from '../../form/form-definition/types.js';
5
+ export declare const MIN_NUMBER_OF_REPEAT_ITEMS = 1;
6
+ export declare const MAX_NUMBER_OF_REPEAT_ITEMS = 200;
5
7
  export declare const conditionDataSchemaV2: JoiBase.ObjectSchema<ConditionDataV2>;
6
8
  export declare const conditionWrapperSchemaV2: JoiBase.ObjectSchema<ConditionWrapperV2>;
7
9
  export declare const componentSchema: JoiBase.ObjectSchema<ComponentDef>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/index.ts"],"names":[],"mappings":"AACA,OAAO,OAAkC,MAAM,KAAK,CAAA;AAIpD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC9B,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAEL,KAAK,eAAe,EAWrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAGL,KAAK,kBAAkB,EAIvB,KAAK,cAAc,EAGnB,KAAK,IAAI,EACT,KAAK,IAAI,EAET,KAAK,MAAM,EAIZ,MAAM,qCAAqC,CAAA;AA4N5C,eAAO,MAAM,qBAAqB,uCAoD9B,CAAA;AAoDJ,eAAO,MAAM,wBAAwB,0CAyBU,CAAA;AAE/C,eAAO,MAAM,eAAe,oCAmGZ,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;AAoDF,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;AAsD1C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,sCA4E7B,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,OAAkC,MAAM,KAAK,CAAA;AAIpD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC9B,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAEL,KAAK,eAAe,EAWrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAGL,KAAK,kBAAkB,EAIvB,KAAK,cAAc,EAGnB,KAAK,IAAI,EACT,KAAK,IAAI,EAET,KAAK,MAAM,EAIZ,MAAM,qCAAqC,CAAA;AA4N5C,eAAO,MAAM,0BAA0B,IAAI,CAAA;AAC3C,eAAO,MAAM,0BAA0B,MAAM,CAAA;AAE7C,eAAO,MAAM,qBAAqB,uCAoD9B,CAAA;AAoDJ,eAAO,MAAM,wBAAwB,0CAyBU,CAAA;AAE/C,eAAO,MAAM,eAAe,oCAmGZ,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;AAsD1C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,sCA4E7B,CAAA;AAEJ,eAAO,MAAM,sBAAsB,sCA2CY,CAAA;AAI/C,eAAO,MAAM,MAAM,sCAAuB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-editor/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-editor/index.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.555",
3
+ "version": "3.0.556",
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",
@@ -293,11 +293,20 @@
293
293
  "min": {
294
294
  "type": "number",
295
295
  "description": "Minimum number of repetitions required",
296
+ "minimum": 1,
296
297
  "title": "Min"
297
298
  },
298
299
  "max": {
299
300
  "type": "number",
300
301
  "description": "Maximum number of repetitions allowed",
302
+ "minimum": {
303
+ "ref": {
304
+ "path": [
305
+ "min"
306
+ ]
307
+ }
308
+ },
309
+ "maximum": 200,
301
310
  "title": "Max"
302
311
  }
303
312
  },
@@ -235,11 +235,20 @@
235
235
  "min": {
236
236
  "type": "number",
237
237
  "description": "Minimum number of repetitions required",
238
+ "minimum": 1,
238
239
  "title": "Min"
239
240
  },
240
241
  "max": {
241
242
  "type": "number",
242
243
  "description": "Maximum number of repetitions allowed",
244
+ "minimum": {
245
+ "ref": {
246
+ "path": [
247
+ "min"
248
+ ]
249
+ }
250
+ },
251
+ "maximum": 200,
243
252
  "title": "Max"
244
253
  }
245
254
  },
@@ -61,11 +61,20 @@
61
61
  "min": {
62
62
  "type": "number",
63
63
  "description": "Minimum number of repetitions required",
64
+ "minimum": 1,
64
65
  "title": "Min"
65
66
  },
66
67
  "max": {
67
68
  "type": "number",
68
69
  "description": "Maximum number of repetitions allowed",
70
+ "minimum": {
71
+ "ref": {
72
+ "path": [
73
+ "min"
74
+ ]
75
+ }
76
+ },
77
+ "maximum": 200,
69
78
  "title": "Max"
70
79
  }
71
80
  },
@@ -238,11 +238,20 @@
238
238
  "min": {
239
239
  "type": "number",
240
240
  "description": "Minimum number of repetitions required",
241
+ "minimum": 1,
241
242
  "title": "Min"
242
243
  },
243
244
  "max": {
244
245
  "type": "number",
245
246
  "description": "Maximum number of repetitions allowed",
247
+ "minimum": {
248
+ "ref": {
249
+ "path": [
250
+ "min"
251
+ ]
252
+ }
253
+ },
254
+ "maximum": 200,
246
255
  "title": "Max"
247
256
  }
248
257
  },
@@ -260,6 +260,9 @@ const conditionSchema = Joi.object<ConditionData>()
260
260
  )
261
261
  })
262
262
 
263
+ export const MIN_NUMBER_OF_REPEAT_ITEMS = 1
264
+ export const MAX_NUMBER_OF_REPEAT_ITEMS = 200
265
+
263
266
  export const conditionDataSchemaV2 = Joi.object<ConditionDataV2>()
264
267
  .description('Condition definition')
265
268
  .keys({
@@ -581,10 +584,13 @@ const repeatSchema = Joi.object<RepeatSchema>()
581
584
  .keys({
582
585
  min: Joi.number()
583
586
  .empty('')
587
+ .min(MIN_NUMBER_OF_REPEAT_ITEMS)
584
588
  .required()
585
589
  .description('Minimum number of repetitions required'),
586
590
  max: Joi.number()
587
591
  .empty('')
592
+ .min(Joi.ref('min'))
593
+ .max(MAX_NUMBER_OF_REPEAT_ITEMS)
588
594
  .required()
589
595
  .description('Maximum number of repetitions allowed')
590
596
  })
@@ -1,6 +1,10 @@
1
1
  import Joi, { type ArraySchema, type GetRuleOptions } from 'joi'
2
2
 
3
3
  import { ComponentType } from '~/src/components/enums.js'
4
+ import {
5
+ MAX_NUMBER_OF_REPEAT_ITEMS,
6
+ MIN_NUMBER_OF_REPEAT_ITEMS
7
+ } from '~/src/form/form-definition/index.js'
4
8
  import {
5
9
  type FormEditorInputCheckAnswersSettings,
6
10
  type FormEditorInputPage,
@@ -246,12 +250,12 @@ export const repeaterSchema = Joi.string()
246
250
 
247
251
  export const minItemsSchema = Joi.number()
248
252
  .empty('')
249
- .min(1)
253
+ .min(MIN_NUMBER_OF_REPEAT_ITEMS)
250
254
  .description('The minimum number of repeater items')
251
255
 
252
256
  export const maxItemsSchema = Joi.number()
253
257
  .empty('')
254
- .max(25)
258
+ .max(MAX_NUMBER_OF_REPEAT_ITEMS)
255
259
  .description('The maximum number of repeater items')
256
260
 
257
261
  export const questionSetNameSchema = Joi.string()