Skip to content

Commit acb478a

Browse files
committed
WIP
1 parent 199e0a3 commit acb478a

File tree

2 files changed

+24
-30
lines changed

2 files changed

+24
-30
lines changed

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

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -938,8 +938,7 @@ describe("getDefaultFormState2()", () => {
938938
testValidator,
939939
defaultMerger,
940940
schema,
941-
{ ...defaults, rootSchema: schema },
942-
{},
941+
{ ...defaults, rootSchema: schema, rawFormData: {} },
943942
undefined
944943
)
945944
).toEqual({
@@ -972,8 +971,7 @@ describe("getDefaultFormState2()", () => {
972971
testValidator,
973972
defaultMerger,
974973
schema,
975-
{ ...defaults, rootSchema: schema },
976-
{},
974+
{ ...defaults, rawFormData: {}, rootSchema: schema },
977975
undefined
978976
)
979977
).toEqual({
@@ -1015,8 +1013,8 @@ describe("getDefaultFormState2()", () => {
10151013
...defaults,
10161014
rootSchema: schema,
10171015
includeUndefinedValues: true,
1016+
rawFormData: {},
10181017
},
1019-
{},
10201018
undefined
10211019
)
10221020
).toEqual({
@@ -1065,8 +1063,8 @@ describe("getDefaultFormState2()", () => {
10651063
...defaults,
10661064
rootSchema: schema,
10671065
includeUndefinedValues: "excludeObjectChildren",
1066+
rawFormData: {},
10681067
},
1069-
{},
10701068
undefined
10711069
)
10721070
).toEqual({
@@ -1097,8 +1095,7 @@ describe("getDefaultFormState2()", () => {
10971095
testValidator,
10981096
defaultMerger,
10991097
schema,
1100-
{ ...defaults, rootSchema: schema },
1101-
{},
1098+
{ ...defaults, rootSchema: schema, rawFormData: {} },
11021099
{ foo: "bar" }
11031100
)
11041101
).toEqual({
@@ -1132,8 +1129,8 @@ describe("getDefaultFormState2()", () => {
11321129
...defaults,
11331130
rootSchema: schema,
11341131
includeUndefinedValues: true,
1132+
rawFormData: {},
11351133
},
1136-
{},
11371134
{
11381135
foo: "bar",
11391136
}
@@ -1180,7 +1177,6 @@ describe("getDefaultFormState2()", () => {
11801177
rootSchema: schema,
11811178
rawFormData: { test: { foo: "x", newKey: {} } },
11821179
},
1183-
{},
11841180
undefined
11851181
)
11861182
).toEqual({
@@ -1230,7 +1226,6 @@ describe("getDefaultFormState2()", () => {
12301226
rootSchema: schema,
12311227
rawFormData: { test: { foo: "x", newKey: {} } },
12321228
},
1233-
{},
12341229
undefined
12351230
)
12361231
).toEqual({
@@ -1277,7 +1272,6 @@ describe("getDefaultFormState2()", () => {
12771272
rootSchema: schema,
12781273
rawFormData: {},
12791274
},
1280-
{},
12811275
undefined
12821276
)
12831277
).toEqual({});
@@ -1298,8 +1292,8 @@ describe("getDefaultFormState2()", () => {
12981292
...defaults,
12991293
rootSchema: schema,
13001294
includeUndefinedValues: "excludeObjectChildren",
1295+
rawFormData: {},
13011296
},
1302-
{},
13031297
undefined
13041298
)
13051299
).toEqual({});
@@ -1313,8 +1307,8 @@ describe("getDefaultFormState2()", () => {
13131307
{
13141308
...defaults,
13151309
rootSchema: RECURSIVE_REF_ALLOF,
1310+
rawFormData: {},
13161311
},
1317-
{},
13181312
undefined
13191313
)
13201314
).toEqual({
@@ -1328,8 +1322,7 @@ describe("getDefaultFormState2()", () => {
13281322
testValidator,
13291323
defaultMerger,
13301324
schema,
1331-
defaults,
1332-
{},
1325+
{ ...defaults, rawFormData: {} },
13331326
undefined
13341327
)
13351328
).toStrictEqual({});

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

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -199,10 +199,10 @@ interface ComputeDefaultsProps {
199199
required?: boolean;
200200
}
201201

202-
interface ComputeDefaultsProps2 {
202+
interface ComputeDefaultsProps2<FormData = SchemaValue | undefined> {
203203
parentDefaults: SchemaValue | undefined;
204204
rootSchema: Schema;
205-
rawFormData: SchemaValue | undefined;
205+
rawFormData: FormData;
206206
includeUndefinedValues: boolean | "excludeObjectChildren";
207207
stack: Set<string>;
208208
experimental_defaultFormStateBehavior: Experimental_DefaultFormStateBehavior;
@@ -312,8 +312,10 @@ export function computeDefaults3(
312312
validator,
313313
merger,
314314
schema,
315-
computeDefaultsProps,
316-
formData,
315+
{
316+
...computeDefaultsProps,
317+
rawFormData: formData,
318+
},
317319
defaults
318320
),
319321
};
@@ -516,17 +518,15 @@ export function getDefaultBasedOnSchemaType(
516518
switch (getSimpleSchemaType(rawSchema)) {
517519
// We need to recurse for object schema inner default values.
518520
case "object": {
519-
const formData: SchemaObjectValue = isSchemaObjectValue(
520-
computeDefaultsProps.rawFormData
521-
)
522-
? computeDefaultsProps.rawFormData
523-
: {};
521+
const { rawFormData } = computeDefaultsProps;
524522
return getObjectDefaults(
525523
validator,
526524
merger,
527525
rawSchema,
528-
computeDefaultsProps,
529-
formData,
526+
{
527+
...computeDefaultsProps,
528+
rawFormData: isSchemaObjectValue(rawFormData) ? rawFormData : {},
529+
},
530530
defaults
531531
);
532532
}
@@ -555,8 +555,8 @@ export function getObjectDefaults(
555555
experimental_defaultFormStateBehavior,
556556
required,
557557
isSchemaRoot,
558-
}: ComputeDefaultsProps2,
559-
formData: SchemaObjectValue,
558+
rawFormData: formData,
559+
}: ComputeDefaultsProps2<SchemaObjectValue>,
560560
defaults: SchemaValue | undefined
561561
): SchemaObjectValue {
562562
// This is a custom addition that fixes this issue:
@@ -589,7 +589,8 @@ export function getObjectDefaults(
589589
required: retrievedSchemaRequired.has(key),
590590
isSchemaRoot: false,
591591
});
592-
const isConst = value.const !== undefined || parentConstObject[key] !== undefined;
592+
const isConst =
593+
value.const !== undefined || parentConstObject[key] !== undefined;
593594
maybeAddDefaultToObject(
594595
objDefaults,
595596
key,

0 commit comments

Comments
 (0)