@defra/forms-model 3.0.575 → 3.0.577

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/module/__stubs__/pages.js +13 -0
  2. package/dist/module/__stubs__/pages.js.map +1 -1
  3. package/dist/module/form/form-definition/helpers.js +15 -3
  4. package/dist/module/form/form-definition/helpers.js.map +1 -1
  5. package/dist/module/form/form-definition/index.js +60 -37
  6. package/dist/module/form/form-definition/index.js.map +1 -1
  7. package/dist/module/form/form-editor/__stubs__/preview.js +53 -17
  8. package/dist/module/form/form-editor/__stubs__/preview.js.map +1 -1
  9. package/dist/module/form/form-editor/index.js +3 -2
  10. package/dist/module/form/form-editor/index.js.map +1 -1
  11. package/dist/module/form/form-editor/macros/types.js.map +1 -1
  12. package/dist/module/form/form-editor/preview/declaration.js +82 -0
  13. package/dist/module/form/form-editor/preview/declaration.js.map +1 -0
  14. package/dist/module/form/form-editor/preview/helpers.js +43 -10
  15. package/dist/module/form/form-editor/preview/helpers.js.map +1 -1
  16. package/dist/module/form/form-editor/preview/index.js +1 -0
  17. package/dist/module/form/form-editor/preview/index.js.map +1 -1
  18. package/dist/module/form/form-editor/preview/types.js.map +1 -1
  19. package/dist/module/form/form-editor/preview/uk-address.js +3 -3
  20. package/dist/module/form/form-editor/preview/uk-address.js.map +1 -1
  21. package/dist/module/form/form-editor/types.js.map +1 -1
  22. package/dist/types/__stubs__/pages.d.ts +2 -1
  23. package/dist/types/__stubs__/pages.d.ts.map +1 -1
  24. package/dist/types/form/form-definition/helpers.d.ts +10 -3
  25. package/dist/types/form/form-definition/helpers.d.ts.map +1 -1
  26. package/dist/types/form/form-definition/index.d.ts +2 -1
  27. package/dist/types/form/form-definition/index.d.ts.map +1 -1
  28. package/dist/types/form/form-editor/__stubs__/preview.d.ts +38 -12
  29. package/dist/types/form/form-editor/__stubs__/preview.d.ts.map +1 -1
  30. package/dist/types/form/form-editor/index.d.ts +1 -0
  31. package/dist/types/form/form-editor/index.d.ts.map +1 -1
  32. package/dist/types/form/form-editor/macros/types.d.ts +6 -0
  33. package/dist/types/form/form-editor/macros/types.d.ts.map +1 -1
  34. package/dist/types/form/form-editor/preview/declaration.d.ts +42 -0
  35. package/dist/types/form/form-editor/preview/declaration.d.ts.map +1 -0
  36. package/dist/types/form/form-editor/preview/helpers.d.ts.map +1 -1
  37. package/dist/types/form/form-editor/preview/index.d.ts +1 -0
  38. package/dist/types/form/form-editor/preview/types.d.ts +12 -1
  39. package/dist/types/form/form-editor/preview/types.d.ts.map +1 -1
  40. package/dist/types/form/form-editor/preview/uk-address.d.ts +13 -0
  41. package/dist/types/form/form-editor/preview/uk-address.d.ts.map +1 -1
  42. package/dist/types/form/form-editor/types.d.ts +8 -1
  43. package/dist/types/form/form-editor/types.d.ts.map +1 -1
  44. package/package.json +1 -1
  45. package/schemas/form-editor-input-page-schema.json +1 -0
  46. package/schemas/question-type-full-schema.json +1 -0
  47. package/schemas/question-type-schema.json +1 -0
  48. package/src/__stubs__/pages.ts +18 -1
  49. package/src/form/form-definition/helpers.ts +28 -4
  50. package/src/form/form-definition/index.ts +91 -53
  51. package/src/form/form-editor/__stubs__/preview.js +47 -17
  52. package/src/form/form-editor/index.ts +3 -0
  53. package/src/form/form-editor/macros/types.ts +7 -0
  54. package/src/form/form-editor/preview/declaration.js +88 -0
  55. package/src/form/form-editor/preview/helpers.js +47 -16
  56. package/src/form/form-editor/preview/index.js +1 -0
  57. package/src/form/form-editor/preview/types.ts +16 -1
  58. package/src/form/form-editor/preview/uk-address.js +3 -3
  59. package/src/form/form-editor/types.ts +8 -0
