@ukhomeoffice/cop-react-form-renderer 5.13.0-alpha → 5.13.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/CollectionPage/CollectionPage.js +2 -0
- package/dist/components/FormComponent/Container.js +3 -3
- package/dist/components/FormRenderer/onCYAAction.js +5 -1
- package/dist/components/FormRenderer/onCYAAction.test.js +8 -5
- package/dist/components/FormRenderer/onPageAction.js +8 -5
- package/dist/components/FormRenderer/onPageAction.test.js +6 -5
- package/dist/components/SummaryList/SummaryList.js +2 -1
- package/dist/components/TaskList/TaskList.js +3 -3
- package/dist/context/HooksContext/HooksContext.js +1 -1
- package/dist/models/EventTypes.js +3 -1
- package/package.json +2 -2
|
@@ -123,6 +123,7 @@ CollectionPage.propTypes = {
|
|
|
123
123
|
actions: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.shape({}), _propTypes.default.string])),
|
|
124
124
|
formData: _propTypes.default.shape({}).isRequired
|
|
125
125
|
}).isRequired,
|
|
126
|
+
onCollectionChange: _propTypes.default.func,
|
|
126
127
|
onAction: _propTypes.default.func.isRequired,
|
|
127
128
|
hashLink: _propTypes.default.bool,
|
|
128
129
|
classBlock: _propTypes.default.string,
|
|
@@ -130,6 +131,7 @@ CollectionPage.propTypes = {
|
|
|
130
131
|
className: _propTypes.default.string
|
|
131
132
|
};
|
|
132
133
|
CollectionPage.defaultProps = {
|
|
134
|
+
onCollectionChange: undefined,
|
|
133
135
|
hashLink: false,
|
|
134
136
|
classBlock: DEFAULT_CLASS,
|
|
135
137
|
classModifiers: [],
|
|
@@ -5,11 +5,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = exports.DEFAULT_CLASS = void 0;
|
|
8
|
+
var _Utils = require("@ukhomeoffice/cop-react-components/dist/utils/Utils");
|
|
8
9
|
var _react = _interopRequireDefault(require("react"));
|
|
9
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
11
|
var _models = require("../../models");
|
|
11
12
|
var _utils = _interopRequireDefault(require("../../utils"));
|
|
12
|
-
var _cleanAttributes = _interopRequireDefault(require("../../utils/Component/cleanAttributes"));
|
|
13
13
|
var _FormComponent = _interopRequireDefault(require("./FormComponent"));
|
|
14
14
|
var _excluded = ["container", "value", "formData", "onChange", "wrap", "onTopLevelChange"];
|
|
15
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -61,8 +61,8 @@ var Container = function Container(_ref) {
|
|
|
61
61
|
}), formData);
|
|
62
62
|
};
|
|
63
63
|
var classes = _utils.default.classBuilder(DEFAULT_CLASS, [], container.className);
|
|
64
|
-
var
|
|
65
|
-
return /*#__PURE__*/_react.default.createElement("div", _extends({},
|
|
64
|
+
var cleanedAttrs = (0, _Utils.cleanHtmlAttributes)(attrs);
|
|
65
|
+
return /*#__PURE__*/_react.default.createElement("div", _extends({}, cleanedAttrs, {
|
|
66
66
|
className: classes(),
|
|
67
67
|
id: container.id
|
|
68
68
|
}), container.components && container.components.filter(shouldShow).map(function (component, index) {
|
|
@@ -101,7 +101,11 @@ var onCYAAction = function onCYAAction(setPagePoint, action, pages, validate, co
|
|
|
101
101
|
onPageChange(_helpers.default.getNextPageId(type, pages, pageId, action, (_formState$page = formState.page) === null || _formState$page === void 0 ? void 0 : _formState$page.formData));
|
|
102
102
|
}
|
|
103
103
|
if (action.type === _models.PageAction.TYPES.CANCEL) {
|
|
104
|
-
|
|
104
|
+
var formData = _utils.default.Format.form({
|
|
105
|
+
pages: pages,
|
|
106
|
+
components: components
|
|
107
|
+
}, _objectSpread({}, data), _models.EventTypes.CANCEL);
|
|
108
|
+
hooks.onCancel(formData);
|
|
105
109
|
}
|
|
106
110
|
};
|
|
107
111
|
var _default = onCYAAction;
|
|
@@ -102,15 +102,15 @@ describe('components.FormRenderer.onCYAAction', function () {
|
|
|
102
102
|
onFormComplete: function onFormComplete() {
|
|
103
103
|
this.onFormCompleteCalls += 1;
|
|
104
104
|
},
|
|
105
|
-
|
|
106
|
-
onCancel: function onCancel() {
|
|
107
|
-
this.
|
|
105
|
+
onCancelArgs: [],
|
|
106
|
+
onCancel: function onCancel(data) {
|
|
107
|
+
this.onCancelArgs.push(data);
|
|
108
108
|
},
|
|
109
109
|
reset: function reset() {
|
|
110
110
|
this.onSubmitCalls = 0;
|
|
111
111
|
this.onSubmitArgs = [];
|
|
112
112
|
this.onFormCompleteCalls = 0;
|
|
113
|
-
this.
|
|
113
|
+
this.onCancelArgs = [];
|
|
114
114
|
}
|
|
115
115
|
};
|
|
116
116
|
var setPagePointCalls = 0;
|
|
@@ -578,6 +578,9 @@ describe('components.FormRenderer.onCYAAction', function () {
|
|
|
578
578
|
}
|
|
579
579
|
});
|
|
580
580
|
_onCYAAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
|
|
581
|
-
expect(MOCK_HOOKS.
|
|
581
|
+
expect(MOCK_HOOKS.onCancelArgs.length).toEqual(1);
|
|
582
|
+
expect(MOCK_HOOKS.onCancelArgs[0]).toMatchObject({
|
|
583
|
+
id: 'formId'
|
|
584
|
+
});
|
|
582
585
|
});
|
|
583
586
|
});
|
|
@@ -20,11 +20,6 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
|
|
|
20
20
|
// patchLabel captures non-ID values
|
|
21
21
|
// for display purposes after submission.)
|
|
22
22
|
var onPageAction = function onPageAction(action, patch, patchLabel, hooks, data, formState, validate, onPageChange, type, pages, components, pageId, setPagePoint, currentTask, setData, hubDetails, setSubmitted, addErrors) {
|
|
23
|
-
if (action.type === _models.PageAction.TYPES.CANCEL) {
|
|
24
|
-
hooks.onCancel();
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
;
|
|
28
23
|
// Save a copy of data in case submit errors and we need to revert
|
|
29
24
|
var preSubmitData = _objectSpread({}, data);
|
|
30
25
|
var form = formState;
|
|
@@ -36,6 +31,14 @@ var onPageAction = function onPageAction(action, patch, patchLabel, hooks, data,
|
|
|
36
31
|
// This should normally have no effect but will prevent issues
|
|
37
32
|
// with validation if formData happens to have been wiped.
|
|
38
33
|
form.page.formData = _objectSpread(_objectSpread({}, form.page.formData), _patch);
|
|
34
|
+
|
|
35
|
+
// Exposes form data to consuming application.
|
|
36
|
+
if (action.type === _models.PageAction.TYPES.CANCEL) {
|
|
37
|
+
hooks.onCancel(form.page.formData);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
;
|
|
41
|
+
|
|
39
42
|
// Check to see whether the action is able to proceed, which in
|
|
40
43
|
// in the case of a submission will validate the fields in the page.
|
|
41
44
|
if (_helpers.default.canActionProceed(action, form.page, validate.page)) {
|
|
@@ -121,15 +121,15 @@ describe('components.FormRenderer.onPageAction', function () {
|
|
|
121
121
|
onFormComplete: function onFormComplete() {
|
|
122
122
|
this.onFormCompleteCalls += 1;
|
|
123
123
|
},
|
|
124
|
-
|
|
125
|
-
onCancel: function onCancel() {
|
|
126
|
-
this.
|
|
124
|
+
onCancelArgs: [],
|
|
125
|
+
onCancel: function onCancel(data) {
|
|
126
|
+
this.onCancelArgs.push(data);
|
|
127
127
|
},
|
|
128
128
|
reset: function reset() {
|
|
129
129
|
this.onSubmitCalls = 0;
|
|
130
130
|
this.onSubmitArgs = [];
|
|
131
131
|
this.onFormCompleteCalls = 0;
|
|
132
|
-
this.
|
|
132
|
+
this.onCancelArgs = [];
|
|
133
133
|
this.onActionCalls = 0;
|
|
134
134
|
},
|
|
135
135
|
onActionCalls: 0,
|
|
@@ -290,7 +290,8 @@ describe('components.FormRenderer.onPageAction', function () {
|
|
|
290
290
|
action: ACTION
|
|
291
291
|
});
|
|
292
292
|
_onPageAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
|
|
293
|
-
expect(MOCK_HOOKS.
|
|
293
|
+
expect(MOCK_HOOKS.onCancelArgs.length).toEqual(1);
|
|
294
|
+
expect(MOCK_HOOKS.onCancelArgs[0]).toMatchObject({});
|
|
294
295
|
// Shouldn't get to the point of validation if
|
|
295
296
|
// action is a cancel action.
|
|
296
297
|
expect(_helpers.default.canActionProceedCalls).toEqual(0);
|
|
@@ -29,6 +29,7 @@ var SummaryList = function SummaryList(_ref) {
|
|
|
29
29
|
className = _ref.className,
|
|
30
30
|
attrs = _objectWithoutProperties(_ref, _excluded);
|
|
31
31
|
var classes = _copReactComponents.Utils.classBuilder(classBlock, classModifiers, className);
|
|
32
|
+
var cleanedHtmlAttrs = _copReactComponents.Utils.cleanHtmlAttributes(attrs);
|
|
32
33
|
var groupActionRow = null;
|
|
33
34
|
if (isGroup) {
|
|
34
35
|
var rowActions = rows.filter(function (r) {
|
|
@@ -38,7 +39,7 @@ var SummaryList = function SummaryList(_ref) {
|
|
|
38
39
|
}
|
|
39
40
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
40
41
|
className: "group-of-rows"
|
|
41
|
-
}, /*#__PURE__*/_react.default.createElement("dl", _extends({},
|
|
42
|
+
}, /*#__PURE__*/_react.default.createElement("dl", _extends({}, cleanedHtmlAttrs, {
|
|
42
43
|
className: classes()
|
|
43
44
|
}), rows.map(function (row) {
|
|
44
45
|
var key = "".concat(row.pageId, "_").concat(row.full_path || row.fieldId);
|
|
@@ -45,7 +45,7 @@ var TaskList = function TaskList(_ref) {
|
|
|
45
45
|
formData = _ref.formData,
|
|
46
46
|
attrs = _objectWithoutProperties(_ref, _excluded);
|
|
47
47
|
var classes = _copReactComponents.Utils.classBuilder(classBlock, classModifiers, className);
|
|
48
|
-
|
|
48
|
+
var cleanedHtmlAttrs = _copReactComponents.Utils.cleanHtmlAttributes(attrs);
|
|
49
49
|
// TODO state will be retrieved from a document in S3 rather than given in the component definition, covered under COP-9885
|
|
50
50
|
var _sections$filter$redu = sections.filter(function (section) {
|
|
51
51
|
return !section.skipped;
|
|
@@ -71,7 +71,7 @@ var TaskList = function TaskList(_ref) {
|
|
|
71
71
|
};
|
|
72
72
|
return /*#__PURE__*/_react.default.createElement("div", _extends({
|
|
73
73
|
id: id
|
|
74
|
-
},
|
|
74
|
+
}, cleanedHtmlAttrs, {
|
|
75
75
|
className: classes()
|
|
76
76
|
}), refNumber && refTitle && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", {
|
|
77
77
|
className: "govuk-body govuk-!-margin-bottom-0"
|
|
@@ -103,7 +103,7 @@ var TaskList = function TaskList(_ref) {
|
|
|
103
103
|
className: classes('section')
|
|
104
104
|
}, sections.length > 1 ? "".concat(index + 1, ". ") : '', section.name), /*#__PURE__*/_react.default.createElement("ol", {
|
|
105
105
|
className: classes('items')
|
|
106
|
-
}, /*#__PURE__*/_react.default.createElement(_dist.Hint, null, section.label ? section.label : ''), section.tasks.filter(function (task) {
|
|
106
|
+
}, /*#__PURE__*/_react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement(_dist.Hint, null, section.label ? section.label : '')), section.tasks.filter(function (task) {
|
|
107
107
|
return task.state !== _models.TaskStates.TYPES.SKIPPED;
|
|
108
108
|
}).map(function (task) {
|
|
109
109
|
return /*#__PURE__*/_react.default.createElement(_Task.default, {
|
|
@@ -56,7 +56,7 @@ var DEFAULT_HOOKS = {
|
|
|
56
56
|
return errors;
|
|
57
57
|
},
|
|
58
58
|
// Returns the list of errors already found in FR by default.
|
|
59
|
-
onCancel: function onCancel() {} // Consuming application must provide function to action, else this does nothing.
|
|
59
|
+
onCancel: function onCancel(data) {} // Consuming application must provide function to action, else this does nothing.
|
|
60
60
|
};
|
|
61
61
|
|
|
62
62
|
var ALLOWED_HOOKS = Object.keys(DEFAULT_HOOKS);
|
|
@@ -6,9 +6,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var TYPE_BLUR = 'blur';
|
|
8
8
|
var TYPE_SUBMIT = 'submit';
|
|
9
|
+
var TYPE_CANCEL = 'cancel';
|
|
9
10
|
var EventTypes = {
|
|
10
11
|
BLUR: TYPE_BLUR,
|
|
11
|
-
SUBMIT: TYPE_SUBMIT
|
|
12
|
+
SUBMIT: TYPE_SUBMIT,
|
|
13
|
+
CANCEL: TYPE_CANCEL
|
|
12
14
|
};
|
|
13
15
|
var _default = EventTypes;
|
|
14
16
|
exports.default = _default;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ukhomeoffice/cop-react-form-renderer",
|
|
3
|
-
"version": "5.13.
|
|
3
|
+
"version": "5.13.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"scripts": {
|
|
6
6
|
"clean": "rimraf dist",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"post-compile": "rimraf dist/*.test.* dist/**/*.test.* dist/**/*.stories.* dist/docs dist/assets"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@ukhomeoffice/cop-react-components": "^3.4.
|
|
19
|
+
"@ukhomeoffice/cop-react-components": "^3.4.1",
|
|
20
20
|
"axios": "^0.23.0",
|
|
21
21
|
"dayjs": "^1.11.0",
|
|
22
22
|
"govuk-frontend": "^4.3.1",
|