@defra/forms-model 3.0.430 → 3.0.432

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 (78) hide show
  1. package/README.md +163 -1
  2. package/dist/module/common/pagination/index.js +2 -2
  3. package/dist/module/common/pagination/index.js.map +1 -1
  4. package/dist/module/common/search/index.js +4 -4
  5. package/dist/module/common/search/index.js.map +1 -1
  6. package/dist/module/common/sorting/index.js +2 -2
  7. package/dist/module/common/sorting/index.js.map +1 -1
  8. package/dist/module/form/form-definition/index.js +156 -156
  9. package/dist/module/form/form-definition/index.js.map +1 -1
  10. package/dist/module/form/form-editor/index.js +42 -42
  11. package/dist/module/form/form-editor/index.js.map +1 -1
  12. package/dist/module/form/form-manager/index.js +3 -3
  13. package/dist/module/form/form-manager/index.js.map +1 -1
  14. package/dist/module/form/form-metadata/index.js +34 -34
  15. package/dist/module/form/form-metadata/index.js.map +1 -1
  16. package/dist/module/form/form-submission/index.js +13 -13
  17. package/dist/module/form/form-submission/index.js.map +1 -1
  18. package/dist/module/types/joi-to-json.d.js +2 -0
  19. package/dist/module/types/joi-to-json.d.js.map +1 -0
  20. package/dist/types/common/pagination/index.d.ts.map +1 -1
  21. package/dist/types/common/search/index.d.ts.map +1 -1
  22. package/dist/types/common/sorting/index.d.ts.map +1 -1
  23. package/dist/types/form/form-definition/index.d.ts.map +1 -1
  24. package/dist/types/form/form-editor/index.d.ts +12 -12
  25. package/dist/types/form/form-editor/index.d.ts.map +1 -1
  26. package/dist/types/form/form-manager/index.d.ts.map +1 -1
  27. package/dist/types/form/form-metadata/index.d.ts.map +1 -1
  28. package/dist/types/form/form-submission/index.d.ts.map +1 -1
  29. package/package.json +6 -4
  30. package/schemas/component-schema-v2.json +162 -0
  31. package/schemas/component-schema.json +162 -0
  32. package/schemas/date-sub-schema.json +11 -0
  33. package/schemas/form-definition-schema.json +1876 -0
  34. package/schemas/form-definition-v2-payload-schema.json +1459 -0
  35. package/schemas/form-editor-input-check-answers-setting-schema.json +18 -0
  36. package/schemas/form-editor-input-page-schema.json +41 -0
  37. package/schemas/form-editor-input-page-settings-schema.json +28 -0
  38. package/schemas/form-editor-input-question-schema.json +38 -0
  39. package/schemas/form-metadata-author-schema.json +24 -0
  40. package/schemas/form-metadata-contact-schema.json +61 -0
  41. package/schemas/form-metadata-email-schema.json +25 -0
  42. package/schemas/form-metadata-input-schema.json +127 -0
  43. package/schemas/form-metadata-online-schema.json +25 -0
  44. package/schemas/form-metadata-schema.json +340 -0
  45. package/schemas/form-metadata-state-schema.json +72 -0
  46. package/schemas/form-submit-payload-schema.json +124 -0
  47. package/schemas/form-submit-record-schema.json +30 -0
  48. package/schemas/form-submit-recordset-schema.json +62 -0
  49. package/schemas/list-schema-v2.json +486 -0
  50. package/schemas/list-schema.json +486 -0
  51. package/schemas/max-future-schema.json +8 -0
  52. package/schemas/max-length-schema.json +8 -0
  53. package/schemas/max-past-schema.json +8 -0
  54. package/schemas/max-schema.json +7 -0
  55. package/schemas/min-length-schema.json +8 -0
  56. package/schemas/min-schema.json +7 -0
  57. package/schemas/page-schema-payload-v2.json +400 -0
  58. package/schemas/page-schema-v2.json +400 -0
  59. package/schemas/page-schema.json +400 -0
  60. package/schemas/page-type-schema.json +11 -0
  61. package/schemas/pagination-options-schema.json +27 -0
  62. package/schemas/patch-page-schema.json +26 -0
  63. package/schemas/query-options-schema.json +94 -0
  64. package/schemas/question-schema.json +7 -0
  65. package/schemas/question-type-full-schema.json +22 -0
  66. package/schemas/question-type-schema.json +20 -0
  67. package/schemas/search-options-schema.json +59 -0
  68. package/schemas/sorting-options-schema.json +28 -0
  69. package/schemas/written-answer-sub-schema.json +12 -0
  70. package/src/common/pagination/index.ts +8 -1
  71. package/src/common/search/index.ts +17 -3
  72. package/src/common/sorting/index.ts +8 -2
  73. package/src/form/form-definition/index.ts +567 -238
  74. package/src/form/form-editor/index.ts +202 -29
  75. package/src/form/form-manager/index.ts +11 -2
  76. package/src/form/form-metadata/index.ts +118 -40
  77. package/src/form/form-submission/index.ts +33 -10
  78. package/src/types/joi-to-json.d.ts +15 -0