@@ -237,7 +237,7 @@ export interface FormEditor {
237
237
  }
238
238
  export type FormEditorInputPage = Pick<FormEditor, 'pageType' | 'questionType' | 'writtenAnswerSub' | 'dateSub' | 'locationSub' | 'listSub'>;
239
239
  export type FormEditorInputCheckAnswersSettings = Pick<FormEditor, 'needDeclaration' | 'declarationText'>;
240
- export type FormEditorInputQuestion = Pick<FormEditor, 'questionType' | 'name' | 'question' | 'shortDescription' | 'hintText' | 'questionOptional' | 'minLength' | 'maxLength' | 'regex' | 'rows' | 'classes' | 'prefix' | 'suffix' | 'precision' | 'min' | 'max' | 'maxFuture' | 'maxPast' | 'exactFiles' | 'minFiles' | 'maxFiles' | 'fileTypes' | 'documentTypes' | 'imageTypes' | 'tabularDataTypes' | 'autoCompleteOptions' | 'enhancedAction' | 'radioId' | 'radioText' | 'radioHint' | 'radioValue' | 'list' | 'listItemsData' | 'jsEnabled' | 'usePostcodeLookup' | 'giveInstructions' | 'instructionText'>;
240
+ export type FormEditorInputQuestion = Pick<FormEditor, 'questionType' | 'name' | 'question' | 'shortDescription' | 'hintText' | 'declarationText' | 'questionOptional' | 'minLength' | 'maxLength' | 'regex' | 'rows' | 'classes' | 'prefix' | 'suffix' | 'precision' | 'min' | 'max' | 'maxFuture' | 'maxPast' | 'exactFiles' | 'minFiles' | 'maxFiles' | 'fileTypes' | 'documentTypes' | 'imageTypes' | 'tabularDataTypes' | 'autoCompleteOptions' | 'enhancedAction' | 'radioId' | 'radioText' | 'radioHint' | 'radioValue' | 'list' | 'listItemsData' | 'jsEnabled' | 'usePostcodeLookup' | 'giveInstructions' | 'instructionText'>;
241
241
  export type FormEditorInputPageSettings = Pick<FormEditor, 'pageHeadingAndGuidance' | 'pageHeading' | 'guidanceText' | 'repeater' | 'minItems' | 'maxItems' | 'questionSetName' | 'exitPage'>;
242
242
  export type FormEditorInputGuidancePage = Pick<FormEditor, 'pageHeading' | 'guidanceText' | 'exitPage'>;
243
243
  export type FormEditorInputQuestionDetails = Pick<FormEditorInputQuestion, 'question' | 'hintText' | 'shortDescription' | 'questionOptional' | 'questionType' | 'fileTypes' | 'documentTypes' | 'imageTypes' | 'tabularDataTypes' | 'autoCompleteOptions' | 'enhancedAction' | 'radioId' | 'radioText' | 'radioHint' | 'radioValue' | 'listItemsData' | 'jsEnabled'>;
@@ -368,6 +368,12 @@ export interface GovukField {
368
368
  formGroup?: {
369
369
  classes?: string;
370
370
  };
371
+ preContent?: {
372
+ path?: string;
373
+ };
374
+ postContent?: {
375
+ path?: string;
376
+ };
371
377
  }
