@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.
- package/dist/components/CheckYourAnswers/Answer.js +5 -2
- package/dist/components/CheckYourAnswers/Answer.test.js +8 -7
- package/dist/components/CheckYourAnswers/CheckYourAnswers.js +86 -68
- package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +22 -22
- package/dist/components/CollectionPage/CollectionPage.js +3 -3
- package/dist/components/CollectionPage/CollectionPage.test.js +13 -13
- package/dist/components/CollectionSummary/BannerStrip.js +22 -21
- package/dist/components/CollectionSummary/BannerStrip.test.js +8 -8
- package/dist/components/CollectionSummary/CollectionSummary.js +105 -99
- package/dist/components/CollectionSummary/CollectionSummary.test.js +23 -19
- package/dist/components/CollectionSummary/Confirmation.js +16 -10
- package/dist/components/CollectionSummary/Confirmation.test.js +12 -11
- package/dist/components/CollectionSummary/RenderListView.js +78 -65
- package/dist/components/CollectionSummary/RenderListView.test.js +18 -12
- package/dist/components/CollectionSummary/SummaryCard.js +83 -72
- package/dist/components/CollectionSummary/SummaryCard.test.js +105 -101
- package/dist/components/CollectionSummary/SummaryCardButtons.js +17 -13
- package/dist/components/CollectionSummary/SummaryCardButtons.test.js +3 -2
- package/dist/components/CollectionSummary/SummaryCardDetails.js +72 -67
- package/dist/components/CollectionSummary/SummaryCardDetails.test.js +12 -12
- package/dist/components/CollectionSummary/SummaryCardValidationContext.js +6 -5
- package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +29 -13
- package/dist/components/FormComponent/Collection.js +91 -82
- package/dist/components/FormComponent/Collection.test.js +16 -15
- package/dist/components/FormComponent/Container.js +21 -22
- package/dist/components/FormComponent/Container.test.js +9 -8
- package/dist/components/FormComponent/FormComponent.js +7 -8
- package/dist/components/FormComponent/FormComponent.test.js +18 -13
- package/dist/components/FormPage/FormPage.js +29 -23
- package/dist/components/FormPage/FormPage.test.js +11 -11
- package/dist/components/FormRenderer/FormRenderer.js +81 -92
- package/dist/components/FormRenderer/FormRenderer.test.js +23 -24
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-with-nested-questions-visible-elsewhere.json +118 -0
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-nested-answers-hidden-by-option-visible-elsewhere.json +113 -0
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-page-nested-component.json +26003 -0
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-component-with-nested-questions-visible-elsewhere.json +12 -0
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-nested-answers-hidden-by-option-visible-elsewhere.json +12 -0
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-page-nested-component.json +63 -0
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-component-with-nested-questions-visible-elsewhere-removed.json +11 -0
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-nested-answers-hidden-by-option-visible-elsewhere-removed.json +12 -0
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-page-nested-component.json +63 -0
- package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.js +18 -16
- package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.test.js +31 -0
- package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutesUtils.js +44 -35
- package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutesUtils.test.js +1 -2
- package/dist/components/PageActions/ActionButton.js +12 -6
- package/dist/components/PageActions/ActionButton.test.js +5 -5
- package/dist/components/PageActions/PageActions.js +7 -5
- package/dist/components/PageActions/PageActions.test.js +5 -4
- package/dist/components/SummaryList/GroupAction.js +14 -8
- package/dist/components/SummaryList/GroupAction.test.js +5 -4
- package/dist/components/SummaryList/RowAction.js +12 -6
- package/dist/components/SummaryList/RowAction.test.js +5 -4
- package/dist/components/SummaryList/SummaryList.js +54 -49
- package/dist/components/SummaryList/SummaryList.test.js +33 -19
- package/dist/components/SummaryList/SummaryListHeadingRow.js +9 -3
- package/dist/components/SummaryList/SummaryListHeadingRowWithAction.js +20 -12
- package/dist/components/SummaryList/SummaryListRow.js +16 -11
- package/dist/components/SummaryList/SummaryListTitleRow.js +7 -3
- package/dist/components/TaskList/Task.js +20 -17
- package/dist/components/TaskList/Task.test.js +8 -7
- package/dist/components/TaskList/TaskList.js +68 -45
- package/dist/components/TaskList/TaskList.test.js +11 -11
- package/dist/components/TaskList/TaskState.js +5 -3
- package/dist/components/TaskList/TaskState.test.js +8 -7
- package/dist/context/HooksContext/HooksContext.js +6 -5
- package/dist/context/HooksContext/HooksContext.test.js +14 -6
- package/dist/context/HooksContext/index.js +1 -2
- package/dist/context/ValidationContext/ValidationContext.js +6 -5
- package/dist/context/ValidationContext/ValidationContext.test.js +33 -9
- package/dist/context/ValidationContext/index.js +1 -2
- package/dist/hooks/index.js +1 -2
- package/dist/hooks/useRefData.js +1 -2
- package/dist/index.js +1 -2
- package/dist/setupTests.js +23 -18
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +19 -16
- package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.js +5 -5
- package/dist/utils/CollectionPage/getQuickEditPage.js +2 -2
- package/dist/utils/Component/cleanAttributes.test.js +1 -2
- package/dist/utils/Component/getComponent.js +38 -28
- package/dist/utils/Component/getDefaultValueFromConfig.js +1 -2
- package/dist/utils/Component/isEditable.test.js +1 -2
- package/dist/utils/Component/wrapInFormGroup.js +10 -4
- package/dist/utils/Format/formatDataForComponent.test.js +1 -2
- package/dist/utils/Format/formatDataForPage.test.js +1 -2
- package/dist/utils/Validate/validateDate.test.js +1 -2
- package/dist/utils/Validate/validateMultifile.test.js +1 -2
- 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
|
-
|
|
12
|
-
function _interopRequireWildcard(e, r) { if (!
|
|
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 =
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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
|
|
27
|
-
function
|
|
28
|
-
function
|
|
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__*/
|
|
61
|
-
overrides: hooks
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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__*/
|
|
321
|
-
className: classes()
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
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
|
-
|
|
21
|
-
function _interopRequireWildcard(e, r) { if (!
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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__*/
|
|
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
|
+
}
|