@defra/forms-model 3.0.381 → 3.0.383
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/components/types.js.map +1 -1
- package/dist/module/form/form-definition/index.js +2 -1
- package/dist/module/form/form-definition/index.js.map +1 -1
- package/dist/types/components/types.d.ts +4 -0
- package/dist/types/components/types.d.ts.map +1 -1
- package/dist/types/form/form-definition/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/components/types.ts +5 -0
- package/src/form/form-definition/index.ts +5 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../src/components/types.ts"],"sourcesContent":["import { type ComponentType } from '~/src/components/enums.js'\nimport {\n type ListTypeContent,\n type ListTypeOption\n} from '~/src/form/form-definition/types.js'\n\nexport type ConditionalComponentType = Exclude<\n ConditionalComponentsDef['type'],\n ContentComponentsDef\n>\n\n/**\n * Types for Components JSON structure which are expected by engine and turned into actual form input/content/lists\n */\n\ninterface FormFieldBase {\n type: FormComponentsDef['type']\n name: string\n title: string\n hint?: string\n options: {\n required?: boolean\n optionalText?: boolean\n classes?: string\n }\n}\n\ninterface ListFieldBase extends FormFieldBase {\n type:\n | ComponentType.AutocompleteField\n | ComponentType.CheckboxesField\n | ComponentType.RadiosField\n | ComponentType.SelectField\n list: string\n options: FormFieldBase['options'] & {\n type?: ListTypeContent\n }\n}\n\ninterface ContentFieldBase {\n type:\n | ComponentType.Details\n | ComponentType.Html\n | ComponentType.InsetText\n | ComponentType.List\n name: string\n title: string\n}\n\ninterface DateFieldBase {\n type: ComponentType.DatePartsField | ComponentType.MonthYearField\n name: string\n title: string\n hint?: string\n options: {\n required?: boolean\n optionalText?: boolean\n classes?: string\n maxDaysInPast?: number\n maxDaysInFuture?: number\n }\n}\n\n// Text Fields\nexport interface TextFieldComponent extends FormFieldBase {\n type: ComponentType.TextField\n options: FormFieldBase['options'] & {\n autocomplete?: string\n condition?: string\n customValidationMessage?: string\n }\n schema: {\n max?: number\n min?: number\n length?: number\n regex?: string\n }\n}\n\nexport interface EmailAddressFieldComponent extends FormFieldBase {\n type: ComponentType.EmailAddressField\n options: FormFieldBase['options'] & {\n condition?: string\n customValidationMessage?: string\n }\n}\n\nexport interface NumberFieldComponent extends FormFieldBase {\n type: ComponentType.NumberField\n options: FormFieldBase['options'] & {\n prefix?: string\n suffix?: string\n condition?: string\n customValidationMessage?: string\n }\n schema: {\n max?: number\n min?: number\n precision?: number\n }\n}\n\nexport interface TelephoneNumberFieldComponent extends FormFieldBase {\n type: ComponentType.TelephoneNumberField\n options: FormFieldBase['options'] & {\n condition?: string\n customValidationMessage?: string\n }\n}\n\nexport interface FileUploadFieldComponent {\n type: ComponentType.FileUploadField\n name: string\n title: string\n hint?: string\n options: {\n required?: boolean\n classes?: string\n optionalText?: boolean\n accept?: string\n }\n schema: {\n max?: number\n min?: number\n length?: number\n }\n}\n\nexport interface YesNoFieldComponent extends FormFieldBase {\n type: ComponentType.YesNoField\n options: FormFieldBase['options'] & {\n condition?: string\n }\n}\n\nexport interface MultilineTextFieldComponent extends FormFieldBase {\n type: ComponentType.MultilineTextField\n options: FormFieldBase['options'] & {\n condition?: string\n customValidationMessage?: string\n rows?: number\n maxWords?: number\n }\n schema: {\n max?: number\n min?: number\n length?: number\n regex?: string\n }\n}\n\nexport interface UkAddressFieldComponent extends FormFieldBase {\n type: ComponentType.UkAddressField\n options: FormFieldBase['options'] & {\n hideTitle?: boolean\n }\n}\n\n// Date Fields\nexport interface DatePartsFieldComponent extends DateFieldBase {\n type: ComponentType.DatePartsField\n options: DateFieldBase['options'] & {\n condition?: string\n }\n}\n\nexport interface MonthYearFieldComponent extends DateFieldBase {\n type: ComponentType.MonthYearField\n options: DateFieldBase['options'] & {\n customValidationMessage?: string\n }\n}\n\n// Content Fields\nexport interface DetailsComponent extends ContentFieldBase {\n type: ComponentType.Details\n content: string\n options: {\n condition?: string\n }\n}\n\nexport interface HtmlComponent extends ContentFieldBase {\n type: ComponentType.Html\n content: string\n options: {\n condition?: string\n }\n}\n\nexport interface InsetTextComponent extends ContentFieldBase {\n type: ComponentType.InsetText\n content: string\n}\n\nexport interface ListComponent extends ContentFieldBase {\n type: ComponentType.List\n hint?: string\n list: string\n options: {\n type?: ListTypeOption\n classes?: string\n hideTitle?: boolean\n bold?: boolean\n }\n}\n\nexport interface AutocompleteFieldComponent extends ListFieldBase {\n type: ComponentType.AutocompleteField\n options: ListFieldBase['options'] & {\n condition?: string\n }\n}\n\nexport interface CheckboxesFieldComponent extends ListFieldBase {\n type: ComponentType.CheckboxesField\n options: ListFieldBase['options'] & {\n bold?: boolean\n condition?: string\n }\n}\n\nexport interface RadiosFieldComponent extends ListFieldBase {\n type: ComponentType.RadiosField\n options: ListFieldBase['options'] & {\n bold?: boolean\n condition?: string\n }\n}\n\nexport interface SelectFieldComponent extends ListFieldBase {\n type: ComponentType.SelectField\n options: ListFieldBase['options'] & {\n autocomplete?: string\n condition?: string\n }\n}\n\nexport type ComponentDef = FormComponentsDef | ContentComponentsDef\n\n// Components that render form fields\nexport type FormComponentsDef =\n | InputFieldsComponentsDef\n | SelectionComponentsDef\n\n// Components that render inputs\nexport type InputFieldsComponentsDef =\n | TextFieldComponent\n | EmailAddressFieldComponent\n | NumberFieldComponent\n | MultilineTextFieldComponent\n | TelephoneNumberFieldComponent\n | MonthYearFieldComponent\n | DatePartsFieldComponent\n | UkAddressFieldComponent\n | FileUploadFieldComponent\n\n// Components that render content\nexport type ContentComponentsDef =\n | DetailsComponent\n | HtmlComponent\n | InsetTextComponent\n | ListComponent\n\n// Components that render lists\nexport type ListComponentsDef =\n | Exclude<SelectionComponentsDef, YesNoFieldComponent>\n | ListComponent\n\n// Components that have selection fields\nexport type SelectionComponentsDef =\n | AutocompleteFieldComponent\n | CheckboxesFieldComponent\n | RadiosFieldComponent\n | SelectFieldComponent\n | YesNoFieldComponent\n\n// Components that have condition support\nexport type ConditionalComponentsDef = Exclude<\n ComponentDef,\n | InsetTextComponent\n | ListComponent\n | MonthYearFieldComponent\n | UkAddressFieldComponent\n | FileUploadFieldComponent\n>\n"],"mappings":"","ignoreList":[]}
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../src/components/types.ts"],"sourcesContent":["import { type LanguageMessages } from 'joi'\n\nimport { type ComponentType } from '~/src/components/enums.js'\nimport {\n type ListTypeContent,\n type ListTypeOption\n} from '~/src/form/form-definition/types.js'\n\nexport type ConditionalComponentType = Exclude<\n ConditionalComponentsDef['type'],\n ContentComponentsDef\n>\n\n/**\n * Types for Components JSON structure which are expected by engine and turned into actual form input/content/lists\n */\n\ninterface FormFieldBase {\n type: FormComponentsDef['type']\n name: string\n title: string\n hint?: string\n options: {\n required?: boolean\n optionalText?: boolean\n classes?: string\n customValidationMessages?: LanguageMessages\n }\n}\n\ninterface ListFieldBase extends FormFieldBase {\n type:\n | ComponentType.AutocompleteField\n | ComponentType.CheckboxesField\n | ComponentType.RadiosField\n | ComponentType.SelectField\n list: string\n options: FormFieldBase['options'] & {\n type?: ListTypeContent\n }\n}\n\ninterface ContentFieldBase {\n type:\n | ComponentType.Details\n | ComponentType.Html\n | ComponentType.InsetText\n | ComponentType.List\n name: string\n title: string\n}\n\ninterface DateFieldBase {\n type: ComponentType.DatePartsField | ComponentType.MonthYearField\n name: string\n title: string\n hint?: string\n options: {\n required?: boolean\n optionalText?: boolean\n classes?: string\n maxDaysInPast?: number\n maxDaysInFuture?: number\n }\n}\n\n// Text Fields\nexport interface TextFieldComponent extends FormFieldBase {\n type: ComponentType.TextField\n options: FormFieldBase['options'] & {\n autocomplete?: string\n condition?: string\n customValidationMessage?: string\n }\n schema: {\n max?: number\n min?: number\n length?: number\n regex?: string\n }\n}\n\nexport interface EmailAddressFieldComponent extends FormFieldBase {\n type: ComponentType.EmailAddressField\n options: FormFieldBase['options'] & {\n condition?: string\n customValidationMessage?: string\n }\n}\n\nexport interface NumberFieldComponent extends FormFieldBase {\n type: ComponentType.NumberField\n options: FormFieldBase['options'] & {\n prefix?: string\n suffix?: string\n autocomplete?: string\n condition?: string\n customValidationMessage?: string\n }\n schema: {\n max?: number\n min?: number\n precision?: number\n }\n}\n\nexport interface TelephoneNumberFieldComponent extends FormFieldBase {\n type: ComponentType.TelephoneNumberField\n options: FormFieldBase['options'] & {\n condition?: string\n customValidationMessage?: string\n }\n}\n\nexport interface FileUploadFieldComponent {\n type: ComponentType.FileUploadField\n name: string\n title: string\n hint?: string\n options: {\n required?: boolean\n classes?: string\n optionalText?: boolean\n accept?: string\n }\n schema: {\n max?: number\n min?: number\n length?: number\n }\n}\n\nexport interface YesNoFieldComponent extends FormFieldBase {\n type: ComponentType.YesNoField\n options: FormFieldBase['options'] & {\n condition?: string\n }\n}\n\nexport interface MultilineTextFieldComponent extends FormFieldBase {\n type: ComponentType.MultilineTextField\n options: FormFieldBase['options'] & {\n autocomplete?: string\n condition?: string\n customValidationMessage?: string\n rows?: number\n maxWords?: number\n }\n schema: {\n max?: number\n min?: number\n length?: number\n regex?: string\n }\n}\n\nexport interface UkAddressFieldComponent extends FormFieldBase {\n type: ComponentType.UkAddressField\n options: FormFieldBase['options'] & {\n hideTitle?: boolean\n }\n}\n\n// Date Fields\nexport interface DatePartsFieldComponent extends DateFieldBase {\n type: ComponentType.DatePartsField\n options: DateFieldBase['options'] & {\n condition?: string\n }\n}\n\nexport interface MonthYearFieldComponent extends DateFieldBase {\n type: ComponentType.MonthYearField\n options: DateFieldBase['options'] & {\n customValidationMessage?: string\n }\n}\n\n// Content Fields\nexport interface DetailsComponent extends ContentFieldBase {\n type: ComponentType.Details\n content: string\n options: {\n condition?: string\n }\n}\n\nexport interface HtmlComponent extends ContentFieldBase {\n type: ComponentType.Html\n content: string\n options: {\n condition?: string\n }\n}\n\nexport interface InsetTextComponent extends ContentFieldBase {\n type: ComponentType.InsetText\n content: string\n}\n\nexport interface ListComponent extends ContentFieldBase {\n type: ComponentType.List\n hint?: string\n list: string\n options: {\n type?: ListTypeOption\n classes?: string\n hideTitle?: boolean\n bold?: boolean\n }\n}\n\nexport interface AutocompleteFieldComponent extends ListFieldBase {\n type: ComponentType.AutocompleteField\n options: ListFieldBase['options'] & {\n condition?: string\n }\n}\n\nexport interface CheckboxesFieldComponent extends ListFieldBase {\n type: ComponentType.CheckboxesField\n options: ListFieldBase['options'] & {\n bold?: boolean\n condition?: string\n }\n}\n\nexport interface RadiosFieldComponent extends ListFieldBase {\n type: ComponentType.RadiosField\n options: ListFieldBase['options'] & {\n bold?: boolean\n condition?: string\n }\n}\n\nexport interface SelectFieldComponent extends ListFieldBase {\n type: ComponentType.SelectField\n options: ListFieldBase['options'] & {\n autocomplete?: string\n condition?: string\n }\n}\n\nexport type ComponentDef = FormComponentsDef | ContentComponentsDef\n\n// Components that render form fields\nexport type FormComponentsDef =\n | InputFieldsComponentsDef\n | SelectionComponentsDef\n\n// Components that render inputs\nexport type InputFieldsComponentsDef =\n | TextFieldComponent\n | EmailAddressFieldComponent\n | NumberFieldComponent\n | MultilineTextFieldComponent\n | TelephoneNumberFieldComponent\n | MonthYearFieldComponent\n | DatePartsFieldComponent\n | UkAddressFieldComponent\n | FileUploadFieldComponent\n\n// Components that render content\nexport type ContentComponentsDef =\n | DetailsComponent\n | HtmlComponent\n | InsetTextComponent\n | ListComponent\n\n// Components that render lists\nexport type ListComponentsDef =\n | Exclude<SelectionComponentsDef, YesNoFieldComponent>\n | ListComponent\n\n// Components that have selection fields\nexport type SelectionComponentsDef =\n | AutocompleteFieldComponent\n | CheckboxesFieldComponent\n | RadiosFieldComponent\n | SelectFieldComponent\n | YesNoFieldComponent\n\n// Components that have condition support\nexport type ConditionalComponentsDef = Exclude<\n ComponentDef,\n | InsetTextComponent\n | ListComponent\n | MonthYearFieldComponent\n | UkAddressFieldComponent\n | FileUploadFieldComponent\n>\n"],"mappings":"","ignoreList":[]}
|
@@ -62,7 +62,8 @@ export const componentSchema = Joi.object().keys({
|
|
62
62
|
maxWords: Joi.number().empty(''),
|
63
63
|
maxDaysInPast: Joi.number().empty(''),
|
64
64
|
maxDaysInFuture: Joi.number().empty(''),
|
65
|
-
customValidationMessage: Joi.string().allow('')
|
65
|
+
customValidationMessage: Joi.string().allow(''),
|
66
|
+
customValidationMessages: Joi.object().unknown(true).optional()
|
66
67
|
}).default({}).unknown(true),
|
67
68
|
schema: Joi.object({
|
68
69
|
min: Joi.number().empty(''),
|
@@ -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","when","is","valid","Details","Html","InsetText","then","otherwise","allow","hint","options","rows","number","empty","maxWords","maxDaysInPast","maxDaysInFuture","customValidationMessage","unknown","schema","min","max","length","list","nextSchema","path","condition","redirect","repeatOptions","repeatSchema","pageRepeatSchema","pageSchema","disallow","section","controller","components","unique","repeat","any","strip","next","baseListItemSchema","text","description","conditional","stringListItemSchema","append","numberListItemSchema","listSchema","feedbackSchema","feedbackForm","url","emailAddress","email","tlds","phaseBannerSchema","phase","formDefinitionSchema","feedback","startPage","pages","sections","lists","metadata","a","declaration","skipSummary","phaseBanner","outputEmail","trim","Schema"],"sources":["../../../../src/form/form-definition/index.ts"],"sourcesContent":["import Joi 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 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 type: Joi.string<ComponentType>().required(),\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 })\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\n/**\n * `/status` is a special route for providing a user's application status.\n * It should not be configured via the designer.\n */\nconst pageSchema = Joi.object<Page>().keys({\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 next: Joi.array<Link>().items(nextSchema)\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\n/**\n * Joi schema for `FormDefinition` interface\n * @see {@link FormDefinition}\n */\nexport const formDefinitionSchema = Joi.object<FormDefinition>()\n .required()\n .keys({\n name: Joi.string().allow('').optional(),\n feedback: feedbackSchema.optional(),\n startPage: Joi.string().optional(),\n pages: Joi.array<Page>().required().items(pageSchema).unique('path'),\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 })\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","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","pageSchema","disallow","section","controller","components","unique","repeat","any","strip","next","baseListItemSchema","text","description","conditional","stringListItemSchema","append","numberListItemSchema","listSchema","feedbackSchema","feedbackForm","url","emailAddress","email","tlds","phaseBannerSchema","phase","formDefinitionSchema","feedback","startPage","pages","sections","lists","metadata","a","declaration","skipSummary","phaseBanner","outputEmail","trim","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 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 type: Joi.string<ComponentType>().required(),\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\n/**\n * `/status` is a special route for providing a user's application status.\n * It should not be configured via the designer.\n */\nconst pageSchema = Joi.object<Page>().keys({\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 next: Joi.array<Link>().items(nextSchema)\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\n/**\n * Joi schema for `FormDefinition` interface\n * @see {@link FormDefinition}\n */\nexport const formDefinitionSchema = Joi.object<FormDefinition>()\n .required()\n .keys({\n name: Joi.string().allow('').optional(),\n feedback: feedbackSchema.optional(),\n startPage: Joi.string().optional(),\n pages: Joi.array<Page>().required().items(pageSchema).unique('path'),\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 })\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,3 +1,4 @@
|
|
1
|
+
import { type LanguageMessages } from 'joi';
|
1
2
|
import { type ComponentType } from '../components/enums.js';
|
2
3
|
import { type ListTypeContent, type ListTypeOption } from '../form/form-definition/types.js';
|
3
4
|
export type ConditionalComponentType = Exclude<ConditionalComponentsDef['type'], ContentComponentsDef>;
|
@@ -13,6 +14,7 @@ interface FormFieldBase {
|
|
13
14
|
required?: boolean;
|
14
15
|
optionalText?: boolean;
|
15
16
|
classes?: string;
|
17
|
+
customValidationMessages?: LanguageMessages;
|
16
18
|
};
|
17
19
|
}
|
18
20
|
interface ListFieldBase extends FormFieldBase {
|
@@ -66,6 +68,7 @@ export interface NumberFieldComponent extends FormFieldBase {
|
|
66
68
|
options: FormFieldBase['options'] & {
|
67
69
|
prefix?: string;
|
68
70
|
suffix?: string;
|
71
|
+
autocomplete?: string;
|
69
72
|
condition?: string;
|
70
73
|
customValidationMessage?: string;
|
71
74
|
};
|
@@ -108,6 +111,7 @@ export interface YesNoFieldComponent extends FormFieldBase {
|
|
108
111
|
export interface MultilineTextFieldComponent extends FormFieldBase {
|
109
112
|
type: ComponentType.MultilineTextField;
|
110
113
|
options: FormFieldBase['options'] & {
|
114
|
+
autocomplete?: string;
|
111
115
|
condition?: string;
|
112
116
|
customValidationMessage?: string;
|
113
117
|
rows?: number;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,qCAAqC,CAAA;AAE5C,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC5C,wBAAwB,CAAC,MAAM,CAAC,EAChC,oBAAoB,CACrB,CAAA;AAED;;GAEG;AAEH,UAAU,aAAa;IACrB,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,OAAO,CAAC,EAAE,MAAM,CAAA;
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,KAAK,CAAA;AAE3C,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,qCAAqC,CAAA;AAE5C,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC5C,wBAAwB,CAAC,MAAM,CAAC,EAChC,oBAAoB,CACrB,CAAA;AAED;;GAEG;AAEH,UAAU,aAAa;IACrB,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,wBAAwB,CAAC,EAAE,gBAAgB,CAAA;KAC5C,CAAA;CACF;AAED,UAAU,aAAc,SAAQ,aAAa;IAC3C,IAAI,EACA,aAAa,CAAC,iBAAiB,GAC/B,aAAa,CAAC,eAAe,GAC7B,aAAa,CAAC,WAAW,GACzB,aAAa,CAAC,WAAW,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG;QAClC,IAAI,CAAC,EAAE,eAAe,CAAA;KACvB,CAAA;CACF;AAED,UAAU,gBAAgB;IACxB,IAAI,EACA,aAAa,CAAC,OAAO,GACrB,aAAa,CAAC,IAAI,GAClB,aAAa,CAAC,SAAS,GACvB,aAAa,CAAC,IAAI,CAAA;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,aAAa,CAAC,cAAc,GAAG,aAAa,CAAC,cAAc,CAAA;IACjE,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,eAAe,CAAC,EAAE,MAAM,CAAA;KACzB,CAAA;CACF;AAGD,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,IAAI,EAAE,aAAa,CAAC,SAAS,CAAA;IAC7B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG;QAClC,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,uBAAuB,CAAC,EAAE,MAAM,CAAA;KACjC,CAAA;IACD,MAAM,EAAE;QACN,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;CACF;AAED,MAAM,WAAW,0BAA2B,SAAQ,aAAa;IAC/D,IAAI,EAAE,aAAa,CAAC,iBAAiB,CAAA;IACrC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG;QAClC,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,uBAAuB,CAAC,EAAE,MAAM,CAAA;KACjC,CAAA;CACF;AAED,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,IAAI,EAAE,aAAa,CAAC,WAAW,CAAA;IAC/B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG;QAClC,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,uBAAuB,CAAC,EAAE,MAAM,CAAA;KACjC,CAAA;IACD,MAAM,EAAE;QACN,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED,MAAM,WAAW,6BAA8B,SAAQ,aAAa;IAClE,IAAI,EAAE,aAAa,CAAC,oBAAoB,CAAA;IACxC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG;QAClC,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,uBAAuB,CAAC,EAAE,MAAM,CAAA;KACjC,CAAA;CACF;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,aAAa,CAAC,eAAe,CAAA;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,MAAM,EAAE;QACN,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF;AAED,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,IAAI,EAAE,aAAa,CAAC,UAAU,CAAA;IAC9B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG;QAClC,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED,MAAM,WAAW,2BAA4B,SAAQ,aAAa;IAChE,IAAI,EAAE,aAAa,CAAC,kBAAkB,CAAA;IACtC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG;QAClC,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,uBAAuB,CAAC,EAAE,MAAM,CAAA;QAChC,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,MAAM,EAAE;QACN,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;CACF;AAED,MAAM,WAAW,uBAAwB,SAAQ,aAAa;IAC5D,IAAI,EAAE,aAAa,CAAC,cAAc,CAAA;IAClC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG;QAClC,SAAS,CAAC,EAAE,OAAO,CAAA;KACpB,CAAA;CACF;AAGD,MAAM,WAAW,uBAAwB,SAAQ,aAAa;IAC5D,IAAI,EAAE,aAAa,CAAC,cAAc,CAAA;IAClC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG;QAClC,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED,MAAM,WAAW,uBAAwB,SAAQ,aAAa;IAC5D,IAAI,EAAE,aAAa,CAAC,cAAc,CAAA;IAClC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG;QAClC,uBAAuB,CAAC,EAAE,MAAM,CAAA;KACjC,CAAA;CACF;AAGD,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,IAAI,EAAE,aAAa,CAAC,OAAO,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD,IAAI,EAAE,aAAa,CAAC,IAAI,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,IAAI,EAAE,aAAa,CAAC,SAAS,CAAA;IAC7B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD,IAAI,EAAE,aAAa,CAAC,IAAI,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE;QACP,IAAI,CAAC,EAAE,cAAc,CAAA;QACrB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,SAAS,CAAC,EAAE,OAAO,CAAA;QACnB,IAAI,CAAC,EAAE,OAAO,CAAA;KACf,CAAA;CACF;AAED,MAAM,WAAW,0BAA2B,SAAQ,aAAa;IAC/D,IAAI,EAAE,aAAa,CAAC,iBAAiB,CAAA;IACrC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG;QAClC,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED,MAAM,WAAW,wBAAyB,SAAQ,aAAa;IAC7D,IAAI,EAAE,aAAa,CAAC,eAAe,CAAA;IACnC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG;QAClC,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,IAAI,EAAE,aAAa,CAAC,WAAW,CAAA;IAC/B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG;QAClC,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,IAAI,EAAE,aAAa,CAAC,WAAW,CAAA;IAC/B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG;QAClC,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,oBAAoB,CAAA;AAGnE,MAAM,MAAM,iBAAiB,GACzB,wBAAwB,GACxB,sBAAsB,CAAA;AAG1B,MAAM,MAAM,wBAAwB,GAChC,kBAAkB,GAClB,0BAA0B,GAC1B,oBAAoB,GACpB,2BAA2B,GAC3B,6BAA6B,GAC7B,uBAAuB,GACvB,uBAAuB,GACvB,uBAAuB,GACvB,wBAAwB,CAAA;AAG5B,MAAM,MAAM,oBAAoB,GAC5B,gBAAgB,GAChB,aAAa,GACb,kBAAkB,GAClB,aAAa,CAAA;AAGjB,MAAM,MAAM,iBAAiB,GACzB,OAAO,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,GACpD,aAAa,CAAA;AAGjB,MAAM,MAAM,sBAAsB,GAC9B,0BAA0B,GAC1B,wBAAwB,GACxB,oBAAoB,GACpB,oBAAoB,GACpB,mBAAmB,CAAA;AAGvB,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC5C,YAAY,EACV,kBAAkB,GAClB,aAAa,GACb,uBAAuB,GACvB,uBAAuB,GACvB,wBAAwB,CAC3B,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
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,EAEL,KAAK,cAAc,EAUpB,MAAM,qCAAqC,CAAA;AAqE5C,eAAO,MAAM,eAAe,gCA2CZ,CAAA;AAmGhB;;;GAGG;AACH,eAAO,MAAM,oBAAoB,kCAyB7B,CAAA;AAIJ,eAAO,MAAM,MAAM,kCAAuB,CAAA"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@defra/forms-model",
|
3
|
-
"version": "3.0.
|
3
|
+
"version": "3.0.383",
|
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": {
|
@@ -33,7 +33,7 @@
|
|
33
33
|
"joi": "^17.0.0"
|
34
34
|
},
|
35
35
|
"engines": {
|
36
|
-
"node": "^
|
37
|
-
"npm": "^10.
|
36
|
+
"node": "^22.11.0",
|
37
|
+
"npm": "^10.9.0"
|
38
38
|
}
|
39
39
|
}
|
package/src/components/types.ts
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
import { type LanguageMessages } from 'joi'
|
2
|
+
|
1
3
|
import { type ComponentType } from '~/src/components/enums.js'
|
2
4
|
import {
|
3
5
|
type ListTypeContent,
|
@@ -22,6 +24,7 @@ interface FormFieldBase {
|
|
22
24
|
required?: boolean
|
23
25
|
optionalText?: boolean
|
24
26
|
classes?: string
|
27
|
+
customValidationMessages?: LanguageMessages
|
25
28
|
}
|
26
29
|
}
|
27
30
|
|
@@ -90,6 +93,7 @@ export interface NumberFieldComponent extends FormFieldBase {
|
|
90
93
|
options: FormFieldBase['options'] & {
|
91
94
|
prefix?: string
|
92
95
|
suffix?: string
|
96
|
+
autocomplete?: string
|
93
97
|
condition?: string
|
94
98
|
customValidationMessage?: string
|
95
99
|
}
|
@@ -136,6 +140,7 @@ export interface YesNoFieldComponent extends FormFieldBase {
|
|
136
140
|
export interface MultilineTextFieldComponent extends FormFieldBase {
|
137
141
|
type: ComponentType.MultilineTextField
|
138
142
|
options: FormFieldBase['options'] & {
|
143
|
+
autocomplete?: string
|
139
144
|
condition?: string
|
140
145
|
customValidationMessage?: string
|
141
146
|
rows?: number
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import Joi from 'joi'
|
1
|
+
import Joi, { type LanguageMessages } from 'joi'
|
2
2
|
|
3
3
|
import { ComponentType } from '~/src/components/enums.js'
|
4
4
|
import { type ComponentDef } from '~/src/components/types.js'
|
@@ -119,7 +119,10 @@ export const componentSchema = Joi.object<ComponentDef>()
|
|
119
119
|
maxWords: Joi.number().empty(''),
|
120
120
|
maxDaysInPast: Joi.number().empty(''),
|
121
121
|
maxDaysInFuture: Joi.number().empty(''),
|
122
|
-
customValidationMessage: Joi.string().allow('')
|
122
|
+
customValidationMessage: Joi.string().allow(''),
|
123
|
+
customValidationMessages: Joi.object<LanguageMessages>()
|
124
|
+
.unknown(true)
|
125
|
+
.optional()
|
123
126
|
})
|
124
127
|
.default({})
|
125
128
|
.unknown(true),
|