@ukhomeoffice/cop-react-form-renderer 5.90.2 → 5.91.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.
|
@@ -7,6 +7,7 @@ exports.default = exports.DEFAULT_TITLE = exports.DEFAULT_LIST_CLASS = exports.D
|
|
|
7
7
|
var _copReactComponents = require("@ukhomeoffice/cop-react-components");
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _BannerStrip = _interopRequireDefault(require("./BannerStrip"));
|
|
10
11
|
var _utils = _interopRequireDefault(require("../../utils"));
|
|
11
12
|
var _getSummaryListRowForDetails = _interopRequireDefault(require("../../utils/CheckYourAnswers/getSummaryListRowForDetails"));
|
|
12
13
|
var _Condition = _interopRequireDefault(require("../../utils/Condition"));
|
|
@@ -37,18 +38,24 @@ var RenderListView = function RenderListView(_ref) {
|
|
|
37
38
|
masterPage = _ref.masterPage,
|
|
38
39
|
classModifiers = _ref.classModifiers,
|
|
39
40
|
optionalFieldPlaceholder = _ref.optionalFieldPlaceholder;
|
|
40
|
-
var classes = _copReactComponents.Utils.classBuilder(DEFAULT_CLASS, classModifiers);
|
|
41
|
+
var classes = _copReactComponents.Utils.classBuilder(DEFAULT_CLASS, classModifiers, config.className);
|
|
41
42
|
var listClass = _copReactComponents.Utils.classBuilder(DEFAULT_LIST_CLASS);
|
|
42
43
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
43
44
|
className: classes(),
|
|
44
45
|
id: id
|
|
45
46
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
46
47
|
className: classes('title-wrapper', [], 'dark')
|
|
48
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
49
|
+
className: classes('title-content')
|
|
47
50
|
}, /*#__PURE__*/_react.default.createElement("h2", {
|
|
48
51
|
className: classes('title')
|
|
49
52
|
}, _copReactComponents.Utils.interpolateString(config.title || DEFAULT_TITLE, _objectSpread(_objectSpread({}, entryData), {}, {
|
|
50
53
|
index: entryData.index + 1
|
|
51
|
-
}))), /*#__PURE__*/_react.default.createElement(
|
|
54
|
+
}))), config.banners && /*#__PURE__*/_react.default.createElement(_BannerStrip.default, {
|
|
55
|
+
id: "BannerStrip".concat(entryData.id),
|
|
56
|
+
banners: config.banners,
|
|
57
|
+
formData: entryData
|
|
58
|
+
})), /*#__PURE__*/_react.default.createElement("ul", {
|
|
52
59
|
className: classes('actions')
|
|
53
60
|
}, /*#__PURE__*/_react.default.createElement("li", {
|
|
54
61
|
className: classes('action')
|
|
@@ -110,6 +117,8 @@ RenderListView.propTypes = {
|
|
|
110
117
|
index: _propTypes.default.number.isRequired
|
|
111
118
|
}).isRequired,
|
|
112
119
|
config: _propTypes.default.shape({
|
|
120
|
+
className: _propTypes.default.string,
|
|
121
|
+
banners: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({})])),
|
|
113
122
|
title: _propTypes.default.string,
|
|
114
123
|
changeAction: _propTypes.default.shape({
|
|
115
124
|
label: _propTypes.default.string,
|
|
@@ -183,6 +183,10 @@ $govuk-font-family: 'Roboto', arial, sans-serif;
|
|
|
183
183
|
&--deleting-summary-card {
|
|
184
184
|
background-color: #FCF0EE;
|
|
185
185
|
}
|
|
186
|
+
|
|
187
|
+
&.error {
|
|
188
|
+
border-left: 7px solid red;
|
|
189
|
+
}
|
|
186
190
|
}
|
|
187
191
|
|
|
188
192
|
.govuk-summary-card__title-wrapper {
|
|
@@ -213,6 +217,11 @@ $govuk-font-family: 'Roboto', arial, sans-serif;
|
|
|
213
217
|
}
|
|
214
218
|
}
|
|
215
219
|
|
|
220
|
+
.govuk-summary-card__title-content {
|
|
221
|
+
display: flex;
|
|
222
|
+
flex-direction: column;
|
|
223
|
+
}
|
|
224
|
+
|
|
216
225
|
.govuk-summary-card__actions {
|
|
217
226
|
@include govuk-typography-responsive($size: 19);
|
|
218
227
|
@include govuk-typography-weight-bold;
|
|
@@ -6,10 +6,13 @@ var _setupTests = require("../../setupTests");
|
|
|
6
6
|
var _RenderListView = _interopRequireDefault(require("./RenderListView"));
|
|
7
7
|
var _models = require("../../models");
|
|
8
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
10
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
11
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
12
|
+
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; }
|
|
13
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
14
|
+
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); } // Global imports.
|
|
11
15
|
// Local imports.
|
|
12
|
-
|
|
13
16
|
describe('components.CollectionSummary.RenderListView', function () {
|
|
14
17
|
var ENTRY = {
|
|
15
18
|
id: '001',
|
|
@@ -78,6 +81,13 @@ describe('components.CollectionSummary.RenderListView', function () {
|
|
|
78
81
|
label: 'Delete label'
|
|
79
82
|
}
|
|
80
83
|
};
|
|
84
|
+
var CONFIG_ERROR = _objectSpread({
|
|
85
|
+
className: 'error',
|
|
86
|
+
banners: [{
|
|
87
|
+
"text": "MORE DETAILS NEEDED",
|
|
88
|
+
"classModifiers": ["red"]
|
|
89
|
+
}]
|
|
90
|
+
}, CONFIG);
|
|
81
91
|
var ID = 'testListView';
|
|
82
92
|
var onChangeArgs = [];
|
|
83
93
|
var onChangeCalls = 0;
|
|
@@ -180,6 +190,33 @@ describe('components.CollectionSummary.RenderListView', function () {
|
|
|
180
190
|
// Check if the index is rendered as expected in the title
|
|
181
191
|
expect(title.textContent).toContain("Title text ".concat(ENTRY.index + 1));
|
|
182
192
|
});
|
|
193
|
+
it('should render an Error Tag with Error className when passed an error in the Banner and ClassName', function () {
|
|
194
|
+
var _renderWithValidation3 = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react2.default.createElement(_RenderListView.default, {
|
|
195
|
+
id: ID,
|
|
196
|
+
entryData: ENTRY,
|
|
197
|
+
config: CONFIG_ERROR,
|
|
198
|
+
onFullEdit: ON_CHANGE,
|
|
199
|
+
onDelete: ON_DELETE,
|
|
200
|
+
masterPage: MASTER_PAGE,
|
|
201
|
+
getComponentRow: getComponentRow
|
|
202
|
+
})),
|
|
203
|
+
container = _renderWithValidation3.container;
|
|
204
|
+
var listViewDiv = checkSetup(container);
|
|
205
|
+
|
|
206
|
+
// Check className
|
|
207
|
+
expect(listViewDiv.classList).toContain('error');
|
|
208
|
+
|
|
209
|
+
// Check for presence of Banner Strip
|
|
210
|
+
var bannerStrip = listViewDiv.querySelector('.hods-form-banner-strip');
|
|
211
|
+
expect(bannerStrip).not.toBeNull();
|
|
212
|
+
expect(bannerStrip.id).toEqual('BannerStrip001');
|
|
213
|
+
|
|
214
|
+
// Check for presence of Error Tag with correct tagName, className, and Text content
|
|
215
|
+
var errorTag = listViewDiv.querySelector('.hods-form-banner-strip__tag--red');
|
|
216
|
+
expect(errorTag).not.toBeNull();
|
|
217
|
+
expect(errorTag.tagName).toBe('STRONG');
|
|
218
|
+
expect(errorTag.innerHTML).toContain('MORE DETAILS NEEDED');
|
|
219
|
+
});
|
|
183
220
|
describe('Action buttons in RenderListView', function () {
|
|
184
221
|
beforeEach(function () {
|
|
185
222
|
onChangeArgs = [];
|
|
@@ -188,7 +225,7 @@ describe('components.CollectionSummary.RenderListView', function () {
|
|
|
188
225
|
onDeleteCalls = 0;
|
|
189
226
|
});
|
|
190
227
|
it('should render and handle action buttons correctly', function () {
|
|
191
|
-
var
|
|
228
|
+
var _renderWithValidation4 = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react2.default.createElement(_RenderListView.default, {
|
|
192
229
|
id: ID,
|
|
193
230
|
entryData: ENTRY,
|
|
194
231
|
config: CONFIG,
|
|
@@ -197,7 +234,7 @@ describe('components.CollectionSummary.RenderListView', function () {
|
|
|
197
234
|
masterPage: MASTER_PAGE,
|
|
198
235
|
getComponentRow: getComponentRow
|
|
199
236
|
})),
|
|
200
|
-
container =
|
|
237
|
+
container = _renderWithValidation4.container;
|
|
201
238
|
var listViewDiv = container.querySelector('.govuk-summary-card');
|
|
202
239
|
expect(listViewDiv).not.toBeNull();
|
|
203
240
|
|