@ukhomeoffice/cop-react-form-renderer 6.14.9 → 6.15.2-alpha

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 (97) hide show
  1. package/dist/components/CollectionSummary/BannerStrip.scss +0 -4
  2. package/dist/components/FormPage/FormPage.js +10 -8
  3. package/dist/components/FormRenderer/FormRenderer.js +10 -5
  4. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-containerised.json +119 -0
  5. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-dependent-component-nested-block.json +112 -0
  6. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-dependent-component-nested.json +105 -0
  7. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-refdata.json +105 -0
  8. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-target-component-nested.json +98 -0
  9. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens.json +105 -0
  10. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-show-whens-page-hidden.json +112 -0
  11. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-cop-airpax.json +26407 -0
  12. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-cop-mandec.json +9404 -0
  13. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-collection-component-dependent-on-external-data.json +157 -0
  14. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-collection-component.json +85 -0
  15. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-referring-to-collection.json +172 -0
  16. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-referring-to-hidden-collection.json +201 -0
  17. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-with-nested-questions.json +111 -0
  18. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component.json +57 -0
  19. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-containerised-component.json +96 -0
  20. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-embedded-collection-component.json +82 -0
  21. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-embedded-component.json +54 -0
  22. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-multilevel-containerised-component-leaf-hidden.json +105 -0
  23. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-multilevel-containerised-component.json +105 -0
  24. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-options.json +98 -0
  25. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-page-collection.json +127 -0
  26. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-page-component-used-elsewhere.json +108 -0
  27. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-page.json +95 -0
  28. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-nested-answers-hidden-by-option.json +111 -0
  29. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/cop-airpax-remove-photos-before.json +384 -0
  30. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/cop-mandec-remove-business-interests-before.json +140 -0
  31. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/cop-mandec-remove-criminality-before.json +186 -0
  32. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-chained-component-show-whens-containerised.json +11 -0
  33. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-chained-component-show-whens-dependent-component-nested-block.json +10 -0
  34. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-chained-component-show-whens-dependent-component-nested.json +9 -0
  35. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-chained-component-show-whens-refdata.json +11 -0
  36. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-chained-component-show-whens-target-component-nested.json +9 -0
  37. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-chained-component-show-whens.json +9 -0
  38. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-chained-show-whens-page-hidden.json +9 -0
  39. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-collection-component-dependent-on-external-data.json +26 -0
  40. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-collection-component.json +15 -0
  41. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-component-referring-to-collection.json +25 -0
  42. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-component-referring-to-hidden-collection.json +26 -0
  43. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-component-with-nested-questions.json +12 -0
  44. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-component.json +5 -0
  45. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-containerised-component.json +11 -0
  46. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-embedded-collection-component.json +15 -0
  47. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-embedded-component.json +5 -0
  48. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-multilevel-containerised-component-leaf-hidden.json +14 -0
  49. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-multilevel-containerised-component.json +14 -0
  50. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-options.json +10 -0
  51. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-page-collection.json +18 -0
  52. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-page-component-used-elsewhere.json +9 -0
  53. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-page.json +9 -0
  54. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-nested-answers-hidden-by-option.json +12 -0
  55. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/cop-airpax-remove-photos-after.json +355 -0
  56. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/cop-mandec-base-file.json +80 -0
  57. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/cop-mandec-remove-business-interests-after.json +122 -0
  58. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/cop-mandec-remove-criminality-after.json +86 -0
  59. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-chained-component-show-whens-containerised-removed.json +11 -0
  60. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-chained-component-show-whens-dependent-component-nested-block-removed.json +7 -0
  61. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-chained-component-show-whens-dependent-component-nested-removed.json +7 -0
  62. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-chained-component-show-whens-refdata-removed.json +7 -0
  63. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-chained-component-show-whens-removed.json +7 -0
  64. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-chained-component-show-whens-target-component-nested-removed.json +6 -0
  65. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-chained-show-whens-page-hidden-removed.json +6 -0
  66. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-collection-component-dependent-on-external-data-removed.json +23 -0
  67. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-collection-component-removed.json +4 -0
  68. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-component-referring-to-collection-removed.json +21 -0
  69. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-component-referring-to-hidden-collection-removed.json +6 -0
  70. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-component-removed.json +4 -0
  71. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-component-with-nested-questions-removed.json +10 -0
  72. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-containerised-component-removed.json +10 -0
  73. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-embedded-collection-component-removed.json +4 -0
  74. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-embedded-component-removed.json +4 -0
  75. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-multilevel-containerised-component-leaf-hidden-removed.json +13 -0
  76. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-multilevel-containerised-component-removed.json +10 -0
  77. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-options-removed.json +8 -0
  78. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-page-collection-removed.json +15 -0
  79. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-page-component-used-elsewhere-removed.json +5 -0
  80. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-page-removed.json +4 -0
  81. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-nested-answers-hidden-by-option-removed.json +11 -0
  82. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.js +346 -0
  83. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.test.js +298 -0
  84. package/dist/components/FormRenderer/helpers/deleteNodeByPath.js +26 -0
  85. package/dist/components/FormRenderer/helpers/deleteNodeByPath.test.js +56 -0
  86. package/dist/components/FormRenderer/helpers/index.js +3 -1
  87. package/dist/components/FormRenderer/onPageAction.js +7 -0
  88. package/dist/components/FormRenderer/onPageAction.test.js +5 -0
  89. package/dist/utils/CollectionPage/mergeCollectionPages.js +1 -0
  90. package/dist/utils/Component/getDefaultValueFromConfig.js +1 -2
  91. package/dist/utils/Condition/meetsCondition.js +12 -26
  92. package/dist/utils/Condition/meetsCondition.test.js +0 -21
  93. package/dist/utils/Data/getAutocompleteSource.js +51 -68
  94. package/dist/utils/Data/getAutocompleteSource.test.js +18 -31
  95. package/package.json +2 -2
  96. package/dist/utils/Validate/validateOnPageLoad.js +0 -23
  97. package/dist/utils/Validate/validateOnPageLoad.test.js +0 -88
