@ukhomeoffice/cop-react-form-renderer 4.74.0 → 4.76.0
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 +10 -4
- package/dist/components/CheckYourAnswers/CheckYourAnswers.js +51 -27
- package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +6 -5
- package/dist/components/CollectionPage/CollectionPage.js +7 -5
- package/dist/components/FormComponent/Collection.js +25 -17
- package/dist/components/FormComponent/Container.js +23 -13
- package/dist/components/FormComponent/FormComponent.js +24 -9
- package/dist/components/FormComponent/helpers/addLabel.js +4 -3
- package/dist/components/FormPage/FormPage.js +30 -19
- package/dist/components/FormRenderer/FormRenderer.js +90 -34
- package/dist/components/FormRenderer/FormRenderer.test.js +29 -27
- package/dist/components/FormRenderer/handlers/index.js +1 -2
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +19 -15
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +8 -8
- package/dist/components/FormRenderer/helpers/getCYA.js +5 -1
- package/dist/components/FormRenderer/helpers/getNextPageId.js +13 -7
- package/dist/components/FormRenderer/helpers/getRelevantPages.js +10 -2
- package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +1 -1
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +38 -24
- package/dist/components/FormRenderer/helpers/index.js +1 -2
- package/dist/components/FormRenderer/onCYAAction.js +2 -2
- package/dist/components/FormRenderer/onCYAAction.test.js +13 -13
- package/dist/components/FormRenderer/onPageAction.js +27 -11
- package/dist/components/FormRenderer/onPageAction.test.js +16 -16
- package/dist/components/FormRenderer/onTaskAction.js +14 -11
- package/dist/components/PageActions/ActionButton.js +0 -3
- package/dist/components/PageActions/PageActions.js +2 -2
- package/dist/components/SummaryList/SummaryList.js +13 -8
- package/dist/components/SummaryList/SummaryListHeadingRow.js +6 -2
- package/dist/components/SummaryList/SummaryListRow.js +5 -2
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +2 -1
- package/dist/components/SummaryList/helpers/getRowActionAttributes.js +2 -1
- package/dist/components/TaskList/Task.js +1 -1
- package/dist/components/TaskList/TaskList.js +21 -12
- package/dist/components/TaskList/TaskState.js +2 -2
- package/dist/components/index.js +7 -0
- package/dist/context/HooksContext/HooksContext.js +33 -1
- package/dist/context/ValidationContext/ValidationContext.js +8 -1
- package/dist/context/ValidationContext/ValidationContext.test.js +8 -2
- package/dist/hooks/useGetRequest.js +3 -2
- package/dist/hooks/useRefData.js +1 -0
- package/dist/index.js +6 -0
- package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
- package/dist/utils/CheckYourAnswers/getCYAAction.test.js +34 -34
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +2 -1
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +4 -4
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +2 -1
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +2 -2
- package/dist/utils/CheckYourAnswers/getCYARow.js +13 -11
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +8 -8
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +25 -22
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +1 -0
- package/dist/utils/CheckYourAnswers/showComponentCYA.js +1 -1
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +1 -0
- package/dist/utils/CollectionPage/mergeCollectionPages.js +7 -6
- package/dist/utils/Component/applyToComponentTree.js +4 -2
- package/dist/utils/Component/cleanAttributes.js +7 -1
- package/dist/utils/Component/cleanAttributes.test.js +4 -4
- package/dist/utils/Component/getComponent.js +8 -6
- package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +4 -4
- package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +1 -0
- package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +3 -3
- package/dist/utils/Component/getComponentTests/getComponent.email.test.js +1 -1
- package/dist/utils/Component/getComponentTests/getComponent.file.test.js +1 -1
- package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +1 -1
- package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +1 -1
- package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +3 -3
- package/dist/utils/Component/getComponentTests/getComponent.text.test.js +1 -1
- package/dist/utils/Component/getComponentTests/getComponent.time.test.js +5 -5
- package/dist/utils/Component/setupContainerComponentsPath.js +2 -0
- package/dist/utils/Condition/meetsCondition.js +2 -1
- package/dist/utils/Condition/setupConditions.js +2 -2
- package/dist/utils/Container/setupNesting.js +5 -1
- package/dist/utils/Data/applyFormula.js +16 -10
- package/dist/utils/Data/getAutocompleteSource.js +3 -1
- package/dist/utils/Data/getOptions.js +3 -2
- package/dist/utils/Data/setupFormData.js +4 -2
- package/dist/utils/FormPage/getFormPage.js +1 -1
- package/dist/utils/FormPage/getPageActions.js +5 -3
- package/dist/utils/FormPage/showFormPage.js +2 -2
- package/dist/utils/FormPage/showFormPageCYA.js +1 -0
- package/dist/utils/FormPage/useComponent.js +1 -0
- package/dist/utils/Format/formatDataForComponent.js +2 -1
- package/dist/utils/Meta/index.js +1 -2
- package/dist/utils/Operate/getFirstOf.test.js +1 -0
- package/dist/utils/Operate/persistValueInFormData.js +1 -0
- package/dist/utils/Operate/persistValueInFormData.test.js +1 -1
- package/dist/utils/Operate/shouldRun.js +16 -13
- package/dist/utils/Validate/additional/index.js +2 -1
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +1 -1
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +2 -2
- package/dist/utils/Validate/additional/mustBeInTheFuture.js +1 -1
- package/dist/utils/Validate/additional/mustBeInThePast.js +5 -5
- package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +1 -0
- package/dist/utils/Validate/additional/utils.js +16 -16
- package/dist/utils/Validate/validateCollection.js +16 -4
- package/dist/utils/Validate/validateCollection.test.js +17 -0
- package/dist/utils/Validate/validateComponent.js +26 -20
- package/dist/utils/Validate/validateContainer.js +2 -2
- package/dist/utils/Validate/validateDate.js +2 -1
- package/dist/utils/Validate/validateEmail.js +1 -0
- package/dist/utils/Validate/validatePage.js +6 -3
- package/dist/utils/Validate/validatePage.test.js +9 -18
- package/dist/utils/Validate/validateRegex.js +2 -5
- package/dist/utils/Validate/validateRequired.js +2 -4
- package/package.json +3 -2
|
@@ -26,30 +26,30 @@ var getEntryToCollectionRow = function getEntryToCollectionRow(page, onAction) {
|
|
|
26
26
|
action: (0, _getCYAAction.default)(false, page, onAction)
|
|
27
27
|
}];
|
|
28
28
|
};
|
|
29
|
-
var getContainerForItem = function getContainerForItem(collection, item, labelCount,
|
|
29
|
+
var getContainerForItem = function getContainerForItem(collection, item, labelCount, fullPath) {
|
|
30
30
|
return {
|
|
31
31
|
id: item.id,
|
|
32
32
|
fieldId: item.id,
|
|
33
33
|
type: _models.ComponentTypes.CONTAINER,
|
|
34
34
|
required: collection.required,
|
|
35
|
-
full_path:
|
|
35
|
+
full_path: fullPath,
|
|
36
36
|
components: collection.item.map(function (component) {
|
|
37
37
|
return _objectSpread(_objectSpread({}, component), {}, {
|
|
38
38
|
label: _copReactComponents.Utils.interpolateString(component.label, _objectSpread(_objectSpread({}, item), {}, {
|
|
39
39
|
index: labelCount
|
|
40
40
|
})),
|
|
41
|
-
full_path: "".concat(
|
|
41
|
+
full_path: "".concat(fullPath, ".").concat(component.fieldId)
|
|
42
42
|
});
|
|
43
43
|
})
|
|
44
44
|
};
|
|
45
45
|
};
|
|
46
|
-
var getTitleRowForItem = function getTitleRowForItem(collection, item, pageId, labelCount,
|
|
46
|
+
var getTitleRowForItem = function getTitleRowForItem(collection, item, pageId, labelCount, fullPath) {
|
|
47
47
|
var labels = _objectSpread(_objectSpread({}, _models.CollectionLabels), collection.labels);
|
|
48
48
|
if (labels.item) {
|
|
49
49
|
return {
|
|
50
50
|
pageId: pageId,
|
|
51
51
|
fieldId: collection.fieldId,
|
|
52
|
-
full_path:
|
|
52
|
+
full_path: fullPath,
|
|
53
53
|
key: _copReactComponents.Utils.interpolateString(labels.item, _objectSpread(_objectSpread({}, item), {}, {
|
|
54
54
|
index: labelCount
|
|
55
55
|
})),
|
|
@@ -63,10 +63,10 @@ var getCYARowsForCollection = function getCYARowsForCollection(page, collection,
|
|
|
63
63
|
if (Array.isArray(items) && items.length && (0, _showComponentCYA.default)(collection, page.formData)) {
|
|
64
64
|
return items.flatMap(function (item, index) {
|
|
65
65
|
var labelCount = (collection.countOffset || 0) + index + 1;
|
|
66
|
-
var
|
|
67
|
-
var container = getContainerForItem(collection, item, labelCount,
|
|
66
|
+
var fullPath = "".concat(collection.full_path || collection.fieldId, "[").concat(index, "]");
|
|
67
|
+
var container = getContainerForItem(collection, item, labelCount, fullPath);
|
|
68
68
|
container = (0, _setupContainerComponentsPath.default)(container);
|
|
69
|
-
return [getTitleRowForItem(collection, item, page.id, labelCount,
|
|
69
|
+
return [getTitleRowForItem(collection, item, page.id, labelCount, fullPath)].concat((0, _getCYARowsForContainer.default)(page, container, item, onAction));
|
|
70
70
|
}).filter(function (r) {
|
|
71
71
|
return !!r;
|
|
72
72
|
});
|
|
@@ -18,29 +18,29 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
18
18
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
19
19
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
20
20
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
21
|
-
var getContainerForPage = function getContainerForPage(page, item, labelCount,
|
|
21
|
+
var getContainerForPage = function getContainerForPage(page, item, labelCount, fullPath) {
|
|
22
22
|
return {
|
|
23
23
|
id: item.id,
|
|
24
24
|
fieldId: item.id,
|
|
25
25
|
type: _models.ComponentTypes.CONTAINER,
|
|
26
26
|
required: true,
|
|
27
|
-
full_path:
|
|
27
|
+
full_path: fullPath,
|
|
28
28
|
components: page.components.map(function (component) {
|
|
29
29
|
return _objectSpread(_objectSpread({}, component), {}, {
|
|
30
30
|
label: _copReactComponents.Utils.interpolateString(component.label, _objectSpread(_objectSpread({}, item), {}, {
|
|
31
31
|
index: labelCount
|
|
32
32
|
})),
|
|
33
|
-
full_path: "".concat(
|
|
33
|
+
full_path: "".concat(fullPath, ".").concat(component.fieldId)
|
|
34
34
|
});
|
|
35
35
|
})
|
|
36
36
|
};
|
|
37
37
|
};
|
|
38
|
-
var getTitleRowForItem = function getTitleRowForItem(page, item, pageId, labelCount,
|
|
38
|
+
var getTitleRowForItem = function getTitleRowForItem(page, item, pageId, labelCount, fullPath) {
|
|
39
39
|
var labels = _objectSpread(_objectSpread({}, _models.CollectionLabels), page.collection.labels);
|
|
40
40
|
return {
|
|
41
41
|
pageId: pageId,
|
|
42
42
|
fieldId: 'Title',
|
|
43
|
-
full_path: "".concat(
|
|
43
|
+
full_path: "".concat(fullPath, ".Title"),
|
|
44
44
|
key: _copReactComponents.Utils.interpolateString(labels.item, _objectSpread(_objectSpread({}, item), {}, {
|
|
45
45
|
index: labelCount
|
|
46
46
|
})),
|
|
@@ -63,22 +63,24 @@ var getHeadingRow = function getHeadingRow(config, pageId, labelCount) {
|
|
|
63
63
|
};
|
|
64
64
|
var getActionRows = function getActionRows(page, item, onAction, labelCount) {
|
|
65
65
|
var _page$collection, _page$collection$acti;
|
|
66
|
-
|
|
66
|
+
return (_page$collection = page.collection) === null || _page$collection === void 0 ? void 0 : (_page$collection$acti = _page$collection.actions) === null || _page$collection$acti === void 0 ? void 0 : _page$collection$acti.map(function (action) {
|
|
67
67
|
if (action.type === 'remove') {
|
|
68
68
|
return (0, _getCYACollectionDeleteAction.default)(page, item, onAction, labelCount, action);
|
|
69
|
-
}
|
|
69
|
+
}
|
|
70
|
+
if (action.type === 'change') {
|
|
70
71
|
return (0, _getCYACollectionChangeAction.default)(page, item, onAction, labelCount, action);
|
|
71
|
-
} else {
|
|
72
|
-
return null;
|
|
73
72
|
}
|
|
73
|
+
return null;
|
|
74
74
|
}).filter(function (action) {
|
|
75
75
|
return !!action;
|
|
76
76
|
});
|
|
77
|
-
return actions;
|
|
78
77
|
};
|
|
78
|
+
|
|
79
|
+
// eslint-disable-next-line arrow-body-style
|
|
79
80
|
var getChangeActionForPage = function getChangeActionForPage(page, item, onAction) {
|
|
80
81
|
return function () {
|
|
81
|
-
var changeCallback = function changeCallback(
|
|
82
|
+
var changeCallback = function changeCallback(changeData) {
|
|
83
|
+
var data = changeData;
|
|
82
84
|
data["".concat(page.collection.name, "ActiveId")] = item.id;
|
|
83
85
|
return data;
|
|
84
86
|
};
|
|
@@ -107,26 +109,27 @@ var getCYARowsForCollectionPage = function getCYARowsForCollectionPage(page, onA
|
|
|
107
109
|
var _page$collection2;
|
|
108
110
|
var labelCount = index + 1;
|
|
109
111
|
var actionPosition = ((_page$collection2 = page.collection) === null || _page$collection2 === void 0 ? void 0 : _page$collection2.actionPosition) || 'top';
|
|
110
|
-
var
|
|
111
|
-
var titleRow = getTitleRowForItem(page, item, page.id, labelCount,
|
|
112
|
+
var fullPath = "".concat(page.collection.name, "[").concat(index, "]");
|
|
113
|
+
var titleRow = getTitleRowForItem(page, item, page.id, labelCount, fullPath);
|
|
112
114
|
var actionRows = getActionRows(page, item, onAction, labelCount);
|
|
113
115
|
rows = rows.concat(titleRow);
|
|
114
116
|
if (actionPosition === 'top') {
|
|
115
117
|
rows = rows.concat(actionRows);
|
|
116
118
|
}
|
|
117
119
|
page.collectionPages.forEach(function (p) {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
120
|
+
var collectionPage = p;
|
|
121
|
+
if (collectionPage.collection.route) {
|
|
122
|
+
var pageWithRoute = (0, _addShowWhen.default)(collectionPage, p.collection.route);
|
|
123
|
+
collectionPage = pageWithRoute || collectionPage;
|
|
121
124
|
}
|
|
122
|
-
if ((0, _showFormPageCYA.default)(
|
|
123
|
-
if (
|
|
124
|
-
var headingRow = getHeadingRow(
|
|
125
|
+
if ((0, _showFormPageCYA.default)(collectionPage, _objectSpread(_objectSpread({}, collectionPage.formData), item))) {
|
|
126
|
+
if (collectionPage.collection.heading) {
|
|
127
|
+
var headingRow = getHeadingRow(collectionPage.collection.heading, collectionPage.id, labelCount);
|
|
125
128
|
rows = rows.concat(headingRow);
|
|
126
129
|
}
|
|
127
|
-
var container = getContainerForPage(
|
|
128
|
-
var rowChangeAction = getChangeActionForPage(
|
|
129
|
-
var containerRows = (0, _getCYARowsForContainer.default)(
|
|
130
|
+
var container = getContainerForPage(collectionPage, item, labelCount, fullPath);
|
|
131
|
+
var rowChangeAction = getChangeActionForPage(collectionPage, item, onAction);
|
|
132
|
+
var containerRows = (0, _getCYARowsForContainer.default)(collectionPage, container, item, rowChangeAction);
|
|
130
133
|
rows = rows.concat(containerRows);
|
|
131
134
|
}
|
|
132
135
|
});
|
|
@@ -29,7 +29,7 @@ var showComponentCYA = function showComponentCYA(options, data) {
|
|
|
29
29
|
if (EXCLUDE_FROM_CYA.includes(options.type)) {
|
|
30
30
|
return false;
|
|
31
31
|
}
|
|
32
|
-
if (
|
|
32
|
+
if (Object.prototype.hasOwnProperty.call(options, 'show_on_cya') && !options.show_on_cya) {
|
|
33
33
|
return false;
|
|
34
34
|
}
|
|
35
35
|
if (options.hideOnCyaWhenEmpty && options.type === _models.ComponentTypes.COLLECTION) {
|
|
@@ -30,6 +30,7 @@ var duplicateCollectionPageActiveEntry = function duplicateCollectionPageActiveE
|
|
|
30
30
|
id: Date.now().toString()
|
|
31
31
|
});
|
|
32
32
|
formData[collectionName].push(newEntry);
|
|
33
|
+
// eslint-disable-next-line no-param-reassign
|
|
33
34
|
formData["".concat(collectionName, "ActiveId")] = newEntry.id;
|
|
34
35
|
return true;
|
|
35
36
|
};
|
|
@@ -10,6 +10,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
10
10
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
11
11
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
12
12
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
13
|
+
/* eslint-disable no-param-reassign */
|
|
14
|
+
|
|
13
15
|
var createMasterPage = function createMasterPage(page) {
|
|
14
16
|
return {
|
|
15
17
|
id: page.id,
|
|
@@ -48,13 +50,12 @@ var mergeCollectionPages = function mergeCollectionPages(pages) {
|
|
|
48
50
|
// we kick one off using this page as a template.
|
|
49
51
|
masterPages[page.collection.name] = createMasterPage(page);
|
|
50
52
|
return masterPages[page.collection.name];
|
|
51
|
-
} else {
|
|
52
|
-
// If a master page already exists for this collection.name
|
|
53
|
-
// then we just merge this page into it and remove this page
|
|
54
|
-
// from the array.
|
|
55
|
-
mergeIntoMasterPage(page, masterPages[page.collection.name]);
|
|
56
|
-
return null;
|
|
57
53
|
}
|
|
54
|
+
// If a master page already exists for this collection.name
|
|
55
|
+
// then we just merge this page into it and remove this page
|
|
56
|
+
// from the array.
|
|
57
|
+
mergeIntoMasterPage(page, masterPages[page.collection.name]);
|
|
58
|
+
return null;
|
|
58
59
|
}
|
|
59
60
|
return page;
|
|
60
61
|
}).filter(function (page) {
|
|
@@ -35,12 +35,14 @@ var applyToComponentTree = function applyToComponentTree(root, callback) {
|
|
|
35
35
|
var result = _objectSpread({}, root);
|
|
36
36
|
switch (root.type) {
|
|
37
37
|
case _models.ComponentTypes.CONTAINER:
|
|
38
|
-
result.components.forEach(function (c, index,
|
|
38
|
+
result.components.forEach(function (c, index, containerArray) {
|
|
39
|
+
var array = containerArray;
|
|
39
40
|
array[index] = applyToComponentTree(c, callback);
|
|
40
41
|
});
|
|
41
42
|
break;
|
|
42
43
|
case _models.ComponentTypes.COLLECTION:
|
|
43
|
-
result.item.forEach(function (c, index,
|
|
44
|
+
result.item.forEach(function (c, index, collectionArray) {
|
|
45
|
+
var array = collectionArray;
|
|
44
46
|
array[index] = applyToComponentTree(c, callback);
|
|
45
47
|
});
|
|
46
48
|
break;
|
|
@@ -4,6 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.JSON_ONLY_PROPERTIES = void 0;
|
|
7
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
8
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
9
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
10
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
11
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
12
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
8
13
|
var JSON_ONLY_PROPERTIES = ['source', 'use', 'show_when', 'options', 'additionalValidation', 'full_path', 'formData'];
|
|
9
14
|
|
|
@@ -25,8 +30,9 @@ var cleanAttributes = function cleanAttributes(options) {
|
|
|
25
30
|
if (options && _typeof(options) === 'object') {
|
|
26
31
|
return Object.keys(options).reduce(function (obj, key) {
|
|
27
32
|
if (!removeKeys.includes(key)) {
|
|
28
|
-
obj
|
|
33
|
+
return _objectSpread(_objectSpread({}, obj), {}, _defineProperty({}, key, options[key]));
|
|
29
34
|
}
|
|
35
|
+
;
|
|
30
36
|
return obj;
|
|
31
37
|
}, {});
|
|
32
38
|
}
|
|
@@ -27,13 +27,13 @@ describe('utils', function () {
|
|
|
27
27
|
};
|
|
28
28
|
// Add a bunch of properties we know will need to be removed.
|
|
29
29
|
_cleanAttributes.JSON_ONLY_PROPERTIES.forEach(function (p) {
|
|
30
|
-
|
|
30
|
+
OPTIONS[p] = 'value';
|
|
31
31
|
});
|
|
32
32
|
var RESULT = (0, _cleanAttributes.default)(OPTIONS);
|
|
33
33
|
|
|
34
34
|
// The original options should remain untouched.
|
|
35
35
|
expect(OPTIONS.id).toEqual('bob');
|
|
36
|
-
expect(OPTIONS
|
|
36
|
+
expect(OPTIONS.source).toEqual('value');
|
|
37
37
|
|
|
38
38
|
// But those values should have been removed from the result,
|
|
39
39
|
// which means it should simply have an id of 'bob'.
|
|
@@ -48,14 +48,14 @@ describe('utils', function () {
|
|
|
48
48
|
};
|
|
49
49
|
// Add a bunch of properties we know will need to be removed.
|
|
50
50
|
_cleanAttributes.JSON_ONLY_PROPERTIES.forEach(function (p) {
|
|
51
|
-
|
|
51
|
+
OPTIONS[p] = 'value';
|
|
52
52
|
});
|
|
53
53
|
var RESULT = (0, _cleanAttributes.default)(OPTIONS, ['fieldId']);
|
|
54
54
|
|
|
55
55
|
// The original options should remain untouched.
|
|
56
56
|
expect(OPTIONS.id).toEqual('bob');
|
|
57
57
|
expect(OPTIONS.fieldId).toEqual('bobField');
|
|
58
|
-
expect(OPTIONS
|
|
58
|
+
expect(OPTIONS.source).toEqual('value');
|
|
59
59
|
|
|
60
60
|
// But those values should have been removed from the result,
|
|
61
61
|
// which means it should simply have an id of 'bob'.
|
|
@@ -35,9 +35,8 @@ var getAlert = function getAlert(config) {
|
|
|
35
35
|
var heading = _copReactComponents.Utils.interpolateString(config.heading, config.formData);
|
|
36
36
|
var children = _copReactComponents.Utils.interpolateString(config.text, config.formData);
|
|
37
37
|
return /*#__PURE__*/_react.default.createElement(_copReactComponents.Alert, _extends({}, attrs, {
|
|
38
|
-
heading: heading
|
|
39
|
-
|
|
40
|
-
}));
|
|
38
|
+
heading: heading
|
|
39
|
+
}), children);
|
|
41
40
|
};
|
|
42
41
|
var getAutocomplete = function getAutocomplete(config) {
|
|
43
42
|
var attrs = (0, _cleanAttributes.default)(config);
|
|
@@ -51,7 +50,8 @@ var getCheckboxes = function getCheckboxes(config) {
|
|
|
51
50
|
_Data.default.getOptions(config, function (val) {
|
|
52
51
|
options = val;
|
|
53
52
|
});
|
|
54
|
-
options.forEach(function (
|
|
53
|
+
options.forEach(function (paramOption) {
|
|
54
|
+
var option = _objectSpread({}, paramOption);
|
|
55
55
|
if (!Array.isArray(option.nested)) {
|
|
56
56
|
return;
|
|
57
57
|
}
|
|
@@ -138,7 +138,8 @@ var getRadios = function getRadios(config) {
|
|
|
138
138
|
_Data.default.getOptions(config, function (val) {
|
|
139
139
|
options = val;
|
|
140
140
|
});
|
|
141
|
-
options.forEach(function (
|
|
141
|
+
options.forEach(function (paramOption) {
|
|
142
|
+
var option = _objectSpread({}, paramOption);
|
|
142
143
|
if (!Array.isArray(option.nested)) {
|
|
143
144
|
return;
|
|
144
145
|
}
|
|
@@ -229,7 +230,8 @@ var getComponentByType = function getComponentByType(config) {
|
|
|
229
230
|
* @param {*} parent the parent configuration
|
|
230
231
|
* @param {*} child the child configuration
|
|
231
232
|
*/
|
|
232
|
-
var getChildJsx = function getChildJsx(parent,
|
|
233
|
+
var getChildJsx = function getChildJsx(parent, paramChild) {
|
|
234
|
+
var child = _objectSpread({}, paramChild);
|
|
233
235
|
if (parent.full_path) {
|
|
234
236
|
var pathParts = parent.full_path.split('.');
|
|
235
237
|
pathParts.pop();
|
|
@@ -29,10 +29,10 @@ describe('utils.Component.get', function () {
|
|
|
29
29
|
var formGroup = (0, _react.getByTestId)(container, ID);
|
|
30
30
|
expect(formGroup.tagName).toEqual('DIV');
|
|
31
31
|
expect(formGroup.classList).toContain('govuk-form-group');
|
|
32
|
-
var label
|
|
33
|
-
var autocompleteWrapper
|
|
34
|
-
var autocomplete
|
|
35
|
-
var autocompleteInput
|
|
32
|
+
var label;
|
|
33
|
+
var autocompleteWrapper;
|
|
34
|
+
var autocomplete;
|
|
35
|
+
var autocompleteInput;
|
|
36
36
|
var fieldSet = formGroup.childNodes[0];
|
|
37
37
|
fieldSet.childNodes.forEach(function (node) {
|
|
38
38
|
// Check if it's an element.
|
|
@@ -127,6 +127,7 @@ describe('utils.Component.get', function () {
|
|
|
127
127
|
},
|
|
128
128
|
result: '266.67'
|
|
129
129
|
}].forEach(function (test) {
|
|
130
|
+
// eslint-disable-next-line no-param-reassign
|
|
130
131
|
test.config.onChange = function (_ref) {
|
|
131
132
|
var target = _ref.target;
|
|
132
133
|
COMPONENT.formData[target.name] = target.value;
|
|
@@ -46,7 +46,7 @@ describe('utils.Component.get', function () {
|
|
|
46
46
|
expect(formGroup.tagName).toEqual('DIV');
|
|
47
47
|
expect(formGroup.classList).toContain('govuk-form-group');
|
|
48
48
|
var fieldSet = formGroup.childNodes[0];
|
|
49
|
-
var label
|
|
49
|
+
var label;
|
|
50
50
|
fieldSet.childNodes.forEach(function (node) {
|
|
51
51
|
// Check if it's an element.
|
|
52
52
|
if (node instanceof Element) {
|
|
@@ -76,10 +76,10 @@ describe('utils.Component.get', function () {
|
|
|
76
76
|
expect(checkbox.classList).toContain('govuk-checkboxes__item');
|
|
77
77
|
var _checkbox$childNodes = _slicedToArray(checkbox.childNodes, 2),
|
|
78
78
|
input = _checkbox$childNodes[0],
|
|
79
|
-
|
|
79
|
+
inputLabel = _checkbox$childNodes[1];
|
|
80
80
|
expect(input.tagName).toEqual('INPUT');
|
|
81
81
|
expect(input.type).toEqual('checkbox');
|
|
82
|
-
expect(
|
|
82
|
+
expect(inputLabel.textContent).toEqual(option.label);
|
|
83
83
|
});
|
|
84
84
|
_react.fireEvent.click(checkboxItems[0].childNodes[0]); // alpha
|
|
85
85
|
expect(ON_CHANGE_CALLS.length).toEqual(1);
|
|
@@ -35,7 +35,7 @@ describe('utils.Component.get', function () {
|
|
|
35
35
|
input = _getAllByTestId2[1];
|
|
36
36
|
expect(formGroup.tagName).toEqual('DIV');
|
|
37
37
|
expect(formGroup.classList).toContain('govuk-form-group');
|
|
38
|
-
var label
|
|
38
|
+
var label;
|
|
39
39
|
formGroup.childNodes[0].childNodes.forEach(function (node) {
|
|
40
40
|
// Check if it's an element.
|
|
41
41
|
if (node instanceof Element && node.tagName === 'LEGEND') {
|
|
@@ -36,7 +36,7 @@ describe('utils.Component.get', function () {
|
|
|
36
36
|
input = _getAllByTestId2[1];
|
|
37
37
|
expect(formGroup.tagName).toEqual('DIV');
|
|
38
38
|
expect(formGroup.classList).toContain('govuk-form-group');
|
|
39
|
-
var label
|
|
39
|
+
var label;
|
|
40
40
|
formGroup.childNodes[0].childNodes.forEach(function (node) {
|
|
41
41
|
// Check if it's an element.
|
|
42
42
|
if (node instanceof Element && node.tagName === 'LEGEND') {
|
|
@@ -39,7 +39,7 @@ describe('utils.Component.get', function () {
|
|
|
39
39
|
expect(wrapper.classList).toContain('cop-multi-file-upload');
|
|
40
40
|
expect(wrapper.id).toEqual(ID);
|
|
41
41
|
var input = wrapper.children[1].children[0];
|
|
42
|
-
var label
|
|
42
|
+
var label;
|
|
43
43
|
formGroup.childNodes[0].childNodes.forEach(function (node) {
|
|
44
44
|
// Check if it's an element.
|
|
45
45
|
if (node instanceof Element && node.tagName === 'LEGEND') {
|
|
@@ -35,7 +35,7 @@ describe('utils.Component.get', function () {
|
|
|
35
35
|
input = _getAllByTestId2[1];
|
|
36
36
|
expect(formGroup.tagName).toEqual('DIV');
|
|
37
37
|
expect(formGroup.classList).toContain('govuk-form-group');
|
|
38
|
-
var label
|
|
38
|
+
var label;
|
|
39
39
|
formGroup.childNodes[0].childNodes.forEach(function (node) {
|
|
40
40
|
// Check if it's an element.
|
|
41
41
|
if (node instanceof Element && node.tagName === 'LEGEND') {
|
|
@@ -45,7 +45,7 @@ describe('utils.Component.get', function () {
|
|
|
45
45
|
radios = _getAllByTestId2[1];
|
|
46
46
|
expect(formGroup.tagName).toEqual('DIV');
|
|
47
47
|
expect(formGroup.classList).toContain('govuk-form-group');
|
|
48
|
-
var label
|
|
48
|
+
var label;
|
|
49
49
|
formGroup.childNodes[0].childNodes.forEach(function (node) {
|
|
50
50
|
// Check if it's an element.
|
|
51
51
|
if (node instanceof Element) {
|
|
@@ -75,10 +75,10 @@ describe('utils.Component.get', function () {
|
|
|
75
75
|
expect(radio.classList).toContain('govuk-radios__item');
|
|
76
76
|
var _radio$childNodes = _slicedToArray(radio.childNodes, 2),
|
|
77
77
|
input = _radio$childNodes[0],
|
|
78
|
-
|
|
78
|
+
inputLabel = _radio$childNodes[1];
|
|
79
79
|
expect(input.tagName).toEqual('INPUT');
|
|
80
80
|
expect(input.type).toEqual('radio');
|
|
81
|
-
expect(
|
|
81
|
+
expect(inputLabel.textContent).toEqual(option.label);
|
|
82
82
|
});
|
|
83
83
|
_react.fireEvent.click(radioItems[0].childNodes[0]); // alpha
|
|
84
84
|
expect(ON_CHANGE_CALLS.length).toEqual(1);
|
|
@@ -35,7 +35,7 @@ describe('utils.Component.get', function () {
|
|
|
35
35
|
input = _getAllByTestId2[1];
|
|
36
36
|
expect(formGroup.tagName).toEqual('DIV');
|
|
37
37
|
expect(formGroup.classList).toContain('govuk-form-group');
|
|
38
|
-
var label
|
|
38
|
+
var label;
|
|
39
39
|
formGroup.childNodes[0].childNodes.forEach(function (node) {
|
|
40
40
|
// Check if it's an element.
|
|
41
41
|
if (node instanceof Element && node.tagName === 'LEGEND') {
|
|
@@ -61,11 +61,11 @@ describe('utils.Component.get', function () {
|
|
|
61
61
|
expect(part.item.tagName).toEqual('DIV');
|
|
62
62
|
expect(part.item.classList).toContain('govuk-date-input__item');
|
|
63
63
|
var _part$item$childNodes = _slicedToArray(part.item.childNodes[0].childNodes, 2),
|
|
64
|
-
|
|
64
|
+
inputLabel = _part$item$childNodes[0],
|
|
65
65
|
input = _part$item$childNodes[1];
|
|
66
|
-
expect(
|
|
67
|
-
expect(
|
|
68
|
-
expect(
|
|
66
|
+
expect(inputLabel.childNodes[0].tagName).toEqual('LABEL');
|
|
67
|
+
expect(inputLabel.childNodes[0].classList).toContain('govuk-label');
|
|
68
|
+
expect(inputLabel.textContent).toEqual(part.label);
|
|
69
69
|
expect(input.tagName).toEqual('INPUT');
|
|
70
70
|
expect(input.id).toEqual("".concat(ID, "-").concat(part.id));
|
|
71
71
|
|
|
@@ -76,7 +76,7 @@ describe('utils.Component.get', function () {
|
|
|
76
76
|
value: part.value
|
|
77
77
|
}
|
|
78
78
|
});
|
|
79
|
-
onChangeCalls
|
|
79
|
+
onChangeCalls += 1;
|
|
80
80
|
expect(ON_CHANGE_CALLS.length).toEqual(onChangeCalls);
|
|
81
81
|
expect(ON_CHANGE_CALLS[onChangeCalls - 1]).toMatchObject({
|
|
82
82
|
name: FIELD_ID,
|
|
@@ -22,12 +22,14 @@ var setupContainerComponentsPath = function setupContainerComponentsPath(contain
|
|
|
22
22
|
full_path: "".concat(component.full_path || "".concat(container.full_path, ".").concat(component.fieldId), ".").concat(c.fieldId)
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
|
+
;
|
|
25
26
|
return null;
|
|
26
27
|
}).filter(function (c) {
|
|
27
28
|
return !!c;
|
|
28
29
|
})
|
|
29
30
|
});
|
|
30
31
|
}
|
|
32
|
+
;
|
|
31
33
|
return _objectSpread(_objectSpread({}, component), !component.full_path && {
|
|
32
34
|
full_path: "".concat(container.full_path || container.fieldId, ".").concat(component.fieldId)
|
|
33
35
|
});
|
|
@@ -11,7 +11,8 @@ var getComparisonValue = function getComparisonValue(condition, data) {
|
|
|
11
11
|
var _condition$value;
|
|
12
12
|
if (['in', 'nin', 'includesAllOf', '!includesAllOf'].includes(condition.op)) {
|
|
13
13
|
return condition.values;
|
|
14
|
-
}
|
|
14
|
+
}
|
|
15
|
+
if (typeof condition.value === 'string' && (_condition$value = condition.value) !== null && _condition$value !== void 0 && _condition$value.startsWith('field::')) {
|
|
15
16
|
var comparisonField = condition.value.replace('field::', '');
|
|
16
17
|
return _Data.default.getSource(data, comparisonField);
|
|
17
18
|
}
|
|
@@ -15,10 +15,10 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
|
|
|
15
15
|
var makeComponentFieldsAbsolute = function makeComponentFieldsAbsolute(component) {
|
|
16
16
|
if (component.show_when) {
|
|
17
17
|
var conditions = component.show_when.type ? component.show_when.conditions : component.show_when;
|
|
18
|
-
var
|
|
18
|
+
var fullPath = component.full_path;
|
|
19
19
|
conditions = Array.isArray(conditions) ? conditions : [conditions];
|
|
20
20
|
return conditions.map(function (condition) {
|
|
21
|
-
var field = _Data.default.getDataPath(condition.field,
|
|
21
|
+
var field = _Data.default.getDataPath(condition.field, fullPath);
|
|
22
22
|
return _objectSpread(_objectSpread({}, condition), {}, {
|
|
23
23
|
field: field
|
|
24
24
|
});
|
|
@@ -14,12 +14,16 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
|
|
|
14
14
|
var nestComponents = function nestComponents(container) {
|
|
15
15
|
var containerPath = container.full_path || container.fieldId;
|
|
16
16
|
return container.components.map(function (component) {
|
|
17
|
+
// eslint-disable-next-line camelcase
|
|
17
18
|
var full_path = containerPath ? "".concat(containerPath, ".").concat(component.fieldId) : component.fieldId;
|
|
18
19
|
var ret = _objectSpread(_objectSpread({}, component), {}, {
|
|
19
20
|
full_path: full_path
|
|
20
21
|
});
|
|
21
22
|
if (component.type === _models.ComponentTypes.CONTAINER) {
|
|
22
|
-
return
|
|
23
|
+
return (
|
|
24
|
+
// eslint-disable-next-line no-use-before-define
|
|
25
|
+
setupNesting(ret)
|
|
26
|
+
);
|
|
23
27
|
}
|
|
24
28
|
return ret;
|
|
25
29
|
});
|
|
@@ -16,6 +16,7 @@ var applyFormula = function applyFormula(config) {
|
|
|
16
16
|
var result = simplify(config);
|
|
17
17
|
return !result && result !== 0 ? '' : result;
|
|
18
18
|
} catch (err) {
|
|
19
|
+
// eslint-disable-next-line no-console
|
|
19
20
|
console.error(err.message);
|
|
20
21
|
}
|
|
21
22
|
return '';
|
|
@@ -60,14 +61,13 @@ var reduceNumber = function reduceNumber(config, reduction) {
|
|
|
60
61
|
}, 0), config);
|
|
61
62
|
};
|
|
62
63
|
var round = function round(number, config) {
|
|
63
|
-
var
|
|
64
|
-
if (!
|
|
65
|
-
if (
|
|
66
|
-
return parseInt(number);
|
|
67
|
-
} else {
|
|
68
|
-
var precisionScale = Math.pow(10, round);
|
|
69
|
-
return Math.round((number + Number.EPSILON) * precisionScale) / precisionScale;
|
|
64
|
+
var roundNumber = config.formula.round;
|
|
65
|
+
if (!roundNumber && roundNumber !== 0 || !number) return number;
|
|
66
|
+
if (roundNumber === 0) {
|
|
67
|
+
return parseInt(number, 10);
|
|
70
68
|
}
|
|
69
|
+
var precisionScale = Math.pow(10, roundNumber);
|
|
70
|
+
return Math.round((number + Number.EPSILON) * precisionScale) / precisionScale;
|
|
71
71
|
};
|
|
72
72
|
var getValue = function getValue(arg, formData) {
|
|
73
73
|
var keys = Object.keys(arg);
|
|
@@ -76,8 +76,11 @@ var getValue = function getValue(arg, formData) {
|
|
|
76
76
|
var val = arg[key];
|
|
77
77
|
switch (key) {
|
|
78
78
|
case 'field':
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
{
|
|
80
|
+
var fieldVal = fieldValue(val, formData);
|
|
81
|
+
return !fieldVal && fieldVal !== 0 ? NaN : parseFloat(fieldVal);
|
|
82
|
+
}
|
|
83
|
+
;
|
|
81
84
|
case 'value':
|
|
82
85
|
return parseFloat(val);
|
|
83
86
|
case 'formula':
|
|
@@ -92,7 +95,10 @@ var getValue = function getValue(arg, formData) {
|
|
|
92
95
|
}
|
|
93
96
|
};
|
|
94
97
|
var fieldValue = function fieldValue(field, data) {
|
|
95
|
-
return
|
|
98
|
+
return (
|
|
99
|
+
// eslint-disable-next-line prefer-template
|
|
100
|
+
_copReactComponents.Utils.interpolateString('${' + field + '}', data)
|
|
101
|
+
);
|
|
96
102
|
};
|
|
97
103
|
var _default = applyFormula;
|
|
98
104
|
exports.default = _default;
|
|
@@ -4,9 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _getOptions = _interopRequireDefault(require("./getOptions"));
|
|
8
7
|
var _copReactComponents = require("@ukhomeoffice/cop-react-components");
|
|
8
|
+
var _getOptions = _interopRequireDefault(require("./getOptions"));
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
// Global Imports
|
|
11
|
+
|
|
10
12
|
// Local imports
|
|
11
13
|
|
|
12
14
|
var getAutocompleteSource = function getAutocompleteSource(config) {
|
|
@@ -36,11 +36,12 @@ var getOptions = function getOptions(config, callback) {
|
|
|
36
36
|
if (config) {
|
|
37
37
|
if (config.options) {
|
|
38
38
|
return callback(interpolateOptions(config, config.options));
|
|
39
|
-
}
|
|
39
|
+
}
|
|
40
|
+
if (config.data && config.data.options) {
|
|
40
41
|
return callback(interpolateOptions(config, config.data.options));
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
|
-
callback([]);
|
|
44
|
+
return callback([]);
|
|
44
45
|
};
|
|
45
46
|
var _default = getOptions;
|
|
46
47
|
exports.default = _default;
|