Skip to content

Commit 8caf4b5

Browse files
authored
Merge pull request #69 from x0k/port-4461
[core] Port rjsf-team/react-jsonschema-form#4461
2 parents 02f8d61 + baaee86 commit 8caf4b5

File tree

3 files changed

+39
-2
lines changed

3 files changed

+39
-2
lines changed

.changeset/purple-birds-repeat.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@sjsf/form": patch
3+
---
4+
5+
Port https://github.com/rjsf-team/react-jsonschema-form/pull/4461

packages/form/src/core/merge.test.ts

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -442,14 +442,46 @@ describe("mergeDefaultsWithFormData()", () => {
442442
expect(mergeDefaultsWithFormData({}, undefined)).toEqual(undefined);
443443
});
444444

445+
it("should deeply merge and return formData when formData is undefined and defaultSupercedesUndefined false", () => {
446+
expect(
447+
mergeDefaultsWithFormData(
448+
{
449+
arrayWithDefaults: ["Hello World"],
450+
objectWidthDefaults: {
451+
nestedField: "Hello World!",
452+
},
453+
stringField: "Hello World!!",
454+
},
455+
{
456+
arrayWithDefaults: [null],
457+
objectWidthDefaults: {
458+
nestedField: undefined,
459+
},
460+
stringField: undefined,
461+
nonEmptyField: "Hello World!!!",
462+
},
463+
undefined,
464+
undefined,
465+
true
466+
)
467+
).toEqual({
468+
arrayWithDefaults: [null],
469+
objectWidthDefaults: {
470+
nestedField: undefined,
471+
},
472+
stringField: undefined,
473+
nonEmptyField: "Hello World!!!",
474+
});
475+
});
476+
445477
it("should return default when formData is undefined and defaultSupercedesUndefined true", () => {
446478
expect(mergeDefaultsWithFormData({}, undefined, undefined, true)).toEqual(
447479
{}
448480
);
449481
});
450482

451483
it("should return default when formData is null and defaultSupercedesUndefined true", () => {
452-
expect(mergeDefaultsWithFormData({}, null, undefined, true)).toEqual({})
484+
expect(mergeDefaultsWithFormData({}, null, undefined, true)).toEqual({});
453485
});
454486

455487
it("should return undefined when formData is undefined", () => {

packages/form/src/core/merge.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ export function mergeDefaultsWithFormData<T = any>(
137137
: defaultsArray;
138138

139139
const mapped = overrideArray.map((value, idx) => {
140-
if (overrideOppositeArray[idx]) {
140+
if (overrideOppositeArray[idx] !== undefined) {
141141
return mergeDefaultsWithFormData<any>(
142142
defaultsArray[idx],
143143
formData[idx],

0 commit comments

Comments
 (0)