Skip to content

[With solution] Conditions + Defaults in Additional Properties References #4266

@zorahrel

Description

@zorahrel

Prerequisites

What theme are you using?

core

Version

5.x

Current Behavior

If you want to support conditions and defaults in refs in additionalProperties you need to do like this:

1. support conditions in refs in additionalProperties:

retriveSchema.ts

if (REF_KEY in schema.additionalProperties!) {
        additionalProperties = resolveAllReferences<S>(schema.additionalProperties as S, rootSchema as S, []);

instead of

        additionalProperties = retrieveSchema<T, S, F>(
          validator,
          { $ref: get(schema.additionalProperties, [REF_KEY]) } as S,
          rootSchema,
          formData as T
        );

2. support defaults for refs in additional properties

objectField.tsx

        defaultValue = schemaUtils.getDefaultFormState(apSchema, defaultValue);

instead of

defaultValue = apSchema.default;

hope this can be helpful, I spent already much time to fix it!

Expected Behavior

No response

Steps To Reproduce

This is an example problematic schema:

https://rjsf-team.github.io/react-jsonschema-form/#eyJmb3JtRGF0YSI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJuZXdLZXkiOnsidHlwZSI6ImFycmF5In19LCJyZXF1aXJlZCI6W119LCJzY2hlbWEiOnsiZGVmaW5pdGlvbnMiOnsicHJvcGVydHkiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsidGl0bGUiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiVGl0bGUgb2YgdGhlIHByb3BlcnR5In0sImRlc2NyaXB0aW9uIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IkRlc2NyaXB0aW9uIG9mIHRoZSBwcm9wZXJ0eSJ9LCJ0eXBlIjp7InR5cGUiOiJzdHJpbmciLCJlbnVtIjpbInN0cmluZyIsIm9iamVjdCIsImFycmF5Il0sImRlZmF1bHQiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IlR5cGUgb2YgdGhlIHByb3BlcnR5IGRhdGEifX0sInJlcXVpcmVkIjpbInR5cGUiXSwiaWYiOnsicHJvcGVydGllcyI6eyJ0eXBlIjp7ImNvbnN0Ijoib2JqZWN0In19fSwidGhlbiI6eyJwcm9wZXJ0aWVzIjp7InByb3BlcnRpZXMiOnsiJHJlZiI6IiMvZGVmaW5pdGlvbnMvcHJvcGVydGllcyJ9LCJyZXF1aXJlZCI6eyIkcmVmIjoiIy9kZWZpbml0aW9ucy9yZXF1aXJlZCJ9fX0sImVsc2UiOnsiaWYiOnsicHJvcGVydGllcyI6eyJ0eXBlIjp7ImNvbnN0IjoiYXJyYXkifX19LCJ0aGVuIjp7InByb3BlcnRpZXMiOnsiaXRlbXMiOnsiJHJlZiI6IiMvZGVmaW5pdGlvbnMvaXRlbXMifX19fX0sInByb3BlcnRpZXMiOnsidHlwZSI6Im9iamVjdCIsImRlc2NyaXB0aW9uIjoiUHJvcGVydGllcyBvZiB0aGUgb2JqZWN0IiwiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsiZGVmYXVsdCI6eyJ0eXBlIjoic3RyaW5nIn0sIiRyZWYiOiIjL2RlZmluaXRpb25zL3Byb3BlcnR5In19LCJyZXF1aXJlZCI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInVuaXF1ZUl0ZW1zIjp0cnVlLCJkZXNjcmlwdGlvbiI6IlJlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHRoZSBvYmplY3QifSwiaXRlbXMiOnsidHlwZSI6ImFycmF5IiwiZGVzY3JpcHRpb24iOiJJdGVtcyBvZiB0aGUgYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9kZWZpbml0aW9ucy9wcm9wZXJ0eSJ9fX0sIiRyZWYiOiIjL2RlZmluaXRpb25zL3Byb3BlcnR5In0sInVpU2NoZW1hIjp7fSwidGhlbWUiOiJkZWZhdWx0IiwibGl2ZVNldHRpbmdzIjp7InNob3dFcnJvckxpc3QiOiJ0b3AiLCJleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yIjp7ImFycmF5TWluSXRlbXMiOnsicG9wdWxhdGUiOiJwb3B1bGF0ZSIsIm1lcmdlRXh0cmFEZWZhdWx0cyI6ZmFsc2V9LCJhbGxPZiI6InNraXBEZWZhdWx0cyIsImVtcHR5T2JqZWN0RmllbGRzIjoicG9wdWxhdGVBbGxEZWZhdWx0cyJ9fX0=

Environment

No response

Anything else?

No response

Metadata

Metadata

Labels

bugp1Important to fix soon

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions