@defra/forms-model 3.0.447 → 3.0.449

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 (95) hide show
  1. package/dist/module/form/form-definition/index.js +1 -1
  2. package/dist/module/form/form-definition/index.js.map +1 -1
  3. package/dist/module/form/form-editor/__stubs__/preview.js +105 -0
  4. package/dist/module/form/form-editor/__stubs__/preview.js.map +1 -0
  5. package/dist/module/form/form-editor/index.js +14 -0
  6. package/dist/module/form/form-editor/index.js.map +1 -1
  7. package/dist/module/form/form-editor/preview/date-input.js +17 -0
  8. package/dist/module/form/form-editor/preview/date-input.js.map +1 -0
  9. package/dist/module/form/form-editor/preview/email-address.js +6 -0
  10. package/dist/module/form/form-editor/preview/email-address.js.map +1 -0
  11. package/dist/module/form/form-editor/preview/index.js +11 -0
  12. package/dist/module/form/form-editor/preview/index.js.map +1 -0
  13. package/dist/module/form/form-editor/preview/list-sortable.js +40 -0
  14. package/dist/module/form/form-editor/preview/list-sortable.js.map +1 -0
  15. package/dist/module/form/form-editor/preview/list.js +182 -0
  16. package/dist/module/form/form-editor/preview/list.js.map +1 -0
  17. package/dist/module/form/form-editor/preview/phone-number.js +10 -0
  18. package/dist/module/form/form-editor/preview/phone-number.js.map +1 -0
  19. package/dist/module/form/form-editor/preview/question.js +197 -0
  20. package/dist/module/form/form-editor/preview/question.js.map +1 -0
  21. package/dist/module/form/form-editor/preview/radio-sortable.js +5 -0
  22. package/dist/module/form/form-editor/preview/radio-sortable.js.map +1 -0
  23. package/dist/module/form/form-editor/preview/radio.js +5 -0
  24. package/dist/module/form/form-editor/preview/radio.js.map +1 -0
  25. package/dist/module/form/form-editor/preview/short-answer.js +3 -0
  26. package/dist/module/form/form-editor/preview/short-answer.js.map +1 -0
  27. package/dist/module/form/form-editor/preview/types.js +2 -0
  28. package/dist/module/form/form-editor/preview/types.js.map +1 -0
  29. package/dist/module/form/form-editor/preview/uk-address.js +6 -0
  30. package/dist/module/form/form-editor/preview/uk-address.js.map +1 -0
  31. package/dist/module/form/form-editor/types.js.map +1 -1
  32. package/dist/module/form/form-manager/types.js.map +1 -1
  33. package/dist/module/index.js +1 -1
  34. package/dist/module/index.js.map +1 -1
  35. package/dist/types/form/form-definition/index.d.ts +2 -1
  36. package/dist/types/form/form-definition/index.d.ts.map +1 -1
  37. package/dist/types/form/form-editor/__stubs__/preview.d.ts +72 -0
  38. package/dist/types/form/form-editor/__stubs__/preview.d.ts.map +1 -0
  39. package/dist/types/form/form-editor/index.d.ts +7 -1
  40. package/dist/types/form/form-editor/index.d.ts.map +1 -1
  41. package/dist/types/form/form-editor/preview/date-input.d.ts +10 -0
  42. package/dist/types/form/form-editor/preview/date-input.d.ts.map +1 -0
  43. package/dist/types/form/form-editor/preview/email-address.d.ts +4 -0
  44. package/dist/types/form/form-editor/preview/email-address.d.ts.map +1 -0
  45. package/dist/types/form/form-editor/preview/index.d.ts +11 -0
  46. package/dist/types/form/form-editor/preview/index.d.ts.map +1 -0
  47. package/dist/types/form/form-editor/preview/list-sortable.d.ts +17 -0
  48. package/dist/types/form/form-editor/preview/list-sortable.d.ts.map +1 -0
  49. package/dist/types/form/form-editor/preview/list.d.ts +81 -0
  50. package/dist/types/form/form-editor/preview/list.d.ts.map +1 -0
  51. package/dist/types/form/form-editor/preview/phone-number.d.ts +4 -0
  52. package/dist/types/form/form-editor/preview/phone-number.d.ts.map +1 -0
  53. package/dist/types/form/form-editor/preview/question.d.ts +119 -0
  54. package/dist/types/form/form-editor/preview/question.d.ts.map +1 -0
  55. package/dist/types/form/form-editor/preview/radio-sortable.d.ts +4 -0
  56. package/dist/types/form/form-editor/preview/radio-sortable.d.ts.map +1 -0
  57. package/dist/types/form/form-editor/preview/radio.d.ts +4 -0
  58. package/dist/types/form/form-editor/preview/radio.d.ts.map +1 -0
  59. package/dist/types/form/form-editor/preview/short-answer.d.ts +4 -0
  60. package/dist/types/form/form-editor/preview/short-answer.d.ts.map +1 -0
  61. package/dist/types/form/form-editor/preview/types.d.ts +52 -0
  62. package/dist/types/form/form-editor/preview/types.d.ts.map +1 -0
  63. package/dist/types/form/form-editor/preview/uk-address.d.ts +4 -0
  64. package/dist/types/form/form-editor/preview/uk-address.d.ts.map +1 -0
  65. package/dist/types/form/form-editor/types.d.ts +36 -6
  66. package/dist/types/form/form-editor/types.d.ts.map +1 -1
  67. package/dist/types/form/form-manager/types.d.ts +2 -2
  68. package/dist/types/form/form-manager/types.d.ts.map +1 -1
  69. package/dist/types/index.d.ts +2 -1
  70. package/dist/types/index.d.ts.map +1 -1
  71. package/package.json +2 -2
  72. package/src/form/form-definition/index.ts +1 -1
  73. package/src/form/form-editor/__stubs__/preview.js +101 -0
  74. package/src/form/form-editor/index.ts +43 -1
  75. package/src/form/form-editor/preview/date-input.js +18 -0
  76. package/src/form/form-editor/preview/email-address.js +6 -0
  77. package/src/form/form-editor/preview/index.js +10 -0
  78. package/src/form/form-editor/preview/list-sortable.js +39 -0
  79. package/src/form/form-editor/preview/list.js +202 -0
  80. package/src/form/form-editor/preview/phone-number.js +10 -0
  81. package/src/form/form-editor/preview/question.js +199 -0
  82. package/src/form/form-editor/preview/radio-sortable.js +5 -0
  83. package/src/form/form-editor/preview/radio.js +5 -0
  84. package/src/form/form-editor/preview/short-answer.js +3 -0
  85. package/src/form/form-editor/preview/types.ts +60 -0
  86. package/src/form/form-editor/preview/uk-address.js +6 -0
  87. package/src/form/form-editor/types.ts +47 -2
  88. package/src/form/form-manager/types.ts +2 -2
  89. package/src/index.ts +2 -1
  90. package/dist/module/form/form-manager/index.js +0 -7
  91. package/dist/module/form/form-manager/index.js.map +0 -1
  92. package/dist/types/form/form-manager/index.d.ts +0 -3
  93. package/dist/types/form/form-manager/index.d.ts.map +0 -1
  94. package/schemas/patch-page-schema.json +0 -26
  95. package/src/form/form-manager/index.ts +0 -21
