@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
|
-
|
|
72
|
+
const {
|
|
73
|
+
value
|
|
74
|
+
} = target;
|
|
75
|
+
if (!value) {
|
|
71
76
|
delete formPage.formData[target.name];
|
|
72
77
|
setPatch(prev => {
|
|
73
|
-
const
|
|
74
|
-
|
|
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
|
|
78
|
-
|
|
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] =
|
|
94
|
+
formPage.formData[target.name] = value;
|
|
82
95
|
setPatch(prev => _objectSpread(_objectSpread({}, prev), {}, {
|
|
83
|
-
[target.name]:
|
|
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
|
});
|