@ukhomeoffice/cop-react-form-renderer 5.86.0 → 5.87.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/FormPage/FormPage.js +19 -7
- package/dist/components/FormRenderer/onPageAction.js +5 -1
- package/dist/utils/CheckYourAnswers/showComponentCYA.js +1 -1
- package/dist/utils/Data/deleteValues.js +22 -0
- package/dist/utils/Data/deleteValues.test.js +57 -0
- package/dist/utils/Data/index.js +2 -0
- package/dist/utils/Operate/deleteValueInFormData.js +26 -0
- package/dist/utils/Operate/deleteValueInFormData.test.js +60 -0
- package/dist/utils/Operate/runPageOperations.js +2 -0
- package/package.json +1 -1
|
@@ -62,13 +62,25 @@ var FormPage = function FormPage(_ref) {
|
|
|
62
62
|
var onPageChange = function onPageChange(_ref2) {
|
|
63
63
|
var target = _ref2.target;
|
|
64
64
|
var formPage = page;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
65
|
+
if (target.value == null) {
|
|
66
|
+
delete formPage.formData[target.name];
|
|
67
|
+
setPatch(function (prev) {
|
|
68
|
+
var data = prev;
|
|
69
|
+
return delete data[target.name];
|
|
70
|
+
});
|
|
71
|
+
setPatchLabel(function (prev) {
|
|
72
|
+
var data = prev;
|
|
73
|
+
return delete data[target.component];
|
|
74
|
+
});
|
|
75
|
+
} else {
|
|
76
|
+
formPage.formData[target.name] = target.value;
|
|
77
|
+
setPatch(function (prev) {
|
|
78
|
+
return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, target.name, target.value));
|
|
79
|
+
});
|
|
80
|
+
setPatchLabel(function (prev) {
|
|
81
|
+
return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, target.component, target.label));
|
|
82
|
+
});
|
|
83
|
+
}
|
|
72
84
|
if (typeof onChange === 'function') {
|
|
73
85
|
onChange(page.formData);
|
|
74
86
|
}
|
|
@@ -100,7 +100,11 @@ var onPageAction = function onPageAction(action, patch, patchLabel, hooks, data,
|
|
|
100
100
|
break;
|
|
101
101
|
}
|
|
102
102
|
;
|
|
103
|
-
|
|
103
|
+
|
|
104
|
+
// If a value has been deleted from formData,
|
|
105
|
+
// also delete it from data before doing object spread,
|
|
106
|
+
// or else it will reappear in submissionData.
|
|
107
|
+
_utils.default.Data.deleteValues(data, formState.page.formData);
|
|
104
108
|
|
|
105
109
|
// Save draft or submit.
|
|
106
110
|
var submissionData = _utils.default.Format.form({
|
|
@@ -33,7 +33,7 @@ var showComponentCYA = function showComponentCYA(options, data) {
|
|
|
33
33
|
}
|
|
34
34
|
if (options.hideOnCyaWhenEmpty) {
|
|
35
35
|
if (options.type === _models.ComponentTypes.COLLECTION) {
|
|
36
|
-
var itemCollectionsData = (0, _getSourceData.default)(data, options.full_path);
|
|
36
|
+
var itemCollectionsData = (0, _getSourceData.default)(data, options.full_path || options.fieldId);
|
|
37
37
|
if (!(itemCollectionsData !== null && itemCollectionsData !== void 0 && itemCollectionsData.length)) {
|
|
38
38
|
return false;
|
|
39
39
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Find values in data not in formData
|
|
9
|
+
* and delete them from data.
|
|
10
|
+
* @param {object} data The page's data.
|
|
11
|
+
* @param {object} formData The page's formData.
|
|
12
|
+
*/
|
|
13
|
+
var deleteValues = function deleteValues(data, formData) {
|
|
14
|
+
var deletedValues = Object.keys(data).filter(function (k) {
|
|
15
|
+
return !(k in formData);
|
|
16
|
+
});
|
|
17
|
+
var node = data;
|
|
18
|
+
deletedValues.forEach(function (i) {
|
|
19
|
+
return delete node[i];
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var _default = exports.default = deleteValues;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _deleteValues = _interopRequireDefault(require("./deleteValues"));
|
|
4
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
|
+
describe('Utils.Data.deleteValues', function () {
|
|
6
|
+
it('Should delete values from data', function () {
|
|
7
|
+
var DATA = {
|
|
8
|
+
a: '1',
|
|
9
|
+
b: '2',
|
|
10
|
+
c: '3'
|
|
11
|
+
};
|
|
12
|
+
var FORMDATA = {
|
|
13
|
+
a: '1'
|
|
14
|
+
};
|
|
15
|
+
(0, _deleteValues.default)(DATA, FORMDATA);
|
|
16
|
+
expect(DATA).toEqual({
|
|
17
|
+
a: '1'
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
it('Should leave data unchanged if no differences', function () {
|
|
21
|
+
var DATA = {
|
|
22
|
+
a: '1',
|
|
23
|
+
b: '2',
|
|
24
|
+
c: '3'
|
|
25
|
+
};
|
|
26
|
+
var FORMDATA = {
|
|
27
|
+
a: '1',
|
|
28
|
+
b: '2',
|
|
29
|
+
c: '3'
|
|
30
|
+
};
|
|
31
|
+
(0, _deleteValues.default)(DATA, FORMDATA);
|
|
32
|
+
expect(DATA).toEqual({
|
|
33
|
+
a: '1',
|
|
34
|
+
b: '2',
|
|
35
|
+
c: '3'
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
it('Should leave data unchanged if form data has additional fields', function () {
|
|
39
|
+
var DATA = {
|
|
40
|
+
a: '1',
|
|
41
|
+
b: '2',
|
|
42
|
+
c: '3'
|
|
43
|
+
};
|
|
44
|
+
var FORMDATA = {
|
|
45
|
+
a: '1',
|
|
46
|
+
b: '2',
|
|
47
|
+
c: '3',
|
|
48
|
+
d: '4'
|
|
49
|
+
};
|
|
50
|
+
(0, _deleteValues.default)(DATA, FORMDATA);
|
|
51
|
+
expect(DATA).toEqual({
|
|
52
|
+
a: '1',
|
|
53
|
+
b: '2',
|
|
54
|
+
c: '3'
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
});
|
package/dist/utils/Data/index.js
CHANGED
|
@@ -10,6 +10,7 @@ var _getDataPath = _interopRequireDefault(require("./getDataPath"));
|
|
|
10
10
|
var _getOptions = _interopRequireDefault(require("./getOptions"));
|
|
11
11
|
var _getSourceData = _interopRequireDefault(require("./getSourceData"));
|
|
12
12
|
var _refDataToOptions = _interopRequireDefault(require("./refDataToOptions"));
|
|
13
|
+
var _deleteValues = _interopRequireDefault(require("./deleteValues"));
|
|
13
14
|
var _setDataItem = _interopRequireDefault(require("./setDataItem"));
|
|
14
15
|
var _setupFormData = _interopRequireDefault(require("./setupFormData"));
|
|
15
16
|
var _setupRefDataUrlForComponent = _interopRequireDefault(require("./setupRefDataUrlForComponent"));
|
|
@@ -26,6 +27,7 @@ var Data = {
|
|
|
26
27
|
setupUrl: _setupRefDataUrlForComponent.default,
|
|
27
28
|
toOptions: _refDataToOptions.default
|
|
28
29
|
},
|
|
30
|
+
deleteValues: _deleteValues.default,
|
|
29
31
|
setDataItem: _setDataItem.default,
|
|
30
32
|
setupForm: _setupFormData.default
|
|
31
33
|
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Simple operation to delete a value in the form data.
|
|
9
|
+
* @param {object} config The operation config.
|
|
10
|
+
* @param {object} data The page's formData.
|
|
11
|
+
* @param {function} onChange The page's onChange handler.
|
|
12
|
+
*/
|
|
13
|
+
var deleteValueInFormData = function deleteValueInFormData(config, data, onChange) {
|
|
14
|
+
var node = data;
|
|
15
|
+
if (config !== null && config !== void 0 && config.field && config !== null && config !== void 0 && config.component) {
|
|
16
|
+
delete node[config.field];
|
|
17
|
+
onChange({
|
|
18
|
+
target: {
|
|
19
|
+
name: config.field,
|
|
20
|
+
value: null,
|
|
21
|
+
component: config.component
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
var _default = exports.default = deleteValueInFormData;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _deleteValueInFormData = _interopRequireDefault(require("./deleteValueInFormData"));
|
|
4
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
|
+
describe('Utils.Operate.deleteValueInFormData', function () {
|
|
6
|
+
var ON_CHANGE = function ON_CHANGE() {};
|
|
7
|
+
it('Should delete value from data', function () {
|
|
8
|
+
var CONFIG = {
|
|
9
|
+
field: 'a',
|
|
10
|
+
component: 'A'
|
|
11
|
+
};
|
|
12
|
+
var DATA = {
|
|
13
|
+
a: '1',
|
|
14
|
+
b: '2'
|
|
15
|
+
};
|
|
16
|
+
(0, _deleteValueInFormData.default)(CONFIG, DATA, ON_CHANGE);
|
|
17
|
+
expect(DATA).toEqual({
|
|
18
|
+
b: '2'
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
it('Should do nothing if value is absent', function () {
|
|
22
|
+
var CONFIG = {
|
|
23
|
+
field: 'c',
|
|
24
|
+
component: 'C'
|
|
25
|
+
};
|
|
26
|
+
var DATA = {
|
|
27
|
+
a: '1',
|
|
28
|
+
b: '2'
|
|
29
|
+
};
|
|
30
|
+
(0, _deleteValueInFormData.default)(CONFIG, DATA, ON_CHANGE);
|
|
31
|
+
expect(DATA).toEqual({
|
|
32
|
+
a: '1',
|
|
33
|
+
b: '2'
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
it('Should do nothing if config is null', function () {
|
|
37
|
+
var CONFIG = null;
|
|
38
|
+
var DATA = {
|
|
39
|
+
a: '1',
|
|
40
|
+
b: '2'
|
|
41
|
+
};
|
|
42
|
+
(0, _deleteValueInFormData.default)(CONFIG, DATA, ON_CHANGE);
|
|
43
|
+
expect(DATA).toEqual({
|
|
44
|
+
a: '1',
|
|
45
|
+
b: '2'
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
it('Should do nothing if config is empty', function () {
|
|
49
|
+
var CONFIG = {};
|
|
50
|
+
var DATA = {
|
|
51
|
+
a: '1',
|
|
52
|
+
b: '2'
|
|
53
|
+
};
|
|
54
|
+
(0, _deleteValueInFormData.default)(CONFIG, DATA, ON_CHANGE);
|
|
55
|
+
expect(DATA).toEqual({
|
|
56
|
+
a: '1',
|
|
57
|
+
b: '2'
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
});
|
|
@@ -9,6 +9,7 @@ var _checkValueIsTruthy = _interopRequireDefault(require("./checkValueIsTruthy")
|
|
|
9
9
|
var _getIndexOfMatchingValueIn = _interopRequireDefault(require("./getIndexOfMatchingValueIn"));
|
|
10
10
|
var _persistValueInFormData = _interopRequireDefault(require("./persistValueInFormData"));
|
|
11
11
|
var _setValueInFormData = _interopRequireDefault(require("./setValueInFormData"));
|
|
12
|
+
var _deleteValueInFormData = _interopRequireDefault(require("./deleteValueInFormData"));
|
|
12
13
|
var _shouldRun = _interopRequireDefault(require("./shouldRun"));
|
|
13
14
|
var _setDataItem = _interopRequireDefault(require("../Data/setDataItem"));
|
|
14
15
|
var _getFirstOf = _interopRequireDefault(require("./getFirstOf"));
|
|
@@ -23,6 +24,7 @@ var functions = {
|
|
|
23
24
|
getIndexOfMatchingValueIn: _getIndexOfMatchingValueIn.default,
|
|
24
25
|
persistValueInFormData: _persistValueInFormData.default,
|
|
25
26
|
setValueInFormData: _setValueInFormData.default,
|
|
27
|
+
deleteValueInFormData: _deleteValueInFormData.default,
|
|
26
28
|
getLength: _getLength.default,
|
|
27
29
|
getFirstOf: _getFirstOf.default
|
|
28
30
|
};
|