372
378
  export type GovukFieldQuestionOptional = Omit<GovukField, 'name' | 'items'> & {
373
379
  name: 'questionOptional';
@@ -405,6 +411,7 @@ export interface FormEditorGovukField {
405
411
  radiosOrCheckboxes?: GovukField;
406
412
  autoCompleteOptions?: GovukField;
407
413
  usePostcodeLookup?: GovukField;
414
+ declarationText?: GovukField;
408
415
  errorMessage?: {
409
416
  text: string;
410
417
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-editor/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-editor/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defra/forms-model",
3
- "version": "3.0.575",
3
+ "version": "3.0.577",
4
4
  "description": "A hapi plugin providing the model for Defra forms",
5
5
  "homepage": "https://github.com/DEFRA/forms-designer/tree/main/model#readme",
6
6
  "types": "dist/types/index.d.ts",
@@ -22,6 +22,7 @@
22
22
  "TelephoneNumberField",
23
23
  "FileUploadField",
24
24
  "EmailAddressField",
25
+ "DeclarationField",
25
26
  "listSub",
26
27
  "YesNoField",
27
28
  "CheckboxesField",
@@ -11,6 +11,7 @@
11
11
  "TelephoneNumberField",
12
12
  "FileUploadField",
13
13
  "EmailAddressField",
14
+ "DeclarationField",
14
15
  "YesNoField",
15
16
  "CheckboxesField",
16
17
  "RadiosField",
@@ -9,6 +9,7 @@
9
9
  "TelephoneNumberField",
10
10
  "FileUploadField",
11
11
  "EmailAddressField",
12
+ "DeclarationField",
12
13
  "listSub",
13
14
  "YesNoField",
14
15
  "CheckboxesField",
@@ -7,7 +7,8 @@ import {
7
7
  type PageFileUpload,
8
8
  type PageQuestion,
9
9
  type PageRepeat,
10
- type PageSummary
10
+ type PageSummary,
11
+ type PageTerminal
11
12
  } from '~/src/form/form-definition/types.js'
12
13
  import { ControllerPath, ControllerType } from '~/src/pages/enums.js'
13
14
 
@@ -127,3 +128,19 @@ export function buildRepeaterPage(
127
128
  controller: ControllerType.Repeat
128
129
  }
129
130
  }
131
+
132
+ export function buildTerminalPage(
133
+ partialTerminalPage: Partial<PageTerminal>
134
+ ): PageTerminal {
135
+ return {
136
+ components: [],
137
+ condition: '',
138
+ controller: ControllerType.Terminal,
139
+ events: undefined,
140
+ id: 'f44047cb-fadf-42bd-9d5c-864cf9dd70dc',
141
+ next: [],
142
+ path: '/terminal-page',
143
+ title: 'Terminal Page',
144
+ ...partialTerminalPage
145
+ }
146
+ }
@@ -1,17 +1,41 @@
1
+ import { type ConditionListItemRefValueDataV2 } from '~/src/conditions/types.js'
1
2
  import { type FormDefinition } from '~/src/form/form-definition/types.js'
2
3
 
3
4
  /**
4
- * TypeGuard to check if component is a ListComponentsDef
5
- * @param { FormDefinition | undefined } definition
5
+ * TypeGuard to check if something is a FormDefinition
6
+ * @param { unknown } definition
6
7
  * @returns { definition is FormDefinition }
7
8
  */
8
9
  export function isFormDefinition(
9
- definition: FormDefinition | undefined
10
+ definition: unknown
10
11
  ): definition is FormDefinition {
11
12
  if (!definition) {
12
13
  return false
13
14
  }
15
+
16
+ return (
17
+ typeof definition === 'object' &&
18
+ 'name' in definition &&
19
+ 'pages' in definition &&
20
+ 'conditions' in definition
21
+ )
22
+ }
23
+
24
+ /**
25
+ * TypeGuard to check if something is a ConditionListItemRefValueDataV2
26
+ * @param { unknown } conditionValueData
27
+ * @returns { definition is ConditionListItemRefValueDataV2 }
28
+ */
29
+ export function isConditionListItemRefValueData(
30
+ conditionValueData: unknown
31
+ ): conditionValueData is ConditionListItemRefValueDataV2 {
32
+ if (!conditionValueData) {
33
+ return false
34
+ }
35
+
14
36
  return (
15
- 'name' in definition && 'pages' in definition && 'conditions' in definition
37
+ typeof conditionValueData === 'object' &&
38
+ 'listId' in conditionValueData &&
39
+ 'itemId' in conditionValueData
16
40
  )
17
41
  }
@@ -24,7 +24,10 @@ import {
24
24
  type RelativeDateValueData,
25
25
  type RelativeDateValueDataV2
26
26
  } from '~/src/conditions/types.js'
27
- import { isFormDefinition } from '~/src/form/form-definition/helpers.js'
27
+ import {
28
+ isConditionListItemRefValueData,
29
+ isFormDefinition
30
+ } from '~/src/form/form-definition/helpers.js'
28
31
  import {
29
32
  SchemaVersion,
30
33
  type ConditionWrapper,
@@ -66,7 +69,7 @@ const conditionIdRef = Joi.ref('/conditions', {
66
69
  conditions.map((condition) => condition.id)
67
70
  })
68
71
 
69
- const componentIdRefSchema = Joi.ref('/pages', {
72
+ const componentIdRef = Joi.ref('/pages', {
70
73
  in: true,
71
74
  adjust: (pages: Page[]) =>
72
75
  pages.flatMap((page) =>
@@ -84,13 +87,89 @@ const listIdRef = Joi.ref('/lists', {
84
87
  lists.filter((list) => list.id).map((list) => list.id)
85
88
  })
86
89
 
87
- const listItemIdRef = Joi.ref('/lists', {
88
- in: true,
89
- adjust: (lists: List[]) =>
90
- lists.flatMap((list) =>
91
- list.items.filter((item) => item.id).map((item) => item.id)
90
+ export const listItemIdValidator = (
91
+ value: string,
92
+ helpers: CustomHelpers<ConditionListItemRefValueDataV2>
93
+ ) => {
94
+ const definition = helpers.state.ancestors.find(isFormDefinition) as
95
+ | FormDefinition
96
+ | undefined
97
+
98
+ // Validation may not have been fired on the full FormDefinition
99
+ // therefore we are unable to verify the list & item combination
100
+ if (!definition) {
101
+ return value
102
+ }
103
+
104
+ const conditionValue = helpers.state.ancestors[0]
105
+
106
+ if (!isConditionListItemRefValueData(conditionValue)) {
107
+ return value
108
+ }
109
+
110
+ const listId = conditionValue.listId
111
+ const list = definition.lists.find((list) => list.id === listId)
112
+
113
+ // This check is just for type safety. It'll be impossible for the list to not exist here as it will be
114
+ // handled by the `Joi.valid(listIdRef)` applied to the `ConditionListItemRefValueDataV2.listId` schema
115
+ if (!list) {
116
+ return value
117
+ }
118
+
119
+ const itemIdExists = list.items.some((item) => item.id === value)
120
+
121
+ return itemIdExists
122
+ ? value
123
+ : helpers.error('any.only', {
124
+ value,
125
+ valids: list.items.map((item) => item.id),
126
+ errorType: FormDefinitionErrorType.Ref,
127
+ errorCode: FormDefinitionError.RefConditionItemId
128
+ })
129
+ }
130
+
131
+ const incompatibleConditionValidator = (
132
+ value: ConditionDataV2,
133
+ helpers: CustomHelpers<ConditionDataV2>
134
+ ) => {
135
+ const { componentId } = value
136
+ const definition = helpers.state.ancestors.find(isFormDefinition) as
137
+ | FormDefinition
138
+ | undefined
139
+
140
+ // Validation may not have been fired on the full FormDefinition
141
+ // therefore we are unable to verify at this point, but the 'save'
142
+ // will eventually validate the full FormDefinition
143
+ if (!definition) {
144
+ return value
145
+ }
146
+
147
+ const foundComponents = definition.pages
148
+ .map((page) =>
149
+ hasComponentsEvenIfNoNext(page)
150
+ ? page.components.find((comp) => comp.id === componentId)
151
+ : undefined
92
152
  )
93
- })
153
+ .filter(Boolean)
154
+
155
+ const foundComponentHandlesConditions = foundComponents.length
156
+ ? isConditionalType(foundComponents[0]?.type)
157
+ : false
158
+
159
+ return foundComponentHandlesConditions
160
+ ? value
161
+ : helpers.error('custom.incompatible', {
162
+ incompatibleObject: {
163
+ key: 'type',
164
+ value: foundComponents[0]
165
+ },
166
+ valueKey: 'componentId',
167
+ value: componentId,
168
+ errorType: FormDefinitionErrorType.Incompatible,
169
+ errorCode: FormDefinitionError.IncompatibleConditionComponentType,
170
+ reason: 'does not support conditions'
171
+ })
172
+ }
94
173
 
95
174
  const sectionsSchema = Joi.object<Section>()
96
175
  .description('A form section grouping related pages together')
@@ -162,13 +241,9 @@ const conditionListItemRefDataSchemaV2 =
162
241
  .error(checkErrors(FormDefinitionError.RefConditionListId)),
163
242
  itemId: Joi.string()
164
243
  .trim()
165
- .when('/lists', {
166
- is: Joi.exist(),
167
- then: Joi.valid(listItemIdRef)
168
- })
169
244
  .required()
170
245
  .description('The id of the list item')
171
- .error(checkErrors(FormDefinitionError.RefConditionItemId))
246
+ .custom(listItemIdValidator)
172
247
  })
173
248
 
174
249
  const relativeDateValueDataSchemaV2 = Joi.object<RelativeDateValueDataV2>()
@@ -282,7 +357,7 @@ export const conditionDataSchemaV2 = Joi.object<ConditionDataV2>()
282
357
  .required()
283
358
  .when('/pages', {
284
359
  is: Joi.exist(),
285
- then: Joi.valid(componentIdRefSchema)
360
+ then: Joi.valid(componentIdRef)
286
361
  })
287
362
  .description(
288
363
  'Reference to the component id being evaluated in this condition'
@@ -324,46 +399,9 @@ export const conditionDataSchemaV2 = Joi.object<ConditionDataV2>()
324
399
  'Value to compare the field against, either fixed or relative date'
325
400
  )
326
401
  })
327
- .custom((value: ConditionDataV2, helpers: CustomHelpers<ConditionDataV2>) => {
328
- const { componentId } = value
329
- const definition = helpers.state.ancestors.find(isFormDefinition) as
330
- | FormDefinition
331
- | undefined
332
-
333
- // Validation may not have been fired on the full FormDefinition
334
- // therefore we are unable to verify at this point, but the 'save'
335
- // will eventually validate the full FormDefinition
336
- if (!definition) {
337
- return value
338
- }
339
-
340
- const foundComponents = definition.pages
341
- .map((page) =>
342
- hasComponentsEvenIfNoNext(page)
343
- ? page.components.find((comp) => comp.id === componentId)
344
- : undefined
345
- )
346
- .filter(Boolean)
347
-
348
- const foundComponentHandlesConditions = foundComponents.length
349
- ? isConditionalType(foundComponents[0]?.type)
350
- : false
351
-
352
- return foundComponentHandlesConditions
353
- ? value
354
- : helpers.error('custom.incompatible', {
355
- incompatibleObject: {
356
- key: 'type',
357
- value: foundComponents[0]
358
- },
359
- valueKey: 'componentId',
360
- value: componentId,
361
- errorType: FormDefinitionErrorType.Incompatible,
362
- errorCode: FormDefinitionError.IncompatibleConditionComponentType,
363
- reason: 'does not support conditions'
364
- })
365
- })
402
+ .custom(incompatibleConditionValidator)
366
403
  .messages({
404
+ // Custom error types require a corresponding messages
367
405
  'custom.incompatible': 'Incompatible data value'
368
406
  })
369
407
 
@@ -101,11 +101,6 @@ export class QuestionPreviewElements {
101
101
  * @private
102
102
  */
103
103
  _items = []
104
- /**
105
- * @protected
106
- * @type {boolean}
107
- */
108
- _usePostcodeLookup = false
109
104
  afterInputsHTML = '<div class="govuk-inset-text">No items added yet.</div>'
110
105
 
111
106
  /**
@@ -117,7 +112,6 @@ export class QuestionPreviewElements {
117
112
  optional,
118
113
  shortDesc,
119
114
  userClasses,
120
- usePostcodeLookup,
121
115
  items,
122
116
  content
123
117
  }) {
@@ -128,7 +122,6 @@ export class QuestionPreviewElements {
128
122
  this._userClasses = userClasses
129
123
  this._items = items
130
124
  this._content = content
131
- this._usePostcodeLookup = usePostcodeLookup ?? false
132
125
  }
133
126
 
134
127
  /**
@@ -141,7 +134,6 @@ export class QuestionPreviewElements {
141
134
  optional: this._optional,
142
135
  shortDesc: this._shortDesc,
143
136
  userClasses: this._userClasses,
144
- usePostcodeLookup: this._usePostcodeLookup,
145
137
  items: this._items,
146
138
  content: this._content
147
139
  }
@@ -175,6 +167,52 @@ export class AutocompletePreviewElements extends QuestionPreviewElements {
175
167
  }
176
168
  }
177
169
 
170
+ /**
171
+ * @implements {UkAddressElements}
172
+ */
173
+ export class UkAddressPreviewElements extends QuestionPreviewElements {
174
+ /**
175
+ * @param {BaseSettings & {usePostcodeLookup?: boolean}} elements
176
+ */
177
+ constructor({ usePostcodeLookup, ...elements }) {
178
+ super(elements)
179
+ this._usePostcodeLookup = usePostcodeLookup ?? false
180
+ }
181
+
182
+ /**
183
+ * @returns {UkAddressSettings}
184
+ */
185
+ get values() {
186
+ return {
187
+ ...super.values,
188
+ usePostcodeLookup: this._usePostcodeLookup
189
+ }
190
+ }
191
+ }
192
+
193
+ /**
194
+ * @implements {DeclarationElements}
195
+ */
196
+ export class DeclarationPreviewElements extends QuestionPreviewElements {
197
+ /**
198
+ * @param {BaseSettings & {declarationText: string}} elements
199
+ */
200
+ constructor({ declarationText, ...elements }) {
201
+ super(elements)
202
+ this._declarationText = declarationText
203
+ }
204
+
205
+ /**
206
+ * @returns {DeclarationSettings}
207
+ */
208
+ get values() {
209
+ return {
210
+ ...super.values,
211
+ declarationText: this._declarationText
212
+ }
213
+ }
214
+ }
215
+
178
216
  /**
179
217
  * @implements {PageOverviewElements}
180
218
  */
@@ -329,11 +367,6 @@ export class NumberPreviewElements {
329
367
  * @private
330
368
  */
331
369
  _items = []
332
- /**
333
- * @protected
334
- * @type {boolean}
335
- */
336
- _usePostcodeLookup = false
337
370
  afterInputsHTML = '<div class="govuk-inset-text">No items added yet.</div>'
338
371
 
339
372
  /**
@@ -347,7 +380,6 @@ export class NumberPreviewElements {
347
380
  userClasses,
348
381
  prefix,
349
382
  suffix,
350
- usePostcodeLookup,
351
383
  items,
352
384
  content
353
385
  }) {
@@ -360,7 +392,6 @@ export class NumberPreviewElements {
360
392
  this._suffix = suffix
361
393
  this._items = items
362
394
  this._content = content
363
- this._usePostcodeLookup = usePostcodeLookup ?? false
364
395
  }
365
396
 
366
397
  /**
@@ -375,7 +406,6 @@ export class NumberPreviewElements {
375
406
  userClasses: this._userClasses,
376
407
  prefix: this._prefix,
377
408
  suffix: this._suffix,
378
- usePostcodeLookup: this._usePostcodeLookup,
379
409
  items: this._items,
380
410
  content: this._content
381
411
  }
@@ -399,5 +429,5 @@ export class NumberPreviewElements {
399
429
  /**
400
430
  * @import { ListElement } from '~/src/form/form-editor/types.js'
401
431
  * @import { PagePreviewPanelMacro } from '~/src/form/form-editor/macros/types.js'
402
- * @import { BaseSettings, ListElements, NumberSettings, RenderContext, QuestionBaseModel, QuestionRenderer, AutocompleteElements, PageOverviewElements, PageRenderer } from '~/src/form/form-editor/preview/types.js'
432
+ * @import { BaseSettings, ListElements, NumberSettings, RenderContext, QuestionBaseModel, QuestionRenderer, AutocompleteElements, PageOverviewElements, PageRenderer, UkAddressElements, UkAddressSettings, DeclarationElements, DeclarationSettings } from '~/src/form/form-editor/preview/types.js'
403
433
  */
@@ -38,6 +38,7 @@ export const questionTypeSchema = Joi.string()
38
38
  ComponentType.TelephoneNumberField,
39
39
  ComponentType.FileUploadField,
40
40
  ComponentType.EmailAddressField,
41
+ ComponentType.DeclarationField,
41
42
  QuestionTypeSubGroup.ListSubGroup,
42
43
  ComponentType.YesNoField,
43
44
  ComponentType.CheckboxesField,
@@ -58,6 +59,7 @@ export const questionTypeFullSchema = Joi.string()
58
59
  ComponentType.TelephoneNumberField,
59
60
  ComponentType.FileUploadField,
60
61
  ComponentType.EmailAddressField,
62
+ ComponentType.DeclarationField,
61
63
  ComponentType.YesNoField,
62
64
  ComponentType.CheckboxesField,
63
65
  ComponentType.RadiosField,
@@ -532,6 +534,7 @@ export const autoCompleteOptionsSchema = customValidator
532
534
  export const questionDetailsFullSchema = {
533
535
  autoCompleteOptionsSchema,
534
536
  classesSchema,
537
+ declarationTextSchema,
535
538
  documentTypesSchema,
536
539
  enhancedActionSchema,
537
540
  exactFilesSchema,
@@ -60,6 +60,13 @@ export interface QuestionBaseModel {
60
60
  suffix?: { text: string }
61
61
  }
62
62
 
63
+ export interface DeclarationModel extends QuestionBaseModel {
64
+ declaration?: {
65
+ text?: string
66
+ classes?: string
67
+ }
68
+ }
69
+
63
70
  export interface AppPreviewPanelMacro extends AppPreviewPanelTabsMacro {
64
71
  model: QuestionBaseModel
65
72
  }
@@ -0,0 +1,88 @@
1
+ import { ComponentType } from '~/src/components/enums.js'
2
+ import { HIGHLIGHT_CLASS } from '~/src/form/form-editor/preview/constants.js'
3
+ import { PreviewComponent } from '~/src/form/form-editor/preview/preview.js'
4
+ import {
5
+ Question,
6
+ QuestionComponentElements
7
+ } from '~/src/form/form-editor/preview/question.js'
8
+
9
+ /**
10
+ * @implements {QuestionElements}
11
+ */
12
+ export class DeclarationComponentPreviewElements extends QuestionComponentElements {
13
+ /**
14
+ * @param {DeclarationFieldComponent} component
15
+ */
16
+ constructor(component) {
17
+ super(component)
18
+ this._declarationText = component.content
19
+ }
20
+
21
+ /**
22
+ * @protected
23
+ * @returns {DeclarationSettings}
24
+ */
25
+ _getValues() {
26
+ return {
27
+ ...super._getValues(),
28
+ declarationText: this._declarationText
29
+ }
30
+ }
31
+ }
32
+
33
+ export class DeclarationQuestion extends Question {
34
+ /**
35
+ * @type {ComponentType}
36
+ */
37
+ componentType = ComponentType.DeclarationField
38
+ /**
39
+ * @type {string}
40
+ * @protected
41
+ */
42
+ _questionTemplate = PreviewComponent.PATH + 'declarationfield.njk'
43
+ _fieldName = 'DeclarationField'
44
+ _declarationText = ''
45
+
46
+ /**
47
+ * @param {DeclarationElements} htmlElements
48
+ * @param {QuestionRenderer} questionRenderer
49
+ */
50
+ constructor(htmlElements, questionRenderer) {
51
+ super(htmlElements, questionRenderer)
52
+ this._declarationText = htmlElements.values.declarationText
53
+ }
54
+
55
+ get declarationText() {
56
+ return this._declarationText
57
+ }
58
+
59
+ /**
60
+ * @param {string} val
61
+ */
62
+ set declarationText(val) {
63
+ this._declarationText = val
64
+ this.render()
65
+ }
66
+
67
+ /**
68
+ * @protected
69
+ * @returns {DeclarationModel}
70
+ */
71
+ _renderInput() {
72
+ return {
73
+ ...super._renderInput(),
74
+ declaration: {
75
+ text: this._declarationText
76
+ ? this._declarationText
77
+ : 'Declaration text',
78
+ classes: this._highlight === 'declarationText' ? HIGHLIGHT_CLASS : ''
79
+ }
80
+ }
81
+ }
82
+ }
83
+
84
+ /**
85
+ * @import { DeclarationSettings, DeclarationElements, QuestionElements, QuestionRenderer } from '~/src/form/form-editor/preview/types.js'
86
+ * @import { DeclarationModel } from '~/src/form/form-editor/macros/types.js'
87
+ * @import { DeclarationFieldComponent } from '~/src/components/types.js'
88
+ */