@@ -0,0 +1,28 @@
1
+ {
2
+ "type": "object",
3
+ "properties": {
4
+ "sortBy": {
5
+ "type": "string",
6
+ "description": "Field to sort results by",
7
+ "enum": [
8
+ "updatedAt",
9
+ "title"
10
+ ],
11
+ "title": "Sort By"
12
+ },
13
+ "order": {
14
+ "type": "string",
15
+ "description": "Sort order (ascending or descending)",
16
+ "enum": [
17
+ "asc",
18
+ "desc"
19
+ ],
20
+ "title": "Order"
21
+ }
22
+ },
23
+ "additionalProperties": false,
24
+ "$schema": "http://json-schema.org/draft-07/schema#",
25
+ "title": "Sorting Options Schema",
26
+ "description": "JSON Schema for validating Sorting Options Schema in Defra forms",
27
+ "$id": "@defra/forms-model/schemas/sorting-options-schema.json"
28
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "type": "string",
3
+ "description": "Subtype for written answer questions",
4
+ "enum": [
5
+ "TextField",
6
+ "MultilineTextField",
7
+ "NumberField"
8
+ ],
9
+ "$schema": "http://json-schema.org/draft-07/schema#",
10
+ "title": "Written Answer Sub Schema",
11
+ "$id": "@defra/forms-model/schemas/written-answer-sub-schema.json"
12
+ }
@@ -6,7 +6,13 @@ import { type PaginationOptions } from '~/src/common/pagination/types.js'
6
6
  * Field definitions for pagination options.
7
7
  */
8
8
  export const paginationOptionFields = {
9
- page: Joi.number().positive().integer().default(1).min(1).optional(),
9
+ page: Joi.number()
10
+ .positive()
11
+ .integer()
12
+ .default(1)
13
+ .min(1)
14
+ .optional()
15
+ .description('Current page number, starting from 1'),
10
16
  perPage: Joi.number()
11
17
  .positive()
12
18
  .integer()
@@ -14,6 +20,7 @@ export const paginationOptionFields = {
14
20
  .min(1)
15
21
  .max(200)
16
22
  .optional()
23
+ .description('Number of items to display per page, between 1 and 200')
17
24
  }
18
25
 
19
26
  /**
@@ -7,18 +7,32 @@ import { organisations } from '~/src/form/form-metadata/index.js'
7
7
  * Field definitions for search options.
8
8
  */
9
9
  export const searchOptionFields = {
10
- title: Joi.string().trim().allow('').max(255).optional().default(''),
11
- author: Joi.string().trim().allow('').max(100).optional().default(''),
10
+ title: Joi.string()
11
+ .trim()
12
+ .allow('')
13
+ .max(255)
14
+ .optional()
15
+ .default('')
16
+ .description('Search by form title, empty string matches all'),
17
+ author: Joi.string()
18
+ .trim()
19
+ .allow('')
20
+ .max(100)
21
+ .optional()
22
+ .default('')
23
+ .description('Search by form author, empty string matches all'),
12
24
  organisations: Joi.array()
13
25
  .items(Joi.string().valid(...organisations))
14
26
  .single()
15
27
  .optional()
16
- .default([]),
28
+ .default([])
29
+ .description('Filter by organisation(s), empty array matches all'),
17
30
  status: Joi.array()
18
31
  .items(Joi.string().valid('draft', 'live'))
19
32
  .single()
20
33
  .optional()
21
34
  .default([])
35
+ .description('Filter by form status(es), empty array matches all')
22
36
  }
23
37
 
24
38
  /**
@@ -6,8 +6,14 @@ import { type SortingOptions } from '~/src/common/sorting/types.js'
6
6
  * Field definitions for sorting options.
7
7
  */
8
8
  export const sortingOptionFields = {
9
- sortBy: Joi.string().valid('updatedAt', 'title').optional(),
10
- order: Joi.string().valid('asc', 'desc').optional()
9
+ sortBy: Joi.string()
10
+ .valid('updatedAt', 'title')
11
+ .optional()
12
+ .description('Field to sort results by'),
13
+ order: Joi.string()
14
+ .valid('asc', 'desc')
15
+ .optional()
16
+ .description('Sort order (ascending or descending)')
11
17
  }
12
18
 
13
19
  /**