@ukhomeoffice/cop-react-form-renderer 2.6.2 → 2.7.4

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.
Files changed (28) hide show
  1. package/dist/components/CheckYourAnswers/Answer.js +3 -1
  2. package/dist/components/CheckYourAnswers/Answer.test.js +3 -2
  3. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +45 -5
  4. package/dist/components/CheckYourAnswers/CheckYourAnswers.scss +10 -0
  5. package/dist/components/CheckYourAnswers/CheckYourAnswers.stories.mdx +331 -269
  6. package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +74 -12
  7. package/dist/components/FormRenderer/FormRenderer.test.js +9 -9
  8. package/dist/components/FormRenderer/helpers/canActionProceed.js +1 -1
  9. package/dist/components/FormRenderer/helpers/canCYASubmit.js +1 -1
  10. package/dist/components/PageActions/ActionButton.js +2 -1
  11. package/dist/components/SummaryList/GroupAction.js +68 -0
  12. package/dist/components/SummaryList/GroupAction.test.js +94 -0
  13. package/dist/components/SummaryList/SummaryList.js +15 -4
  14. package/dist/components/SummaryList/SummaryList.scss +29 -5
  15. package/dist/components/SummaryList/SummaryList.test.js +47 -4
  16. package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +27 -0
  17. package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +77 -0
  18. package/dist/components/TaskList/TaskList.js +4 -2
  19. package/dist/components/TaskList/TaskList.scss +11 -3
  20. package/dist/components/TaskList/TaskList.test.js +21 -15
  21. package/dist/json/groupOfRow.json +137 -0
  22. package/dist/json/groupOfRowData.json +15 -0
  23. package/dist/json/taskList.json +48 -11
  24. package/dist/models/PageAction.js +2 -1
  25. package/dist/models/TaskStates.js +4 -4
  26. package/dist/utils/Validate/validatePage.js +7 -6
  27. package/dist/utils/Validate/validatePage.test.js +60 -12
  28. package/package.json +2 -2
@@ -9,6 +9,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
 
10
10
  var _react = _interopRequireDefault(require("react"));
11
11
 
12
+ var _VisuallyHidden = _interopRequireDefault(require("@ukhomeoffice/cop-react-components/dist/VisuallyHidden"));
13
+
12
14
  var _FormComponent = _interopRequireDefault(require("../FormComponent"));
13
15
 
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -24,7 +26,7 @@ var Answer = function Answer(_ref) {
24
26
  component = _ref.component;
25
27
 
26
28
  if (!value) {
27
- return null;
29
+ return /*#__PURE__*/_react.default.createElement(_VisuallyHidden.default, null, "No answer");
28
30
  }
29
31
 
30
32
  if (!component) {
@@ -29,9 +29,10 @@ describe('components', function () {
29
29
  value: VALUE,
30
30
  component: COMPONENT
31
31
  })), container = _render.container;
32
- expect(container.childNodes.length).toEqual(0);
32
+ expect(container.childNodes.length).toEqual(1);
33
+ expect(container.childNodes[0].textContent).toEqual('No answer');
33
34
 
34
- case 4:
35
+ case 5:
35
36
  case "end":
36
37
  return _context.stop();
37
38
  }
