@ukhomeoffice/cop-react-form-renderer 0.1.0-beta

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 (82) hide show
  1. package/README.md +38 -0
  2. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +77 -0
  3. package/dist/components/CheckYourAnswers/CheckYourAnswers.scss +9 -0
  4. package/dist/components/CheckYourAnswers/index.js +13 -0
  5. package/dist/components/FormComponent/FormComponent.js +95 -0
  6. package/dist/components/FormComponent/index.js +13 -0
  7. package/dist/components/FormPage/FormPage.js +121 -0
  8. package/dist/components/FormPage/FormPage.scss +7 -0
  9. package/dist/components/FormPage/index.js +13 -0
  10. package/dist/components/FormRenderer/FormRenderer.js +203 -0
  11. package/dist/components/FormRenderer/FormRenderer.scss +5 -0
  12. package/dist/components/FormRenderer/helpers.js +66 -0
  13. package/dist/components/FormRenderer/helpers.test.js +158 -0
  14. package/dist/components/FormRenderer/index.js +13 -0
  15. package/dist/components/PageActions/PageActions.js +49 -0
  16. package/dist/components/PageActions/index.js +13 -0
  17. package/dist/components/SummaryList/RowAction.js +75 -0
  18. package/dist/components/SummaryList/SummaryList.js +93 -0
  19. package/dist/components/SummaryList/SummaryList.scss +2 -0
  20. package/dist/components/SummaryList/index.js +13 -0
  21. package/dist/components/index.js +31 -0
  22. package/dist/hooks/index.js +39 -0
  23. package/dist/hooks/useAxios.js +80 -0
  24. package/dist/hooks/useGetRequest.js +149 -0
  25. package/dist/hooks/useHooks.js +51 -0
  26. package/dist/hooks/useRefData.js +91 -0
  27. package/dist/index.js +48 -0
  28. package/dist/models/ComponentTypes.js +26 -0
  29. package/dist/models/FormTypes.js +18 -0
  30. package/dist/models/HubFormats.js +12 -0
  31. package/dist/models/index.js +31 -0
  32. package/dist/utils/CheckYourAnswers/getCYAAction.js +22 -0
  33. package/dist/utils/CheckYourAnswers/getCYAAction.test.js +92 -0
  34. package/dist/utils/CheckYourAnswers/getCYARow.js +27 -0
  35. package/dist/utils/CheckYourAnswers/getCYARow.test.js +151 -0
  36. package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +24 -0
  37. package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +134 -0
  38. package/dist/utils/CheckYourAnswers/index.js +17 -0
  39. package/dist/utils/CheckYourAnswers/showComponentCYA.js +37 -0
  40. package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +54 -0
  41. package/dist/utils/Component/cleanAttributes.js +55 -0
  42. package/dist/utils/Component/cleanAttributes.test.js +69 -0
  43. package/dist/utils/Component/getComponent.js +117 -0
  44. package/dist/utils/Component/getComponent.test.js +329 -0
  45. package/dist/utils/Component/index.js +28 -0
  46. package/dist/utils/Component/isEditable.js +19 -0
  47. package/dist/utils/Component/isEditable.test.js +42 -0
  48. package/dist/utils/Component/showComponent.js +44 -0
  49. package/dist/utils/Component/showComponent.test.js +94 -0
  50. package/dist/utils/Component/wrapInFormGroup.js +23 -0
  51. package/dist/utils/Data/getAutocompleteSource.js +28 -0
  52. package/dist/utils/Data/getAutocompleteSource.test.js +146 -0
  53. package/dist/utils/Data/getOptions.js +21 -0
  54. package/dist/utils/Data/getOptions.test.js +71 -0
  55. package/dist/utils/Data/getSourceData.js +34 -0
  56. package/dist/utils/Data/getSourceData.test.js +125 -0
  57. package/dist/utils/Data/index.js +34 -0
  58. package/dist/utils/Data/refDataToOptions.js +33 -0
  59. package/dist/utils/Data/refDataToOptions.test.js +99 -0
  60. package/dist/utils/Data/setupFormData.js +63 -0
  61. package/dist/utils/Data/setupFormData.test.js +216 -0
  62. package/dist/utils/Data/setupRefDataUrlForComponent.js +29 -0
  63. package/dist/utils/Data/setupRefDataUrlForComponent.test.js +83 -0
  64. package/dist/utils/FormPage/getFormPage.js +45 -0
  65. package/dist/utils/FormPage/getFormPages.js +33 -0
  66. package/dist/utils/FormPage/getParagraphFromText.js +20 -0
  67. package/dist/utils/FormPage/index.js +19 -0
  68. package/dist/utils/FormPage/useComponent.js +31 -0
  69. package/dist/utils/Hub/getFormHub.js +30 -0
  70. package/dist/utils/Hub/index.js +20 -0
  71. package/dist/utils/Validate/index.js +26 -0
  72. package/dist/utils/Validate/validateComponent.js +49 -0
  73. package/dist/utils/Validate/validateComponent.test.js +119 -0
  74. package/dist/utils/Validate/validateEmail.js +39 -0
  75. package/dist/utils/Validate/validateEmail.test.js +57 -0
  76. package/dist/utils/Validate/validatePage.js +35 -0
  77. package/dist/utils/Validate/validatePage.test.js +122 -0
  78. package/dist/utils/Validate/validateRequired.js +38 -0
  79. package/dist/utils/Validate/validateRequired.test.js +50 -0
  80. package/dist/utils/index.js +43 -0
  81. package/dist/utils/meetsCondition.js +79 -0
  82. package/package.json +91 -0
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+
3
+ var _getAutocompleteSource = _interopRequireDefault(require("./getAutocompleteSource"));
4
+
5
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
+
7
+ // Local imports
8
+ describe('utils', function () {
9
+ describe('Data', function () {
10
+ describe('getAutocompleteSource', function () {
11
+ it('should handle a null config', function () {
12
+ var SOURCE = (0, _getAutocompleteSource.default)(null);
13
+ expect(typeof SOURCE === 'function').toBeTruthy();
14
+ SOURCE('query', function (results) {
15
+ expect(Array.isArray(results)).toBeTruthy();
16
+ expect(results.length).toEqual(0);
17
+ });
18
+ });
19
+ it('should get any specified options from the config', function () {
20
+ var CONFIG = {
21
+ data: {
22
+ options: [{
23
+ value: 'a',
24
+ label: 'Alpha'
25
+ }, {
26
+ value: 'b',
27
+ label: 'Bravo'
28
+ }]
29
+ }
30
+ };
31
+ var SOURCE = (0, _getAutocompleteSource.default)(CONFIG);
32
+ expect(typeof SOURCE === 'function').toBeTruthy();
33
+ SOURCE('a', function (results) {
34
+ expect(results.length).toEqual(2);
35
+ expect(results).toEqual([{
36
+ value: 'a',
37
+ label: 'Alpha'
38
+ }, {
39
+ value: 'b',
40
+ label: 'Bravo'
41
+ }]);
42
+ });
43
+ SOURCE('al', function (results) {
44
+ expect(results.length).toEqual(1);
45
+ expect(results).toEqual([{
46
+ value: 'a',
47
+ label: 'Alpha'
48
+ }]);
49
+ });
50
+ });
51
+ it('should handle an empty query', function () {
52
+ var CONFIG = {
53
+ data: {
54
+ options: [{
55
+ value: 'a',
56
+ label: 'Alpha'
57
+ }, {
58
+ value: 'b',
59
+ label: 'Bravo'
60
+ }]
61
+ }
62
+ };
63
+ var SOURCE = (0, _getAutocompleteSource.default)(CONFIG);
64
+ SOURCE('', function (results) {
65
+ expect(results.length).toEqual(2);
66
+ expect(results).toEqual([{
67
+ value: 'a',
68
+ label: 'Alpha'
69
+ }, {
70
+ value: 'b',
71
+ label: 'Bravo'
72
+ }]);
73
+ });
74
+ });
75
+ it('should handle an undefined query', function () {
76
+ var CONFIG = {
77
+ data: {
78
+ options: [{
79
+ value: 'a',
80
+ label: 'Alpha'
81
+ }, {
82
+ value: 'b',
83
+ label: 'Bravo'
84
+ }]
85
+ }
86
+ };
87
+ var SOURCE = (0, _getAutocompleteSource.default)(CONFIG);
88
+ SOURCE(undefined, function (results) {
89
+ expect(results.length).toEqual(2);
90
+ expect(results).toEqual([{
91
+ value: 'a',
92
+ label: 'Alpha'
93
+ }, {
94
+ value: 'b',
95
+ label: 'Bravo'
96
+ }]);
97
+ });
98
+ });
99
+ it('should handle a null query', function () {
100
+ var CONFIG = {
101
+ data: {
102
+ options: [{
103
+ value: 'a',
104
+ label: 'Alpha'
105
+ }, {
106
+ value: 'b',
107
+ label: 'Bravo'
108
+ }]
109
+ }
110
+ };
111
+ var SOURCE = (0, _getAutocompleteSource.default)(CONFIG);
112
+ SOURCE(null, function (results) {
113
+ expect(results.length).toEqual(2);
114
+ expect(results).toEqual([{
115
+ value: 'a',
116
+ label: 'Alpha'
117
+ }, {
118
+ value: 'b',
119
+ label: 'Bravo'
120
+ }]);
121
+ });
122
+ });
123
+ it('should handle a missing label on an option', function () {
124
+ var CONFIG = {
125
+ data: {
126
+ options: [{
127
+ value: 'a',
128
+ label: 'Alpha'
129
+ }, {
130
+ value: 'b'
131
+ }]
132
+ }
133
+ };
134
+ var SOURCE = (0, _getAutocompleteSource.default)(CONFIG);
135
+ expect(typeof SOURCE === 'function').toBeTruthy();
136
+ SOURCE('a', function (results) {
137
+ expect(results.length).toEqual(1);
138
+ expect(results).toEqual([{
139
+ value: 'a',
140
+ label: 'Alpha'
141
+ }]);
142
+ });
143
+ });
144
+ });
145
+ });
146
+ });
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var getOptions = function getOptions(config, callback) {
9
+ if (config) {
10
+ if (config.options) {
11
+ return callback(config.options);
12
+ } else if (config.data && config.data.options) {
13
+ return callback(config.data.options);
14
+ }
15
+ }
16
+
17
+ callback([]);
18
+ };
19
+
20
+ var _default = getOptions;
21
+ exports.default = _default;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ var _getOptions = _interopRequireDefault(require("./getOptions"));
4
+
5
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
+
7
+ // Local imports
8
+ describe('utils', function () {
9
+ describe('Data', function () {
10
+ describe('getOptions', function () {
11
+ it('should handle a null config', function () {
12
+ (0, _getOptions.default)(null, function (options) {
13
+ expect(options).toEqual([]);
14
+ });
15
+ });
16
+ it('should get any specified options from the config', function () {
17
+ var CONFIG = {
18
+ options: [{
19
+ value: 'a',
20
+ label: 'Alpha'
21
+ }, {
22
+ value: 'b',
23
+ label: 'Bravo'
24
+ }]
25
+ };
26
+ (0, _getOptions.default)(CONFIG, function (options) {
27
+ expect(options).toEqual(CONFIG.options);
28
+ });
29
+ });
30
+ it('should get any specified options from the data property of the config', function () {
31
+ var CONFIG = {
32
+ data: {
33
+ options: [{
34
+ value: 'a',
35
+ label: 'Alpha'
36
+ }, {
37
+ value: 'b',
38
+ label: 'Bravo'
39
+ }]
40
+ }
41
+ };
42
+ (0, _getOptions.default)(CONFIG, function (options) {
43
+ expect(options).toEqual(CONFIG.data.options);
44
+ });
45
+ });
46
+ it('should use the top-level options over those in the data property', function () {
47
+ var CONFIG = {
48
+ options: [{
49
+ value: 'a',
50
+ label: 'Alpha'
51
+ }, {
52
+ value: 'b',
53
+ label: 'Bravo'
54
+ }],
55
+ data: {
56
+ options: [{
57
+ value: 'c',
58
+ label: 'Charlie'
59
+ }, {
60
+ value: 'd',
61
+ label: 'Delta'
62
+ }]
63
+ }
64
+ };
65
+ (0, _getOptions.default)(CONFIG, function (options) {
66
+ expect(options).toEqual(CONFIG.options);
67
+ });
68
+ });
69
+ });
70
+ });
71
+ });
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ /**
9
+ * Gets the value of a field within the top-level JSON form data,
10
+ * based on a dot-separated field identifier.
11
+ *
12
+ * Example:
13
+ * getSourceData({
14
+ * 'alpha': {
15
+ * 'bravo': 'Charlie'
16
+ * }
17
+ * }, 'alpha.bravo') will return the value 'Charlie'.
18
+ *
19
+ * @param {object} data The top-level JSON form data to iterate through.
20
+ * @param {string} fieldId The dot-separated path to the field.
21
+ * @returns The value of the field specified.
22
+ */
23
+ var getSourceData = function getSourceData(data, fieldId) {
24
+ if (!fieldId) {
25
+ return undefined;
26
+ }
27
+
28
+ return fieldId.split('.').reduce(function (obj, prop) {
29
+ return obj ? obj[prop] : undefined;
30
+ }, data);
31
+ };
32
+
33
+ var _default = getSourceData;
34
+ exports.default = _default;
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+
3
+ var _getSourceData = _interopRequireDefault(require("./getSourceData"));
4
+
5
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
+
7
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+
9
+ describe('utils', function () {
10
+ describe('Data', function () {
11
+ describe('getSourceData', function () {
12
+ it('should return the value at the top level', function () {
13
+ var FIELD_ID = 'field';
14
+ var VALUE = 'value';
15
+
16
+ var DATA = _defineProperty({}, FIELD_ID, VALUE);
17
+
18
+ var value = (0, _getSourceData.default)(DATA, FIELD_ID);
19
+ expect(value).toEqual(VALUE);
20
+ });
21
+ it('should return a nested value', function () {
22
+ var FIELD_ID = 'field.nested';
23
+ var VALUE = 'nested value';
24
+ var DATA = {
25
+ field: {
26
+ nested: VALUE
27
+ }
28
+ };
29
+ var value = (0, _getSourceData.default)(DATA, FIELD_ID);
30
+ expect(value).toEqual(VALUE);
31
+ });
32
+ it('should return a deeply nested value', function () {
33
+ var FIELD_ID = 'field.nested.and.even.further.down';
34
+ var VALUE = 'deeply nested value';
35
+ var DATA = {
36
+ field: {
37
+ nested: {
38
+ and: {
39
+ even: {
40
+ further: {
41
+ down: VALUE
42
+ }
43
+ }
44
+ }
45
+ }
46
+ }
47
+ };
48
+ var value = (0, _getSourceData.default)(DATA, FIELD_ID);
49
+ expect(value).toEqual(VALUE);
50
+ });
51
+ it('should handle null data', function () {
52
+ var FIELD_ID = 'field.nested';
53
+ var value = (0, _getSourceData.default)(null, FIELD_ID);
54
+ expect(value).toBeUndefined();
55
+ });
56
+ it('should handle undefined data', function () {
57
+ var FIELD_ID = 'field.nested';
58
+ var value = (0, _getSourceData.default)(undefined, FIELD_ID);
59
+ expect(value).toBeUndefined();
60
+ });
61
+ it('should handle missing value', function () {
62
+ var FIELD_ID = 'field.nested';
63
+ var VALUE = 'other value';
64
+ var DATA = {
65
+ field: {
66
+ other: VALUE
67
+ }
68
+ };
69
+ var value = (0, _getSourceData.default)(DATA, FIELD_ID);
70
+ expect(value).toBeUndefined();
71
+ });
72
+ it('should handle null fieldId', function () {
73
+ var VALUE = 'value';
74
+ var DATA = {
75
+ field: VALUE
76
+ };
77
+ var value = (0, _getSourceData.default)(DATA, null);
78
+ expect(value).toBeUndefined();
79
+ });
80
+ it('should handle undefined fieldId', function () {
81
+ var VALUE = 'value';
82
+ var DATA = {
83
+ field: VALUE
84
+ };
85
+ var value = (0, _getSourceData.default)(DATA, undefined);
86
+ expect(value).toBeUndefined();
87
+ });
88
+ it('should handle empty fieldId', function () {
89
+ var VALUE = 'value';
90
+ var DATA = {
91
+ field: VALUE
92
+ };
93
+ var value = (0, _getSourceData.default)(DATA, '');
94
+ expect(value).toBeUndefined();
95
+ });
96
+ it('should handle fieldId with trailing dot', function () {
97
+ var FIELD_ID = 'field.';
98
+ var VALUE = 'value';
99
+ var DATA = {
100
+ field: VALUE
101
+ };
102
+ var value = (0, _getSourceData.default)(DATA, FIELD_ID);
103
+ expect(value).toBeUndefined();
104
+ });
105
+ it('should handle fieldId with leading dot', function () {
106
+ var FIELD_ID = '.field';
107
+ var VALUE = 'value';
108
+ var DATA = {
109
+ field: VALUE
110
+ };
111
+ var value = (0, _getSourceData.default)(DATA, FIELD_ID);
112
+ expect(value).toBeUndefined();
113
+ });
114
+ it('should handle fieldId that is just a dot', function () {
115
+ var FIELD_ID = '.';
116
+ var VALUE = 'value';
117
+ var DATA = {
118
+ field: VALUE
119
+ };
120
+ var value = (0, _getSourceData.default)(DATA, FIELD_ID);
121
+ expect(value).toBeUndefined();
122
+ });
123
+ });
124
+ });
125
+ });
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _getAutocompleteSource = _interopRequireDefault(require("./getAutocompleteSource"));
9
+
10
+ var _getOptions = _interopRequireDefault(require("./getOptions"));
11
+
12
+ var _getSourceData = _interopRequireDefault(require("./getSourceData"));
13
+
14
+ var _refDataToOptions = _interopRequireDefault(require("./refDataToOptions"));
15
+
16
+ var _setupFormData = _interopRequireDefault(require("./setupFormData"));
17
+
18
+ var _setupRefDataUrlForComponent = _interopRequireDefault(require("./setupRefDataUrlForComponent"));
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ // Local imports
23
+ var Data = {
24
+ getAutocompleteSource: _getAutocompleteSource.default,
25
+ getOptions: _getOptions.default,
26
+ getSource: _getSourceData.default,
27
+ refData: {
28
+ setupUrl: _setupRefDataUrlForComponent.default,
29
+ toOptions: _refDataToOptions.default
30
+ },
31
+ setupForm: _setupFormData.default
32
+ };
33
+ var _default = Data;
34
+ exports.default = _default;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
9
+
10
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
11
+
12
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
+
14
+ /**
15
+ * Converts ref data items to options.
16
+ * @param {Array} refDataItems An array of ref data items.
17
+ * @returns An array of options.
18
+ */
19
+ var refDataToOptions = function refDataToOptions(refDataItems) {
20
+ if (Array.isArray(refDataItems)) {
21
+ return refDataItems.map(function (opt) {
22
+ return _objectSpread(_objectSpread({}, opt), {}, {
23
+ value: opt.id || opt.value,
24
+ label: opt.name || opt.label
25
+ });
26
+ });
27
+ }
28
+
29
+ return [];
30
+ };
31
+
32
+ var _default = refDataToOptions;
33
+ exports.default = _default;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+
3
+ var _refDataToOptions = _interopRequireDefault(require("./refDataToOptions"));
4
+
5
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
+
7
+ // Local imports
8
+ describe('utils', function () {
9
+ describe('Data', function () {
10
+ describe('refDataToOptions', function () {
11
+ it('can handle a null refData', function () {
12
+ expect((0, _refDataToOptions.default)(null)).toEqual([]);
13
+ });
14
+ it('can handle an undefined refData', function () {
15
+ expect((0, _refDataToOptions.default)(undefined)).toEqual([]);
16
+ });
17
+ it('can handle genuine refData', function () {
18
+ var REF_DATA = [{
19
+ id: 'a',
20
+ name: 'Alpha'
21
+ }, {
22
+ id: 'b',
23
+ name: 'Bravo'
24
+ }, {
25
+ id: 'c',
26
+ name: 'Charlie'
27
+ }];
28
+ expect((0, _refDataToOptions.default)(REF_DATA)).toEqual([{
29
+ id: 'a',
30
+ name: 'Alpha',
31
+ value: 'a',
32
+ label: 'Alpha'
33
+ }, {
34
+ id: 'b',
35
+ name: 'Bravo',
36
+ value: 'b',
37
+ label: 'Bravo'
38
+ }, {
39
+ id: 'c',
40
+ name: 'Charlie',
41
+ value: 'c',
42
+ label: 'Charlie'
43
+ }]);
44
+ });
45
+ it('can handle refData that is already in a usable options format', function () {
46
+ var REF_DATA = [{
47
+ value: 'a',
48
+ label: 'Alpha'
49
+ }, {
50
+ value: 'b',
51
+ label: 'Bravo'
52
+ }, {
53
+ value: 'c',
54
+ label: 'Charlie'
55
+ }];
56
+ expect((0, _refDataToOptions.default)(REF_DATA)).toEqual([{
57
+ value: 'a',
58
+ label: 'Alpha'
59
+ }, {
60
+ value: 'b',
61
+ label: 'Bravo'
62
+ }, {
63
+ value: 'c',
64
+ label: 'Charlie'
65
+ }]);
66
+ });
67
+ it('can handle refData that is in a mixed format', function () {
68
+ var REF_DATA = [{
69
+ id: 'a',
70
+ name: 'Alpha',
71
+ type: 'Delta'
72
+ }, {
73
+ value: 'b',
74
+ label: 'Bravo'
75
+ }, {
76
+ id: 'c',
77
+ name: 'Charlie',
78
+ type: 'Delta'
79
+ }];
80
+ expect((0, _refDataToOptions.default)(REF_DATA)).toEqual([{
81
+ id: 'a',
82
+ name: 'Alpha',
83
+ value: 'a',
84
+ label: 'Alpha',
85
+ type: 'Delta'
86
+ }, {
87
+ value: 'b',
88
+ label: 'Bravo'
89
+ }, {
90
+ id: 'c',
91
+ name: 'Charlie',
92
+ value: 'c',
93
+ label: 'Charlie',
94
+ type: 'Delta'
95
+ }]);
96
+ });
97
+ });
98
+ });
99
+ });
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _getSourceData = _interopRequireDefault(require("./getSourceData"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
13
+
14
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
15
+
16
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
+
18
+ var setupComponentSourceData = function setupComponentSourceData(component, data) {
19
+ if (component.source) {
20
+ data[component.fieldId] = (0, _getSourceData.default)(data, component.source.field);
21
+ }
22
+ };
23
+
24
+ var setupSourceDataForComponents = function setupSourceDataForComponents(components, data) {
25
+ components.forEach(function (component) {
26
+ return setupComponentSourceData(component, data);
27
+ });
28
+ };
29
+
30
+ var setupPageSourceData = function setupPageSourceData(pages, data) {
31
+ pages.forEach(function (page) {
32
+ page.components.filter(function (c) {
33
+ return !c.use;
34
+ }).forEach(function (component) {
35
+ return setupComponentSourceData(component, data);
36
+ });
37
+ });
38
+ };
39
+ /**
40
+ * This populates an object with data from source fields.
41
+ * Note that this doesn't currently support sequenced dependencies:
42
+ * 0: fieldA: source.field = fieldB
43
+ * 1: fieldB: source.field = fieldC
44
+ * 2: fieldC: 'value'
45
+ * In the above example, fieldA will not get a value as fieldB isn't
46
+ * set until after fieldA is processed.
47
+ * @param {*} pages
48
+ * @param {*} components
49
+ * @param {*} baseData
50
+ * @returns
51
+ */
52
+
53
+
54
+ var setupFormData = function setupFormData(pages, components, baseData) {
55
+ var data = _objectSpread({}, baseData);
56
+
57
+ setupSourceDataForComponents(components, data);
58
+ setupPageSourceData(pages, data);
59
+ return data;
60
+ };
61
+
62
+ var _default = setupFormData;
63
+ exports.default = _default;