Skip to content

Commit 123fc70

Browse files
committed
1 parent 0dd24c7 commit 123fc70

File tree

4 files changed

+37
-2
lines changed

4 files changed

+37
-2
lines changed

.changeset/plenty-crabs-do.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/4745

packages/form/src/core/default-state.test.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6281,4 +6281,20 @@ describe("getDefaultFormState2()", () => {
62816281
)
62826282
).toEqual({ stringArray: [undefined], numberArray: [] });
62836283
});
6284+
it("handles a `null` default value", () => {
6285+
const schema: Schema = {
6286+
type: "object",
6287+
properties: {
6288+
empty: {
6289+
type: "null",
6290+
default: null,
6291+
},
6292+
},
6293+
};
6294+
expect(
6295+
getDefaultFormState(testValidator, defaultMerger, schema, {}, schema)
6296+
).toEqual({
6297+
empty: null,
6298+
});
6299+
});
62846300
});

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,20 @@ describe("mergeDefaultsWithFormData()", () => {
484484
expect(mergeDefaultsWithFormData({}, null, undefined, true)).toEqual({});
485485
});
486486

487+
it("should return null if default is null and formData is undefined and defaultSupercedesUndefined is true", () => {
488+
const defaultValue = null;
489+
const formData = undefined;
490+
const defaultSupercedesUndefined = true;
491+
expect(
492+
mergeDefaultsWithFormData(
493+
defaultValue,
494+
formData,
495+
undefined,
496+
defaultSupercedesUndefined
497+
)
498+
).toBeNull();
499+
});
500+
487501
it("should return undefined when formData is undefined", () => {
488502
expect(mergeDefaultsWithFormData(undefined, undefined)).toBeUndefined();
489503
});

packages/form/src/core/merge.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ export function mergeDefaultsWithFormData<T = any>(
239239

240240
if (
241241
(defaultsSupersedesUndefined &&
242-
((!isNil(defaults) && isNil(formData)) ||
242+
((!(defaults === undefined) && isNil(formData)) ||
243243
(typeof formData === "number" && isNaN(formData)))) ||
244244
(overrideFormDataWithDefaults && !isNil(formData))
245245
// NOTE: The above condition is inherited from RJSF to maintain tests compatibility
@@ -255,7 +255,7 @@ export function mergeDefaultsWithFormData<T = any>(
255255

256256
export function mergeSchemaObjects<
257257
A extends SchemaObjectValue,
258-
B extends SchemaObjectValue
258+
B extends SchemaObjectValue,
259259
>(obj1: A, obj2: B, concatArrays: boolean | "preventDuplicates" = false) {
260260
const acc: SchemaObjectValue = Object.assign({}, obj1);
261261
for (const [key, right] of Object.entries(obj2)) {

0 commit comments

Comments
 (0)