@@ -39,10 +39,6 @@
39
39
  }
40
40
  }
41
41
 
42
- .hods-form-banner-strip__tag--fit-content{
43
- max-width: fit-content;
44
- }
45
-
46
42
  @mixin banner-tag-colours($colour) {
47
43
  .hods-form-banner-strip__tag--#{$colour} {
48
44
  @extend .govuk-tag--#{$colour};
@@ -12,7 +12,6 @@ var _utils = _interopRequireDefault(require("../../utils"));
12
12
  var _FormComponent = _interopRequireDefault(require("../FormComponent"));
13
13
  var _PageActions = _interopRequireDefault(require("../PageActions"));
14
14
  require("./FormPage.scss");
15
- var _validateOnPageLoad = require("../../utils/Validate/validateOnPageLoad");
16
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
16
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
18
17
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -25,7 +24,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
25
24
  // Styles
26
25
  const DEFAULT_CLASS = exports.DEFAULT_CLASS = 'hods-form__page';
27
26
  const FormPage = _ref => {
28
- var _formPage$actions, _page$actions;
27
+ var _page$customValidatio, _formPage$actions, _page$actions;
29
28
  let {
30
29
  page,
31
30
  pages,
@@ -38,7 +37,8 @@ const FormPage = _ref => {
38
37
  classModifiers,
39
38
  className,
40
39
  submitting,
41
- pageId
40
+ pageId,
41
+ fromTarget
42
42
  } = _ref;
43
43
  const [patch, setPatch] = (0, _react.useState)({});
44
44
  const {
@@ -47,12 +47,12 @@ const FormPage = _ref => {
47
47
  } = (0, _hooks.useValidation)();
48
48
  const [patchLabel, setPatchLabel] = (0, _react.useState)({});
49
49
  const [isPageRendered, setIsPageRendered] = (0, _react.useState)(false);
50
- const runOnLoad = (0, _react.useMemo)(() => (0, _validateOnPageLoad.doValidateOnPageLoad)(page), [page]);
50
+ const runOnLoad = Array.isArray(page === null || page === void 0 ? void 0 : page.customValidation) && page.customValidation.length > 0 ? ((_page$customValidatio = page.customValidation[0]) === null || _page$customValidatio === void 0 || (_page$customValidatio = _page$customValidatio.runWhen) === null || _page$customValidatio === void 0 ? void 0 : _page$customValidatio.onLoad) === true : false;
51
51
  (0, _react.useEffect)(() => {
52
52
  setIsPageRendered(true);
53
53
  }, []);
54
54
  (0, _react.useEffect)(() => {
55
- if (isPageRendered && runOnLoad) {
55
+ if (isPageRendered && fromTarget && runOnLoad) {
56
56
  validate.page(page);
57
57
  }
58
58
  }, [pageId, isPageRendered]);
@@ -120,9 +120,9 @@ const FormPage = _ref => {
120
120
  }));
121
121
  let errorMessages = null;
122
122
  if (runOnLoad && (errors === null || errors === void 0 ? void 0 : errors.length) > 0) {
123
- var _page$customValidatio;
123
+ var _page$customValidatio2;
124
124
  errorMessages = [{
125
- error: page === null || page === void 0 || (_page$customValidatio = page.customValidation) === null || _page$customValidatio === void 0 || (_page$customValidatio = _page$customValidatio[0]) === null || _page$customValidatio === void 0 ? void 0 : _page$customValidatio.message
125
+ error: page === null || page === void 0 || (_page$customValidatio2 = page.customValidation) === null || _page$customValidatio2 === void 0 || (_page$customValidatio2 = _page$customValidatio2[0]) === null || _page$customValidatio2 === void 0 ? void 0 : _page$customValidatio2.message
126
126
  }];
127
127
  } else if ((errors === null || errors === void 0 ? void 0 : errors.length) > 0 && !runOnLoad) {
128
128
  errorMessages = errors;
@@ -174,6 +174,7 @@ FormPage.propTypes = {
174
174
  }).isRequired,
175
175
  pages: _propTypes.default.arrayOf(_propTypes.default.shape({})),
176
176
  submitting: _propTypes.default.bool,
177
+ fromTarget: _propTypes.default.bool,
177
178
  pageId: _propTypes.default.string.isRequired
178
179
  };
179
180
  FormPage.defaultProps = {
@@ -185,6 +186,7 @@ FormPage.defaultProps = {
185
186
  onTopLevelChange: undefined,
186
187
  onWrapperChange: undefined,
187
188
  pages: [],
188
- submitting: false
189
+ submitting: false,
190
+ fromTarget: false
189
191
  };
190
192
  var _default = exports.default = FormPage;
@@ -54,7 +54,8 @@ const FormRenderer = _ref => {
54
54
  noChangeAction,
55
55
  newPageId,
56
56
  viewOnly,
57
- hideBlankRows
57
+ hideBlankRows,
58
+ fromTarget
58
59
  } = _ref;
59
60
  return /*#__PURE__*/_react.default.createElement(_context.HooksContextProvider, {
60
61
  overrides: hooks
@@ -75,7 +76,8 @@ const FormRenderer = _ref => {
75
76
  noChangeAction: noChangeAction,
76
77
  newPageId: newPageId,
77
78
  viewOnly: viewOnly,
78
- hideBlankRows: hideBlankRows
79
+ hideBlankRows: hideBlankRows,
80
+ fromTarget: fromTarget
79
81
  })));
80
82
  };
81
83
  const DEFAULT_CLASS = exports.DEFAULT_CLASS = 'hods-form';
@@ -98,7 +100,8 @@ const InternalFormRenderer = _ref2 => {
98
100
  noChangeAction,
99
101
  newPageId,
100
102
  viewOnly,
101
- hideBlankRows
103
+ hideBlankRows,
104
+ fromTarget
102
105
  } = _ref2;
103
106
  // Set up the initial states.
104
107
  const [data, setData] = (0, _react.useState)({});
@@ -323,7 +326,8 @@ const InternalFormRenderer = _ref2 => {
323
326
  classModifiers: formState.page.classModifiers,
324
327
  className: formState.page.className,
325
328
  submitting: submitting,
326
- pageId: pageId
329
+ pageId: pageId,
330
+ fromTarget: fromTarget
327
331
  }), formState.page && !formState.cya && formState.page.collection && /*#__PURE__*/_react.default.createElement(_CollectionPage.default, {
328
332
  page: formState.page,
329
333
  pages: pages,
@@ -366,7 +370,8 @@ const propTypes = {
366
370
  /** See <a href="/?path=/docs/f-json--page#formtypes">FormTypes</a>. */
367
371
  type: _propTypes.default.oneOf([_models.FormTypes.CYA, _models.FormTypes.FORM, _models.FormTypes.HUB, _models.FormTypes.TASK, _models.FormTypes.WIZARD, _models.FormTypes.TASK_CYA, _models.FormTypes.FORM_WITH_TASK]).isRequired,
368
372
  viewOnly: _propTypes.default.bool,
369
- hideBlankRows: _propTypes.default.bool
373
+ hideBlankRows: _propTypes.default.bool,
374
+ fromTarget: _propTypes.default.bool.isRequired
370
375
  };
371
376
  const defaultProps = {
372
377
  classBlock: DEFAULT_CLASS,
@@ -0,0 +1,119 @@
1
+ {
2
+ "id": "example-form",
3
+ "version": "0.0.1",
4
+ "name": "example-form",
5
+ "title": "Example form",
6
+ "type": "form",
7
+ "components": [
8
+ {
9
+ "id": "alpha-parent",
10
+ "fieldId": "alpha-parent",
11
+ "type": "container",
12
+ "components": [
13
+ {
14
+ "id": "alpha",
15
+ "fieldId": "alpha",
16
+ "label": "Alpha",
17
+ "type": "text",
18
+ "show_when": {
19
+ "op": "=",
20
+ "field": "bravo-parent.bravo",
21
+ "value": "bravo-value"
22
+ }
23
+ }
24
+ ]
25
+ },
26
+ {
27
+ "id": "bravo-parent",
28
+ "fieldId": "bravo-parent",
29
+ "type": "container",
30
+ "components": [
31
+ {
32
+ "id": "bravo",
33
+ "fieldId": "bravo",
34
+ "label": "Bravo",
35
+ "type": "text",
36
+ "show_when": {
37
+ "op": "=",
38
+ "field": "gamma-parent.gamma",
39
+ "value": "gamma-value"
40
+ }
41
+ }
42
+ ]
43
+ },
44
+ {
45
+ "id": "personKnown",
46
+ "fieldId": "personKnown",
47
+ "type": "radios",
48
+ "data": {
49
+ "options": [
50
+ {
51
+ "value": "yes",
52
+ "label": "Yes",
53
+ "nested": [
54
+ {
55
+ "id": "telephone",
56
+ "fieldId": "telephone",
57
+ "type": "text",
58
+ "label": "Telephone",
59
+ "required": true
60
+ }
61
+ ]
62
+ },
63
+ {
64
+ "value": "no",
65
+ "label": "No"
66
+ }
67
+ ]
68
+ }
69
+ },
70
+ {
71
+ "id": "gamma-parent",
72
+ "fieldId": "gamma-parent",
73
+ "type": "container",
74
+ "components": [
75
+ {
76
+ "id": "gamma",
77
+ "fieldId": "gamma",
78
+ "label": "Gamma",
79
+ "type": "text",
80
+ "show_when": {
81
+ "op": "=",
82
+ "field": "epsilon",
83
+ "value": "epsilon-value"
84
+ }
85
+ }
86
+ ]
87
+ },
88
+ {
89
+ "id": "epsilon",
90
+ "fieldId": "epsilon",
91
+ "label": "Epsilon",
92
+ "type": "text"
93
+ }
94
+ ],
95
+ "pages": [
96
+ {
97
+ "id": "visiblePage",
98
+ "name": "visiblePage",
99
+ "title": "Visible Page",
100
+ "components": [
101
+ {
102
+ "use": "alpha-parent"
103
+ },
104
+ {
105
+ "use": "bravo-parent"
106
+ },
107
+ {
108
+ "use": "personKnown"
109
+ },
110
+ {
111
+ "use": "gamma-parent"
112
+ },
113
+ {
114
+ "use": "epsilon"
115
+ }
116
+ ]
117
+ }
118
+ ]
119
+ }
@@ -0,0 +1,112 @@
1
+ {
2
+ "id": "example-form",
3
+ "version": "0.0.1",
4
+ "name": "example-form",
5
+ "title": "Example form",
6
+ "type": "form",
7
+ "components": [
8
+ {
9
+ "id": "alpha",
10
+ "fieldId": "alpha",
11
+ "label": "Alpha",
12
+ "type": "text"
13
+ },
14
+ {
15
+ "id": "bravo",
16
+ "fieldId": "bravo",
17
+ "label": "Bravo",
18
+ "type": "text",
19
+ "show_when": [
20
+ {
21
+ "type": "or",
22
+ "conditions": [
23
+ {
24
+ "op": "=",
25
+ "field": "gamma",
26
+ "value": "NOT-gamma-value"
27
+ },
28
+ {
29
+ "op": "=",
30
+ "field": "epsilon",
31
+ "value": "NOT-epsilon-value"
32
+ }
33
+ ]
34
+ }
35
+ ]
36
+ },
37
+ {
38
+ "id": "personKnown",
39
+ "fieldId": "personKnown",
40
+ "type": "radios",
41
+ "data": {
42
+ "options": [
43
+ {
44
+ "value": "yes",
45
+ "label": "Yes",
46
+ "nested": [
47
+ {
48
+ "id": "telephone",
49
+ "fieldId": "telephone",
50
+ "type": "text",
51
+ "label": "Telephone",
52
+ "required": true
53
+ },
54
+ {
55
+ "id": "address",
56
+ "fieldId": "address",
57
+ "type": "text",
58
+ "label": "Address",
59
+ "required": true
60
+ }
61
+ ],
62
+ "show_when": {
63
+ "op": "=",
64
+ "field": "bravo",
65
+ "value": "bravo-value"
66
+ }
67
+ },
68
+ {
69
+ "value": "no",
70
+ "label": "No"
71
+ }
72
+ ]
73
+ }
74
+ },
75
+ {
76
+ "id": "gamma",
77
+ "fieldId": "gamma",
78
+ "label": "Gamma",
79
+ "type": "text"
80
+ },
81
+ {
82
+ "id": "epsilon",
83
+ "fieldId": "epsilon",
84
+ "label": "Epsilon",
85
+ "type": "text"
86
+ }
87
+ ],
88
+ "pages": [
89
+ {
90
+ "id": "visiblePage",
91
+ "name": "visiblePage",
92
+ "title": "Visible Page",
93
+ "components": [
94
+ {
95
+ "use": "alpha"
96
+ },
97
+ {
98
+ "use": "bravo"
99
+ },
100
+ {
101
+ "use": "personKnown"
102
+ },
103
+ {
104
+ "use": "gamma"
105
+ },
106
+ {
107
+ "use": "epsilon"
108
+ }
109
+ ]
110
+ }
111
+ ]
112
+ }
@@ -0,0 +1,105 @@
1
+ {
2
+ "id": "example-form",
3
+ "version": "0.0.1",
4
+ "name": "example-form",
5
+ "title": "Example form",
6
+ "type": "form",
7
+ "components": [
8
+ {
9
+ "id": "alpha",
10
+ "fieldId": "alpha",
11
+ "label": "Alpha",
12
+ "type": "text"
13
+ },
14
+ {
15
+ "id": "bravo",
16
+ "fieldId": "bravo",
17
+ "label": "Bravo",
18
+ "type": "text",
19
+ "show_when": [
20
+ {
21
+ "type": "or",
22
+ "conditions": [
23
+ {
24
+ "op": "=",
25
+ "field": "gamma",
26
+ "value": "NOT-gamma-value"
27
+ },
28
+ {
29
+ "op": "=",
30
+ "field": "epsilon",
31
+ "value": "NOT-epsilon-value"
32
+ }
33
+ ]
34
+ }
35
+ ]
36
+ },
37
+ {
38
+ "id": "personKnown",
39
+ "fieldId": "personKnown",
40
+ "type": "radios",
41
+ "data": {
42
+ "options": [
43
+ {
44
+ "value": "yes",
45
+ "label": "Yes",
46
+ "nested": [
47
+ {
48
+ "id": "telephone",
49
+ "fieldId": "telephone",
50
+ "type": "text",
51
+ "label": "Telephone",
52
+ "required": true,
53
+ "show_when": {
54
+ "op": "=",
55
+ "field": "bravo",
56
+ "value": "bravo-value"
57
+ }
58
+ }
59
+ ]
60
+ },
61
+ {
62
+ "value": "no",
63
+ "label": "No"
64
+ }
65
+ ]
66
+ }
67
+ },
68
+ {
69
+ "id": "gamma",
70
+ "fieldId": "gamma",
71
+ "label": "Gamma",
72
+ "type": "text"
73
+ },
74
+ {
75
+ "id": "epsilon",
76
+ "fieldId": "epsilon",
77
+ "label": "Epsilon",
78
+ "type": "text"
79
+ }
80
+ ],
81
+ "pages": [
82
+ {
83
+ "id": "visiblePage",
84
+ "name": "visiblePage",
85
+ "title": "Visible Page",
86
+ "components": [
87
+ {
88
+ "use": "alpha"
89
+ },
90
+ {
91
+ "use": "bravo"
92
+ },
93
+ {
94
+ "use": "personKnown"
95
+ },
96
+ {
97
+ "use": "gamma"
98
+ },
99
+ {
100
+ "use": "epsilon"
101
+ }
102
+ ]
103
+ }
104
+ ]
105
+ }
@@ -0,0 +1,105 @@
1
+ {
2
+ "id": "example-form",
3
+ "version": "0.0.1",
4
+ "name": "example-form",
5
+ "title": "Example form",
6
+ "type": "form",
7
+ "components": [
8
+ {
9
+ "id": "alpha",
10
+ "fieldId": "alpha",
11
+ "label": "Alpha",
12
+ "type": "text",
13
+ "show_when": {
14
+ "op": "=",
15
+ "field": "bravo.id",
16
+ "value": "bravo-value.id"
17
+ }
18
+ },
19
+ {
20
+ "id": "bravo",
21
+ "fieldId": "bravo",
22
+ "label": "Bravo",
23
+ "type": "text",
24
+ "show_when": [
25
+ {
26
+ "type": "or",
27
+ "conditions": [
28
+ {
29
+ "op": "=",
30
+ "field": "gamma",
31
+ "value": "NOT-gamma-value"
32
+ },
33
+ {
34
+ "op": "=",
35
+ "field": "epsilon",
36
+ "value": "NOT-epsilon-value"
37
+ }
38
+ ]
39
+ }
40
+ ]
41
+ },
42
+ {
43
+ "id": "personKnown",
44
+ "fieldId": "personKnown",
45
+ "type": "radios",
46
+ "data": {
47
+ "options": [
48
+ {
49
+ "value": "yes",
50
+ "label": "Yes",
51
+ "nested": [
52
+ {
53
+ "id": "telephone",
54
+ "fieldId": "telephone",
55
+ "type": "text",
56
+ "label": "Telephone",
57
+ "required": true
58
+ }
59
+ ]
60
+ },
61
+ {
62
+ "value": "no",
63
+ "label": "No"
64
+ }
65
+ ]
66
+ }
67
+ },
68
+ {
69
+ "id": "gamma",
70
+ "fieldId": "gamma",
71
+ "label": "Gamma",
72
+ "type": "text"
73
+ },
74
+ {
75
+ "id": "epsilon",
76
+ "fieldId": "epsilon",
77
+ "label": "Epsilon",
78
+ "type": "text"
79
+ }
80
+ ],
81
+ "pages": [
82
+ {
83
+ "id": "visiblePage",
84
+ "name": "visiblePage",
85
+ "title": "Visible Page",
86
+ "components": [
87
+ {
88
+ "use": "alpha"
89
+ },
90
+ {
91
+ "use": "bravo"
92
+ },
93
+ {
94
+ "use": "personKnown"
95
+ },
96
+ {
97
+ "use": "gamma"
98
+ },
99
+ {
100
+ "use": "epsilon"
101
+ }
102
+ ]
103
+ }
104
+ ]
105
+ }
@@ -0,0 +1,98 @@
1
+ {
2
+ "id": "example-form",
3
+ "version": "0.0.1",
4
+ "name": "example-form",
5
+ "title": "Example form",
6
+ "type": "form",
7
+ "components": [
8
+ {
9
+ "id": "alpha",
10
+ "fieldId": "alpha",
11
+ "label": "Alpha",
12
+ "type": "text"
13
+ },
14
+ {
15
+ "id": "bravo",
16
+ "fieldId": "bravo",
17
+ "label": "Bravo",
18
+ "type": "text",
19
+ "show_when": {
20
+ "op": "=",
21
+ "field": "telephone",
22
+ "value": "telephone-value"
23
+ }
24
+ },
25
+ {
26
+ "id": "personKnown",
27
+ "fieldId": "personKnown",
28
+ "type": "radios",
29
+ "data": {
30
+ "options": [
31
+ {
32
+ "value": "yes",
33
+ "label": "Yes",
34
+ "nested": [
35
+ {
36
+ "id": "telephone",
37
+ "fieldId": "telephone",
38
+ "type": "text",
39
+ "label": "Telephone",
40
+ "required": true,
41
+ "show_when": {
42
+ "op": "=",
43
+ "field": "epsilon",
44
+ "value": "NOT-epsilon-value"
45
+ }
46
+ }
47
+ ]
48
+ },
49
+ {
50
+ "value": "no",
51
+ "label": "No"
52
+ }
53
+ ]
54
+ }
55
+ },
56
+ {
57
+ "id": "gamma",
58
+ "fieldId": "gamma",
59
+ "label": "Gamma",
60
+ "type": "text",
61
+ "show_when": {
62
+ "op": "=",
63
+ "field": "bravo",
64
+ "value": "bravo-value"
65
+ }
66
+ },
67
+ {
68
+ "id": "epsilon",
69
+ "fieldId": "epsilon",
70
+ "label": "Epsilon",
71
+ "type": "text"
72
+ }
73
+ ],
74
+ "pages": [
75
+ {
76
+ "id": "visiblePage",
77
+ "name": "visiblePage",
78
+ "title": "Visible Page",
79
+ "components": [
80
+ {
81
+ "use": "alpha"
82
+ },
83
+ {
84
+ "use": "bravo"
85
+ },
86
+ {
87
+ "use": "personKnown"
88
+ },
89
+ {
90
+ "use": "gamma"
91
+ },
92
+ {
93
+ "use": "epsilon"
94
+ }
95
+ ]
96
+ }
97
+ ]
98
+ }