@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.
@@ -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
- }, task.name) : task.name), /*#__PURE__*/_react.default.createElement(_TaskState.default, {
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 inactive link if state is cannotStartYet', function () {
41
- var NAME = 'taskName';
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(NAME);
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 _render3 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_Task.default, {
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 = _render3.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 call then given onClick function when the link is clicked', function () {
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 _render4 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_Task.default, {
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 = _render4.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 (entry === value || config.key && entry[config.key] === value) {
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',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ukhomeoffice/cop-react-form-renderer",
3
- "version": "4.9.1",
3
+ "version": "4.11.0",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "clean": "rimraf dist",