@ukhomeoffice/cop-react-form-renderer 3.6.2 → 3.8.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.
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
+
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
9
|
+
|
|
8
10
|
var _getSourceData = _interopRequireDefault(require("./getSourceData"));
|
|
9
11
|
|
|
10
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -15,6 +17,56 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
15
17
|
|
|
16
18
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
17
19
|
|
|
20
|
+
var setDefaultDateValue = function setDefaultDateValue(date, data) {
|
|
21
|
+
if (date.defaultValue === 'today') {
|
|
22
|
+
data[date.fieldId] = (0, _dayjs.default)().format('DD-MM-YYYY');
|
|
23
|
+
} else {
|
|
24
|
+
data[date.fieldId] = date.defaultValue;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* This currently will not work for collections or containers.
|
|
29
|
+
* If support is required it will need to be added.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
var setupDefaultValue = function setupDefaultValue(component, data) {
|
|
34
|
+
if (component.defaultValue && !data[component.fieldId]) {
|
|
35
|
+
switch (component.type) {
|
|
36
|
+
case 'date':
|
|
37
|
+
setDefaultDateValue(component, data);
|
|
38
|
+
break;
|
|
39
|
+
|
|
40
|
+
default:
|
|
41
|
+
data[component.fieldId] = component.defaultValue;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (component.defaultValue) {
|
|
46
|
+
// Some components will throw warnings when having
|
|
47
|
+
// both a 'value' and 'defaultValue' prop set.
|
|
48
|
+
// defaultValue is safe to delete once we've tried
|
|
49
|
+
// to use it.
|
|
50
|
+
delete component.defaultValue;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
var setupDefaultValuesForComponents = function setupDefaultValuesForComponents(components, data) {
|
|
55
|
+
components.forEach(function (component) {
|
|
56
|
+
return setupDefaultValue(component, data);
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
var setupPageDefaultValues = function setupPageDefaultValues(pages, data) {
|
|
61
|
+
pages.forEach(function (page) {
|
|
62
|
+
page.components.filter(function (c) {
|
|
63
|
+
return !c.use;
|
|
64
|
+
}).forEach(function (component) {
|
|
65
|
+
return setupDefaultValue(component, data);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
|
|
18
70
|
var setupComponentSourceData = function setupComponentSourceData(component, data) {
|
|
19
71
|
if (component.source) {
|
|
20
72
|
data[component.fieldId] = (0, _getSourceData.default)(data, component.source.field);
|
|
@@ -37,8 +89,11 @@ var setupPageSourceData = function setupPageSourceData(pages, data) {
|
|
|
37
89
|
});
|
|
38
90
|
};
|
|
39
91
|
/**
|
|
40
|
-
* This populates an object with data from
|
|
41
|
-
*
|
|
92
|
+
* This populates an object with data either from a specified default
|
|
93
|
+
* value or from a source field. If both are specified, data from a
|
|
94
|
+
* source field will take priority.
|
|
95
|
+
* Note that in the case of source fields, this doesn't currently
|
|
96
|
+
* support sequenced dependencies:
|
|
42
97
|
* 0: fieldA: source.field = fieldB
|
|
43
98
|
* 1: fieldB: source.field = fieldC
|
|
44
99
|
* 2: fieldC: 'value'
|
|
@@ -54,6 +109,8 @@ var setupPageSourceData = function setupPageSourceData(pages, data) {
|
|
|
54
109
|
var setupFormData = function setupFormData(pages, components, baseData) {
|
|
55
110
|
var data = _objectSpread({}, baseData);
|
|
56
111
|
|
|
112
|
+
setupDefaultValuesForComponents(components, data);
|
|
113
|
+
setupPageDefaultValues(pages, data);
|
|
57
114
|
setupSourceDataForComponents(components, data);
|
|
58
115
|
setupPageSourceData(pages, data);
|
|
59
116
|
return data;
|
|
@@ -211,6 +211,66 @@ describe('utils', function () {
|
|
|
211
211
|
delegateEmails: _userProfileData.default.userDetails.delegateEmails
|
|
212
212
|
}));
|
|
213
213
|
});
|
|
214
|
+
it('should handle a default value field', function () {
|
|
215
|
+
var PAGES = [];
|
|
216
|
+
var COMPONENTS = [{
|
|
217
|
+
fieldId: 'testField',
|
|
218
|
+
type: 'text',
|
|
219
|
+
defaultValue: 'VALUE'
|
|
220
|
+
}];
|
|
221
|
+
var DATA = {};
|
|
222
|
+
var RESULT = (0, _setupFormData.default)(PAGES, COMPONENTS, DATA);
|
|
223
|
+
expect(RESULT).toEqual({
|
|
224
|
+
testField: 'VALUE'
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
it('should ignore a default value when a value already exists in data', function () {
|
|
228
|
+
var PAGES = [];
|
|
229
|
+
var COMPONENTS = [{
|
|
230
|
+
fieldId: 'testField',
|
|
231
|
+
type: 'text',
|
|
232
|
+
defaultValue: 'VALUE'
|
|
233
|
+
}];
|
|
234
|
+
var DATA = {
|
|
235
|
+
testField: 'EXISTING_VALUE'
|
|
236
|
+
};
|
|
237
|
+
var RESULT = (0, _setupFormData.default)(PAGES, COMPONENTS, DATA);
|
|
238
|
+
expect(RESULT).toEqual({
|
|
239
|
+
testField: 'EXISTING_VALUE'
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
it('should handle default values within pages', function () {
|
|
243
|
+
var PAGES = [{
|
|
244
|
+
components: [{
|
|
245
|
+
fieldId: 'pageField',
|
|
246
|
+
type: 'text',
|
|
247
|
+
defaultValue: 'VALUE'
|
|
248
|
+
}]
|
|
249
|
+
}];
|
|
250
|
+
var COMPONENTS = [];
|
|
251
|
+
var DATA = {};
|
|
252
|
+
var RESULT = (0, _setupFormData.default)(PAGES, COMPONENTS, DATA);
|
|
253
|
+
expect(RESULT).toEqual({
|
|
254
|
+
pageField: 'VALUE'
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
it('should ignore default values within pages when a value already exists in data', function () {
|
|
258
|
+
var PAGES = [{
|
|
259
|
+
components: [{
|
|
260
|
+
fieldId: 'pageField',
|
|
261
|
+
type: 'text',
|
|
262
|
+
defaultValue: 'VALUE'
|
|
263
|
+
}]
|
|
264
|
+
}];
|
|
265
|
+
var COMPONENTS = [];
|
|
266
|
+
var DATA = {
|
|
267
|
+
pageField: 'EXISTING_VALUE'
|
|
268
|
+
};
|
|
269
|
+
var RESULT = (0, _setupFormData.default)(PAGES, COMPONENTS, DATA);
|
|
270
|
+
expect(RESULT).toEqual({
|
|
271
|
+
pageField: 'EXISTING_VALUE'
|
|
272
|
+
});
|
|
273
|
+
});
|
|
214
274
|
});
|
|
215
275
|
});
|
|
216
276
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ukhomeoffice/cop-react-form-renderer",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.8.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"scripts": {
|
|
6
6
|
"clean": "rimraf dist",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@ukhomeoffice/cop-react-components": "1.9.5",
|
|
20
|
-
"axios": "^0.
|
|
20
|
+
"axios": "^0.23.0",
|
|
21
21
|
"dayjs": "^1.11.0",
|
|
22
22
|
"govuk-frontend": "^3.13.0",
|
|
23
23
|
"web-vitals": "^1.0.1"
|