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

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions