@ukhomeoffice/cop-react-form-renderer 6.5.1-peter → 6.6.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.
Files changed (43) hide show
  1. package/dist/components/CollectionSummary/RenderListView.js +1 -1
  2. package/dist/components/CollectionSummary/RenderListView.scss +1 -1
  3. package/dist/components/CollectionSummary/SummaryCard.js +2 -2
  4. package/dist/components/CollectionSummary/SummaryCardDetails.scss +4 -4
  5. package/dist/components/FormRenderer/helpers/index.js +1 -3
  6. package/dist/components/FormRenderer/onPageAction.js +1 -8
  7. package/dist/components/FormRenderer/onPageAction.test.js +0 -5
  8. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +9 -1
  9. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +26 -6
  10. package/dist/utils/CollectionPage/getQuickEditPage.js +7 -4
  11. package/dist/utils/CollectionPage/getQuickEditPage.test.js +14 -29
  12. package/dist/utils/CollectionPage/mergeCollectionPages.js +0 -1
  13. package/dist/utils/Validate/additional/mustBeUniqueInCollection.js +4 -0
  14. package/dist/utils/Validate/additional/mustBeUniqueInCollection.test.js +36 -0
  15. package/package.json +1 -1
  16. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/component-used-in-multiple-pages-data.json +0 -4
  17. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/component-used-in-multiple-pages-form.json +0 -61
  18. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-airpax-after.json +0 -429
  19. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-airpax-before.json +0 -449
  20. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-airpax-form.json +0 -15219
  21. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-eab-2-data-after.json +0 -516
  22. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-eab-2-data-before.json +0 -593
  23. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-eab2-form.json +0 -15219
  24. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-mandec-data-after.json +0 -84
  25. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-mandec-data-before.json +0 -98
  26. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-mandec-form.json +0 -9158
  27. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-collection-data-removed.json +0 -4
  28. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-collections.json +0 -8
  29. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-components-removed.json +0 -3
  30. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-components.json +0 -5
  31. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-entire-collection-removed.json +0 -3
  32. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-nested-component-removed.json +0 -10
  33. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-nested-components.json +0 -11
  34. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-for-nested-components.json +0 -96
  35. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-collections-delete-entire.json +0 -47
  36. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-collections.json +0 -46
  37. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-components.json +0 -48
  38. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/test.json +0 -1605
  39. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/test2.json +0 -205
  40. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.js +0 -206
  41. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.test.js +0 -143
  42. package/dist/components/FormRenderer/helpers/deleteNodeByPath.js +0 -26
  43. package/dist/components/FormRenderer/helpers/deleteNodeByPath.test.js +0 -56
