@ukhomeoffice/cop-react-form-renderer 6.15.2 → 6.15.3

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.
@@ -10,13 +10,14 @@ exports.default = void 0;
10
10
  * @returns The updated target.
11
11
  */
12
12
  const addLabel = (paramTarget, component, data) => {
13
+ var _target$value;
13
14
  const target = paramTarget;
14
15
  // target.value can be an object in which case use value in object attribute
15
- const value = typeof target.value === 'object' ? target.value.value : target.value;
16
+ const value = typeof target.value === 'object' ? (_target$value = target.value) === null || _target$value === void 0 ? void 0 : _target$value.value : target.value;
16
17
  // find the reference data item using the value
17
18
  const item = data.find(e => String(e.id) === value);
18
19
  // if item is null it means that the target.value can be used as a label otherwise use item.label
19
- target.label = item === undefined ? target.value : item.label;
20
+ target.label = item === undefined ? target.value || '' : item.label;
20
21
  target.component = component.cya_label;
21
22
  return target;
22
23
  };
@@ -19,6 +19,8 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
19
19
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
20
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
21
21
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
22
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
23
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
22
24
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
23
25
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // Global imports
24
26
  // Local imports.
@@ -67,20 +69,31 @@ const FormPage = _ref => {
67
69
  target
68
70
  } = _ref2;
69
71
  const formPage = page;
70
- if (target.value == null) {
72
+ const {
73
+ value
74
+ } = target;
75
+ if (!value) {
71
76
  delete formPage.formData[target.name];
72
77
  setPatch(prev => {
73
- const data = prev;
74
- return delete data[target.name];
78
+ const _target$name = target.name,
79
+ {
80
+ [_target$name]: removedValue
81
+ } = prev,
82
+ newState = _objectWithoutProperties(prev, [_target$name].map(_toPropertyKey));
83
+ return newState;
75
84
  });
76
85
  setPatchLabel(prev => {
77
- const data = prev;
78
- return delete data[target.component];
86
+ const _target$component = target.component,
87
+ {
88
+ [_target$component]: removedValue
89
+ } = prev,
90
+ newState = _objectWithoutProperties(prev, [_target$component].map(_toPropertyKey));
91
+ return newState;
79
92
  });
80
93
  } else {
81
- formPage.formData[target.name] = target.value;
94
+ formPage.formData[target.name] = value;
82
95
  setPatch(prev => _objectSpread(_objectSpread({}, prev), {}, {
83
- [target.name]: target.value
96
+ [target.name]: value
84
97
  }));
85
98
  setPatchLabel(prev => _objectSpread(_objectSpread({}, prev), {}, {
86
99
  [target.component]: target.label
@@ -337,5 +337,58 @@ describe('components.FormPage', () => {
337
337
  }));
338
338
  expect(ON_ACTION_CALLS.length).toEqual(0);
339
339
  });
340
+ it('removed field from the form data when the value is set to null', () => {
341
+ const AUTOCOMPLETE = {
342
+ id: 'autocomplete',
343
+ fieldId: 'autocomplete',
344
+ label: 'autocomplete',
345
+ hint: '',
346
+ type: 'autocomplete',
347
+ required: true,
348
+ source: [{
349
+ id: 'a',
350
+ name: 'apple'
351
+ }, {
352
+ id: 'b',
353
+ name: 'banana'
354
+ }, {
355
+ id: 'c',
356
+ name: 'cherry'
357
+ }, {
358
+ id: 'd',
359
+ name: 'DURIAN'
360
+ }],
361
+ disabled: false
362
+ };
363
+ const page = {
364
+ id: 'page1',
365
+ title: 'Page title',
366
+ label: 'Page label',
367
+ components: [AUTOCOMPLETE],
368
+ formData: {
369
+ autocomplete: 'autocomplete value example'
370
+ },
371
+ actions: []
372
+ };
373
+ const onChangeMock = jest.fn();
374
+ const {
375
+ getByLabelText
376
+ } = (0, _setupTests.renderWithValidation)(/*#__PURE__*/_react2.default.createElement(_FormPage.default, {
377
+ page: page,
378
+ fromTarget: true,
379
+ onAction: onChangeMock,
380
+ onChange: onChangeMock
381
+ }));
382
+ const input = getByLabelText('autocomplete');
383
+ _react.fireEvent.change(input, {
384
+ target: {
385
+ name: 'autocomplete',
386
+ value: '',
387
+ component: 'autocomplete'
388
+ }
389
+ });
390
+ const updatedState = onChangeMock.mock.calls.pop()[0];
391
+ expect(updatedState.autocomplete).toBeUndefined();
392
+ });
340
393
  });
341
394
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ukhomeoffice/cop-react-form-renderer",
3
- "version": "6.15.2",
3
+ "version": "6.15.3",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "clean": "rimraf dist",