@ukhomeoffice/cop-react-form-renderer 6.16.0-charlie → 7.0.0-echo

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 (88) hide show
  1. package/dist/components/CheckYourAnswers/Answer.js +5 -2
  2. package/dist/components/CheckYourAnswers/Answer.test.js +8 -7
  3. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +86 -68
  4. package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +22 -22
  5. package/dist/components/CollectionPage/CollectionPage.js +3 -3
  6. package/dist/components/CollectionPage/CollectionPage.test.js +13 -13
  7. package/dist/components/CollectionSummary/BannerStrip.js +22 -21
  8. package/dist/components/CollectionSummary/BannerStrip.test.js +8 -8
  9. package/dist/components/CollectionSummary/CollectionSummary.js +105 -99
  10. package/dist/components/CollectionSummary/CollectionSummary.test.js +23 -19
  11. package/dist/components/CollectionSummary/Confirmation.js +16 -10
  12. package/dist/components/CollectionSummary/Confirmation.test.js +12 -11
  13. package/dist/components/CollectionSummary/RenderListView.js +78 -65
  14. package/dist/components/CollectionSummary/RenderListView.test.js +18 -12
  15. package/dist/components/CollectionSummary/SummaryCard.js +83 -72
  16. package/dist/components/CollectionSummary/SummaryCard.test.js +105 -101
  17. package/dist/components/CollectionSummary/SummaryCardButtons.js +17 -13
  18. package/dist/components/CollectionSummary/SummaryCardButtons.test.js +3 -2
  19. package/dist/components/CollectionSummary/SummaryCardDetails.js +72 -67
  20. package/dist/components/CollectionSummary/SummaryCardDetails.test.js +12 -12
  21. package/dist/components/CollectionSummary/SummaryCardValidationContext.js +6 -5
  22. package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +29 -13
  23. package/dist/components/FormComponent/Collection.js +91 -82
  24. package/dist/components/FormComponent/Collection.test.js +16 -15
  25. package/dist/components/FormComponent/Container.js +21 -22
  26. package/dist/components/FormComponent/Container.test.js +9 -8
  27. package/dist/components/FormComponent/FormComponent.js +7 -8
  28. package/dist/components/FormComponent/FormComponent.test.js +18 -13
  29. package/dist/components/FormPage/FormPage.js +29 -23
  30. package/dist/components/FormPage/FormPage.test.js +11 -11
  31. package/dist/components/FormRenderer/FormRenderer.js +81 -92
  32. package/dist/components/FormRenderer/FormRenderer.test.js +23 -24
  33. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-with-nested-questions-visible-elsewhere.json +118 -0
  34. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-nested-answers-hidden-by-option-visible-elsewhere.json +113 -0
  35. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-page-nested-component.json +26003 -0
  36. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-component-with-nested-questions-visible-elsewhere.json +12 -0
  37. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-nested-answers-hidden-by-option-visible-elsewhere.json +12 -0
  38. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-page-nested-component.json +63 -0
  39. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-component-with-nested-questions-visible-elsewhere-removed.json +11 -0
  40. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-nested-answers-hidden-by-option-visible-elsewhere-removed.json +12 -0
  41. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-page-nested-component.json +63 -0
  42. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.js +18 -16
  43. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.test.js +31 -0
  44. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutesUtils.js +44 -35
  45. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutesUtils.test.js +1 -2
  46. package/dist/components/PageActions/ActionButton.js +12 -6
  47. package/dist/components/PageActions/ActionButton.test.js +5 -5
  48. package/dist/components/PageActions/PageActions.js +7 -5
  49. package/dist/components/PageActions/PageActions.test.js +5 -4
  50. package/dist/components/SummaryList/GroupAction.js +14 -8
  51. package/dist/components/SummaryList/GroupAction.test.js +5 -4
  52. package/dist/components/SummaryList/RowAction.js +12 -6
  53. package/dist/components/SummaryList/RowAction.test.js +5 -4
  54. package/dist/components/SummaryList/SummaryList.js +54 -49
  55. package/dist/components/SummaryList/SummaryList.test.js +33 -19
  56. package/dist/components/SummaryList/SummaryListHeadingRow.js +9 -3
  57. package/dist/components/SummaryList/SummaryListHeadingRowWithAction.js +20 -12
  58. package/dist/components/SummaryList/SummaryListRow.js +16 -11
  59. package/dist/components/SummaryList/SummaryListTitleRow.js +7 -3
  60. package/dist/components/TaskList/Task.js +20 -17
  61. package/dist/components/TaskList/Task.test.js +8 -7
  62. package/dist/components/TaskList/TaskList.js +68 -45
  63. package/dist/components/TaskList/TaskList.test.js +11 -11
  64. package/dist/components/TaskList/TaskState.js +5 -3
  65. package/dist/components/TaskList/TaskState.test.js +8 -7
  66. package/dist/context/HooksContext/HooksContext.js +6 -5
  67. package/dist/context/HooksContext/HooksContext.test.js +14 -6
  68. package/dist/context/HooksContext/index.js +1 -2
  69. package/dist/context/ValidationContext/ValidationContext.js +6 -5
  70. package/dist/context/ValidationContext/ValidationContext.test.js +33 -9
  71. package/dist/context/ValidationContext/index.js +1 -2
  72. package/dist/hooks/index.js +1 -2
  73. package/dist/hooks/useRefData.js +1 -2
  74. package/dist/index.js +1 -2
  75. package/dist/setupTests.js +23 -18
  76. package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +19 -16
  77. package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.js +5 -5
  78. package/dist/utils/CollectionPage/getQuickEditPage.js +2 -2
  79. package/dist/utils/Component/cleanAttributes.test.js +1 -2
  80. package/dist/utils/Component/getComponent.js +38 -28
  81. package/dist/utils/Component/getDefaultValueFromConfig.js +1 -2
  82. package/dist/utils/Component/isEditable.test.js +1 -2
  83. package/dist/utils/Component/wrapInFormGroup.js +10 -4
  84. package/dist/utils/Format/formatDataForComponent.test.js +1 -2
  85. package/dist/utils/Format/formatDataForPage.test.js +1 -2
  86. package/dist/utils/Validate/validateDate.test.js +1 -2
  87. package/dist/utils/Validate/validateMultifile.test.js +1 -2
  88. package/package.json +89 -27