@@ -92,7 +92,7 @@ var RenderListView = function RenderListView(_ref) {
92
92
  var component = elevatedComponents.find(function (comp) {
93
93
  return comp.fieldId === fieldId;
94
94
  });
95
- if (!component || !_Condition.default.meetsAll(component, _objectSpread(_objectSpread({}, childPage.formData), entryData))) {
95
+ if (!component) {
96
96
  return null;
97
97
  }
98
98
  return (0, _getComponentRowForCYA.default)(childPage, component, listClass, entryData);
@@ -84,7 +84,7 @@ $govuk-font-family: 'Roboto', arial, sans-serif;
84
84
  margin-bottom: govuk-spacing(3);
85
85
  }
86
86
  .hods-form-container .govuk-form-group {
87
- margin-bottom: 0px;
87
+ margin-bottom: 0;
88
88
 
89
89
  label {
90
90
  display: none;
@@ -67,8 +67,8 @@ var SummaryCard = function SummaryCard(_ref) {
67
67
  setQuickEdit = _useState2[1];
68
68
  var classes = _copReactComponents.Utils.classBuilder(DEFAULT_CLASS, classModifiers, config.className);
69
69
  var quickEditPage = (0, _react.useMemo)(function () {
70
- return config.quickEdit ? (0, _getQuickEditPage.default)(masterPage, entryData) : null;
71
- }, [masterPage, config, entryData, quickEdit]);
70
+ return config.quickEdit ? (0, _getQuickEditPage.default)(masterPage, formData, entryData) : null;
71
+ }, [masterPage, config, formData, entryData, quickEdit]);
72
72
 
73
73
  // The validation context used here is a custom one for Summary Cards,
74
74
  // not the standard context. See SummaryCardValidationContext.jsx.
@@ -1,6 +1,6 @@
1
1
  $govuk-font-family: 'Roboto', arial, sans-serif;
2
2
 
3
- @import "node_modules/govuk-frontend/govuk/_base";
3
+ @import 'govuk-frontend/dist/govuk/_base';
4
4
 
5
5
  .govuk-grid-column-two-thirds:has(.hods-form-summary-card-details) {
6
6
  width: 100% !important;
@@ -24,7 +24,7 @@ $govuk-font-family: 'Roboto', arial, sans-serif;
24
24
  margin: 0;
25
25
 
26
26
  .hods-form-container .govuk-form-group {
27
- margin-bottom: 0px;
27
+ margin-bottom: 0;
28
28
 
29
29
  label {
30
30
  display: none;
@@ -167,8 +167,8 @@ $govuk-font-family: 'Roboto', arial, sans-serif;
167
167
 
168
168
  .hods-form-summary-card-details__divider {
169
169
  position: absolute;
170
- height: 0%;
171
- width: 0%;
170
+ height: 0;
171
+ width: 0;
172
172
  background-color: #E9EBED;
173
173
  grid-column-start: var(--column);
174
174
  grid-column-end: var(--column);
@@ -13,7 +13,6 @@ var _getNextPageId = _interopRequireDefault(require("./getNextPageId"));
13
13
  var _getPage = _interopRequireDefault(require("./getPage"));
14
14
  var _getSubmissionStatus = _interopRequireDefault(require("./getSubmissionStatus"));
15
15
  var _getUpdatedSectionStates = _interopRequireDefault(require("./getUpdatedSectionStates"));
16
- var _clearOutUncompletedRoutes = _interopRequireDefault(require("./clearOutUncompletedRoutes"));
17
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
17
  // Local imports
19
18
 
@@ -26,7 +25,6 @@ var helpers = {
26
25
  getNextPageId: _getNextPageId.default,
27
26
  getPage: _getPage.default,
28
27
  getSubmissionStatus: _getSubmissionStatus.default,
29
- getUpdatedSectionStates: _getUpdatedSectionStates.default,
30
- clearOutUncompletedRoutes: _clearOutUncompletedRoutes.default
28
+ getUpdatedSectionStates: _getUpdatedSectionStates.default
31
29
  };
32
30
  var _default = exports.default = helpers;
@@ -112,15 +112,8 @@ var onPageAction = function onPageAction(action, patch, patchLabel, hooks, data,
112
112
  setData(submissionData);
113
113
  }
114
114
  ;
115
- var formPagesAndComponents = {
116
- pages: pages,
117
- components: components
118
- };
119
- if (action.type === _models.PageAction.TYPES.SUBMIT) {
120
- _helpers.default.clearOutUncompletedRoutes(formPagesAndComponents, submissionData);
121
- }
122
115
 
123
- // In case of hub-and-spoke if patchLabel has changed then
116
+ // In case of hub-and-spoke if patchLabel has changed then
124
117
  // save name and value to variables for call to onSubmit hook
125
118
  var changedFieldName;
126
119
  var changedFieldValue;
@@ -50,11 +50,6 @@ jest.mock('./helpers', function () {
50
50
  this.cleanHiddenNestedDataCalls += 1;
51
51
  return patch;
52
52
  },
53
- clearOutUncompletedRoutesCalls: 0,
54
- clearOutUncompletedRoutes: function clearOutUncompletedRoutes(pages, allComponents, formData) {
55
- this.clearOutUncompletedRoutesCalls += 1;
56
- return formData;
57
- },
58
53
  getNextPageIdCalls: 0,
59
54
  getNextPageId: function getNextPageId() {
60
55
  this.getNextPageIdCalls += 1;
@@ -40,7 +40,15 @@ var duplicateCollectionPageEntry = function duplicateCollectionPageEntry(collect
40
40
  fieldsToIgnore.forEach(function (field) {
41
41
  return delete newEntry[field];
42
42
  });
43
- collectionData.push(newEntry);
43
+ var insertionIndex = collectionData.findIndex(function (entry) {
44
+ return entry.id === entryId;
45
+ }) + 1;
46
+ if (insertionIndex === -1) {
47
+ collectionData.push(newEntry);
48
+ } else {
49
+ collectionData.splice(insertionIndex, 0, newEntry);
50
+ }
51
+
44
52
  // eslint-disable-next-line no-param-reassign
45
53
  formData["".concat(collectionName.split('.').pop(), "ActiveId")] = newEntry.id;
46
54
  return newEntryId;
@@ -24,6 +24,26 @@ describe('utils.CollectionPage.duplicateCollectionPageEntry', function () {
24
24
  expect(FORM_DATA["".concat(COLLECTION_NAME, "ActiveId")]).toBeTruthy();
25
25
  expect(FORM_DATA["".concat(COLLECTION_NAME, "ActiveId")] === '1').toBeFalsy();
26
26
  });
27
+ it('should put the new entry under the original one', function () {
28
+ var _FORM_DATA2;
29
+ var FORM_DATA = (_FORM_DATA2 = {}, _defineProperty(_FORM_DATA2, "".concat(COLLECTION_NAME, "ActiveId"), '1'), _defineProperty(_FORM_DATA2, COLLECTION_NAME, [{
30
+ id: '1',
31
+ value: 'value1'
32
+ }, {
33
+ id: '2',
34
+ value: 'value2'
35
+ }, {
36
+ id: '3',
37
+ value: 'value1'
38
+ }]), _FORM_DATA2);
39
+ (0, _duplicateCollectionPageEntry.default)(COLLECTION_NAME, FORM_DATA, '1');
40
+ expect(FORM_DATA[COLLECTION_NAME].length).toEqual(4);
41
+ expect(FORM_DATA[COLLECTION_NAME][1].value).toEqual(FORM_DATA[COLLECTION_NAME][0].value);
42
+ expect(FORM_DATA[COLLECTION_NAME][1].id).toBeTruthy();
43
+ expect(FORM_DATA[COLLECTION_NAME][1].id === '1').toBeFalsy();
44
+ expect(FORM_DATA["".concat(COLLECTION_NAME, "ActiveId")]).toBeTruthy();
45
+ expect(FORM_DATA["".concat(COLLECTION_NAME, "ActiveId")] === '1').toBeFalsy();
46
+ });
27
47
  it('should duplicate entries in nested collections correctly', function () {
28
48
  var FORM_DATA = {
29
49
  parentsActiveId: '2',
@@ -54,8 +74,8 @@ describe('utils.CollectionPage.duplicateCollectionPageEntry', function () {
54
74
  expect((0, _getCollectionPageActiveId.default)('parents.children', FORM_DATA) === '2').toBeFalsy();
55
75
  });
56
76
  it('should ignore fields in the fieldToIgnore array', function () {
57
- var _FORM_DATA2;
58
- var FORM_DATA = (_FORM_DATA2 = {}, _defineProperty(_FORM_DATA2, "".concat(COLLECTION_NAME, "ActiveId"), '1'), _defineProperty(_FORM_DATA2, COLLECTION_NAME, [OBJ]), _FORM_DATA2);
77
+ var _FORM_DATA3;
78
+ var FORM_DATA = (_FORM_DATA3 = {}, _defineProperty(_FORM_DATA3, "".concat(COLLECTION_NAME, "ActiveId"), '1'), _defineProperty(_FORM_DATA3, COLLECTION_NAME, [OBJ]), _FORM_DATA3);
59
79
  ;
60
80
  var FIELDS_TO_IGNORE = ['value'];
61
81
  (0, _duplicateCollectionPageEntry.default)(COLLECTION_NAME, FORM_DATA, '1', FIELDS_TO_IGNORE);
@@ -66,8 +86,8 @@ describe('utils.CollectionPage.duplicateCollectionPageEntry', function () {
66
86
  expect(FORM_DATA[COLLECTION_NAME][1].value).toBeUndefined();
67
87
  });
68
88
  it('should add fields from the fieldsToAdd object', function () {
69
- var _FORM_DATA3;
70
- var FORM_DATA = (_FORM_DATA3 = {}, _defineProperty(_FORM_DATA3, "".concat(COLLECTION_NAME, "ActiveId"), '1'), _defineProperty(_FORM_DATA3, COLLECTION_NAME, [OBJ]), _FORM_DATA3);
89
+ var _FORM_DATA4;
90
+ var FORM_DATA = (_FORM_DATA4 = {}, _defineProperty(_FORM_DATA4, "".concat(COLLECTION_NAME, "ActiveId"), '1'), _defineProperty(_FORM_DATA4, COLLECTION_NAME, [OBJ]), _FORM_DATA4);
71
91
  ;
72
92
  var FIELDS_TO_ADD = {
73
93
  addedKey: 'addedValue'
@@ -81,8 +101,8 @@ describe('utils.CollectionPage.duplicateCollectionPageEntry', function () {
81
101
  expect(FORM_DATA[COLLECTION_NAME][1].addedKey).toEqual('addedValue');
82
102
  });
83
103
  it('should do nothing if an entry with the given id does not exist', function () {
84
- var _FORM_DATA4, _expect$toEqual;
85
- var FORM_DATA = (_FORM_DATA4 = {}, _defineProperty(_FORM_DATA4, "".concat(COLLECTION_NAME, "ActiveId"), '1'), _defineProperty(_FORM_DATA4, COLLECTION_NAME, [OBJ]), _FORM_DATA4);
104
+ var _FORM_DATA5, _expect$toEqual;
105
+ var FORM_DATA = (_FORM_DATA5 = {}, _defineProperty(_FORM_DATA5, "".concat(COLLECTION_NAME, "ActiveId"), '1'), _defineProperty(_FORM_DATA5, COLLECTION_NAME, [OBJ]), _FORM_DATA5);
86
106
  ;
87
107
  (0, _duplicateCollectionPageEntry.default)(COLLECTION_NAME, FORM_DATA, '0');
88
108
  expect(FORM_DATA).toEqual((_expect$toEqual = {}, _defineProperty(_expect$toEqual, "".concat(COLLECTION_NAME, "ActiveId"), '1'), _defineProperty(_expect$toEqual, COLLECTION_NAME, [OBJ]), _expect$toEqual));
@@ -50,16 +50,17 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
50
50
  * editable or not.
51
51
  *
52
52
  * @param {object} masterPage The master page for the collection.
53
+ * @param {object} formData The top-level formData object.
53
54
  * @param {object} entryData The data for the current collection entry.
54
55
  * @returns Page suitble for rendering in a QuickEdit
55
56
  */
56
- var getQuickEditPage = function getQuickEditPage(masterPage, entryData) {
57
+ var getQuickEditPage = function getQuickEditPage(masterPage, formData, entryData) {
57
58
  if (!masterPage) {
58
59
  return null;
59
60
  }
60
61
  var fullComponents = [];
61
62
  masterPage.childPages.forEach(function (page) {
62
- if (!page.summaryQuickEdit || !(0, _showFormPage.default)(page, _objectSpread(_objectSpread({}, page.formData), entryData))) {
63
+ if (!page.summaryQuickEdit || !(0, _showFormPage.default)(page, _objectSpread(_objectSpread({}, formData), entryData))) {
63
64
  return;
64
65
  }
65
66
  page.summaryQuickEdit.forEach(function (quickEditComponent) {
@@ -81,7 +82,7 @@ var getQuickEditPage = function getQuickEditPage(masterPage, entryData) {
81
82
  // that as a specific test for when the component should be quick
82
83
  // editable - it doesn't get spread to the merged object.
83
84
  if (quickEditComponent.show_when) {
84
- if ((0, _meetsAllConditions.default)(quickEditComponent.show_when, _objectSpread(_objectSpread({}, page.formData), entryData))) {
85
+ if ((0, _meetsAllConditions.default)(quickEditComponent.show_when, _objectSpread(_objectSpread({}, formData), entryData))) {
85
86
  fullComponents.push(_objectSpread(_objectSpread({}, mergedComponent), {}, {
86
87
  show_when: originalComponent.show_when || []
87
88
  }));
@@ -93,7 +94,9 @@ var getQuickEditPage = function getQuickEditPage(masterPage, entryData) {
93
94
  });
94
95
 
95
96
  // Put components and actions onto page object
96
- var pageToReturn = _objectSpread({}, masterPage.childPages[0]);
97
+ var pageToReturn = _objectSpread(_objectSpread({}, masterPage.childPages[0]), {}, {
98
+ formData: formData
99
+ });
97
100
  pageToReturn.components = fullComponents;
98
101
  pageToReturn.actions = [{
99
102
  type: 'save',
@@ -9,6 +9,15 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
9
9
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
10
10
  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); }
11
11
  describe('Utils.CollectionPage.getQuickEditPage', function () {
12
+ var FORM_DATA = {
13
+ items: [{
14
+ id: '123',
15
+ testText1: 'value 1',
16
+ testText2: 'value 2',
17
+ conditionText: 'true',
18
+ testText3: 'value 3'
19
+ }]
20
+ };
12
21
  var MASTER_PAGE = {
13
22
  childPages: [{
14
23
  id: 'firstPage',
@@ -44,15 +53,7 @@ describe('Utils.CollectionPage.getQuickEditPage', function () {
44
53
  fieldId: 'testText2',
45
54
  required: true
46
55
  }],
47
- formData: {
48
- items: [{
49
- id: '123',
50
- testText1: 'value 1',
51
- testText2: 'value 2',
52
- conditionText: 'true',
53
- testText3: 'value 3'
54
- }]
55
- },
56
+ formData: FORM_DATA,
56
57
  summaryQuickEdit: [{
57
58
  use: "testText2",
58
59
  show_when: {
@@ -69,15 +70,7 @@ describe('Utils.CollectionPage.getQuickEditPage', function () {
69
70
  fieldId: 'testText3',
70
71
  required: true
71
72
  }],
72
- formData: {
73
- items: [{
74
- id: '123',
75
- testText1: 'value 1',
76
- testText2: 'value 2',
77
- conditionText: 'true',
78
- testText3: 'value 3'
79
- }]
80
- },
73
+ formData: FORM_DATA,
81
74
  summaryQuickEdit: ["testText3"]
82
75
  }]
83
76
  };
@@ -103,15 +96,7 @@ describe('Utils.CollectionPage.getQuickEditPage', function () {
103
96
  fieldId: 'testText3',
104
97
  required: true
105
98
  }],
106
- formData: {
107
- items: [{
108
- id: '123',
109
- testText1: 'value 1',
110
- testText2: 'value 2',
111
- conditionText: 'true',
112
- testText3: 'value 3'
113
- }]
114
- },
99
+ formData: FORM_DATA,
115
100
  actions: [{
116
101
  type: 'save',
117
102
  label: 'Save',
@@ -131,7 +116,7 @@ describe('Utils.CollectionPage.getQuickEditPage', function () {
131
116
  testText3: 'value 3'
132
117
  };
133
118
  it('should return a quick edit page', function () {
134
- var createdPage = (0, _getQuickEditPage.default)(MASTER_PAGE, ENTRY_DATA);
119
+ var createdPage = (0, _getQuickEditPage.default)(MASTER_PAGE, FORM_DATA, ENTRY_DATA);
135
120
  expect(createdPage).toMatchObject(EXPECTED_OUTPUT);
136
121
  });
137
122
  it('should return a quick edit page without components that fail the quick edit show_when', function () {
@@ -144,7 +129,7 @@ describe('Utils.CollectionPage.getQuickEditPage', function () {
144
129
  var CUSTOM_ENTRY_DATA = _objectSpread(_objectSpread({}, ENTRY_DATA), {}, {
145
130
  conditionText: 'false'
146
131
  });
147
- var createdPage = (0, _getQuickEditPage.default)(MASTER_PAGE, CUSTOM_ENTRY_DATA);
132
+ var createdPage = (0, _getQuickEditPage.default)(MASTER_PAGE, FORM_DATA, CUSTOM_ENTRY_DATA);
148
133
  expect(createdPage).toMatchObject(CUSTOM_OUTPUT);
149
134
  });
150
135
  });
@@ -32,7 +32,6 @@ var createMasterPage = function createMasterPage(page) {
32
32
  return {
33
33
  id: page.id,
34
34
  name: page.name,
35
- deleteCollectionWhenHidden: page.deleteCollectionWhenHidden,
36
35
  collection: _objectSpread({
37
36
  masterPage: true
38
37
  }, page.collection),
@@ -10,6 +10,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
10
10
  /**
11
11
  * @param {*} value - the value to check.
12
12
  * @param {string} config.collectionPath - the path to the collection within formData
13
+ * @param {string} config.caseInsensitive - true to ignore case, assumes string values
13
14
  * @param {object} component - the component definition
14
15
  * @param {object} formData - the current form data
15
16
  * @returns true if components value is not the same in any other entry in the collection
@@ -28,6 +29,9 @@ var mustBeUniqueInCollection = function mustBeUniqueInCollection(value, config,
28
29
  return false;
29
30
  }
30
31
  ;
32
+ if (config.caseInsensitive && typeof value === 'string' && typeof entry[component.id] === 'string') {
33
+ return entry[component.id].toUpperCase() === value.toUpperCase();
34
+ }
31
35
  return entry[component.id] === value;
32
36
  });
33
37
  return !result;
@@ -121,6 +121,42 @@ describe('utils', function () {
121
121
  }), COMPONENT_NESTED, FORM_DATA);
122
122
  expect(result).toBeFalsy();
123
123
  });
124
+ test('should return true if other entries have the same value for this field in a different case', function () {
125
+ var FORM_DATA = {
126
+ namesActiveId: 2,
127
+ names: [{
128
+ id: 1,
129
+ firstName: 'ALPHA'
130
+ }, {
131
+ id: 2,
132
+ firstName: 'alpha'
133
+ }, {
134
+ id: 3,
135
+ firstName: 'bravo'
136
+ }]
137
+ };
138
+ var result = (0, _mustBeUniqueInCollection.default)('alpha', CONFIG, COMPONENT, FORM_DATA);
139
+ expect(result).toBeTruthy();
140
+ });
141
+ test('should return false if other entries have the same value for this field in a different case and caseInsensitive is true', function () {
142
+ var FORM_DATA = {
143
+ namesActiveId: 2,
144
+ names: [{
145
+ id: 1,
146
+ firstName: 'ALPHA'
147
+ }, {
148
+ id: 2,
149
+ firstName: 'alpha'
150
+ }, {
151
+ id: 3,
152
+ firstName: 'bravo'
153
+ }]
154
+ };
155
+ var result = (0, _mustBeUniqueInCollection.default)('alpha', _objectSpread(_objectSpread({}, CONFIG), {}, {
156
+ caseInsensitive: true
157
+ }), COMPONENT, FORM_DATA);
158
+ expect(result).toBeFalsy();
159
+ });
124
160
  });
125
161
  });
126
162
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ukhomeoffice/cop-react-form-renderer",
3
- "version": "6.5.1-peter",
3
+ "version": "6.6.1",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "clean": "rimraf dist",
@@ -1,4 +0,0 @@
1
- {
2
- "componentA": "show",
3
- "componentB": "hide"
4
- }
@@ -1,61 +0,0 @@
1
- {
2
- "components": [
3
- {
4
- "id": "componentA",
5
- "type": "radios",
6
- "label": "Field A",
7
- "fieldId": "fieldA",
8
- "required": true
9
- },
10
- {
11
- "id": "componentB",
12
- "type": "collection",
13
- "label": "Component B",
14
- "fieldId": "componentB"
15
- }
16
- ],
17
- "pages": [
18
- {
19
- "id": "pageA",
20
- "show_when": {
21
- "op": "=",
22
- "field": "componentA",
23
- "value": "hide"
24
- },
25
- "components": [
26
- {
27
- "id": "componentB",
28
- "use": "componentB"
29
- }
30
- ]
31
- },
32
- {
33
- "id": "pageB",
34
- "show_when": {
35
- "op": "=",
36
- "field": "componentA",
37
- "value": "show"
38
- },
39
- "components": [
40
- {
41
- "id": "componentB",
42
- "use": "componentB"
43
- }
44
- ]
45
- },
46
- {
47
- "id": "pageC",
48
- "show_when": {
49
- "op": "=",
50
- "field": "componentA",
51
- "value": "hide"
52
- },
53
- "components": [
54
- {
55
- "id": "componentB",
56
- "use": "componentB"
57
- }
58
- ]
59
- }
60
- ]
61
- }