@@ -0,0 +1,3 @@
1
+ import { Question } from '~/src/form/form-editor/preview/question.js'
2
+
3
+ export class ShortAnswerQuestion extends Question {}
@@ -0,0 +1,60 @@
1
+ import {
2
+ type ListElement,
3
+ type ListItemReadonly
4
+ } from '~/src/form/form-editor/types.js'
5
+
6
+ export interface BaseSettings {
7
+ question: string
8
+ hintText: string
9
+ optional: boolean
10
+ shortDesc: string
11
+ items: ListElement[]
12
+ }
13
+
14
+ export interface DefaultComponent {
15
+ id?: string
16
+ text: string
17
+ classes: string
18
+ }
19
+
20
+ export interface GovukFieldset {
21
+ legend: DefaultComponent
22
+ }
23
+
24
+ export interface QuestionBaseModel {
25
+ id?: string
26
+ name?: string
27
+ label?: DefaultComponent
28
+ hint?: DefaultComponent
29
+ fieldset?: GovukFieldset
30
+ readonly items?: ListItemReadonly[]
31
+ text?: string
32
+ formGroup?: { afterInputs: { html: string } }
33
+ }
34
+
35
+ export type ListenerRow = [
36
+ HTMLInputElement | null,
37
+ (target: HTMLInputElement, e: Event) => void,
38
+ keyof HTMLElementEventMap
39
+ ]
40
+
41
+ export interface QuestionElements {
42
+ readonly values: BaseSettings
43
+ setPreviewHTML(value: string): void
44
+ }
45
+
46
+ export interface RenderContext {
47
+ model: QuestionBaseModel
48
+ }
49
+
50
+ export interface HTMLBuilder {
51
+ buildHTML(questionTemplate: string, renderContext: RenderContext): string
52
+ }
53
+
54
+ export interface QuestionRenderer {
55
+ render(questionTemplate: string, questionBaseModel: QuestionBaseModel): void
56
+ }
57
+
58
+ export interface ListElements extends QuestionElements {
59
+ afterInputsHTML: string
60
+ }
@@ -0,0 +1,6 @@
1
+ import { Question } from '~/src/form/form-editor/preview/question.js'
2
+
3
+ export class UkAddressQuestion extends Question {
4
+ _questionTemplate = 'ukaddressfield.njk'
5
+ _fieldName = 'addressField'
6
+ }
@@ -71,6 +71,26 @@ export interface FormEditor {
71
71
  */
72
72
  guidanceText: string
73
73
 
74
+ /**
75
+ * The value of checkbox to reveal repeater section
76
+ */
77
+ repeater: string
78
+
79
+ /**
80
+ * The maximum number of repeater items
81
+ */
82
+ minItems: number
83
+
84
+ /**
85
+ * The minimum number of repeater items
86
+ */
87
+ maxItems: number
88
+
89
+ /**
90
+ * The repeater question set name
91
+ */
92
+ questionSetName: string
93
+
74
94
  /**
75
95
  * The value of radio to reveal declaration text field
76
96
  */
@@ -277,7 +297,13 @@ export type FormEditorInputQuestion = Pick<
277
297
 
278
298
  export type FormEditorInputPageSettings = Pick<
279
299
  FormEditor,
280
- 'pageHeadingAndGuidance' | 'pageHeading' | 'guidanceText'
300
+ | 'pageHeadingAndGuidance'
301
+ | 'pageHeading'
302
+ | 'guidanceText'
303
+ | 'repeater'
304
+ | 'minItems'
305
+ | 'maxItems'
306
+ | 'questionSetName'
281
307
  >
282
308
 
283
309
  export type FormEditorInputGuidancePage = Pick<
@@ -354,6 +380,12 @@ export interface QuestionSessionState {
354
380
  lastMoveDirection?: string
355
381
  }
356
382
 
383
+ export interface GovukFieldItem {
384
+ text?: string
385
+ value?: string
386
+ checked?: boolean
387
+ }
388
+
357
389
  export interface GovukField {
358
390
  id?: string
359
391
  name?: string
@@ -370,12 +402,25 @@ export interface GovukField {
370
402
  isPageHeading?: boolean
371
403
  }
372
404
  hint?: { text?: string; html?: string; classes?: string }
373
- items?: { text?: string; value?: string; checked?: boolean }[]
405
+ items?: GovukFieldItem[]
374
406
  rows?: number
375
407
  type?: string
376
408
  customTemplate?: string
377
409
  }
378
410
 
411
+ export type GovukFieldQuestionOptional = Omit<GovukField, 'name' | 'items'> & {
412
+ name: 'questionOptional'
413
+ items: [
414
+ {
415
+ text?: string
416
+ value?: string
417
+ checked: boolean
418
+ }
419
+ ]
420
+ }
421
+
422
+ export type GovukStringField = Omit<GovukField, 'value'> & { value: string }
423
+
379
424
  export interface FormEditorGovukField {
380
425
  question?: GovukField
381
426
  hintText?: GovukField
@@ -1,7 +1,7 @@
1
- import { type Page } from '~/src/index.js'
1
+ import { type PageRepeat } from '~/src/index.js'
2
2
 
3
3
  export type PatchPageFields = Partial<
4
- Pick<Page, 'title' | 'path' | 'controller'>
4
+ Pick<PageRepeat, 'title' | 'path' | 'controller' | 'repeat'>
5
5
  >
6
6
 
7
7
  export interface AddComponentQueryOptions {
package/src/index.ts CHANGED
@@ -12,7 +12,7 @@ export * from '~/src/form/form-metadata/index.js'
12
12
  export * from '~/src/form/form-submission/index.js'
13
13
  export * from '~/src/form/utils/index.js'
14
14
  export * from '~/src/form/form-editor/index.js'
15
- export * from '~/src/form/form-manager/index.js'
15
+ export * from '~/src/form/form-editor/preview/index.js'
16
16
  export * from '~/src/form/form-manager/types.js'
17
17
  export * from '~/src/pages/index.js'
18
18
  export * from '~/src/utils/helpers.js'
@@ -27,4 +27,5 @@ export type * from '~/src/conditions/types.js'
27
27
  export type * from '~/src/form/form-definition/types.js'
28
28
  export type * from '~/src/form/form-metadata/types.js'
29
29
  export type * from '~/src/form/form-submission/types.js'
30
+ export type * from '~/src/form/form-editor/preview/types.js'
30
31
  export type * from '~/src/form/form-editor/types.js'
@@ -1,7 +0,0 @@
1
- import Joi from 'joi';
2
- import { pageSchema } from "../form-definition/index.js";
3
- export const patchPageSchema = Joi.object().keys({
4
- title: pageSchema.extract('title').optional().description('New title to set for the page'),
5
- path: pageSchema.extract('path').optional().description('New URL path to set for the page')
6
- }).required().min(1).description('Schema for partially updating a page, requiring at least one field to be provided');
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["Joi","pageSchema","patchPageSchema","object","keys","title","extract","optional","description","path","required","min"],"sources":["../../../../src/form/form-manager/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport { pageSchema } from '~/src/form/form-definition/index.js'\nimport { type PatchPageFields } from '~/src/form/form-manager/types.js'\n\nexport const patchPageSchema = Joi.object<PatchPageFields>()\n .keys({\n title: pageSchema\n .extract('title')\n .optional()\n .description('New title to set for the page'),\n path: pageSchema\n .extract('path')\n .optional()\n .description('New URL path to set for the page')\n })\n .required()\n .min(1)\n .description(\n 'Schema for partially updating a page, requiring at least one field to be provided'\n )\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,KAAK;AAErB,SAASC,UAAU;AAGnB,OAAO,MAAMC,eAAe,GAAGF,GAAG,CAACG,MAAM,CAAkB,CAAC,CACzDC,IAAI,CAAC;EACJC,KAAK,EAAEJ,UAAU,CACdK,OAAO,CAAC,OAAO,CAAC,CAChBC,QAAQ,CAAC,CAAC,CACVC,WAAW,CAAC,+BAA+B,CAAC;EAC/CC,IAAI,EAAER,UAAU,CACbK,OAAO,CAAC,MAAM,CAAC,CACfC,QAAQ,CAAC,CAAC,CACVC,WAAW,CAAC,kCAAkC;AACnD,CAAC,CAAC,CACDE,QAAQ,CAAC,CAAC,CACVC,GAAG,CAAC,CAAC,CAAC,CACNH,WAAW,CACV,mFACF,CAAC","ignoreList":[]}
@@ -1,3 +0,0 @@
1
- import Joi from 'joi';
2
- export declare const patchPageSchema: Joi.ObjectSchema<Partial<Pick<import("../form-definition/types.js").Page, "title" | "path" | "controller">>>;
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-manager/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAKrB,eAAO,MAAM,eAAe,8GAezB,CAAA"}
@@ -1,26 +0,0 @@
1
- {
2
- "type": "object",
3
- "description": "Schema for partially updating a page, requiring at least one field to be provided",
4
- "properties": {
5
- "title": {
6
- "type": "string",
7
- "description": "New title to set for the page",
8
- "title": "Title"
9
- },
10
- "path": {
11
- "type": "string",
12
- "description": "New URL path to set for the page",
13
- "not": {
14
- "type": "string",
15
- "enum": [
16
- "/status"
17
- ]
18
- },
19
- "title": "Path"
20
- }
21
- },
22
- "additionalProperties": false,
23
- "$schema": "http://json-schema.org/draft-07/schema#",
24
- "title": "Patch Page Schema",
25
- "$id": "@defra/forms-model/schemas/patch-page-schema.json"
26
- }
@@ -1,21 +0,0 @@
1
- import Joi from 'joi'
2
-
3
- import { pageSchema } from '~/src/form/form-definition/index.js'
4
- import { type PatchPageFields } from '~/src/form/form-manager/types.js'
5
-
6
- export const patchPageSchema = Joi.object<PatchPageFields>()
7
- .keys({
8
- title: pageSchema
9
- .extract('title')
10
- .optional()
11
- .description('New title to set for the page'),
12
- path: pageSchema
13
- .extract('path')
14
- .optional()
15
- .description('New URL path to set for the page')
16
- })
17
- .required()
18
- .min(1)
19
- .description(
20
- 'Schema for partially updating a page, requiring at least one field to be provided'
21
- )