@defra/forms-model 3.0.405 → 3.0.407

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.
@@ -126,6 +126,13 @@ export const pageSchema = Joi.object().keys({
126
126
  events: eventsSchema.optional(),
127
127
  view: Joi.string().optional()
128
128
  });
129
+
130
+ /**
131
+ * V2 engine schema - used with new editor
132
+ */
133
+ export const pageSchemaV2 = pageSchema.append({
134
+ title: Joi.string().allow('').required()
135
+ });
129
136
  const baseListItemSchema = Joi.object().keys({
130
137
  text: Joi.string().allow(''),
131
138
  description: Joi.string().allow('').optional(),
@@ -179,7 +186,11 @@ export const formDefinitionSchema = Joi.object().required().keys({
179
186
  name: Joi.string().allow('').optional(),
180
187
  feedback: feedbackSchema.optional(),
181
188
  startPage: Joi.string().optional(),
182
- pages: Joi.array().required().items(pageSchema).unique('path').unique('id', {
189
+ pages: Joi.array().required().when('engine', {
190
+ is: 'V2',
191
+ then: Joi.array().items(pageSchemaV2),
192
+ otherwise: Joi.array().items(pageSchema)
193
+ }).unique('path').unique('id', {
183
194
  ignoreUndefined: true
184
195
  }),
185
196
  sections: Joi.array().items(sectionsSchema).unique('name').unique('title').required(),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Joi","ComponentType","sectionsSchema","object","keys","name","string","required","title","hideTitle","boolean","optional","default","conditionFieldSchema","type","display","conditionValueSchema","value","relativeDateValueSchema","period","unit","direction","conditionRefSchema","conditionName","conditionDisplayName","coordinator","conditionSchema","field","operator","alternatives","try","conditionGroupSchema","conditions","array","items","link","id","conditionsModelSchema","conditionWrapperSchema","displayName","componentSchema","uuid","shortDescription","when","is","valid","Details","Html","InsetText","then","otherwise","allow","hint","options","rows","number","empty","maxWords","maxDaysInPast","maxDaysInFuture","customValidationMessage","customValidationMessages","unknown","schema","min","max","length","list","nextSchema","path","condition","redirect","repeatOptions","repeatSchema","pageRepeatSchema","eventSchema","method","url","uri","scheme","eventsSchema","onLoad","onSave","pageSchema","disallow","section","controller","components","unique","repeat","any","strip","next","events","view","baseListItemSchema","text","description","conditional","stringListItemSchema","append","numberListItemSchema","listSchema","feedbackSchema","feedbackForm","emailAddress","email","tlds","phaseBannerSchema","phase","outputSchema","audience","version","formDefinitionSchema","engine","feedback","startPage","pages","ignoreUndefined","sections","lists","metadata","a","declaration","skipSummary","phaseBanner","outputEmail","trim","output","Schema"],"sources":["../../../../src/form/form-definition/index.ts"],"sourcesContent":["import Joi, { type LanguageMessages } from 'joi'\n\nimport { ComponentType } from '~/src/components/enums.js'\nimport { type ComponentDef } from '~/src/components/types.js'\nimport {\n type ConditionData,\n type ConditionFieldData,\n type ConditionGroupData,\n type ConditionRefData,\n type ConditionValueData,\n type ConditionsModelData,\n type RelativeDateValueData\n} from '~/src/conditions/types.js'\nimport {\n type ConditionWrapper,\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'\n\nconst sectionsSchema = Joi.object<Section>().keys({\n name: Joi.string().required(),\n title: Joi.string().required(),\n hideTitle: Joi.boolean().optional().default(false)\n})\n\nconst conditionFieldSchema = Joi.object<ConditionFieldData>().keys({\n name: Joi.string().required(),\n type: Joi.string().required(),\n display: Joi.string().required()\n})\n\nconst conditionValueSchema = Joi.object<ConditionValueData>().keys({\n type: Joi.string().required(),\n value: Joi.string().required(),\n display: Joi.string().required()\n})\n\nconst relativeDateValueSchema = Joi.object<RelativeDateValueData>().keys({\n type: Joi.string().required(),\n period: Joi.string().required(),\n unit: Joi.string().required(),\n direction: Joi.string().required()\n})\n\nconst conditionRefSchema = Joi.object<ConditionRefData>().keys({\n conditionName: Joi.string().required(),\n conditionDisplayName: Joi.string().required(),\n coordinator: Joi.string().optional()\n})\n\nconst conditionSchema = Joi.object<ConditionData>().keys({\n field: conditionFieldSchema,\n operator: Joi.string().required(),\n value: Joi.alternatives().try(conditionValueSchema, relativeDateValueSchema),\n coordinator: Joi.string().optional()\n})\n\nconst conditionGroupSchema = Joi.object<ConditionGroupData>()\n .keys({\n conditions: Joi.array().items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n Joi.link('#conditionGroupSchema')\n )\n )\n })\n .id('conditionGroupSchema')\n\nconst conditionsModelSchema = Joi.object<ConditionsModelData>().keys({\n name: Joi.string().required(),\n conditions: Joi.array().items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n conditionGroupSchema\n )\n )\n})\n\nconst conditionWrapperSchema = Joi.object<ConditionWrapper>().keys({\n name: Joi.string().required(),\n displayName: Joi.string(),\n value: conditionsModelSchema.required()\n})\n\nexport const componentSchema = Joi.object<ComponentDef>()\n .keys({\n id: Joi.string().uuid().optional(),\n type: Joi.string<ComponentType>().required(),\n shortDescription: Joi.string().optional(),\n name: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.Details,\n ComponentType.Html,\n ComponentType.InsetText\n ),\n then: Joi.string().optional(),\n otherwise: Joi.string()\n }),\n title: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.Details,\n ComponentType.Html,\n ComponentType.InsetText\n ),\n then: Joi.string().optional(),\n otherwise: Joi.string().allow('')\n }),\n hint: Joi.string().allow('').optional(),\n options: Joi.object({\n rows: Joi.number().empty(''),\n maxWords: Joi.number().empty(''),\n maxDaysInPast: Joi.number().empty(''),\n maxDaysInFuture: Joi.number().empty(''),\n customValidationMessage: Joi.string().allow(''),\n customValidationMessages: Joi.object<LanguageMessages>()\n .unknown(true)\n .optional()\n })\n .default({})\n .unknown(true),\n schema: Joi.object({\n min: Joi.number().empty(''),\n max: Joi.number().empty(''),\n length: Joi.number().empty('')\n })\n .unknown(true)\n .default({}),\n list: Joi.string().optional()\n })\n .unknown(true)\n\nconst nextSchema = Joi.object<Link>().keys({\n path: Joi.string().required(),\n condition: Joi.string().allow('').optional(),\n redirect: Joi.string().optional()\n})\n\nconst repeatOptions = Joi.object<RepeatOptions>().keys({\n name: Joi.string().required(),\n title: Joi.string().required()\n})\n\nconst repeatSchema = Joi.object<RepeatSchema>().keys({\n min: Joi.number().empty('').required(),\n max: Joi.number().empty('').required()\n})\n\nconst pageRepeatSchema = Joi.object<Repeat>().keys({\n options: repeatOptions.required(),\n schema: repeatSchema.required()\n})\n\nconst eventSchema = Joi.object<Event>().keys({\n type: Joi.string().allow('http').required(),\n options: Joi.object<EventOptions>().keys({\n method: Joi.string().allow('POST').required(),\n url: Joi.string()\n .uri({ scheme: ['http', 'https'] })\n .required()\n })\n})\n\nconst eventsSchema = Joi.object<Events>().keys({\n onLoad: eventSchema.optional(),\n onSave: eventSchema.optional()\n})\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>().keys({\n id: Joi.string().uuid().optional(),\n path: Joi.string().required().disallow('/status'),\n title: Joi.string().required(),\n section: Joi.string(),\n controller: Joi.string().optional(),\n components: Joi.array<ComponentDef>().items(componentSchema).unique('name'),\n repeat: Joi.when('controller', {\n is: Joi.string().valid('RepeatPageController').required(),\n then: pageRepeatSchema.required(),\n otherwise: Joi.any().strip()\n }),\n condition: Joi.string().allow('').optional(),\n next: Joi.array<Link>().items(nextSchema).default([]),\n events: eventsSchema.optional(),\n view: Joi.string().optional()\n})\n\nconst baseListItemSchema = Joi.object<Item>().keys({\n text: Joi.string().allow(''),\n description: Joi.string().allow('').optional(),\n conditional: Joi.object<Item['conditional']>()\n .keys({\n components: Joi.array<ComponentDef>()\n .required()\n .items(componentSchema.unknown(true))\n .unique('name')\n })\n .optional(),\n condition: Joi.string().allow('').optional()\n})\n\nconst stringListItemSchema = baseListItemSchema.append({\n value: Joi.string().required()\n})\n\nconst numberListItemSchema = baseListItemSchema.append({\n value: Joi.number().required()\n})\n\nconst listSchema = Joi.object<List>().keys({\n name: Joi.string().required(),\n title: Joi.string().required(),\n type: Joi.string().required().valid('string', 'number'),\n items: Joi.when('type', {\n is: 'string',\n then: Joi.array()\n .items(stringListItemSchema)\n .unique('text')\n .unique('value'),\n otherwise: Joi.array()\n .items(numberListItemSchema)\n .unique('text')\n .unique('value')\n })\n})\n\nconst feedbackSchema = Joi.object<FormDefinition['feedback']>().keys({\n feedbackForm: Joi.boolean().default(false),\n url: Joi.when('feedbackForm', {\n is: Joi.boolean().valid(false),\n then: Joi.string().optional().allow('')\n }),\n emailAddress: Joi.string()\n .email({\n tlds: {\n allow: false\n }\n })\n .optional()\n})\n\nconst phaseBannerSchema = Joi.object<PhaseBanner>().keys({\n phase: Joi.string().valid('alpha', 'beta')\n})\n\nconst outputSchema = Joi.object<FormDefinition['output']>().keys({\n audience: Joi.string().valid('human', 'machine').required(),\n version: Joi.string().required()\n})\n\n/**\n * Joi schema for `FormDefinition` interface\n * @see {@link FormDefinition}\n */\nexport const formDefinitionSchema = Joi.object<FormDefinition>()\n .required()\n .keys({\n engine: Joi.string().allow('V1', 'V2').default('V1'),\n name: Joi.string().allow('').optional(),\n feedback: feedbackSchema.optional(),\n startPage: Joi.string().optional(),\n pages: Joi.array<Page>()\n .required()\n .items(pageSchema)\n .unique('path')\n .unique('id', { ignoreUndefined: true }),\n sections: Joi.array<Section>()\n .items(sectionsSchema)\n .unique('name')\n .unique('title')\n .required(),\n conditions: Joi.array<ConditionWrapper>()\n .items(conditionWrapperSchema)\n .unique('name')\n .unique('displayName'),\n lists: Joi.array<List>().items(listSchema).unique('name').unique('title'),\n metadata: Joi.object({ a: Joi.any() }).unknown().optional(),\n declaration: Joi.string().allow('').optional(),\n skipSummary: Joi.any().strip(),\n phaseBanner: phaseBannerSchema.optional(),\n outputEmail: Joi.string()\n .email({ tlds: { allow: ['uk'] } })\n .trim()\n .optional(),\n output: outputSchema.optional()\n })\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":["Joi","ComponentType","sectionsSchema","object","keys","name","string","required","title","hideTitle","boolean","optional","default","conditionFieldSchema","type","display","conditionValueSchema","value","relativeDateValueSchema","period","unit","direction","conditionRefSchema","conditionName","conditionDisplayName","coordinator","conditionSchema","field","operator","alternatives","try","conditionGroupSchema","conditions","array","items","link","id","conditionsModelSchema","conditionWrapperSchema","displayName","componentSchema","uuid","shortDescription","when","is","valid","Details","Html","InsetText","then","otherwise","allow","hint","options","rows","number","empty","maxWords","maxDaysInPast","maxDaysInFuture","customValidationMessage","customValidationMessages","unknown","schema","min","max","length","list","nextSchema","path","condition","redirect","repeatOptions","repeatSchema","pageRepeatSchema","eventSchema","method","url","uri","scheme","eventsSchema","onLoad","onSave","pageSchema","disallow","section","controller","components","unique","repeat","any","strip","next","events","view","pageSchemaV2","append","baseListItemSchema","text","description","conditional","stringListItemSchema","numberListItemSchema","listSchema","feedbackSchema","feedbackForm","emailAddress","email","tlds","phaseBannerSchema","phase","outputSchema","audience","version","formDefinitionSchema","engine","feedback","startPage","pages","ignoreUndefined","sections","lists","metadata","a","declaration","skipSummary","phaseBanner","outputEmail","trim","output","Schema"],"sources":["../../../../src/form/form-definition/index.ts"],"sourcesContent":["import Joi, { type LanguageMessages } from 'joi'\n\nimport { ComponentType } from '~/src/components/enums.js'\nimport { type ComponentDef } from '~/src/components/types.js'\nimport {\n type ConditionData,\n type ConditionFieldData,\n type ConditionGroupData,\n type ConditionRefData,\n type ConditionValueData,\n type ConditionsModelData,\n type RelativeDateValueData\n} from '~/src/conditions/types.js'\nimport {\n type ConditionWrapper,\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'\n\nconst sectionsSchema = Joi.object<Section>().keys({\n name: Joi.string().required(),\n title: Joi.string().required(),\n hideTitle: Joi.boolean().optional().default(false)\n})\n\nconst conditionFieldSchema = Joi.object<ConditionFieldData>().keys({\n name: Joi.string().required(),\n type: Joi.string().required(),\n display: Joi.string().required()\n})\n\nconst conditionValueSchema = Joi.object<ConditionValueData>().keys({\n type: Joi.string().required(),\n value: Joi.string().required(),\n display: Joi.string().required()\n})\n\nconst relativeDateValueSchema = Joi.object<RelativeDateValueData>().keys({\n type: Joi.string().required(),\n period: Joi.string().required(),\n unit: Joi.string().required(),\n direction: Joi.string().required()\n})\n\nconst conditionRefSchema = Joi.object<ConditionRefData>().keys({\n conditionName: Joi.string().required(),\n conditionDisplayName: Joi.string().required(),\n coordinator: Joi.string().optional()\n})\n\nconst conditionSchema = Joi.object<ConditionData>().keys({\n field: conditionFieldSchema,\n operator: Joi.string().required(),\n value: Joi.alternatives().try(conditionValueSchema, relativeDateValueSchema),\n coordinator: Joi.string().optional()\n})\n\nconst conditionGroupSchema = Joi.object<ConditionGroupData>()\n .keys({\n conditions: Joi.array().items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n Joi.link('#conditionGroupSchema')\n )\n )\n })\n .id('conditionGroupSchema')\n\nconst conditionsModelSchema = Joi.object<ConditionsModelData>().keys({\n name: Joi.string().required(),\n conditions: Joi.array().items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n conditionGroupSchema\n )\n )\n})\n\nconst conditionWrapperSchema = Joi.object<ConditionWrapper>().keys({\n name: Joi.string().required(),\n displayName: Joi.string(),\n value: conditionsModelSchema.required()\n})\n\nexport const componentSchema = Joi.object<ComponentDef>()\n .keys({\n id: Joi.string().uuid().optional(),\n type: Joi.string<ComponentType>().required(),\n shortDescription: Joi.string().optional(),\n name: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.Details,\n ComponentType.Html,\n ComponentType.InsetText\n ),\n then: Joi.string().optional(),\n otherwise: Joi.string()\n }),\n title: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.Details,\n ComponentType.Html,\n ComponentType.InsetText\n ),\n then: Joi.string().optional(),\n otherwise: Joi.string().allow('')\n }),\n hint: Joi.string().allow('').optional(),\n options: Joi.object({\n rows: Joi.number().empty(''),\n maxWords: Joi.number().empty(''),\n maxDaysInPast: Joi.number().empty(''),\n maxDaysInFuture: Joi.number().empty(''),\n customValidationMessage: Joi.string().allow(''),\n customValidationMessages: Joi.object<LanguageMessages>()\n .unknown(true)\n .optional()\n })\n .default({})\n .unknown(true),\n schema: Joi.object({\n min: Joi.number().empty(''),\n max: Joi.number().empty(''),\n length: Joi.number().empty('')\n })\n .unknown(true)\n .default({}),\n list: Joi.string().optional()\n })\n .unknown(true)\n\nconst nextSchema = Joi.object<Link>().keys({\n path: Joi.string().required(),\n condition: Joi.string().allow('').optional(),\n redirect: Joi.string().optional()\n})\n\nconst repeatOptions = Joi.object<RepeatOptions>().keys({\n name: Joi.string().required(),\n title: Joi.string().required()\n})\n\nconst repeatSchema = Joi.object<RepeatSchema>().keys({\n min: Joi.number().empty('').required(),\n max: Joi.number().empty('').required()\n})\n\nconst pageRepeatSchema = Joi.object<Repeat>().keys({\n options: repeatOptions.required(),\n schema: repeatSchema.required()\n})\n\nconst eventSchema = Joi.object<Event>().keys({\n type: Joi.string().allow('http').required(),\n options: Joi.object<EventOptions>().keys({\n method: Joi.string().allow('POST').required(),\n url: Joi.string()\n .uri({ scheme: ['http', 'https'] })\n .required()\n })\n})\n\nconst eventsSchema = Joi.object<Events>().keys({\n onLoad: eventSchema.optional(),\n onSave: eventSchema.optional()\n})\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>().keys({\n id: Joi.string().uuid().optional(),\n path: Joi.string().required().disallow('/status'),\n title: Joi.string().required(),\n section: Joi.string(),\n controller: Joi.string().optional(),\n components: Joi.array<ComponentDef>().items(componentSchema).unique('name'),\n repeat: Joi.when('controller', {\n is: Joi.string().valid('RepeatPageController').required(),\n then: pageRepeatSchema.required(),\n otherwise: Joi.any().strip()\n }),\n condition: Joi.string().allow('').optional(),\n next: Joi.array<Link>().items(nextSchema).default([]),\n events: eventsSchema.optional(),\n view: Joi.string().optional()\n})\n\n/**\n * V2 engine schema - used with new editor\n */\nexport const pageSchemaV2 = pageSchema.append({\n title: Joi.string().allow('').required()\n})\n\nconst baseListItemSchema = Joi.object<Item>().keys({\n text: Joi.string().allow(''),\n description: Joi.string().allow('').optional(),\n conditional: Joi.object<Item['conditional']>()\n .keys({\n components: Joi.array<ComponentDef>()\n .required()\n .items(componentSchema.unknown(true))\n .unique('name')\n })\n .optional(),\n condition: Joi.string().allow('').optional()\n})\n\nconst stringListItemSchema = baseListItemSchema.append({\n value: Joi.string().required()\n})\n\nconst numberListItemSchema = baseListItemSchema.append({\n value: Joi.number().required()\n})\n\nconst listSchema = Joi.object<List>().keys({\n name: Joi.string().required(),\n title: Joi.string().required(),\n type: Joi.string().required().valid('string', 'number'),\n items: Joi.when('type', {\n is: 'string',\n then: Joi.array()\n .items(stringListItemSchema)\n .unique('text')\n .unique('value'),\n otherwise: Joi.array()\n .items(numberListItemSchema)\n .unique('text')\n .unique('value')\n })\n})\n\nconst feedbackSchema = Joi.object<FormDefinition['feedback']>().keys({\n feedbackForm: Joi.boolean().default(false),\n url: Joi.when('feedbackForm', {\n is: Joi.boolean().valid(false),\n then: Joi.string().optional().allow('')\n }),\n emailAddress: Joi.string()\n .email({\n tlds: {\n allow: false\n }\n })\n .optional()\n})\n\nconst phaseBannerSchema = Joi.object<PhaseBanner>().keys({\n phase: Joi.string().valid('alpha', 'beta')\n})\n\nconst outputSchema = Joi.object<FormDefinition['output']>().keys({\n audience: Joi.string().valid('human', 'machine').required(),\n version: Joi.string().required()\n})\n\n/**\n * Joi schema for `FormDefinition` interface\n * @see {@link FormDefinition}\n */\nexport const formDefinitionSchema = Joi.object<FormDefinition>()\n .required()\n .keys({\n engine: Joi.string().allow('V1', 'V2').default('V1'),\n name: Joi.string().allow('').optional(),\n feedback: feedbackSchema.optional(),\n startPage: Joi.string().optional(),\n pages: Joi.array<Page>()\n .required()\n .when('engine', {\n is: 'V2',\n then: Joi.array<Page>().items(pageSchemaV2),\n otherwise: Joi.array<Page>().items(pageSchema)\n })\n .unique('path')\n .unique('id', { ignoreUndefined: true }),\n sections: Joi.array<Section>()\n .items(sectionsSchema)\n .unique('name')\n .unique('title')\n .required(),\n conditions: Joi.array<ConditionWrapper>()\n .items(conditionWrapperSchema)\n .unique('name')\n .unique('displayName'),\n lists: Joi.array<List>().items(listSchema).unique('name').unique('title'),\n metadata: Joi.object({ a: Joi.any() }).unknown().optional(),\n declaration: Joi.string().allow('').optional(),\n skipSummary: Joi.any().strip(),\n phaseBanner: phaseBannerSchema.optional(),\n outputEmail: Joi.string()\n .email({ tlds: { allow: ['uk'] } })\n .trim()\n .optional(),\n output: outputSchema.optional()\n })\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":[]}
@@ -2,6 +2,7 @@ import Joi from 'joi';
2
2
  import { ComponentType } from "../../components/enums.js";
3
3
  export const pageTypeSchema = Joi.string().required().valid('question', 'guidance');
4
4
  export const questionTypeSchema = Joi.string().required().valid('written-answer-group', 'date-group', ComponentType.UkAddressField, ComponentType.TelephoneNumberField, ComponentType.FileUploadField, ComponentType.EmailAddressField, ComponentType.SelectField);
5
+ export const questionTypeFullSchema = Joi.string().required().valid(ComponentType.TextField, ComponentType.MultilineTextField, ComponentType.NumberField, ComponentType.DatePartsField, ComponentType.MonthYearField, ComponentType.UkAddressField, ComponentType.TelephoneNumberField, ComponentType.FileUploadField, ComponentType.EmailAddressField, ComponentType.SelectField);
5
6
  export const writtenAnswerSubSchema = Joi.string().required().valid(ComponentType.TextField, ComponentType.MultilineTextField, ComponentType.NumberField);
6
7
  export const dateSubSchema = Joi.string().required().valid(ComponentType.DatePartsField, ComponentType.MonthYearField);
7
8
  export const questionSchema = Joi.string().required();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Joi","ComponentType","pageTypeSchema","string","required","valid","questionTypeSchema","UkAddressField","TelephoneNumberField","FileUploadField","EmailAddressField","SelectField","writtenAnswerSubSchema","TextField","MultilineTextField","NumberField","dateSubSchema","DatePartsField","MonthYearField","questionSchema","hintTextSchema","optional","allow","questionOptionalSchema","shortDescriptionSchema","pageHeadingAndGuidanceSchema","pageHeadingSchema","guidanceTextSchema","formEditorInputPageKeys","pageType","questionType","formEditorInputPageSchema","object","keys","formEditorInputQuestionKeys","question","shortDescription","hintText","questionOptional","formEditorInputQuestionSchema","formEditorInputPageSettingsKeys","pageHeadingAndGuidance","pageHeading","guidanceText","formEditorInputPageSettingsSchema"],"sources":["../../../../src/form/form-editor/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport { ComponentType } from '~/src/components/enums.js'\nimport {\n type FormEditorInputPage,\n type FormEditorInputPageSettings,\n type FormEditorInputQuestion\n} from '~/src/form/form-editor/types.js'\n\nexport const pageTypeSchema = Joi.string()\n .required()\n .valid('question', 'guidance')\nexport const questionTypeSchema = Joi.string()\n .required()\n .valid(\n 'written-answer-group',\n 'date-group',\n ComponentType.UkAddressField,\n ComponentType.TelephoneNumberField,\n ComponentType.FileUploadField,\n ComponentType.EmailAddressField,\n ComponentType.SelectField\n )\n\nexport const writtenAnswerSubSchema = Joi.string()\n .required()\n .valid(\n ComponentType.TextField,\n ComponentType.MultilineTextField,\n ComponentType.NumberField\n )\nexport const dateSubSchema = Joi.string()\n .required()\n .valid(ComponentType.DatePartsField, ComponentType.MonthYearField)\n\nexport const questionSchema = Joi.string().required()\nexport const hintTextSchema = Joi.string().optional().allow('')\nexport const questionOptionalSchema = Joi.string().optional().valid('', 'true')\nexport const shortDescriptionSchema = Joi.string().required()\nexport const pageHeadingAndGuidanceSchema = Joi.string().optional()\nexport const pageHeadingSchema = Joi.string().required()\nexport const guidanceTextSchema = Joi.string().optional().allow('')\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\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\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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Joi","ComponentType","pageTypeSchema","string","required","valid","questionTypeSchema","UkAddressField","TelephoneNumberField","FileUploadField","EmailAddressField","SelectField","questionTypeFullSchema","TextField","MultilineTextField","NumberField","DatePartsField","MonthYearField","writtenAnswerSubSchema","dateSubSchema","questionSchema","hintTextSchema","optional","allow","questionOptionalSchema","shortDescriptionSchema","pageHeadingAndGuidanceSchema","pageHeadingSchema","guidanceTextSchema","formEditorInputPageKeys","pageType","questionType","formEditorInputPageSchema","object","keys","formEditorInputQuestionKeys","question","shortDescription","hintText","questionOptional","formEditorInputQuestionSchema","formEditorInputPageSettingsKeys","pageHeadingAndGuidance","pageHeading","guidanceText","formEditorInputPageSettingsSchema"],"sources":["../../../../src/form/form-editor/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport { ComponentType } from '~/src/components/enums.js'\nimport {\n type FormEditorInputPage,\n type FormEditorInputPageSettings,\n type FormEditorInputQuestion\n} from '~/src/form/form-editor/types.js'\n\nexport const pageTypeSchema = Joi.string()\n .required()\n .valid('question', 'guidance')\nexport const questionTypeSchema = Joi.string()\n .required()\n .valid(\n 'written-answer-group',\n 'date-group',\n ComponentType.UkAddressField,\n ComponentType.TelephoneNumberField,\n ComponentType.FileUploadField,\n ComponentType.EmailAddressField,\n ComponentType.SelectField\n )\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.SelectField\n )\n\nexport const writtenAnswerSubSchema = Joi.string()\n .required()\n .valid(\n ComponentType.TextField,\n ComponentType.MultilineTextField,\n ComponentType.NumberField\n )\nexport const dateSubSchema = Joi.string()\n .required()\n .valid(ComponentType.DatePartsField, ComponentType.MonthYearField)\n\nexport const questionSchema = Joi.string().required()\nexport const hintTextSchema = Joi.string().optional().allow('')\nexport const questionOptionalSchema = Joi.string().optional().valid('', 'true')\nexport const shortDescriptionSchema = Joi.string().required()\nexport const pageHeadingAndGuidanceSchema = Joi.string().optional()\nexport const pageHeadingSchema = Joi.string().required()\nexport const guidanceTextSchema = Joi.string().optional().allow('')\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\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\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"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../src/form/form-editor/types.ts"],"sourcesContent":["/**\n * Interface for `FormEditor` Joi schema\n */\nexport interface FormEditor {\n /**\n * The type of the page\n */\n pageType: string\n\n /**\n * The type of the question\n */\n questionType: string\n\n /**\n * The sub-type of written answer\n */\n writtenAnswerSub: string\n\n /**\n * The sub-type of date\n */\n dateSub: string\n\n /**\n * The text of the question\n */\n question: string\n\n /**\n * The hint text of the question\n */\n hintText: string\n\n /**\n * Denotes if the question is optional\n */\n questionOptional: string\n\n /**\n * The short description of the question\n */\n shortDescription: string\n\n /**\n * The value of checkbox to reveal heading and guidance section\n */\n pageHeadingAndGuidance: string\n\n /**\n * The page heading\n */\n pageHeading: string\n\n /**\n * The page guidance text\n */\n guidanceText: string\n}\n\nexport type FormEditorInputPage = Pick<\n FormEditor,\n 'pageType' | 'questionType' | 'writtenAnswerSub' | 'dateSub'\n>\n\nexport type FormEditorInputQuestion = Pick<\n FormEditor,\n | 'questionType'\n | 'question'\n | 'shortDescription'\n | 'hintText'\n | 'questionOptional'\n>\n\nexport type FormEditorInputPageSettings = Pick<\n FormEditor,\n 'pageHeadingAndGuidance' | 'pageHeading' | 'guidanceText'\n>\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../src/form/form-editor/types.ts"],"sourcesContent":["/**\n * Interface for `FormEditor` Joi schema\n */\nexport interface FormEditor {\n /**\n * The type of the page\n */\n pageType: string\n\n /**\n * The type of the question\n */\n questionType: string | undefined\n\n /**\n * The sub-type of written answer\n */\n writtenAnswerSub: string\n\n /**\n * The sub-type of date\n */\n dateSub: string\n\n /**\n * The text of the question\n */\n question: string\n\n /**\n * The hint text of the question\n */\n hintText: string\n\n /**\n * Denotes if the question is optional\n */\n questionOptional: string\n\n /**\n * The short description of the question\n */\n shortDescription: string\n\n /**\n * The value of checkbox to reveal heading and guidance section\n */\n pageHeadingAndGuidance: string\n\n /**\n * The page heading\n */\n pageHeading: string\n\n /**\n * The page guidance text\n */\n guidanceText: string\n}\n\nexport type FormEditorInputPage = Pick<\n FormEditor,\n 'pageType' | 'questionType' | 'writtenAnswerSub' | 'dateSub'\n>\n\nexport type FormEditorInputQuestion = Pick<\n FormEditor,\n | 'questionType'\n | 'question'\n | 'shortDescription'\n | 'hintText'\n | 'questionOptional'\n>\n\nexport type FormEditorInputPageSettings = Pick<\n FormEditor,\n 'pageHeadingAndGuidance' | 'pageHeading' | 'guidanceText'\n>\n"],"mappings":"","ignoreList":[]}
@@ -7,6 +7,10 @@ export declare const componentSchema: Joi.ObjectSchema<ComponentDef>;
7
7
  * It should not be configured via the designer.
8
8
  */
9
9
  export declare const pageSchema: Joi.ObjectSchema<Page>;
10
+ /**
11
+ * V2 engine schema - used with new editor
12
+ */
13
+ export declare const pageSchemaV2: Joi.ObjectSchema<Page>;
10
14
  /**
11
15
  * Joi schema for `FormDefinition` interface
12
16
  * @see {@link FormDefinition}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAA8B,MAAM,KAAK,CAAA;AAGhD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAU7D,OAAO,EAKL,KAAK,cAAc,EAInB,KAAK,IAAI,EAMV,MAAM,qCAAqC,CAAA;AAqE5C,eAAO,MAAM,eAAe,gCA6CZ,CAAA;AAsChB;;;GAGG;AACH,eAAO,MAAM,UAAU,wBAgBrB,CAAA;AAiEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,kCA+B7B,CAAA;AAIJ,eAAO,MAAM,MAAM,kCAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAA8B,MAAM,KAAK,CAAA;AAGhD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAU7D,OAAO,EAKL,KAAK,cAAc,EAInB,KAAK,IAAI,EAMV,MAAM,qCAAqC,CAAA;AAqE5C,eAAO,MAAM,eAAe,gCA6CZ,CAAA;AAsChB;;;GAGG;AACH,eAAO,MAAM,UAAU,wBAgBrB,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,wBAEvB,CAAA;AAiEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,kCAmC7B,CAAA;AAIJ,eAAO,MAAM,MAAM,kCAAuB,CAAA"}
@@ -2,6 +2,7 @@ import Joi from 'joi';
2
2
  import { type FormEditorInputPage, type FormEditorInputPageSettings, type FormEditorInputQuestion } from '../../form/form-editor/types.js';
3
3
  export declare const pageTypeSchema: Joi.StringSchema<string>;
4
4
  export declare const questionTypeSchema: Joi.StringSchema<string>;
5
+ export declare const questionTypeFullSchema: Joi.StringSchema<string>;
5
6
  export declare const writtenAnswerSubSchema: Joi.StringSchema<string>;
6
7
  export declare const dateSubSchema: Joi.StringSchema<string>;
7
8
  export declare const questionSchema: Joi.StringSchema<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAGrB,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC7B,MAAM,iCAAiC,CAAA;AAExC,eAAO,MAAM,cAAc,0BAEK,CAAA;AAChC,eAAO,MAAM,kBAAkB,0BAU5B,CAAA;AAEH,eAAO,MAAM,sBAAsB,0BAMhC,CAAA;AACH,eAAO,MAAM,aAAa,0BAE0C,CAAA;AAEpE,eAAO,MAAM,cAAc,0BAA0B,CAAA;AACrD,eAAO,MAAM,cAAc,0BAAoC,CAAA;AAC/D,eAAO,MAAM,sBAAsB,0BAA4C,CAAA;AAC/E,eAAO,MAAM,sBAAsB,0BAA0B,CAAA;AAC7D,eAAO,MAAM,4BAA4B,0BAA0B,CAAA;AACnE,eAAO,MAAM,iBAAiB,0BAA0B,CAAA;AACxD,eAAO,MAAM,kBAAkB,0BAAoC,CAAA;AAEnE,eAAO,MAAM,uBAAuB;;;CAGnC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,uCAEzB,CAAA;AAEb,eAAO,MAAM,2BAA2B;;;;;CAKvC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,2CAG3B,CAAA;AAEf,eAAO,MAAM,+BAA+B;;;;CAI3C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iCAAiC,+CAG/B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAGrB,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC7B,MAAM,iCAAiC,CAAA;AAExC,eAAO,MAAM,cAAc,0BAEK,CAAA;AAChC,eAAO,MAAM,kBAAkB,0BAU5B,CAAA;AAEH,eAAO,MAAM,sBAAsB,0BAahC,CAAA;AAEH,eAAO,MAAM,sBAAsB,0BAMhC,CAAA;AACH,eAAO,MAAM,aAAa,0BAE0C,CAAA;AAEpE,eAAO,MAAM,cAAc,0BAA0B,CAAA;AACrD,eAAO,MAAM,cAAc,0BAAoC,CAAA;AAC/D,eAAO,MAAM,sBAAsB,0BAA4C,CAAA;AAC/E,eAAO,MAAM,sBAAsB,0BAA0B,CAAA;AAC7D,eAAO,MAAM,4BAA4B,0BAA0B,CAAA;AACnE,eAAO,MAAM,iBAAiB,0BAA0B,CAAA;AACxD,eAAO,MAAM,kBAAkB,0BAAoC,CAAA;AAEnE,eAAO,MAAM,uBAAuB;;;CAGnC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,uCAEzB,CAAA;AAEb,eAAO,MAAM,2BAA2B;;;;;CAKvC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,2CAG3B,CAAA;AAEf,eAAO,MAAM,+BAA+B;;;;CAI3C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iCAAiC,+CAG/B,CAAA"}
@@ -9,7 +9,7 @@ export interface FormEditor {
9
9
  /**
10
10
  * The type of the question
11
11
  */
12
- questionType: string;
12
+ questionType: string | undefined;
13
13
  /**
14
14
  * The sub-type of written answer
15
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-editor/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,sBAAsB,EAAE,MAAM,CAAA;IAE9B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,UAAU,EACV,UAAU,GAAG,cAAc,GAAG,kBAAkB,GAAG,SAAS,CAC7D,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,UAAU,EACR,cAAc,GACd,UAAU,GACV,kBAAkB,GAClB,UAAU,GACV,kBAAkB,CACrB,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC5C,UAAU,EACV,wBAAwB,GAAG,aAAa,GAAG,cAAc,CAC1D,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-editor/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;IAEhC;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,sBAAsB,EAAE,MAAM,CAAA;IAE9B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,UAAU,EACV,UAAU,GAAG,cAAc,GAAG,kBAAkB,GAAG,SAAS,CAC7D,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,UAAU,EACR,cAAc,GACd,UAAU,GACV,kBAAkB,GAClB,UAAU,GACV,kBAAkB,CACrB,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC5C,UAAU,EACV,wBAAwB,GAAG,aAAa,GAAG,cAAc,CAC1D,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defra/forms-model",
3
- "version": "3.0.405",
3
+ "version": "3.0.407",
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
  "repository": {
@@ -200,6 +200,13 @@ export const pageSchema = Joi.object<Page>().keys({
200
200
  view: Joi.string().optional()
201
201
  })
202
202
 
203
+ /**
204
+ * V2 engine schema - used with new editor
205
+ */
206
+ export const pageSchemaV2 = pageSchema.append({
207
+ title: Joi.string().allow('').required()
208
+ })
209
+
203
210
  const baseListItemSchema = Joi.object<Item>().keys({
204
211
  text: Joi.string().allow(''),
205
212
  description: Joi.string().allow('').optional(),
@@ -276,7 +283,11 @@ export const formDefinitionSchema = Joi.object<FormDefinition>()
276
283
  startPage: Joi.string().optional(),
277
284
  pages: Joi.array<Page>()
278
285
  .required()
279
- .items(pageSchema)
286
+ .when('engine', {
287
+ is: 'V2',
288
+ then: Joi.array<Page>().items(pageSchemaV2),
289
+ otherwise: Joi.array<Page>().items(pageSchema)
290
+ })
280
291
  .unique('path')
281
292
  .unique('id', { ignoreUndefined: true }),
282
293
  sections: Joi.array<Section>()
@@ -22,6 +22,21 @@ export const questionTypeSchema = Joi.string()
22
22
  ComponentType.SelectField
23
23
  )
24
24
 
25
+ export const questionTypeFullSchema = Joi.string()
26
+ .required()
27
+ .valid(
28
+ ComponentType.TextField,
29
+ ComponentType.MultilineTextField,
30
+ ComponentType.NumberField,
31
+ ComponentType.DatePartsField,
32
+ ComponentType.MonthYearField,
33
+ ComponentType.UkAddressField,
34
+ ComponentType.TelephoneNumberField,
35
+ ComponentType.FileUploadField,
36
+ ComponentType.EmailAddressField,
37
+ ComponentType.SelectField
38
+ )
39
+
25
40
  export const writtenAnswerSubSchema = Joi.string()
26
41
  .required()
27
42
  .valid(
@@ -10,7 +10,7 @@ export interface FormEditor {
10
10
  /**
11
11
  * The type of the question
12
12
  */
13
- questionType: string
13
+ questionType: string | undefined
14
14
 
15
15
  /**
16
16
  * The sub-type of written answer