@ukhomeoffice/cop-react-form-renderer 6.6.1 → 6.11.1
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 +11 -5
- package/dist/components/CheckYourAnswers/Answer.test.js +67 -14
- package/dist/components/CheckYourAnswers/CheckYourAnswers.js +9 -5
- package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +156 -64
- package/dist/components/CollectionSummary/CollectionSummary.js +20 -3
- package/dist/components/CollectionSummary/CollectionSummary.test.js +66 -20
- package/dist/components/CollectionSummary/RenderListView.js +2 -2
- package/dist/components/CollectionSummary/SummaryCard.js +17 -6
- package/dist/components/CollectionSummary/SummaryCard.test.js +94 -37
- package/dist/components/CollectionSummary/SummaryCardDetails.js +78 -34
- package/dist/components/CollectionSummary/SummaryCardDetails.scss +9 -0
- package/dist/components/CollectionSummary/SummaryCardDetails.test.js +206 -10
- package/dist/components/FormComponent/Container.js +2 -1
- package/dist/components/FormComponent/Container.test.js +69 -0
- package/dist/components/FormComponent/helpers/getComponentFieldSet.js +1 -1
- package/dist/components/FormRenderer/FormRenderer.js +1 -0
- package/dist/components/SummaryList/SummaryList.js +8 -0
- package/dist/components/SummaryList/SummaryList.scss +15 -0
- package/dist/components/SummaryList/SummaryList.test.js +67 -7
- package/dist/components/SummaryList/SummaryListHeadingRowWithAction.js +53 -0
- package/dist/components/SummaryList/SummaryListHeadingRowWithAction.scss +38 -0
- package/dist/components/TaskList/TaskList.js +22 -5
- package/dist/components/TaskList/TaskList.scss +24 -0
- package/dist/components/TaskList/TaskList.test.js +160 -16
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +27 -12
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +145 -0
- package/dist/utils/CheckYourAnswers/{getComponentRowForCYA.js → getSummaryListRowForDetails.js} +10 -5
- package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.test.js +56 -0
- package/dist/utils/CollectionPage/getQuickEditPage.js +2 -1
- package/dist/utils/CollectionPage/getQuickEditPage.test.js +8 -0
- package/dist/utils/CollectionPage/mergeCollectionPages.js +10 -1
- package/dist/utils/CollectionPage/mergeCollectionPages.test.js +6 -6
- package/dist/utils/Component/elevateNestedComponents.js +2 -1
- package/dist/utils/Component/elevateNestedComponents.test.js +38 -0
- package/dist/utils/Component/optionIsSelected.js +5 -0
- package/dist/utils/Component/optionIsSelected.test.js +26 -0
- package/dist/utils/Operate/getLength.js +50 -0
- package/dist/utils/Operate/getLength.test.js +89 -0
- package/dist/utils/Operate/runPageOperations.js +2 -0
- package/dist/utils/Validate/validateComponent.js +7 -2
- package/dist/utils/Validate/validateComponent.test.js +31 -0
- package/dist/utils/Validate/validateTime.js +8 -0
- package/dist/utils/Validate/validateTime.test.js +46 -0
- package/package.json +1 -1
- package/dist/utils/CheckYourAnswers/getComponentRowForCYA.test.js +0 -41
|
@@ -73,6 +73,52 @@ describe('components.CollectionSummary.CollectionSummary', function () {
|
|
|
73
73
|
expect(summary.children[0].id).toEqual("".concat(CONFIG.fieldId, ".summaryCard").concat(FORM_DATA.testCollection[0].id));
|
|
74
74
|
expect(summary.children[1].id).toEqual("".concat(CONFIG.fieldId, ".summaryCard").concat(FORM_DATA.testCollection[1].id));
|
|
75
75
|
});
|
|
76
|
+
it('should focus on the most recently duplicated item', function () {
|
|
77
|
+
var customConfig = {
|
|
78
|
+
id: 'testSummary',
|
|
79
|
+
fieldId: 'testSummary',
|
|
80
|
+
collectionName: 'testCollection',
|
|
81
|
+
card: {
|
|
82
|
+
title: 'Title',
|
|
83
|
+
deleteAction: {
|
|
84
|
+
label: 'Delete'
|
|
85
|
+
},
|
|
86
|
+
changeAction: {
|
|
87
|
+
label: 'Change label',
|
|
88
|
+
page: 'testPage',
|
|
89
|
+
aria_label: [{
|
|
90
|
+
text: 'testText'
|
|
91
|
+
}]
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
quickEdit: true,
|
|
95
|
+
focusOn: true
|
|
96
|
+
};
|
|
97
|
+
var customFormData = {
|
|
98
|
+
testCollectionActiveId: '001',
|
|
99
|
+
testCollection: [{
|
|
100
|
+
id: '000',
|
|
101
|
+
testText: 'value',
|
|
102
|
+
isDuplicate: true
|
|
103
|
+
}, {
|
|
104
|
+
id: '001',
|
|
105
|
+
isDuplicate: true
|
|
106
|
+
}]
|
|
107
|
+
};
|
|
108
|
+
var _renderWithValidation2 = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_CollectionSummary.default, {
|
|
109
|
+
config: customConfig,
|
|
110
|
+
formData: customFormData,
|
|
111
|
+
onAction: ON_ACTION
|
|
112
|
+
})),
|
|
113
|
+
container = _renderWithValidation2.container;
|
|
114
|
+
var changeButtons = container.querySelectorAll('[data-testid="change-button"]');
|
|
115
|
+
var firstDuplicatedItem = changeButtons[0];
|
|
116
|
+
var lastDuplicatedItem = changeButtons[changeButtons.length - 1];
|
|
117
|
+
expect(lastDuplicatedItem).toBeDefined();
|
|
118
|
+
expect(document.activeElement).toEqual(lastDuplicatedItem);
|
|
119
|
+
expect(lastDuplicatedItem.id).toEqual('testSummary.summaryCard001.changeButton');
|
|
120
|
+
expect(document.activeElement).not.toEqual(firstDuplicatedItem);
|
|
121
|
+
});
|
|
76
122
|
it('should correctly queue errors found when validating entries', function () {
|
|
77
123
|
var ErrorCheckComponent = function ErrorCheckComponent() {
|
|
78
124
|
var _useValidation = (0, _hooks.useValidation)(),
|
|
@@ -81,24 +127,24 @@ describe('components.CollectionSummary.CollectionSummary', function () {
|
|
|
81
127
|
return e.error;
|
|
82
128
|
}));
|
|
83
129
|
};
|
|
84
|
-
var
|
|
130
|
+
var _renderWithValidation3 = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(ErrorCheckComponent, null), /*#__PURE__*/_react.default.createElement(_CollectionSummary.default, {
|
|
85
131
|
config: CONFIG,
|
|
86
132
|
formData: FORM_DATA,
|
|
87
133
|
onAction: ON_ACTION,
|
|
88
134
|
pages: PAGES
|
|
89
135
|
}))),
|
|
90
|
-
container =
|
|
136
|
+
container = _renderWithValidation3.container;
|
|
91
137
|
var errorChecker = container.children[0];
|
|
92
138
|
expect(errorChecker.textContent).toContain('queuedErrors is an array of length 1');
|
|
93
139
|
expect(errorChecker.textContent).toContain('testText is required');
|
|
94
140
|
});
|
|
95
141
|
it('should render a confirmation when a SummaryCard\'s delete button is pressed', function () {
|
|
96
|
-
var
|
|
142
|
+
var _renderWithValidation4 = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_CollectionSummary.default, {
|
|
97
143
|
config: CONFIG,
|
|
98
144
|
formData: FORM_DATA,
|
|
99
145
|
onAction: ON_ACTION
|
|
100
146
|
})),
|
|
101
|
-
container =
|
|
147
|
+
container = _renderWithValidation4.container;
|
|
102
148
|
var summary = checkSetup(container);
|
|
103
149
|
expect(summary.children.length).toEqual(2);
|
|
104
150
|
var card = summary.children[0];
|
|
@@ -122,12 +168,12 @@ describe('components.CollectionSummary.CollectionSummary', function () {
|
|
|
122
168
|
title: 'Title'
|
|
123
169
|
}
|
|
124
170
|
};
|
|
125
|
-
var
|
|
171
|
+
var _renderWithValidation5 = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_CollectionSummary.default, {
|
|
126
172
|
config: CONFIG_WITH_BUTTON,
|
|
127
173
|
formData: FORM_DATA,
|
|
128
174
|
onAction: ON_ACTION
|
|
129
175
|
})),
|
|
130
|
-
container =
|
|
176
|
+
container = _renderWithValidation5.container;
|
|
131
177
|
var summary = checkSetup(container);
|
|
132
178
|
expect(summary.children.length).toEqual(3); // The button and a card for each item.
|
|
133
179
|
expect(summary.children[0].id).toEqual("".concat(CONFIG_WITH_BUTTON.fieldId, ".addButton"));
|
|
@@ -146,12 +192,12 @@ describe('components.CollectionSummary.CollectionSummary', function () {
|
|
|
146
192
|
title: 'Title'
|
|
147
193
|
}
|
|
148
194
|
};
|
|
149
|
-
var
|
|
195
|
+
var _renderWithValidation6 = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_CollectionSummary.default, {
|
|
150
196
|
config: CONFIG_WITH_BUTTON,
|
|
151
197
|
formData: FORM_DATA,
|
|
152
198
|
onAction: ON_ACTION
|
|
153
199
|
})),
|
|
154
|
-
container =
|
|
200
|
+
container = _renderWithValidation6.container;
|
|
155
201
|
var summary = checkSetup(container);
|
|
156
202
|
expect(summary.children.length).toEqual(3); // The button and a card for each item.
|
|
157
203
|
expect(summary.children[0].id).toEqual("".concat(CONFIG_WITH_BUTTON.fieldId, ".addButton"));
|
|
@@ -159,12 +205,12 @@ describe('components.CollectionSummary.CollectionSummary', function () {
|
|
|
159
205
|
expect(summary.children[0].tagName).toEqual('BUTTON');
|
|
160
206
|
});
|
|
161
207
|
it('should apply the expected class name to the summary card when delete button is pressed', function () {
|
|
162
|
-
var
|
|
208
|
+
var _renderWithValidation7 = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_CollectionSummary.default, {
|
|
163
209
|
config: CONFIG,
|
|
164
210
|
formData: FORM_DATA,
|
|
165
211
|
onAction: ON_ACTION
|
|
166
212
|
})),
|
|
167
|
-
container =
|
|
213
|
+
container = _renderWithValidation7.container;
|
|
168
214
|
var summary = checkSetup(container);
|
|
169
215
|
expect(summary.children.length).toEqual(2);
|
|
170
216
|
var card = summary.children[0];
|
|
@@ -175,12 +221,12 @@ describe('components.CollectionSummary.CollectionSummary', function () {
|
|
|
175
221
|
expect(card.className).toContain('deleting-summary-card');
|
|
176
222
|
});
|
|
177
223
|
it('should focus on the delete button in the confirmation panel', function () {
|
|
178
|
-
var
|
|
224
|
+
var _renderWithValidation8 = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_CollectionSummary.default, {
|
|
179
225
|
config: CONFIG,
|
|
180
226
|
formData: FORM_DATA,
|
|
181
227
|
onAction: ON_ACTION
|
|
182
228
|
})),
|
|
183
|
-
container =
|
|
229
|
+
container = _renderWithValidation8.container;
|
|
184
230
|
var summary = checkSetup(container);
|
|
185
231
|
expect(summary.children.length).toEqual(2);
|
|
186
232
|
var card = summary.children[0];
|
|
@@ -191,12 +237,12 @@ describe('components.CollectionSummary.CollectionSummary', function () {
|
|
|
191
237
|
expect(document.activeElement).toEqual(confirmButton);
|
|
192
238
|
});
|
|
193
239
|
it('should have the role "alert" in the confirmation panel', function () {
|
|
194
|
-
var
|
|
240
|
+
var _renderWithValidation9 = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_CollectionSummary.default, {
|
|
195
241
|
config: CONFIG,
|
|
196
242
|
formData: FORM_DATA,
|
|
197
243
|
onAction: ON_ACTION
|
|
198
244
|
})),
|
|
199
|
-
container =
|
|
245
|
+
container = _renderWithValidation9.container;
|
|
200
246
|
var summary = checkSetup(container);
|
|
201
247
|
expect(summary.children.length).toEqual(2);
|
|
202
248
|
var card = summary.children[0];
|
|
@@ -216,14 +262,14 @@ describe('components.CollectionSummary.CollectionSummary', function () {
|
|
|
216
262
|
displayFields: ['testText']
|
|
217
263
|
}
|
|
218
264
|
});
|
|
219
|
-
var
|
|
265
|
+
var _renderWithValidation10 = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_CollectionSummary.default, {
|
|
220
266
|
config: listViewConfig,
|
|
221
267
|
formData: FORM_DATA,
|
|
222
268
|
onAction: ON_ACTION,
|
|
223
269
|
pages: PAGES
|
|
224
270
|
})),
|
|
225
|
-
container =
|
|
226
|
-
getByText =
|
|
271
|
+
container = _renderWithValidation10.container,
|
|
272
|
+
getByText = _renderWithValidation10.getByText;
|
|
227
273
|
var summary = checkSetup(container);
|
|
228
274
|
expect(summary.children.length).toEqual(2);
|
|
229
275
|
var card = summary.children[0];
|
|
@@ -248,14 +294,14 @@ describe('components.CollectionSummary.CollectionSummary', function () {
|
|
|
248
294
|
message: 'Test confirmation message with index number ${index}'
|
|
249
295
|
}
|
|
250
296
|
});
|
|
251
|
-
var
|
|
297
|
+
var _renderWithValidation11 = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_CollectionSummary.default, {
|
|
252
298
|
config: listViewConfig,
|
|
253
299
|
formData: FORM_DATA,
|
|
254
300
|
onAction: ON_ACTION,
|
|
255
301
|
pages: PAGES
|
|
256
302
|
})),
|
|
257
|
-
container =
|
|
258
|
-
getByText =
|
|
303
|
+
container = _renderWithValidation11.container,
|
|
304
|
+
getByText = _renderWithValidation11.getByText;
|
|
259
305
|
var summary = checkSetup(container);
|
|
260
306
|
expect(summary.children.length).toEqual(2);
|
|
261
307
|
var card = summary.children[0];
|
|
@@ -8,7 +8,7 @@ var _copReactComponents = require("@ukhomeoffice/cop-react-components");
|
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
var _react = _interopRequireDefault(require("react"));
|
|
10
10
|
var _utils = _interopRequireDefault(require("../../utils"));
|
|
11
|
-
var
|
|
11
|
+
var _getSummaryListRowForDetails = _interopRequireDefault(require("../../utils/CheckYourAnswers/getSummaryListRowForDetails"));
|
|
12
12
|
var _Condition = _interopRequireDefault(require("../../utils/Condition"));
|
|
13
13
|
require("./RenderListView.scss");
|
|
14
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -95,7 +95,7 @@ var RenderListView = function RenderListView(_ref) {
|
|
|
95
95
|
if (!component) {
|
|
96
96
|
return null;
|
|
97
97
|
}
|
|
98
|
-
return (0,
|
|
98
|
+
return (0, _getSummaryListRowForDetails.default)(childPage, component, listClass, entryData);
|
|
99
99
|
});
|
|
100
100
|
}
|
|
101
101
|
return null;
|
|
@@ -47,7 +47,7 @@ var DEFAULT_DUPLICATE_BUTTON_LABEL = exports.DEFAULT_DUPLICATE_BUTTON_LABEL = 'D
|
|
|
47
47
|
var DEFAULT_DETAILS_TITLE = exports.DEFAULT_DETAILS_TITLE = 'Full details';
|
|
48
48
|
var DEFAULT_CHANGE_BUTTON_CLASS = exports.DEFAULT_CHANGE_BUTTON_CLASS = 'secondary';
|
|
49
49
|
var SummaryCard = function SummaryCard(_ref) {
|
|
50
|
-
var _config$changeAction2, _config$changeAction3, _config$changeAction4, _config$deleteAction, _config$deleteAction2, _config$duplicateActi, _config$duplicateActi2;
|
|
50
|
+
var _config$changeAction2, _config$changeAction3, _config$changeAction4, _config$deleteAction, _config$deleteAction2, _config$duplicateActi, _config$duplicateActi2, _config$fullDetails;
|
|
51
51
|
var id = _ref.id,
|
|
52
52
|
entryData = _ref.entryData,
|
|
53
53
|
config = _ref.config,
|
|
@@ -178,6 +178,7 @@ var SummaryCard = function SummaryCard(_ref) {
|
|
|
178
178
|
}, _utils.default.FormPage.getConditionalText(config.details, entryData))), /*#__PURE__*/_react.default.createElement("div", {
|
|
179
179
|
className: classes('header-actions')
|
|
180
180
|
}, config.quickEdit && /*#__PURE__*/_react.default.createElement(_copReactComponents.Button, {
|
|
181
|
+
"data-testid": "quickedit-button",
|
|
181
182
|
id: "".concat(id, ".quickEditButton"),
|
|
182
183
|
onClick: function onClick() {
|
|
183
184
|
return setQuickEdit(function (prevState) {
|
|
@@ -186,16 +187,19 @@ var SummaryCard = function SummaryCard(_ref) {
|
|
|
186
187
|
},
|
|
187
188
|
classModifiers: "primary",
|
|
188
189
|
disabled: quickEdit,
|
|
189
|
-
name: "QuickEdit"
|
|
190
|
+
name: "QuickEdit",
|
|
191
|
+
autoFocus: config.focusOn
|
|
190
192
|
}, DEFAULT_EDIT_LABEL), config.changeAction && typeof onFullEdit === 'function' && /*#__PURE__*/_react.default.createElement(_copReactComponents.Button, {
|
|
191
193
|
id: "".concat(id, ".changeButton"),
|
|
194
|
+
"data-testid": "change-button",
|
|
192
195
|
onClick: function onClick() {
|
|
193
196
|
var _config$changeAction;
|
|
194
197
|
return onFullEdit((_config$changeAction = config.changeAction) === null || _config$changeAction === void 0 ? void 0 : _config$changeAction.page, entryData.id);
|
|
195
198
|
},
|
|
196
199
|
classModifiers: ((_config$changeAction2 = config.changeAction) === null || _config$changeAction2 === void 0 ? void 0 : _config$changeAction2.classModifiers) || DEFAULT_CHANGE_BUTTON_CLASS,
|
|
197
200
|
"aria-label": _utils.default.FormPage.getConditionalText((_config$changeAction3 = config.changeAction) === null || _config$changeAction3 === void 0 ? void 0 : _config$changeAction3.aria_label, entryData),
|
|
198
|
-
name: "Change"
|
|
201
|
+
name: "Change",
|
|
202
|
+
autoFocus: config.focusOn
|
|
199
203
|
}, ((_config$changeAction4 = config.changeAction) === null || _config$changeAction4 === void 0 ? void 0 : _config$changeAction4.label) || DEFAULT_CHANGE_BUTTON_LABEL), config.deleteAction && typeof onDelete === 'function' && /*#__PURE__*/_react.default.createElement(_copReactComponents.Button, {
|
|
200
204
|
id: "".concat(id, ".deleteButton"),
|
|
201
205
|
onClick: function onClick() {
|
|
@@ -205,13 +209,15 @@ var SummaryCard = function SummaryCard(_ref) {
|
|
|
205
209
|
"aria-label": _utils.default.FormPage.getConditionalText((_config$deleteAction = config.deleteAction) === null || _config$deleteAction === void 0 ? void 0 : _config$deleteAction.aria_label, entryData),
|
|
206
210
|
name: "Delete"
|
|
207
211
|
}, ((_config$deleteAction2 = config.deleteAction) === null || _config$deleteAction2 === void 0 ? void 0 : _config$deleteAction2.label) || DEFAULT_DELETE_BUTTON_LABEL), config.duplicateAction && typeof onDuplicate === 'function' && /*#__PURE__*/_react.default.createElement(_copReactComponents.Button, {
|
|
212
|
+
"data-testid": "duplicate-button",
|
|
208
213
|
id: "".concat(id, ".duplicateButton"),
|
|
209
214
|
onClick: function onClick() {
|
|
210
215
|
onDuplicate(entryData);
|
|
211
216
|
},
|
|
212
217
|
classModifiers: "secondary",
|
|
213
218
|
"aria-label": _utils.default.FormPage.getConditionalText((_config$duplicateActi = config.duplicateAction) === null || _config$duplicateActi === void 0 ? void 0 : _config$duplicateActi.aria_label, entryData),
|
|
214
|
-
name: "Duplicate"
|
|
219
|
+
name: "Duplicate",
|
|
220
|
+
autoFocus: config.focusOn
|
|
215
221
|
}, ((_config$duplicateActi2 = config.duplicateAction) === null || _config$duplicateActi2 === void 0 ? void 0 : _config$duplicateActi2.label) || DEFAULT_DUPLICATE_BUTTON_LABEL))), quickEdit && quickEditPage && /*#__PURE__*/_react.default.createElement(_FormPage.default, {
|
|
216
222
|
page: quickEditPage,
|
|
217
223
|
onAction: function onAction(action, patch) {
|
|
@@ -227,7 +233,8 @@ var SummaryCard = function SummaryCard(_ref) {
|
|
|
227
233
|
masterPage: masterPage,
|
|
228
234
|
childCollections: childCollections,
|
|
229
235
|
formData: formData,
|
|
230
|
-
entryData: entryData
|
|
236
|
+
entryData: entryData,
|
|
237
|
+
optionalFieldPlaceholder: ((_config$fullDetails = config.fullDetails) === null || _config$fullDetails === void 0 ? void 0 : _config$fullDetails.optionalFieldPlaceholder) || ''
|
|
231
238
|
}))));
|
|
232
239
|
};
|
|
233
240
|
SummaryCard.propTypes = {
|
|
@@ -261,7 +268,11 @@ SummaryCard.propTypes = {
|
|
|
261
268
|
}))
|
|
262
269
|
}),
|
|
263
270
|
detailsTitle: _propTypes.default.string,
|
|
264
|
-
listView: _propTypes.default.bool
|
|
271
|
+
listView: _propTypes.default.bool,
|
|
272
|
+
focusOn: _propTypes.default.bool,
|
|
273
|
+
fullDetails: _propTypes.default.shape({
|
|
274
|
+
optionalFieldPlaceholder: _propTypes.default.string
|
|
275
|
+
})
|
|
265
276
|
}).isRequired,
|
|
266
277
|
masterPage: _propTypes.default.shape({
|
|
267
278
|
childPages: _propTypes.default.arrayOf(_propTypes.default.shape({
|