@defra/forms-model 3.0.456 → 3.0.457
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/README.md +1 -2
- package/dist/module/form/form-definition/index.js +14 -28
- package/dist/module/form/form-definition/index.js.map +1 -1
- package/dist/module/form/form-manager/types.js.map +1 -1
- package/dist/types/form/form-definition/index.d.ts +2 -3
- package/dist/types/form/form-definition/index.d.ts.map +1 -1
- package/dist/types/form/form-manager/types.d.ts +7 -2
- package/dist/types/form/form-manager/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/schemas/component-schema-v2.json +2 -2
- package/schemas/form-definition-schema.json +317 -734
- package/schemas/{form-definition-v2-payload-schema.json → form-definition-v2-schema.json} +17 -17
- package/schemas/list-schema-v2.json +2 -2
- package/schemas/page-schema-v2.json +174 -174
- package/src/form/form-definition/index.ts +26 -44
- package/src/form/form-manager/types.ts +7 -4
- package/schemas/page-schema-payload-v2.json +0 -400
@@ -45,824 +45,407 @@
|
|
45
45
|
},
|
46
46
|
"pages": {
|
47
47
|
"type": "array",
|
48
|
-
"description": "
|
48
|
+
"description": "Pages schema for V1 forms",
|
49
49
|
"uniqueItems": true,
|
50
50
|
"items": {
|
51
|
-
"
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
"
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
51
|
+
"type": "object",
|
52
|
+
"description": "Form page definition specifying content and behavior",
|
53
|
+
"properties": {
|
54
|
+
"id": {
|
55
|
+
"type": "string",
|
56
|
+
"description": "Unique identifier for the page",
|
57
|
+
"format": "uuid",
|
58
|
+
"title": "Id"
|
59
|
+
},
|
60
|
+
"path": {
|
61
|
+
"type": "string",
|
62
|
+
"description": "URL path for this page, must not be the reserved \"/status\" path",
|
63
|
+
"not": {
|
64
|
+
"type": "string",
|
65
|
+
"enum": [
|
66
|
+
"/status"
|
67
|
+
]
|
68
|
+
},
|
69
|
+
"title": "Path"
|
70
|
+
},
|
71
|
+
"title": {
|
72
|
+
"type": "string",
|
73
|
+
"description": "Page title displayed at the top of the page",
|
74
|
+
"title": "Title"
|
75
|
+
},
|
76
|
+
"section": {
|
77
|
+
"type": "string",
|
78
|
+
"description": "Section this page belongs to",
|
79
|
+
"title": "Section"
|
80
|
+
},
|
81
|
+
"controller": {
|
82
|
+
"type": "string",
|
83
|
+
"description": "Custom controller class name for special page behavior",
|
84
|
+
"title": "Controller"
|
85
|
+
},
|
86
|
+
"components": {
|
87
|
+
"type": "array",
|
88
|
+
"description": "UI components displayed on this page",
|
89
|
+
"uniqueItems": true,
|
90
|
+
"items": {
|
91
|
+
"type": "object",
|
92
|
+
"description": "Form component definition specifying UI element behavior",
|
93
|
+
"properties": {
|
94
|
+
"id": {
|
71
95
|
"type": "string",
|
72
|
-
"
|
73
|
-
|
74
|
-
|
96
|
+
"description": "Unique identifier for the component",
|
97
|
+
"format": "uuid",
|
98
|
+
"title": "Id"
|
75
99
|
},
|
76
|
-
"
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
"
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
"
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
"
|
96
|
-
|
100
|
+
"type": {
|
101
|
+
"type": "string",
|
102
|
+
"description": "Component type (TextField, RadioButtons, DateField, etc.)",
|
103
|
+
"title": "Type"
|
104
|
+
},
|
105
|
+
"shortDescription": {
|
106
|
+
"type": "string",
|
107
|
+
"description": "Brief description of the component purpose",
|
108
|
+
"title": "Short Description"
|
109
|
+
},
|
110
|
+
"name": {
|
111
|
+
"type": [
|
112
|
+
"array",
|
113
|
+
"boolean",
|
114
|
+
"number",
|
115
|
+
"object",
|
116
|
+
"string",
|
117
|
+
"null"
|
118
|
+
],
|
119
|
+
"oneOf": [
|
120
|
+
{
|
97
121
|
"type": "string",
|
98
|
-
"description": "
|
99
|
-
"
|
100
|
-
"title": "
|
122
|
+
"description": "Name format for display-only components like HTML, Markdown, etc.",
|
123
|
+
"pattern": "^[a-zA-Z]+$",
|
124
|
+
"title": "Display Component Name"
|
101
125
|
},
|
102
|
-
|
126
|
+
{
|
103
127
|
"type": "string",
|
104
|
-
"description": "
|
105
|
-
"
|
128
|
+
"description": "Name format for input components that collect user data.",
|
129
|
+
"pattern": "^[a-zA-Z]+$",
|
130
|
+
"title": "Input Component Name"
|
131
|
+
}
|
132
|
+
],
|
133
|
+
"title": "Name",
|
134
|
+
"description": "The name value.",
|
135
|
+
"oneOfTitles": [
|
136
|
+
"Display Component Name",
|
137
|
+
"Input Component Name"
|
138
|
+
]
|
139
|
+
},
|
140
|
+
"title": {
|
141
|
+
"type": [
|
142
|
+
"array",
|
143
|
+
"boolean",
|
144
|
+
"number",
|
145
|
+
"object",
|
146
|
+
"string",
|
147
|
+
"null"
|
148
|
+
],
|
149
|
+
"oneOf": [
|
150
|
+
{
|
151
|
+
"type": "string",
|
152
|
+
"description": "Title format for display-only components.",
|
153
|
+
"title": "Display Component Title"
|
106
154
|
},
|
107
|
-
|
155
|
+
{
|
108
156
|
"type": "string",
|
109
|
-
"description": "
|
110
|
-
"title": "
|
157
|
+
"description": "Title displayed above input components.",
|
158
|
+
"title": "Input Component Title"
|
159
|
+
}
|
160
|
+
],
|
161
|
+
"title": "Title",
|
162
|
+
"description": "The title value.",
|
163
|
+
"oneOfTitles": [
|
164
|
+
"Display Component Title",
|
165
|
+
"Input Component Title"
|
166
|
+
]
|
167
|
+
},
|
168
|
+
"hint": {
|
169
|
+
"type": "string",
|
170
|
+
"description": "Additional guidance text displayed below the component title",
|
171
|
+
"title": "Hint"
|
172
|
+
},
|
173
|
+
"options": {
|
174
|
+
"type": "object",
|
175
|
+
"description": "Component-specific configuration options",
|
176
|
+
"default": {},
|
177
|
+
"properties": {
|
178
|
+
"rows": {
|
179
|
+
"type": "number",
|
180
|
+
"description": "Number of rows for textarea components",
|
181
|
+
"title": "Rows"
|
111
182
|
},
|
112
|
-
"
|
113
|
-
"type":
|
114
|
-
|
115
|
-
|
116
|
-
"number",
|
117
|
-
"object",
|
118
|
-
"string",
|
119
|
-
"null"
|
120
|
-
],
|
121
|
-
"oneOf": [
|
122
|
-
{
|
123
|
-
"type": "string",
|
124
|
-
"description": "Name format for display-only components like HTML, Markdown, etc.",
|
125
|
-
"pattern": "^[a-zA-Z]+$",
|
126
|
-
"title": "Display Component Name"
|
127
|
-
},
|
128
|
-
{
|
129
|
-
"type": "string",
|
130
|
-
"description": "Name format for input components that collect user data.",
|
131
|
-
"pattern": "^[a-zA-Z]+$",
|
132
|
-
"title": "Input Component Name"
|
133
|
-
}
|
134
|
-
],
|
135
|
-
"title": "Name",
|
136
|
-
"description": "The name value.",
|
137
|
-
"oneOfTitles": [
|
138
|
-
"Display Component Name",
|
139
|
-
"Input Component Name"
|
140
|
-
]
|
183
|
+
"maxWords": {
|
184
|
+
"type": "number",
|
185
|
+
"description": "Maximum number of words allowed in text inputs",
|
186
|
+
"title": "Max Words"
|
141
187
|
},
|
142
|
-
"
|
143
|
-
"type":
|
144
|
-
|
145
|
-
|
146
|
-
"number",
|
147
|
-
"object",
|
148
|
-
"string",
|
149
|
-
"null"
|
150
|
-
],
|
151
|
-
"oneOf": [
|
152
|
-
{
|
153
|
-
"type": "string",
|
154
|
-
"description": "Title format for display-only components.",
|
155
|
-
"title": "Display Component Title"
|
156
|
-
},
|
157
|
-
{
|
158
|
-
"type": "string",
|
159
|
-
"description": "Title displayed above input components.",
|
160
|
-
"title": "Input Component Title"
|
161
|
-
}
|
162
|
-
],
|
163
|
-
"title": "Title",
|
164
|
-
"description": "The title value.",
|
165
|
-
"oneOfTitles": [
|
166
|
-
"Display Component Title",
|
167
|
-
"Input Component Title"
|
168
|
-
]
|
188
|
+
"maxDaysInPast": {
|
189
|
+
"type": "number",
|
190
|
+
"description": "Maximum days in the past allowed for date inputs",
|
191
|
+
"title": "Max Days In Past"
|
169
192
|
},
|
170
|
-
"
|
193
|
+
"maxDaysInFuture": {
|
194
|
+
"type": "number",
|
195
|
+
"description": "Maximum days in the future allowed for date inputs",
|
196
|
+
"title": "Max Days In Future"
|
197
|
+
},
|
198
|
+
"customValidationMessage": {
|
171
199
|
"type": "string",
|
172
|
-
"description": "
|
173
|
-
"title": "
|
200
|
+
"description": "Custom error message for validation failures",
|
201
|
+
"title": "Custom Validation Message"
|
174
202
|
},
|
175
|
-
"
|
203
|
+
"customValidationMessages": {
|
176
204
|
"type": "object",
|
177
|
-
"description": "
|
178
|
-
"
|
179
|
-
"properties": {
|
180
|
-
"rows": {
|
181
|
-
"type": "number",
|
182
|
-
"description": "Number of rows for textarea components",
|
183
|
-
"title": "Rows"
|
184
|
-
},
|
185
|
-
"maxWords": {
|
186
|
-
"type": "number",
|
187
|
-
"description": "Maximum number of words allowed in text inputs",
|
188
|
-
"title": "Max Words"
|
189
|
-
},
|
190
|
-
"maxDaysInPast": {
|
191
|
-
"type": "number",
|
192
|
-
"description": "Maximum days in the past allowed for date inputs",
|
193
|
-
"title": "Max Days In Past"
|
194
|
-
},
|
195
|
-
"maxDaysInFuture": {
|
196
|
-
"type": "number",
|
197
|
-
"description": "Maximum days in the future allowed for date inputs",
|
198
|
-
"title": "Max Days In Future"
|
199
|
-
},
|
200
|
-
"customValidationMessage": {
|
201
|
-
"type": "string",
|
202
|
-
"description": "Custom error message for validation failures",
|
203
|
-
"title": "Custom Validation Message"
|
204
|
-
},
|
205
|
-
"customValidationMessages": {
|
206
|
-
"type": "object",
|
207
|
-
"description": "Custom error messages keyed by validation rule name",
|
208
|
-
"properties": {},
|
209
|
-
"additionalProperties": true,
|
210
|
-
"title": "Custom Validation Messages"
|
211
|
-
}
|
212
|
-
},
|
205
|
+
"description": "Custom error messages keyed by validation rule name",
|
206
|
+
"properties": {},
|
213
207
|
"additionalProperties": true,
|
214
|
-
"title": "
|
208
|
+
"title": "Custom Validation Messages"
|
209
|
+
}
|
210
|
+
},
|
211
|
+
"additionalProperties": true,
|
212
|
+
"title": "Options"
|
213
|
+
},
|
214
|
+
"schema": {
|
215
|
+
"type": "object",
|
216
|
+
"description": "Validation rules for the component",
|
217
|
+
"default": {},
|
218
|
+
"properties": {
|
219
|
+
"min": {
|
220
|
+
"type": "number",
|
221
|
+
"description": "Minimum value or length for validation",
|
222
|
+
"title": "Min"
|
215
223
|
},
|
216
|
-
"
|
217
|
-
"type": "
|
218
|
-
"description": "
|
219
|
-
"
|
220
|
-
"properties": {
|
221
|
-
"min": {
|
222
|
-
"type": "number",
|
223
|
-
"description": "Minimum value or length for validation",
|
224
|
-
"title": "Min"
|
225
|
-
},
|
226
|
-
"max": {
|
227
|
-
"type": "number",
|
228
|
-
"description": "Maximum value or length for validation",
|
229
|
-
"title": "Max"
|
230
|
-
},
|
231
|
-
"length": {
|
232
|
-
"type": "number",
|
233
|
-
"description": "Exact length required for validation",
|
234
|
-
"title": "Length"
|
235
|
-
}
|
236
|
-
},
|
237
|
-
"additionalProperties": true,
|
238
|
-
"title": "Schema"
|
224
|
+
"max": {
|
225
|
+
"type": "number",
|
226
|
+
"description": "Maximum value or length for validation",
|
227
|
+
"title": "Max"
|
239
228
|
},
|
240
|
-
"
|
241
|
-
"type": "
|
242
|
-
"description": "
|
243
|
-
"title": "
|
229
|
+
"length": {
|
230
|
+
"type": "number",
|
231
|
+
"description": "Exact length required for validation",
|
232
|
+
"title": "Length"
|
244
233
|
}
|
245
234
|
},
|
246
|
-
"required": [
|
247
|
-
"type"
|
248
|
-
],
|
249
235
|
"additionalProperties": true,
|
250
|
-
"title": "
|
236
|
+
"title": "Schema"
|
251
237
|
},
|
252
|
-
"
|
238
|
+
"list": {
|
239
|
+
"type": "string",
|
240
|
+
"description": "Reference to a predefined list of options for select components",
|
241
|
+
"title": "List"
|
242
|
+
}
|
253
243
|
},
|
254
|
-
"
|
244
|
+
"required": [
|
245
|
+
"type"
|
246
|
+
],
|
247
|
+
"additionalProperties": true,
|
248
|
+
"title": "Components Item"
|
249
|
+
},
|
250
|
+
"title": "Components"
|
251
|
+
},
|
252
|
+
"repeat": {
|
253
|
+
"type": "object",
|
254
|
+
"title": "Repeat Configuration",
|
255
|
+
"description": "Configuration for repeatable pages, used with RepeatPageController. Defines how repeatable sections behave including min/max repetitions and display options.\n\nNOTE: This configuration is only used when the 'controller' property is set to 'RepeatPageController'. Otherwise, this property should not be specified.",
|
256
|
+
"oneOfTitles": [
|
257
|
+
"Repeat Configuration",
|
258
|
+
"Alternative Validation"
|
259
|
+
],
|
260
|
+
"properties": {
|
261
|
+
"options": {
|
255
262
|
"type": "object",
|
256
|
-
"
|
257
|
-
"description": "Configuration for repeatable pages, used with RepeatPageController. Defines how repeatable sections behave including min/max repetitions and display options.\n\nNOTE: This configuration is only used when the 'controller' property is set to 'RepeatPageController'. Otherwise, this property should not be specified.",
|
258
|
-
"oneOfTitles": [
|
259
|
-
"Repeat Configuration",
|
260
|
-
"Alternative Validation"
|
261
|
-
],
|
263
|
+
"description": "Display and identification options for the repetition",
|
262
264
|
"properties": {
|
263
|
-
"
|
264
|
-
"type": "
|
265
|
-
"description": "
|
266
|
-
"
|
267
|
-
"name": {
|
268
|
-
"type": "string",
|
269
|
-
"description": "Identifier for the repeatable section, used in data structure",
|
270
|
-
"title": "Name"
|
271
|
-
},
|
272
|
-
"title": {
|
273
|
-
"type": "string",
|
274
|
-
"description": "Title displayed for each repeatable item",
|
275
|
-
"title": "Title"
|
276
|
-
}
|
277
|
-
},
|
278
|
-
"required": [
|
279
|
-
"name",
|
280
|
-
"title"
|
281
|
-
],
|
282
|
-
"additionalProperties": false,
|
283
|
-
"title": "Options"
|
265
|
+
"name": {
|
266
|
+
"type": "string",
|
267
|
+
"description": "Identifier for the repeatable section, used in data structure",
|
268
|
+
"title": "Name"
|
284
269
|
},
|
285
|
-
"
|
286
|
-
"type": "
|
287
|
-
"description": "
|
288
|
-
"
|
289
|
-
"min": {
|
290
|
-
"type": "number",
|
291
|
-
"description": "Minimum number of repetitions required",
|
292
|
-
"title": "Min"
|
293
|
-
},
|
294
|
-
"max": {
|
295
|
-
"type": "number",
|
296
|
-
"description": "Maximum number of repetitions allowed",
|
297
|
-
"title": "Max"
|
298
|
-
}
|
299
|
-
},
|
300
|
-
"required": [
|
301
|
-
"min",
|
302
|
-
"max"
|
303
|
-
],
|
304
|
-
"additionalProperties": false,
|
305
|
-
"title": "Schema"
|
270
|
+
"title": {
|
271
|
+
"type": "string",
|
272
|
+
"description": "Title displayed for each repeatable item",
|
273
|
+
"title": "Title"
|
306
274
|
}
|
307
275
|
},
|
308
276
|
"required": [
|
309
|
-
"
|
310
|
-
"
|
277
|
+
"name",
|
278
|
+
"title"
|
311
279
|
],
|
312
|
-
"additionalProperties": false
|
313
|
-
|
314
|
-
"condition": {
|
315
|
-
"type": "string",
|
316
|
-
"description": "Optional condition that determines if this page is shown",
|
317
|
-
"title": "Condition"
|
318
|
-
},
|
319
|
-
"next": {
|
320
|
-
"type": "array",
|
321
|
-
"description": "Possible navigation paths after this page",
|
322
|
-
"default": [],
|
323
|
-
"items": {
|
324
|
-
"type": "object",
|
325
|
-
"description": "Navigation link defining where to go after completing a page",
|
326
|
-
"properties": {
|
327
|
-
"path": {
|
328
|
-
"type": "string",
|
329
|
-
"description": "The target page path to navigate to",
|
330
|
-
"title": "Path"
|
331
|
-
},
|
332
|
-
"condition": {
|
333
|
-
"type": "string",
|
334
|
-
"description": "Optional condition that determines if this path should be taken",
|
335
|
-
"title": "Condition"
|
336
|
-
},
|
337
|
-
"redirect": {
|
338
|
-
"type": "string",
|
339
|
-
"description": "Optional external URL to redirect to instead of an internal page",
|
340
|
-
"title": "Redirect"
|
341
|
-
}
|
342
|
-
},
|
343
|
-
"required": [
|
344
|
-
"path"
|
345
|
-
],
|
346
|
-
"additionalProperties": false,
|
347
|
-
"title": "Next Item"
|
348
|
-
},
|
349
|
-
"title": "Next"
|
280
|
+
"additionalProperties": false,
|
281
|
+
"title": "Options"
|
350
282
|
},
|
351
|
-
"
|
283
|
+
"schema": {
|
352
284
|
"type": "object",
|
353
|
-
"description": "
|
285
|
+
"description": "Validation constraints for the number of repetitions",
|
354
286
|
"properties": {
|
355
|
-
"
|
356
|
-
"type": "
|
357
|
-
"description": "
|
358
|
-
"
|
359
|
-
"type": {
|
360
|
-
"type": "string",
|
361
|
-
"description": "Type of the event handler (currently only \"http\" supported)",
|
362
|
-
"title": "Type"
|
363
|
-
},
|
364
|
-
"options": {
|
365
|
-
"type": "object",
|
366
|
-
"description": "Options specific to the event handler type",
|
367
|
-
"properties": {
|
368
|
-
"method": {
|
369
|
-
"type": "string",
|
370
|
-
"description": "HTTP method to use for the request",
|
371
|
-
"title": "Method"
|
372
|
-
},
|
373
|
-
"url": {
|
374
|
-
"type": "string",
|
375
|
-
"description": "URL endpoint to call when the event fires",
|
376
|
-
"format": "uri",
|
377
|
-
"title": "Url"
|
378
|
-
}
|
379
|
-
},
|
380
|
-
"required": [
|
381
|
-
"method",
|
382
|
-
"url"
|
383
|
-
],
|
384
|
-
"additionalProperties": false,
|
385
|
-
"title": "Options"
|
386
|
-
}
|
387
|
-
},
|
388
|
-
"required": [
|
389
|
-
"type"
|
390
|
-
],
|
391
|
-
"additionalProperties": false,
|
392
|
-
"title": "On Load"
|
287
|
+
"min": {
|
288
|
+
"type": "number",
|
289
|
+
"description": "Minimum number of repetitions required",
|
290
|
+
"title": "Min"
|
393
291
|
},
|
394
|
-
"
|
395
|
-
"type": "
|
396
|
-
"description": "
|
397
|
-
"
|
398
|
-
"type": {
|
399
|
-
"type": "string",
|
400
|
-
"description": "Type of the event handler (currently only \"http\" supported)",
|
401
|
-
"title": "Type"
|
402
|
-
},
|
403
|
-
"options": {
|
404
|
-
"type": "object",
|
405
|
-
"description": "Options specific to the event handler type",
|
406
|
-
"properties": {
|
407
|
-
"method": {
|
408
|
-
"type": "string",
|
409
|
-
"description": "HTTP method to use for the request",
|
410
|
-
"title": "Method"
|
411
|
-
},
|
412
|
-
"url": {
|
413
|
-
"type": "string",
|
414
|
-
"description": "URL endpoint to call when the event fires",
|
415
|
-
"format": "uri",
|
416
|
-
"title": "Url"
|
417
|
-
}
|
418
|
-
},
|
419
|
-
"required": [
|
420
|
-
"method",
|
421
|
-
"url"
|
422
|
-
],
|
423
|
-
"additionalProperties": false,
|
424
|
-
"title": "Options"
|
425
|
-
}
|
426
|
-
},
|
427
|
-
"required": [
|
428
|
-
"type"
|
429
|
-
],
|
430
|
-
"additionalProperties": false,
|
431
|
-
"title": "On Save"
|
292
|
+
"max": {
|
293
|
+
"type": "number",
|
294
|
+
"description": "Maximum number of repetitions allowed",
|
295
|
+
"title": "Max"
|
432
296
|
}
|
433
297
|
},
|
298
|
+
"required": [
|
299
|
+
"min",
|
300
|
+
"max"
|
301
|
+
],
|
434
302
|
"additionalProperties": false,
|
435
|
-
"title": "
|
436
|
-
},
|
437
|
-
"view": {
|
438
|
-
"type": "string",
|
439
|
-
"description": "Optional custom view template to use for rendering this page",
|
440
|
-
"title": "View"
|
441
|
-
},
|
442
|
-
"title": {
|
443
|
-
"type": "string",
|
444
|
-
"description": "Page title with enhanced support for empty titles in V2",
|
445
|
-
"title": "Title"
|
303
|
+
"title": "Schema"
|
446
304
|
}
|
447
305
|
},
|
448
306
|
"required": [
|
449
|
-
"
|
450
|
-
"
|
307
|
+
"options",
|
308
|
+
"schema"
|
451
309
|
],
|
452
|
-
"additionalProperties": false
|
453
|
-
"title": "V2 Pages Item"
|
310
|
+
"additionalProperties": false
|
454
311
|
},
|
455
|
-
"
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
"
|
461
|
-
"type": "
|
462
|
-
"description": "
|
463
|
-
"
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
"
|
469
|
-
},
|
470
|
-
"path": {
|
471
|
-
"type": "string",
|
472
|
-
"description": "URL path for this page, must not be the reserved \"/status\" path",
|
473
|
-
"not": {
|
312
|
+
"condition": {
|
313
|
+
"type": "string",
|
314
|
+
"description": "Optional condition that determines if this page is shown",
|
315
|
+
"title": "Condition"
|
316
|
+
},
|
317
|
+
"next": {
|
318
|
+
"type": "array",
|
319
|
+
"description": "Possible navigation paths after this page",
|
320
|
+
"default": [],
|
321
|
+
"items": {
|
322
|
+
"type": "object",
|
323
|
+
"description": "Navigation link defining where to go after completing a page",
|
324
|
+
"properties": {
|
325
|
+
"path": {
|
474
326
|
"type": "string",
|
475
|
-
"
|
476
|
-
|
477
|
-
]
|
327
|
+
"description": "The target page path to navigate to",
|
328
|
+
"title": "Path"
|
478
329
|
},
|
479
|
-
"
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
"description": "Page title displayed at the top of the page",
|
484
|
-
"title": "Title"
|
485
|
-
},
|
486
|
-
"section": {
|
487
|
-
"type": "string",
|
488
|
-
"description": "Section this page belongs to",
|
489
|
-
"title": "Section"
|
490
|
-
},
|
491
|
-
"controller": {
|
492
|
-
"type": "string",
|
493
|
-
"description": "Custom controller class name for special page behavior",
|
494
|
-
"title": "Controller"
|
495
|
-
},
|
496
|
-
"components": {
|
497
|
-
"type": "array",
|
498
|
-
"description": "UI components displayed on this page",
|
499
|
-
"uniqueItems": true,
|
500
|
-
"items": {
|
501
|
-
"type": "object",
|
502
|
-
"description": "Form component definition specifying UI element behavior",
|
503
|
-
"properties": {
|
504
|
-
"id": {
|
505
|
-
"type": "string",
|
506
|
-
"description": "Unique identifier for the component",
|
507
|
-
"format": "uuid",
|
508
|
-
"title": "Id"
|
509
|
-
},
|
510
|
-
"type": {
|
511
|
-
"type": "string",
|
512
|
-
"description": "Component type (TextField, RadioButtons, DateField, etc.)",
|
513
|
-
"title": "Type"
|
514
|
-
},
|
515
|
-
"shortDescription": {
|
516
|
-
"type": "string",
|
517
|
-
"description": "Brief description of the component purpose",
|
518
|
-
"title": "Short Description"
|
519
|
-
},
|
520
|
-
"name": {
|
521
|
-
"type": [
|
522
|
-
"array",
|
523
|
-
"boolean",
|
524
|
-
"number",
|
525
|
-
"object",
|
526
|
-
"string",
|
527
|
-
"null"
|
528
|
-
],
|
529
|
-
"oneOf": [
|
530
|
-
{
|
531
|
-
"type": "string",
|
532
|
-
"description": "Name format for display-only components like HTML, Markdown, etc.",
|
533
|
-
"pattern": "^[a-zA-Z]+$",
|
534
|
-
"title": "Display Component Name"
|
535
|
-
},
|
536
|
-
{
|
537
|
-
"type": "string",
|
538
|
-
"description": "Name format for input components that collect user data.",
|
539
|
-
"pattern": "^[a-zA-Z]+$",
|
540
|
-
"title": "Input Component Name"
|
541
|
-
}
|
542
|
-
],
|
543
|
-
"title": "Name",
|
544
|
-
"description": "The name value.",
|
545
|
-
"oneOfTitles": [
|
546
|
-
"Display Component Name",
|
547
|
-
"Input Component Name"
|
548
|
-
]
|
549
|
-
},
|
550
|
-
"title": {
|
551
|
-
"type": [
|
552
|
-
"array",
|
553
|
-
"boolean",
|
554
|
-
"number",
|
555
|
-
"object",
|
556
|
-
"string",
|
557
|
-
"null"
|
558
|
-
],
|
559
|
-
"oneOf": [
|
560
|
-
{
|
561
|
-
"type": "string",
|
562
|
-
"description": "Title format for display-only components.",
|
563
|
-
"title": "Display Component Title"
|
564
|
-
},
|
565
|
-
{
|
566
|
-
"type": "string",
|
567
|
-
"description": "Title displayed above input components.",
|
568
|
-
"title": "Input Component Title"
|
569
|
-
}
|
570
|
-
],
|
571
|
-
"title": "Title",
|
572
|
-
"description": "The title value.",
|
573
|
-
"oneOfTitles": [
|
574
|
-
"Display Component Title",
|
575
|
-
"Input Component Title"
|
576
|
-
]
|
577
|
-
},
|
578
|
-
"hint": {
|
579
|
-
"type": "string",
|
580
|
-
"description": "Additional guidance text displayed below the component title",
|
581
|
-
"title": "Hint"
|
582
|
-
},
|
583
|
-
"options": {
|
584
|
-
"type": "object",
|
585
|
-
"description": "Component-specific configuration options",
|
586
|
-
"default": {},
|
587
|
-
"properties": {
|
588
|
-
"rows": {
|
589
|
-
"type": "number",
|
590
|
-
"description": "Number of rows for textarea components",
|
591
|
-
"title": "Rows"
|
592
|
-
},
|
593
|
-
"maxWords": {
|
594
|
-
"type": "number",
|
595
|
-
"description": "Maximum number of words allowed in text inputs",
|
596
|
-
"title": "Max Words"
|
597
|
-
},
|
598
|
-
"maxDaysInPast": {
|
599
|
-
"type": "number",
|
600
|
-
"description": "Maximum days in the past allowed for date inputs",
|
601
|
-
"title": "Max Days In Past"
|
602
|
-
},
|
603
|
-
"maxDaysInFuture": {
|
604
|
-
"type": "number",
|
605
|
-
"description": "Maximum days in the future allowed for date inputs",
|
606
|
-
"title": "Max Days In Future"
|
607
|
-
},
|
608
|
-
"customValidationMessage": {
|
609
|
-
"type": "string",
|
610
|
-
"description": "Custom error message for validation failures",
|
611
|
-
"title": "Custom Validation Message"
|
612
|
-
},
|
613
|
-
"customValidationMessages": {
|
614
|
-
"type": "object",
|
615
|
-
"description": "Custom error messages keyed by validation rule name",
|
616
|
-
"properties": {},
|
617
|
-
"additionalProperties": true,
|
618
|
-
"title": "Custom Validation Messages"
|
619
|
-
}
|
620
|
-
},
|
621
|
-
"additionalProperties": true,
|
622
|
-
"title": "Options"
|
623
|
-
},
|
624
|
-
"schema": {
|
625
|
-
"type": "object",
|
626
|
-
"description": "Validation rules for the component",
|
627
|
-
"default": {},
|
628
|
-
"properties": {
|
629
|
-
"min": {
|
630
|
-
"type": "number",
|
631
|
-
"description": "Minimum value or length for validation",
|
632
|
-
"title": "Min"
|
633
|
-
},
|
634
|
-
"max": {
|
635
|
-
"type": "number",
|
636
|
-
"description": "Maximum value or length for validation",
|
637
|
-
"title": "Max"
|
638
|
-
},
|
639
|
-
"length": {
|
640
|
-
"type": "number",
|
641
|
-
"description": "Exact length required for validation",
|
642
|
-
"title": "Length"
|
643
|
-
}
|
644
|
-
},
|
645
|
-
"additionalProperties": true,
|
646
|
-
"title": "Schema"
|
647
|
-
},
|
648
|
-
"list": {
|
649
|
-
"type": "string",
|
650
|
-
"description": "Reference to a predefined list of options for select components",
|
651
|
-
"title": "List"
|
652
|
-
}
|
653
|
-
},
|
654
|
-
"required": [
|
655
|
-
"type"
|
656
|
-
],
|
657
|
-
"additionalProperties": true,
|
658
|
-
"title": "Components Item"
|
330
|
+
"condition": {
|
331
|
+
"type": "string",
|
332
|
+
"description": "Optional condition that determines if this path should be taken",
|
333
|
+
"title": "Condition"
|
659
334
|
},
|
660
|
-
"
|
335
|
+
"redirect": {
|
336
|
+
"type": "string",
|
337
|
+
"description": "Optional external URL to redirect to instead of an internal page",
|
338
|
+
"title": "Redirect"
|
339
|
+
}
|
661
340
|
},
|
662
|
-
"
|
341
|
+
"required": [
|
342
|
+
"path"
|
343
|
+
],
|
344
|
+
"additionalProperties": false,
|
345
|
+
"title": "Next Item"
|
346
|
+
},
|
347
|
+
"title": "Next"
|
348
|
+
},
|
349
|
+
"events": {
|
350
|
+
"type": "object",
|
351
|
+
"description": "Event handlers for page lifecycle events",
|
352
|
+
"properties": {
|
353
|
+
"onLoad": {
|
663
354
|
"type": "object",
|
664
|
-
"
|
665
|
-
"description": "Configuration for repeatable pages, used with RepeatPageController. Defines how repeatable sections behave including min/max repetitions and display options.\n\nNOTE: This configuration is only used when the 'controller' property is set to 'RepeatPageController'. Otherwise, this property should not be specified.",
|
666
|
-
"oneOfTitles": [
|
667
|
-
"Repeat Configuration",
|
668
|
-
"Alternative Validation"
|
669
|
-
],
|
355
|
+
"description": "Event handler triggered when the page is loaded",
|
670
356
|
"properties": {
|
357
|
+
"type": {
|
358
|
+
"type": "string",
|
359
|
+
"description": "Type of the event handler (currently only \"http\" supported)",
|
360
|
+
"title": "Type"
|
361
|
+
},
|
671
362
|
"options": {
|
672
363
|
"type": "object",
|
673
|
-
"description": "
|
364
|
+
"description": "Options specific to the event handler type",
|
674
365
|
"properties": {
|
675
|
-
"
|
366
|
+
"method": {
|
676
367
|
"type": "string",
|
677
|
-
"description": "
|
678
|
-
"title": "
|
368
|
+
"description": "HTTP method to use for the request",
|
369
|
+
"title": "Method"
|
679
370
|
},
|
680
|
-
"
|
371
|
+
"url": {
|
681
372
|
"type": "string",
|
682
|
-
"description": "
|
683
|
-
"
|
373
|
+
"description": "URL endpoint to call when the event fires",
|
374
|
+
"format": "uri",
|
375
|
+
"title": "Url"
|
684
376
|
}
|
685
377
|
},
|
686
378
|
"required": [
|
687
|
-
"
|
688
|
-
"
|
379
|
+
"method",
|
380
|
+
"url"
|
689
381
|
],
|
690
382
|
"additionalProperties": false,
|
691
383
|
"title": "Options"
|
692
|
-
},
|
693
|
-
"schema": {
|
694
|
-
"type": "object",
|
695
|
-
"description": "Validation constraints for the number of repetitions",
|
696
|
-
"properties": {
|
697
|
-
"min": {
|
698
|
-
"type": "number",
|
699
|
-
"description": "Minimum number of repetitions required",
|
700
|
-
"title": "Min"
|
701
|
-
},
|
702
|
-
"max": {
|
703
|
-
"type": "number",
|
704
|
-
"description": "Maximum number of repetitions allowed",
|
705
|
-
"title": "Max"
|
706
|
-
}
|
707
|
-
},
|
708
|
-
"required": [
|
709
|
-
"min",
|
710
|
-
"max"
|
711
|
-
],
|
712
|
-
"additionalProperties": false,
|
713
|
-
"title": "Schema"
|
714
384
|
}
|
715
385
|
},
|
716
386
|
"required": [
|
717
|
-
"
|
718
|
-
"schema"
|
387
|
+
"type"
|
719
388
|
],
|
720
|
-
"additionalProperties": false
|
721
|
-
|
722
|
-
"condition": {
|
723
|
-
"type": "string",
|
724
|
-
"description": "Optional condition that determines if this page is shown",
|
725
|
-
"title": "Condition"
|
726
|
-
},
|
727
|
-
"next": {
|
728
|
-
"type": "array",
|
729
|
-
"description": "Possible navigation paths after this page",
|
730
|
-
"default": [],
|
731
|
-
"items": {
|
732
|
-
"type": "object",
|
733
|
-
"description": "Navigation link defining where to go after completing a page",
|
734
|
-
"properties": {
|
735
|
-
"path": {
|
736
|
-
"type": "string",
|
737
|
-
"description": "The target page path to navigate to",
|
738
|
-
"title": "Path"
|
739
|
-
},
|
740
|
-
"condition": {
|
741
|
-
"type": "string",
|
742
|
-
"description": "Optional condition that determines if this path should be taken",
|
743
|
-
"title": "Condition"
|
744
|
-
},
|
745
|
-
"redirect": {
|
746
|
-
"type": "string",
|
747
|
-
"description": "Optional external URL to redirect to instead of an internal page",
|
748
|
-
"title": "Redirect"
|
749
|
-
}
|
750
|
-
},
|
751
|
-
"required": [
|
752
|
-
"path"
|
753
|
-
],
|
754
|
-
"additionalProperties": false,
|
755
|
-
"title": "Next Item"
|
756
|
-
},
|
757
|
-
"title": "Next"
|
389
|
+
"additionalProperties": false,
|
390
|
+
"title": "On Load"
|
758
391
|
},
|
759
|
-
"
|
392
|
+
"onSave": {
|
760
393
|
"type": "object",
|
761
|
-
"description": "Event
|
394
|
+
"description": "Event handler triggered when the page data is saved",
|
762
395
|
"properties": {
|
763
|
-
"
|
764
|
-
"type": "
|
765
|
-
"description": "
|
766
|
-
"
|
767
|
-
"type": {
|
768
|
-
"type": "string",
|
769
|
-
"description": "Type of the event handler (currently only \"http\" supported)",
|
770
|
-
"title": "Type"
|
771
|
-
},
|
772
|
-
"options": {
|
773
|
-
"type": "object",
|
774
|
-
"description": "Options specific to the event handler type",
|
775
|
-
"properties": {
|
776
|
-
"method": {
|
777
|
-
"type": "string",
|
778
|
-
"description": "HTTP method to use for the request",
|
779
|
-
"title": "Method"
|
780
|
-
},
|
781
|
-
"url": {
|
782
|
-
"type": "string",
|
783
|
-
"description": "URL endpoint to call when the event fires",
|
784
|
-
"format": "uri",
|
785
|
-
"title": "Url"
|
786
|
-
}
|
787
|
-
},
|
788
|
-
"required": [
|
789
|
-
"method",
|
790
|
-
"url"
|
791
|
-
],
|
792
|
-
"additionalProperties": false,
|
793
|
-
"title": "Options"
|
794
|
-
}
|
795
|
-
},
|
796
|
-
"required": [
|
797
|
-
"type"
|
798
|
-
],
|
799
|
-
"additionalProperties": false,
|
800
|
-
"title": "On Load"
|
396
|
+
"type": {
|
397
|
+
"type": "string",
|
398
|
+
"description": "Type of the event handler (currently only \"http\" supported)",
|
399
|
+
"title": "Type"
|
801
400
|
},
|
802
|
-
"
|
401
|
+
"options": {
|
803
402
|
"type": "object",
|
804
|
-
"description": "
|
403
|
+
"description": "Options specific to the event handler type",
|
805
404
|
"properties": {
|
806
|
-
"
|
405
|
+
"method": {
|
807
406
|
"type": "string",
|
808
|
-
"description": "
|
809
|
-
"title": "
|
407
|
+
"description": "HTTP method to use for the request",
|
408
|
+
"title": "Method"
|
810
409
|
},
|
811
|
-
"
|
812
|
-
"type": "
|
813
|
-
"description": "
|
814
|
-
"
|
815
|
-
|
816
|
-
"type": "string",
|
817
|
-
"description": "HTTP method to use for the request",
|
818
|
-
"title": "Method"
|
819
|
-
},
|
820
|
-
"url": {
|
821
|
-
"type": "string",
|
822
|
-
"description": "URL endpoint to call when the event fires",
|
823
|
-
"format": "uri",
|
824
|
-
"title": "Url"
|
825
|
-
}
|
826
|
-
},
|
827
|
-
"required": [
|
828
|
-
"method",
|
829
|
-
"url"
|
830
|
-
],
|
831
|
-
"additionalProperties": false,
|
832
|
-
"title": "Options"
|
410
|
+
"url": {
|
411
|
+
"type": "string",
|
412
|
+
"description": "URL endpoint to call when the event fires",
|
413
|
+
"format": "uri",
|
414
|
+
"title": "Url"
|
833
415
|
}
|
834
416
|
},
|
835
417
|
"required": [
|
836
|
-
"
|
418
|
+
"method",
|
419
|
+
"url"
|
837
420
|
],
|
838
421
|
"additionalProperties": false,
|
839
|
-
"title": "
|
422
|
+
"title": "Options"
|
840
423
|
}
|
841
424
|
},
|
425
|
+
"required": [
|
426
|
+
"type"
|
427
|
+
],
|
842
428
|
"additionalProperties": false,
|
843
|
-
"title": "
|
844
|
-
},
|
845
|
-
"view": {
|
846
|
-
"type": "string",
|
847
|
-
"description": "Optional custom view template to use for rendering this page",
|
848
|
-
"title": "View"
|
429
|
+
"title": "On Save"
|
849
430
|
}
|
850
431
|
},
|
851
|
-
"required": [
|
852
|
-
"path",
|
853
|
-
"title"
|
854
|
-
],
|
855
432
|
"additionalProperties": false,
|
856
|
-
"title": "
|
433
|
+
"title": "Events"
|
857
434
|
},
|
858
|
-
"
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
"
|
865
|
-
|
435
|
+
"view": {
|
436
|
+
"type": "string",
|
437
|
+
"description": "Optional custom view template to use for rendering this page",
|
438
|
+
"title": "View"
|
439
|
+
}
|
440
|
+
},
|
441
|
+
"required": [
|
442
|
+
"path",
|
443
|
+
"title"
|
444
|
+
],
|
445
|
+
"additionalProperties": false,
|
446
|
+
"title": "Pages Item"
|
447
|
+
},
|
448
|
+
"title": "Pages"
|
866
449
|
},
|
867
450
|
"sections": {
|
868
451
|
"type": "array",
|