Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
x0k committed Jan 28, 2025
1 parent 02f8d61 commit baaee86
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 2 deletions.
5 changes: 5 additions & 0 deletions .changeset/purple-birds-repeat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@sjsf/form": patch
---

Port https://github.com/rjsf-team/react-jsonschema-form/pull/4461
34 changes: 33 additions & 1 deletion packages/form/src/core/merge.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -442,14 +442,46 @@ describe("mergeDefaultsWithFormData()", () => {
expect(mergeDefaultsWithFormData({}, undefined)).toEqual(undefined);
});

it("should deeply merge and return formData when formData is undefined and defaultSupercedesUndefined false", () => {
expect(
mergeDefaultsWithFormData(
{
arrayWithDefaults: ["Hello World"],
objectWidthDefaults: {
nestedField: "Hello World!",
},
stringField: "Hello World!!",
},
{
arrayWithDefaults: [null],
objectWidthDefaults: {
nestedField: undefined,
},
stringField: undefined,
nonEmptyField: "Hello World!!!",
},
undefined,
undefined,
true
)
).toEqual({
arrayWithDefaults: [null],
objectWidthDefaults: {
nestedField: undefined,
},
stringField: undefined,
nonEmptyField: "Hello World!!!",
});
});

it("should return default when formData is undefined and defaultSupercedesUndefined true", () => {
expect(mergeDefaultsWithFormData({}, undefined, undefined, true)).toEqual(
{}
);
});

it("should return default when formData is null and defaultSupercedesUndefined true", () => {
expect(mergeDefaultsWithFormData({}, null, undefined, true)).toEqual({})
expect(mergeDefaultsWithFormData({}, null, undefined, true)).toEqual({});
});

it("should return undefined when formData is undefined", () => {
Expand Down
2 changes: 1 addition & 1 deletion packages/form/src/core/merge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ export function mergeDefaultsWithFormData<T = any>(
: defaultsArray;

const mapped = overrideArray.map((value, idx) => {
if (overrideOppositeArray[idx]) {
if (overrideOppositeArray[idx] !== undefined) {
return mergeDefaultsWithFormData<any>(
defaultsArray[idx],
formData[idx],
Expand Down

0 comments on commit baaee86

Please sign in to comment.