@defra/forms-model 3.0.406 → 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.
- package/dist/module/form/form-definition/index.js +12 -1
- package/dist/module/form/form-definition/index.js.map +1 -1
- package/dist/types/form/form-definition/index.d.ts +4 -0
- package/dist/types/form/form-definition/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/form/form-definition/index.ts +12 -1
@@ -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().
|
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":[]}
|
@@ -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,
|
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"}
|
package/package.json
CHANGED
@@ -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
|
-
.
|
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>()
|