@@ -8,8 +8,8 @@ var _setupTests = require("../../setupTests");
8
8
  var _utils = _interopRequireDefault(require("../../utils"));
9
9
  var _ActionButton = require("../PageActions/ActionButton");
10
10
  var _FormPage = _interopRequireWildcard(require("./FormPage"));
11
- 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); }
12
- 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; }
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
14
  // Global imports
15
15
 
@@ -183,7 +183,7 @@ describe('components.FormPage', () => {
183
183
  expect(outerWrapper.classList).toContain('hods-autocomplete__outer-wrapper');
184
184
  const autocomplete = outerWrapper.childNodes[0];
185
185
  expect(autocomplete.classList).toContain('hods-autocomplete__wrapper');
186
- const input = [].concat(autocomplete.childNodes).filter(e => e.tagName === 'INPUT')[0];
186
+ const input = autocomplete.querySelector('input');
187
187
  expect(input.classList).toContain('hods-autocomplete__input');
188
188
  expect(input.tagName).toEqual('INPUT');
189
189
  expect(input.id).toEqual(fieldId);
@@ -220,7 +220,7 @@ describe('components.FormPage', () => {
220
220
  it('should render a submit page correctly', async () => {
221
221
  const {
222
222
  container
223
- } = (0, _setupTests.renderWithValidation)(/*#__PURE__*/_react2.default.createElement(_FormPage.default, {
223
+ } = (0, _setupTests.renderWithValidation)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormPage.default, {
224
224
  page: PAGE,
225
225
  onAction: ON_ACTION
226
226
  }));
@@ -236,7 +236,7 @@ describe('components.FormPage', () => {
236
236
  it('should render a submit page correctly and submit action button has interpolated label', async () => {
237
237
  const {
238
238
  container
239
- } = (0, _setupTests.renderWithValidation)(/*#__PURE__*/_react2.default.createElement(_FormPage.default, {
239
+ } = (0, _setupTests.renderWithValidation)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormPage.default, {
240
240
  page: PAGE_WITH_BUTTON_ACTIONS,
241
241
  onAction: ON_ACTION
242
242
  }));
@@ -254,7 +254,7 @@ describe('components.FormPage', () => {
254
254
  it('should handle a page change appropriately', async () => {
255
255
  const {
256
256
  container
257
- } = (0, _setupTests.renderWithValidation)(/*#__PURE__*/_react2.default.createElement(_FormPage.default, {
257
+ } = (0, _setupTests.renderWithValidation)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormPage.default, {
258
258
  page: PAGE,
259
259
  onAction: ON_ACTION
260
260
  }));
@@ -278,7 +278,7 @@ describe('components.FormPage', () => {
278
278
  it('should handle a page action appropriately', async () => {
279
279
  const {
280
280
  container
281
- } = (0, _setupTests.renderWithValidation)(/*#__PURE__*/_react2.default.createElement(_FormPage.default, {
281
+ } = (0, _setupTests.renderWithValidation)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormPage.default, {
282
282
  page: PAGE,
283
283
  onAction: ON_ACTION
284
284
  }));
@@ -310,7 +310,7 @@ describe('components.FormPage', () => {
310
310
  it('should render only the conditionally shown button', async () => {
311
311
  const {
312
312
  container
313
- } = (0, _setupTests.renderWithValidation)(/*#__PURE__*/_react2.default.createElement(_FormPage.default, {
313
+ } = (0, _setupTests.renderWithValidation)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormPage.default, {
314
314
  page: PAGE_WITH_CONDITIONAL_BUTTONS,
315
315
  onAction: ON_ACTION
316
316
  }));
@@ -320,7 +320,7 @@ describe('components.FormPage', () => {
320
320
  it('should not trigger custom validation when fromTarget is false', async () => {
321
321
  const {
322
322
  queryByText
323
- } = (0, _setupTests.renderWithValidation)(/*#__PURE__*/_react2.default.createElement(_FormPage.default, {
323
+ } = (0, _setupTests.renderWithValidation)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormPage.default, {
324
324
  page: PAGE_WITH_CUSTOM_VALIDATION,
325
325
  fromTarget: false,
326
326
  onAction: ON_ACTION
@@ -330,7 +330,7 @@ describe('components.FormPage', () => {
330
330
  });
331
331
  });
332
332
  it('should not trigger custom validation if no customValidation is provided', async () => {
333
- (0, _setupTests.renderWithValidation)(/*#__PURE__*/_react2.default.createElement(_FormPage.default, {
333
+ (0, _setupTests.renderWithValidation)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormPage.default, {
334
334
  page: PAGE_WITHOUT_CUSTOM_VALIDATION,
335
335
  fromTarget: true,
336
336
  onAction: ON_ACTION
@@ -373,7 +373,7 @@ describe('components.FormPage', () => {
373
373
  const onChangeMock = jest.fn();
374
374
  const {
375
375
  getByLabelText
376
- } = (0, _setupTests.renderWithValidation)(/*#__PURE__*/_react2.default.createElement(_FormPage.default, {
376
+ } = (0, _setupTests.renderWithValidation)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormPage.default, {
377
377
  page: page,
378
378
  fromTarget: true,
379
379
  onAction: onChangeMock,
@@ -21,13 +21,12 @@ var _onCYAAction = _interopRequireDefault(require("./onCYAAction"));
21
21
  var _onPageAction = _interopRequireDefault(require("./onPageAction"));
22
22
  var _onTaskAction = _interopRequireDefault(require("./onTaskAction"));
23
23
  require("./FormRenderer.scss");
24
+ var _jsxRuntime = require("react/jsx-runtime");
24
25
  const _excluded = ["noTaskCYAs", "nonSequential"];
25
26
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
26
- 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); }
27
- 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; }
28
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
29
- function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
30
- function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
27
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
28
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
29
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
31
30
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
32
31
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
33
32
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -57,28 +56,31 @@ const FormRenderer = _ref => {
57
56
  viewOnly,
58
57
  hideBlankRows
59
58
  } = _ref;
60
- return /*#__PURE__*/_react.default.createElement(_context.HooksContextProvider, {
61
- overrides: hooks
62
- }, /*#__PURE__*/_react.default.createElement(_context.ValidationContextProvider, null, /*#__PURE__*/_react.default.createElement(InternalFormRenderer, {
63
- title: title,
64
- type: type,
65
- cleanseHiddenData: cleanseHiddenData,
66
- components: components,
67
- pages: pages,
68
- hub: hub,
69
- cya: cya,
70
- data: data,
71
- classBlock: classBlock,
72
- classModifiers: classModifiers,
73
- className: className,
74
- hashLink: hashLink,
75
- hide_title: hideTitle,
76
- summaryListClassModifiers: summaryListClassModifiers,
77
- noChangeAction: noChangeAction,
78
- newPageId: newPageId,
79
- viewOnly: viewOnly,
80
- hideBlankRows: hideBlankRows
81
- })));
59
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.HooksContextProvider, {
60
+ overrides: hooks,
61
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.ValidationContextProvider, {
62
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(InternalFormRenderer, {
63
+ title: title,
64
+ type: type,
65
+ cleanseHiddenData: cleanseHiddenData,
66
+ components: components,
67
+ pages: pages,
68
+ hub: hub,
69
+ cya: cya,
70
+ data: data,
71
+ classBlock: classBlock,
72
+ classModifiers: classModifiers,
73
+ className: className,
74
+ hashLink: hashLink,
75
+ hide_title: hideTitle,
76
+ summaryListClassModifiers: summaryListClassModifiers,
77
+ noChangeAction: noChangeAction,
78
+ newPageId: newPageId,
79
+ viewOnly: viewOnly,
80
+ hideBlankRows: hideBlankRows
81
+ })
82
+ })
83
+ });
82
84
  };
83
85
  const DEFAULT_CLASS = exports.DEFAULT_CLASS = 'hods-form';
84
86
  const InternalFormRenderer = _ref2 => {
@@ -129,17 +131,6 @@ const InternalFormRenderer = _ref2 => {
129
131
  validate
130
132
  } = (0, _hooks.useValidation)();
131
133
 
132
- // Set focus to header for accessibility, Screen reader to anounce the page heading
133
- const setFocusToHeading = () => {
134
- if (document) {
135
- const header = Array.from(document.getElementsByTagName('h1')).pop();
136
- if (header && document.activeElement !== header) {
137
- header.setAttribute('tabIndex', '-1');
138
- header.focus();
139
- }
140
- }
141
- };
142
-
143
134
  // Need to set submission data when going back
144
135
  window.onpopstate = e => {
145
136
  var _formState$page;
@@ -203,11 +194,6 @@ const InternalFormRenderer = _ref2 => {
203
194
  setHub(_utils.default.Hub.get(type, _hub, components, _objectSpread({}, data)));
204
195
  }, [type, _hub, data, components, setHub]);
205
196
 
206
- // Set focus to heading for accessibility
207
- (0, _react.useEffect)(() => {
208
- setFocusToHeading();
209
- }, [formState]);
210
-
211
197
  // Form state.
212
198
  (0, _react.useEffect)(() => {
213
199
  var _formState$page2;
@@ -317,55 +303,58 @@ const InternalFormRenderer = _ref2 => {
317
303
  nonSequential: _nonSeq
318
304
  } = hubDetails,
319
305
  taskDetails = _objectWithoutProperties(hubDetails, _excluded);
320
- return /*#__PURE__*/_react.default.createElement("div", {
321
- className: classes()
322
- }, title && !hideTitle && pageId === _models.FormPages.HUB && /*#__PURE__*/_react.default.createElement(_copReactComponents.LargeHeading, null, title), formState.cya && /*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, _extends({
323
- pages: _helpers.default.getRelevantPages(formState, pages, currentTask.fullPages)
324
- }, cya, ((_formState$page4 = formState.page) === null || _formState$page4 === void 0 ? void 0 : _formState$page4.type) === _models.FormPages.PARTIAL_CYA && {
325
- actions: (_formState$page$actio = formState.page.actions) === null || _formState$page$actio === void 0 ? void 0 : _formState$page$actio.filter(action => _utils.default.Component.show(action, data))
326
- }, formState.cya, {
327
- onAction: action => {
328
- (0, _onCYAAction.default)(setPagePoint, action, pages, validate, cleanseHiddenData, components, data, setData, type, pageId, currentTask, hooks, addErrors, hub, onPageChange, formState, submitting, setSubmitting);
329
- },
330
- onRowAction: onCYARowAction,
331
- summaryListClassModifiers: summaryListClassModifiers,
332
- hide_title: hideTitle,
333
- noChangeAction: (_formState$cya$hideCh = formState.cya.hideChangeActions) !== null && _formState$cya$hideCh !== void 0 ? _formState$cya$hideCh : noChangeAction,
334
- noGroupAction: (_formState$cya$hideGr = formState.cya.hideGroupActions) !== null && _formState$cya$hideGr !== void 0 ? _formState$cya$hideGr : false,
335
- sections: typeof hubDetails !== 'undefined' ? hubDetails.sections : [],
336
- type: type,
337
- hideBlankRows: hideBlankRows
338
- })), hub === _models.HubFormats.TASK && formState.pageId === _models.FormPages.HUB && /*#__PURE__*/_react.default.createElement(_TaskList.default, _extends({}, taskDetails, {
339
- refNumber: data.businessKey,
340
- onTaskAction: task => {
341
- (0, _onTaskAction.default)(task, pages, setCurrentTask, hubDetails, data, onPageChange);
342
- },
343
- annotations: (hubDetails === null || hubDetails === void 0 ? void 0 : hubDetails.taskListAnnotations) || [],
344
- formData: data
345
- })), formState.page && !formState.cya && !formState.page.collection && /*#__PURE__*/_react.default.createElement(_FormPage.default, {
346
- page: formState.page,
347
- pages: [].concat(pages),
348
- onAction: (action, patch, patchLabel) => {
349
- (0, _onPageAction.default)(action, patch, patchLabel, hooks, data, formState, validate, onPageChange, type, cleanseHiddenData, pages, components, pageId, setPagePoint, currentTask, setData, hubDetails, setSubmitted, addErrors, submitting, setSubmitting, errors);
350
- },
351
- onChange: onChange,
352
- hashLink: hashLink,
353
- classModifiers: formState.page.classModifiers,
354
- className: formState.page.className,
355
- submitting: submitting,
356
- pageId: pageId
357
- }), formState.page && !formState.cya && formState.page.collection && /*#__PURE__*/_react.default.createElement(_CollectionPage.default, {
358
- page: formState.page,
359
- pages: pages,
360
- onCollectionChange: onChange,
361
- onAction: (action, patch, patchLabel) => {
362
- (0, _onPageAction.default)(action, patch, patchLabel, hooks, data, formState, validate, onPageChange, type, cleanseHiddenData, pages, components, pageId, setPagePoint, currentTask, setData, hubDetails, setSubmitted, addErrors, submitting, setSubmitting, errors);
363
- },
364
- hashLink: hashLink,
365
- classModifiers: formState.page.classModifiers,
366
- className: formState.page.className,
367
- submitting: submitting
368
- }));
306
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
307
+ className: classes(),
308
+ children: [title && !hideTitle && pageId === _models.FormPages.HUB && /*#__PURE__*/(0, _jsxRuntime.jsx)(_copReactComponents.LargeHeading, {
309
+ children: title
310
+ }), formState.cya && /*#__PURE__*/(0, _jsxRuntime.jsx)(_CheckYourAnswers.default, _objectSpread(_objectSpread(_objectSpread(_objectSpread({
311
+ pages: _helpers.default.getRelevantPages(formState, pages, currentTask.fullPages)
312
+ }, cya), ((_formState$page4 = formState.page) === null || _formState$page4 === void 0 ? void 0 : _formState$page4.type) === _models.FormPages.PARTIAL_CYA && {
313
+ actions: (_formState$page$actio = formState.page.actions) === null || _formState$page$actio === void 0 ? void 0 : _formState$page$actio.filter(action => _utils.default.Component.show(action, data))
314
+ }), formState.cya), {}, {
315
+ onAction: action => {
316
+ (0, _onCYAAction.default)(setPagePoint, action, pages, validate, cleanseHiddenData, components, data, setData, type, pageId, currentTask, hooks, addErrors, hub, onPageChange, formState, submitting, setSubmitting);
317
+ },
318
+ onRowAction: onCYARowAction,
319
+ summaryListClassModifiers: summaryListClassModifiers,
320
+ hide_title: hideTitle,
321
+ noChangeAction: (_formState$cya$hideCh = formState.cya.hideChangeActions) !== null && _formState$cya$hideCh !== void 0 ? _formState$cya$hideCh : noChangeAction,
322
+ noGroupAction: (_formState$cya$hideGr = formState.cya.hideGroupActions) !== null && _formState$cya$hideGr !== void 0 ? _formState$cya$hideGr : false,
323
+ sections: typeof hubDetails !== 'undefined' ? hubDetails.sections : [],
324
+ type: type,
325
+ hideBlankRows: hideBlankRows
326
+ })), hub === _models.HubFormats.TASK && formState.pageId === _models.FormPages.HUB && /*#__PURE__*/(0, _jsxRuntime.jsx)(_TaskList.default, _objectSpread(_objectSpread({}, taskDetails), {}, {
327
+ refNumber: data.businessKey,
328
+ onTaskAction: task => {
329
+ (0, _onTaskAction.default)(task, pages, setCurrentTask, hubDetails, data, onPageChange);
330
+ },
331
+ annotations: (hubDetails === null || hubDetails === void 0 ? void 0 : hubDetails.taskListAnnotations) || [],
332
+ formData: data
333
+ })), formState.page && !formState.cya && !formState.page.collection && /*#__PURE__*/(0, _jsxRuntime.jsx)(_FormPage.default, {
334
+ page: formState.page,
335
+ pages: [].concat(pages),
336
+ onAction: (action, patch, patchLabel) => {
337
+ (0, _onPageAction.default)(action, patch, patchLabel, hooks, data, formState, validate, onPageChange, type, cleanseHiddenData, pages, components, pageId, setPagePoint, currentTask, setData, hubDetails, setSubmitted, addErrors, submitting, setSubmitting, errors);
338
+ },
339
+ onChange: onChange,
340
+ hashLink: hashLink,
341
+ classModifiers: formState.page.classModifiers,
342
+ className: formState.page.className,
343
+ submitting: submitting,
344
+ pageId: pageId
345
+ }), formState.page && !formState.cya && formState.page.collection && /*#__PURE__*/(0, _jsxRuntime.jsx)(_CollectionPage.default, {
346
+ page: formState.page,
347
+ pages: pages,
348
+ onCollectionChange: onChange,
349
+ onAction: (action, patch, patchLabel) => {
350
+ (0, _onPageAction.default)(action, patch, patchLabel, hooks, data, formState, validate, onPageChange, type, cleanseHiddenData, pages, components, pageId, setPagePoint, currentTask, setData, hubDetails, setSubmitted, addErrors, submitting, setSubmitting, errors);
351
+ },
352
+ hashLink: hashLink,
353
+ classModifiers: formState.page.classModifiers,
354
+ className: formState.page.className,
355
+ submitting: submitting
356
+ })]
357
+ });
369
358
  };
370
359
  const propTypes = {
371
360
  classBlock: _propTypes.default.string,
@@ -17,15 +17,14 @@ var _userProfileData = _interopRequireDefault(require("../../json/userProfile.da
17
17
  var _userProfile = _interopRequireDefault(require("../../json/userProfile.json"));
18
18
  var _taskList = _interopRequireDefault(require("../../json/taskList.json"));
19
19
  var _firstForm = _interopRequireDefault(require("../../json/firstForm.json"));
20
- 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); }
21
- 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; }
20
+ var _jsxRuntime = require("react/jsx-runtime");
21
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
22
22
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
23
23
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
24
24
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
25
25
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
26
26
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
27
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
28
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } // Global imports
27
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // Global imports
29
28
  // Local imports
30
29
  // JSON
31
30
  const setDate = (element, date) => {
@@ -85,7 +84,7 @@ describe('components', () => {
85
84
  const getCancelButton = page => page.childNodes[page.childNodes.length - 1].childNodes[1].childNodes[0];
86
85
  it('should start on the hub page correctly and display the title', async () => {
87
86
  await (0, _testUtils.act)(async () => {
88
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
87
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, _userProfile.default), {}, {
89
88
  data: _userProfileData.default
90
89
  })), container);
91
90
  });
@@ -107,7 +106,7 @@ describe('components', () => {
107
106
  onFormLoad: ON_FORM_LOAD
108
107
  };
109
108
  await (0, _testUtils.act)(async () => {
110
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
109
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, _userProfile.default), {}, {
111
110
  data: _userProfileData.default,
112
111
  hooks: HOOKS
113
112
  })), container);
@@ -123,7 +122,7 @@ describe('components', () => {
123
122
  onPageChange: ON_PAGE_CHANGE
124
123
  };
125
124
  await (0, _testUtils.act)(async () => {
126
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
125
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, _userProfile.default), {}, {
127
126
  data: _userProfileData.default,
128
127
  hooks: HOOKS
129
128
  })), container);
@@ -161,7 +160,7 @@ describe('components', () => {
161
160
  onSubmit: ON_SUBMIT
162
161
  };
163
162
  await (0, _testUtils.act)(async () => {
164
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
163
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, _userProfile.default), {}, {
165
164
  data: _userProfileData.default,
166
165
  hooks: HOOKS,
167
166
  type: _models.FormTypes.HUB
@@ -216,7 +215,7 @@ describe('components', () => {
216
215
  })
217
216
  };
218
217
  await (0, _testUtils.act)(async () => {
219
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
218
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, _userProfile.default), {}, {
220
219
  data: _userProfileData.default,
221
220
  hooks: HOOKS
222
221
  })), container);
@@ -269,7 +268,7 @@ describe('components', () => {
269
268
  onPageChange: ON_PAGE_CHANGE
270
269
  };
271
270
  (0, _testUtils.act)(() => {
272
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _firstForm.default, {
271
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, _firstForm.default), {}, {
273
272
  hooks: HOOKS,
274
273
  type: _models.FormTypes.CYA
275
274
  })), container);
@@ -339,7 +338,7 @@ describe('components', () => {
339
338
  type: 'cancel'
340
339
  }];
341
340
  (0, _testUtils.act)(() => {
342
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, formDefinition, {
341
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, formDefinition), {}, {
343
342
  data: _userProfileData.default,
344
343
  hooks: HOOKS
345
344
  })), container);
@@ -381,7 +380,7 @@ describe('components', () => {
381
380
  onPageChange: ON_PAGE_CHANGE
382
381
  };
383
382
  await (0, _testUtils.act)(async () => {
384
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
383
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, _userProfile.default), {}, {
385
384
  data: _userProfileData.default,
386
385
  hooks: HOOKS
387
386
  })), container);
@@ -414,7 +413,7 @@ describe('components', () => {
414
413
  });
415
414
  it('should show no title when hide_title is set to true', async () => {
416
415
  await (0, _testUtils.act)(async () => {
417
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
416
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, _userProfile.default), {}, {
418
417
  data: _userProfileData.default,
419
418
  hide_title: true
420
419
  })), container);
@@ -427,14 +426,14 @@ describe('components', () => {
427
426
  });
428
427
  it('should render a task list', async () => {
429
428
  await (0, _testUtils.act)(async () => {
430
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _taskList.default), container);
429
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread({}, _taskList.default)), container);
431
430
  });
432
431
  const taskList = container.childNodes[0].childNodes[1];
433
432
  expect(taskList.classList).toContain(_TaskList.DEFAULT_CLASS);
434
433
  });
435
434
  it('should render a cya page', async () => {
436
435
  await (0, _testUtils.act)(async () => {
437
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _firstForm.default), container);
436
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread({}, _firstForm.default)), container);
438
437
  });
439
438
  const cya = container.childNodes[0];
440
439
  expect(cya.classList).toContain('hods-form');
@@ -459,7 +458,7 @@ describe('components', () => {
459
458
  }]
460
459
  };
461
460
  await (0, _testUtils.act)(async () => {
462
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, TASK_LIST_WITH_NOTES, {
461
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, TASK_LIST_WITH_NOTES), {}, {
463
462
  data: _userProfileData.default,
464
463
  hooks: HOOKS
465
464
  })), container);
@@ -488,7 +487,7 @@ describe('components', () => {
488
487
  }]
489
488
  };
490
489
  await (0, _testUtils.act)(async () => {
491
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, TASK_LIST_WITH_NOTES, {
490
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, TASK_LIST_WITH_NOTES), {}, {
492
491
  data: _userProfileData.default,
493
492
  hooks: HOOKS
494
493
  })), container);
@@ -511,7 +510,7 @@ describe('components', () => {
511
510
  onSubmit: ON_SUBMIT
512
511
  };
513
512
  await (0, _testUtils.act)(async () => {
514
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _taskList.default, {
513
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, _taskList.default), {}, {
515
514
  hooks: HOOKS
516
515
  })), container);
517
516
  });
@@ -593,7 +592,7 @@ describe('components', () => {
593
592
  onSubmit: ON_SUBMIT
594
593
  };
595
594
  await (0, _testUtils.act)(async () => {
596
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _taskList.default, {
595
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, _taskList.default), {}, {
597
596
  hooks: HOOKS
598
597
  })), container);
599
598
  });
@@ -644,7 +643,7 @@ describe('components', () => {
644
643
  }
645
644
  };
646
645
  await (0, _testUtils.act)(async () => {
647
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _taskList.default, {
646
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, _taskList.default), {}, {
648
647
  hooks: HOOKS,
649
648
  data: DATA
650
649
  })), container);
@@ -671,7 +670,7 @@ describe('components', () => {
671
670
  complete: true
672
671
  };
673
672
  await (0, _testUtils.act)(async () => {
674
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, TASK_LIST_WITH_NO_TASK_CYAS, {
673
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, TASK_LIST_WITH_NO_TASK_CYAS), {}, {
675
674
  hooks: HOOKS
676
675
  })), container);
677
676
  });
@@ -707,7 +706,7 @@ describe('components', () => {
707
706
  onCancel: ON_CANCEL
708
707
  };
709
708
  await (0, _testUtils.act)(async () => {
710
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
709
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, _userProfile.default), {}, {
711
710
  data: _userProfileData.default,
712
711
  hooks: HOOKS
713
712
  })), container);
@@ -739,7 +738,7 @@ describe('components', () => {
739
738
  const TASK_LIST_NON_SEQUENTIAL = JSON.parse(JSON.stringify(_taskList.default));
740
739
  TASK_LIST_NON_SEQUENTIAL.hub.nonSequential = true;
741
740
  await (0, _testUtils.act)(async () => {
742
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, TASK_LIST_NON_SEQUENTIAL, {
741
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, TASK_LIST_NON_SEQUENTIAL), {}, {
743
742
  hooks: HOOKS
744
743
  })), container);
745
744
  });
@@ -763,7 +762,7 @@ describe('components', () => {
763
762
  onPageChange: ON_PAGE_CHANGE
764
763
  };
765
764
  await (0, _testUtils.act)(async () => {
766
- (0, _reactDom.render)(/*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
765
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormRenderer.default, _objectSpread(_objectSpread({}, _userProfile.default), {}, {
767
766
  data: _userProfileData.default,
768
767
  hooks: HOOKS,
769
768
  hideBlankRows: true
@@ -0,0 +1,118 @@
1
+ {
2
+ "id": "example-form",
3
+ "cleanseHiddenData": true,
4
+ "version": "0.0.1",
5
+ "name": "example-form",
6
+ "title": "Example form",
7
+ "type": "form",
8
+ "components": [
9
+ {
10
+ "id": "alpha",
11
+ "fieldId": "alpha",
12
+ "label": "Alpha",
13
+ "type": "text"
14
+ },
15
+ {
16
+ "id": "bravo",
17
+ "fieldId": "bravo",
18
+ "label": "Bravo",
19
+ "type": "text"
20
+ },
21
+ {
22
+ "id": "person",
23
+ "fieldId": "person",
24
+ "type": "container",
25
+ "components": [
26
+ {
27
+ "id": "telephone_visible",
28
+ "fieldId": "telephone",
29
+ "label": "telephone_visible",
30
+ "type": "text"
31
+ },
32
+ {
33
+ "id": "telephoneKnown",
34
+ "fieldId": "telephoneKnown",
35
+ "type": "radios",
36
+ "data": {
37
+ "options": [
38
+ {
39
+ "value": "yes",
40
+ "label": "Yes",
41
+ "nested": [
42
+ {
43
+ "id": "telephone",
44
+ "fieldId": "telephone",
45
+ "type": "text",
46
+ "label": "Telephone",
47
+ "required": true
48
+ }
49
+ ]
50
+ },
51
+ {
52
+ "value": "no",
53
+ "label": "No"
54
+ }
55
+ ]
56
+ },
57
+ "show_when": {
58
+ "op": "=",
59
+ "field": "bravo",
60
+ "value": "NOT-bravo-value"
61
+ }
62
+ },
63
+ {
64
+ "id": "name",
65
+ "fieldId": "name",
66
+ "label": "Name",
67
+ "type": "text"
68
+ }
69
+ ]
70
+ },
71
+ {
72
+ "id": "gamma",
73
+ "fieldId": "gamma",
74
+ "label": "Gamma",
75
+ "type": "text"
76
+ },
77
+ {
78
+ "id": "epsilon",
79
+ "fieldId": "epsilon",
80
+ "label": "Epsilon",
81
+ "type": "text"
82
+ }
83
+ ],
84
+ "pages": [
85
+ {
86
+ "id": "general",
87
+ "name": "general",
88
+ "title": "General information",
89
+ "components": [
90
+ {
91
+ "use": "alpha"
92
+ },
93
+ {
94
+ "use": "bravo"
95
+ },
96
+ {
97
+ "use": "person"
98
+ },
99
+ {
100
+ "use": "gamma"
101
+ },
102
+ {
103
+ "use": "epsilon"
104
+ }
105
+ ],
106
+ "actions": [
107
+ "submit",
108
+ {
109
+ "type": "cancel",
110
+ "page": "",
111
+ "validate": false,
112
+ "classModifiers": "secondary",
113
+ "label": "Cancel"
114
+ }
115
+ ]
116
+ }
117
+ ]
118
+ }