@@ -64,7 +64,8 @@ var CheckYourAnswers = function CheckYourAnswers(_ref) {
64
64
  hide_actions = _ref.hide_actions,
65
65
  hide_title = _ref.hide_title,
66
66
  summaryListClassModifiers = _ref.summaryListClassModifiers,
67
- noChangeAction = _ref.noChangeAction;
67
+ noChangeAction = _ref.noChangeAction,
68
+ groups = _ref.groups;
68
69
 
69
70
  var _useState = (0, _react.useState)([]),
70
71
  _useState2 = _slicedToArray(_useState, 2),
@@ -76,6 +77,11 @@ var CheckYourAnswers = function CheckYourAnswers(_ref) {
76
77
  errors = _useState4[0],
77
78
  setErrors = _useState4[1];
78
79
 
80
+ var _useState5 = (0, _react.useState)([]),
81
+ _useState6 = _slicedToArray(_useState5, 2),
82
+ listOfGroups = _useState6[0],
83
+ setListOfGroups = _useState6[1];
84
+
79
85
  (0, _react.useEffect)(function () {
80
86
  var getRows = function getRows(page, pageIndex) {
81
87
  var rows = _utils.default.CheckYourAnswers.getRows(page, onRowAction);
@@ -110,22 +116,56 @@ var CheckYourAnswers = function CheckYourAnswers(_ref) {
110
116
  setErrors(errors);
111
117
  };
112
118
 
119
+ (0, _react.useEffect)(function () {
120
+ var groupsList = function groupsList() {
121
+ var groupIds = [];
122
+ groups !== undefined && groups.length && groups.forEach(function (group) {
123
+ var groupedPageId = group.pageId;
124
+ groupIds.push(groupedPageId);
125
+ });
126
+ setListOfGroups(groupIds);
127
+ };
128
+
129
+ groupsList();
130
+ }, [setListOfGroups, groups]);
131
+
132
+ var isGroup = function isGroup(pageId) {
133
+ return listOfGroups.includes(pageId);
134
+ };
135
+
136
+ var getGroupForPage = function getGroupForPage(pageId) {
137
+ var groupAnswer;
138
+ groups !== undefined && groups.length && pageId !== undefined && groups.forEach(function (group) {
139
+ if (group.pageId === pageId) {
140
+ groupAnswer = group;
141
+ }
142
+ });
143
+ return groupAnswer;
144
+ };
145
+
113
146
  return /*#__PURE__*/_react.default.createElement("div", {
114
147
  className: DEFAULT_CLASS
115
148
  }, title && !hide_title && /*#__PURE__*/_react.default.createElement(_copReactComponents.LargeHeading, {
116
149
  key: "heading"
117
150
  }, title), errors && errors.length > 0 && /*#__PURE__*/_react.default.createElement(_copReactComponents.ErrorSummary, {
118
151
  errors: errors
119
- }), pages && pages.map(function (page, pageIndex) {
120
- var pageMarginBottom = isLastPage(pageIndex) ? DEFAULT_MARGIN_BOTTOM : listMarginBottom;
152
+ }), pages && pages.map(function (page, pageIndex, array) {
153
+ var pageMarginBottom = isLastPage(pageIndex) || isGroup(array[pageIndex].id) || isGroup(array[pageIndex + 1].id) ? DEFAULT_MARGIN_BOTTOM : listMarginBottom;
154
+ var currentGroup;
155
+ isGroup(page.id) && (currentGroup = getGroupForPage(page.id));
121
156
  var className = "govuk-!-margin-bottom-".concat(pageMarginBottom);
157
+ var hideActionButtons;
158
+ isGroup(page.id) ? hideActionButtons = true : hideActionButtons = noChangeAction;
122
159
  return /*#__PURE__*/_react.default.createElement(_react.Fragment, {
123
160
  key: pageIndex
124
- }, !hide_page_titles && page.title && /*#__PURE__*/_react.default.createElement(_copReactComponents.MediumHeading, null, page.title), /*#__PURE__*/_react.default.createElement(_SummaryList.default, {
161
+ }, !hide_page_titles && page.title && !isGroup(page.id) && /*#__PURE__*/_react.default.createElement(_copReactComponents.MediumHeading, null, page.title), isGroup(page.id) && /*#__PURE__*/_react.default.createElement("div", {
162
+ className: "group-title"
163
+ }, /*#__PURE__*/_react.default.createElement(_copReactComponents.MediumHeading, null, currentGroup.title ? currentGroup.title : page.title)), /*#__PURE__*/_react.default.createElement(_SummaryList.default, {
125
164
  className: className,
126
165
  rows: page.rows,
127
166
  classModifiers: summaryListClassModifiers,
128
- noChangeAction: noChangeAction
167
+ noChangeAction: hideActionButtons,
168
+ isGroup: isGroup(page.id)
129
169
  }));
130
170
  }), !hide_actions && /*#__PURE__*/_react.default.createElement(_PageActions.default, {
131
171
  actions: actions,
@@ -1,2 +1,12 @@
1
1
  @import "node_modules/govuk-frontend/govuk/_base";
2
2
  @import "node_modules/govuk-frontend/govuk/overrides/spacing";
3
+
4
+ .govuk-link {
5
+ @include govuk-font($size: 19);
6
+ color: govuk-colour('blue');
7
+ cursor: pointer;
8
+ }
9
+
10
+ .group-title{
11
+ padding-right: 75px;
12
+ }