@ukhomeoffice/cop-react-form-renderer 4.9.1 → 4.11.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/TaskList/Task.js +4 -2
- package/dist/components/TaskList/Task.test.js +91 -9
- package/dist/components/TaskList/TaskList.js +2 -1
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +3 -6
- package/dist/utils/Operate/getIndexOfMatchingValueIn.js +12 -2
- package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +15 -1
- package/package.json +1 -1
|
@@ -58,6 +58,7 @@ var Task = function Task(_ref) {
|
|
|
58
58
|
setLinkActive(task.state !== _models.TaskStates.TYPES.CANNOT_START_YET);
|
|
59
59
|
setCurrentState(task.state);
|
|
60
60
|
}, [task.state, setLinkActive, setCurrentState]);
|
|
61
|
+
var displayName = task.displayName || task.name;
|
|
61
62
|
return /*#__PURE__*/_react.default.createElement("li", {
|
|
62
63
|
className: classes('item')
|
|
63
64
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
@@ -72,7 +73,7 @@ var Task = function Task(_ref) {
|
|
|
72
73
|
}
|
|
73
74
|
},
|
|
74
75
|
tabIndex: "0"
|
|
75
|
-
},
|
|
76
|
+
}, displayName) : displayName), /*#__PURE__*/_react.default.createElement(_TaskState.default, {
|
|
76
77
|
state: currentState
|
|
77
78
|
}));
|
|
78
79
|
};
|
|
@@ -81,7 +82,8 @@ Task.propTypes = {
|
|
|
81
82
|
task: _propTypes.default.shape({
|
|
82
83
|
name: _propTypes.default.string.isRequired,
|
|
83
84
|
pages: _propTypes.default.array.isRequired,
|
|
84
|
-
state: _propTypes.default.string
|
|
85
|
+
state: _propTypes.default.string,
|
|
86
|
+
displayName: _propTypes.default.string
|
|
85
87
|
}).isRequired,
|
|
86
88
|
onClick: _propTypes.default.func.isRequired
|
|
87
89
|
};
|
|
@@ -35,13 +35,14 @@ describe('components', function () {
|
|
|
35
35
|
var span = container.childNodes[0].childNodes[0];
|
|
36
36
|
var state = container.childNodes[0].childNodes[1];
|
|
37
37
|
expect(span.classList).toContain('hods-task-list__task-name');
|
|
38
|
+
expect(span.textContent).toEqual(TASK.name);
|
|
38
39
|
expect(state.textContent).toEqual('Completed');
|
|
39
40
|
});
|
|
40
|
-
it('should render a task with
|
|
41
|
-
var
|
|
42
|
-
var STATE = _models.TaskStates.TYPES.CANNOT_START_YET;
|
|
41
|
+
it('should render a task with a displayName', function () {
|
|
42
|
+
var STATE = _models.TaskStates.TYPES.COMPLETE;
|
|
43
43
|
var TASK = {
|
|
44
44
|
name: 'taskName',
|
|
45
|
+
displayName: 'Alpha Bravo',
|
|
45
46
|
pages: ['pageName'],
|
|
46
47
|
state: STATE
|
|
47
48
|
};
|
|
@@ -54,9 +55,33 @@ describe('components', function () {
|
|
|
54
55
|
})),
|
|
55
56
|
container = _render2.container;
|
|
56
57
|
|
|
58
|
+
expect(container.childNodes.length).toEqual(1);
|
|
59
|
+
expect(container.childNodes[0].classList).toContain('hods-task-list__item');
|
|
60
|
+
var span = container.childNodes[0].childNodes[0];
|
|
61
|
+
var state = container.childNodes[0].childNodes[1];
|
|
62
|
+
expect(span.classList).toContain('hods-task-list__task-name');
|
|
63
|
+
expect(span.textContent).toEqual(TASK.displayName);
|
|
64
|
+
expect(state.textContent).toEqual('Completed');
|
|
65
|
+
});
|
|
66
|
+
it('should render a task with inactive link if state is cannotStartYet', function () {
|
|
67
|
+
var STATE = _models.TaskStates.TYPES.CANNOT_START_YET;
|
|
68
|
+
var TASK = {
|
|
69
|
+
name: 'taskName',
|
|
70
|
+
pages: ['pageName'],
|
|
71
|
+
state: STATE
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
var ON_CLICK = function ON_CLICK() {};
|
|
75
|
+
|
|
76
|
+
var _render3 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_Task.default, {
|
|
77
|
+
task: TASK,
|
|
78
|
+
onClick: ON_CLICK
|
|
79
|
+
})),
|
|
80
|
+
container = _render3.container;
|
|
81
|
+
|
|
57
82
|
var span = container.childNodes[0].childNodes[0];
|
|
58
83
|
expect(span.childNodes[0].tagName).toEqual(undefined);
|
|
59
|
-
expect(span.textContent).toEqual(
|
|
84
|
+
expect(span.textContent).toEqual(TASK.name);
|
|
60
85
|
});
|
|
61
86
|
it('should render a task with a link if state is not cannotStartYet', function () {
|
|
62
87
|
var STATE = _models.TaskStates.TYPES.IN_PROGRESS;
|
|
@@ -68,17 +93,40 @@ describe('components', function () {
|
|
|
68
93
|
|
|
69
94
|
var ON_CLICK = function ON_CLICK() {};
|
|
70
95
|
|
|
71
|
-
var
|
|
96
|
+
var _render4 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_Task.default, {
|
|
72
97
|
task: TASK,
|
|
73
98
|
onClick: ON_CLICK
|
|
74
99
|
})),
|
|
75
|
-
container =
|
|
100
|
+
container = _render4.container;
|
|
76
101
|
|
|
77
102
|
var span = container.childNodes[0].childNodes[0];
|
|
78
103
|
expect(span.childNodes.length).toEqual(1);
|
|
79
104
|
expect(span.childNodes[0].tagName).toEqual('A');
|
|
105
|
+
expect(span.textContent).toEqual(TASK.name);
|
|
80
106
|
});
|
|
81
|
-
it('should
|
|
107
|
+
it('should render the displayName of a task with a link if state is not cannotStartYet', function () {
|
|
108
|
+
var STATE = _models.TaskStates.TYPES.IN_PROGRESS;
|
|
109
|
+
var TASK = {
|
|
110
|
+
name: 'taskName',
|
|
111
|
+
displayName: 'Charlie Delta',
|
|
112
|
+
pages: ['pageName'],
|
|
113
|
+
state: STATE
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
var ON_CLICK = function ON_CLICK() {};
|
|
117
|
+
|
|
118
|
+
var _render5 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_Task.default, {
|
|
119
|
+
task: TASK,
|
|
120
|
+
onClick: ON_CLICK
|
|
121
|
+
})),
|
|
122
|
+
container = _render5.container;
|
|
123
|
+
|
|
124
|
+
var span = container.childNodes[0].childNodes[0];
|
|
125
|
+
expect(span.childNodes.length).toEqual(1);
|
|
126
|
+
expect(span.childNodes[0].tagName).toEqual('A');
|
|
127
|
+
expect(span.textContent).toEqual(TASK.displayName);
|
|
128
|
+
});
|
|
129
|
+
it('should call the given onClick function when the link is clicked', function () {
|
|
82
130
|
var STATE = _models.TaskStates.TYPES.IN_PROGRESS;
|
|
83
131
|
var TASK = {
|
|
84
132
|
name: 'taskName',
|
|
@@ -91,16 +139,50 @@ describe('components', function () {
|
|
|
91
139
|
ON_CLICK_CALLS.push(value);
|
|
92
140
|
};
|
|
93
141
|
|
|
94
|
-
var
|
|
142
|
+
var _render6 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_Task.default, {
|
|
95
143
|
task: TASK,
|
|
96
144
|
onClick: ON_CLICK
|
|
97
145
|
})),
|
|
98
|
-
container =
|
|
146
|
+
container = _render6.container;
|
|
99
147
|
|
|
100
148
|
var link = container.childNodes[0].childNodes[0].childNodes[0];
|
|
101
149
|
|
|
102
150
|
_react.fireEvent.click(link);
|
|
103
151
|
|
|
152
|
+
expect(ON_CLICK_CALLS.length).toEqual(1);
|
|
153
|
+
expect(ON_CLICK_CALLS[0]).toEqual({
|
|
154
|
+
pages: ['pageName'],
|
|
155
|
+
name: "taskName",
|
|
156
|
+
state: STATE
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
it('should call the given onClick function when the enter key is pressed on the link', function () {
|
|
160
|
+
var STATE = _models.TaskStates.TYPES.IN_PROGRESS;
|
|
161
|
+
var TASK = {
|
|
162
|
+
name: 'taskName',
|
|
163
|
+
pages: ['pageName'],
|
|
164
|
+
state: STATE
|
|
165
|
+
};
|
|
166
|
+
var ON_CLICK_CALLS = [];
|
|
167
|
+
|
|
168
|
+
var ON_CLICK = function ON_CLICK(value) {
|
|
169
|
+
ON_CLICK_CALLS.push(value);
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
var _render7 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_Task.default, {
|
|
173
|
+
task: TASK,
|
|
174
|
+
onClick: ON_CLICK
|
|
175
|
+
})),
|
|
176
|
+
container = _render7.container;
|
|
177
|
+
|
|
178
|
+
var link = container.childNodes[0].childNodes[0].childNodes[0]; // The keyPress event needs charCode: 13 or it fails; bug with the library.
|
|
179
|
+
|
|
180
|
+
_react.fireEvent.keyPress(link, {
|
|
181
|
+
key: 'Enter',
|
|
182
|
+
code: 13,
|
|
183
|
+
charCode: 13
|
|
184
|
+
});
|
|
185
|
+
|
|
104
186
|
expect(ON_CLICK_CALLS.length).toEqual(1);
|
|
105
187
|
expect(ON_CLICK_CALLS[0]).toEqual({
|
|
106
188
|
pages: ['pageName'],
|
|
@@ -104,7 +104,8 @@ TaskList.propTypes = {
|
|
|
104
104
|
tasks: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
105
105
|
name: _propTypes.default.string.isRequired,
|
|
106
106
|
pages: _propTypes.default.array.isRequired,
|
|
107
|
-
state: _propTypes.default.string
|
|
107
|
+
state: _propTypes.default.string,
|
|
108
|
+
displayName: _propTypes.default.string
|
|
108
109
|
})).isRequired
|
|
109
110
|
})).isRequired,
|
|
110
111
|
classBlock: _propTypes.default.string,
|
|
@@ -9,6 +9,8 @@ var _copReactComponents = require("@ukhomeoffice/cop-react-components");
|
|
|
9
9
|
|
|
10
10
|
var _models = require("../../models");
|
|
11
11
|
|
|
12
|
+
var _getCYAAction = _interopRequireDefault(require("./getCYAAction"));
|
|
13
|
+
|
|
12
14
|
var _getCYARowsForContainer = _interopRequireDefault(require("./getCYARowsForContainer"));
|
|
13
15
|
|
|
14
16
|
var _showComponentCYA = _interopRequireDefault(require("./showComponentCYA"));
|
|
@@ -28,12 +30,7 @@ var getEntryToCollectionRow = function getEntryToCollectionRow(page, onAction) {
|
|
|
28
30
|
pageId: page.id,
|
|
29
31
|
key: ((_page$components$0$la = page.components[0].labels) === null || _page$components$0$la === void 0 ? void 0 : _page$components$0$la.empty) || 'Nothing entered',
|
|
30
32
|
required: page.required,
|
|
31
|
-
action:
|
|
32
|
-
page: page.id,
|
|
33
|
-
label: "Change",
|
|
34
|
-
aria_suffix: page.cya_link.aria_suffix,
|
|
35
|
-
onAction: onAction
|
|
36
|
-
}
|
|
33
|
+
action: (0, _getCYAAction.default)(false, page, onAction)
|
|
37
34
|
}];
|
|
38
35
|
};
|
|
39
36
|
|
|
@@ -54,9 +54,19 @@ var getIndexOfMatchingValueIn = function getIndexOfMatchingValueIn(config, data)
|
|
|
54
54
|
|
|
55
55
|
if (index === ignore) {
|
|
56
56
|
return true;
|
|
57
|
-
}
|
|
57
|
+
} // Here we're simply checking if value matches the entry itself. This
|
|
58
|
+
// will be enough of a check for arrays of simple values.
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
if (entry === value) {
|
|
62
|
+
result = index;
|
|
63
|
+
return false;
|
|
64
|
+
} // If the last check failed and there is a config.key defined, then
|
|
65
|
+
// we're most likely checking an array of objects and should use the
|
|
66
|
+
// key to index in and find a matching value.
|
|
67
|
+
|
|
58
68
|
|
|
59
|
-
if (
|
|
69
|
+
if (config.key && (0, _getSourceData.default)(entry, config.key) === value) {
|
|
60
70
|
result = index;
|
|
61
71
|
return false;
|
|
62
72
|
}
|
|
@@ -6,7 +6,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
6
6
|
|
|
7
7
|
describe('Utils.Operate.getIndexOfPriorMatchingValueIn', function () {
|
|
8
8
|
var DATA = {
|
|
9
|
-
arrayOfValues: ['abc', 'bcd', 'cde', 'def'
|
|
9
|
+
arrayOfValues: ['abc', 'bcd', 'cde', 'def', {
|
|
10
|
+
root: {
|
|
11
|
+
branch: 'leaf'
|
|
12
|
+
}
|
|
13
|
+
}],
|
|
10
14
|
cutoffIndex: 1,
|
|
11
15
|
ignoreIndex: 2,
|
|
12
16
|
valueToSearchFor: 'cde',
|
|
@@ -40,6 +44,16 @@ describe('Utils.Operate.getIndexOfPriorMatchingValueIn', function () {
|
|
|
40
44
|
var result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
|
|
41
45
|
expect(result).toEqual('2');
|
|
42
46
|
});
|
|
47
|
+
it('Should handle interpolated string for key', function () {
|
|
48
|
+
// eslint-disable-next-line no-template-curly-in-string
|
|
49
|
+
var CONFIG = {
|
|
50
|
+
target: 'arrayOfValues',
|
|
51
|
+
key: 'root.branch',
|
|
52
|
+
value: 'leaf'
|
|
53
|
+
};
|
|
54
|
+
var result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
|
|
55
|
+
expect(result).toEqual('4');
|
|
56
|
+
});
|
|
43
57
|
it('Should handle a cutoff value being specified', function () {
|
|
44
58
|
var CONFIG = {
|
|
45
59
|
target: 'arrayOfValues',
|