uischema props are not propagated to Layout renderer when using a material Object Renderer
Describe the bug
When you add a UI Control for a complex object, the default behaviour is to wrap the UI with a Group or VerticalLayout. When extra props are added to customize the behaviour for this Layout Renderers, these are not available in the Customize Group or VerticalLayout Renderer.
Expected behavior
I would expect all props that are set in the uischema to be propagated to the Layout renderer as well.
Steps to reproduce the issue
- Add a custom Group Renderer that checks for the existence of an additional property
teston the uischema - Add a Control to the layout for a compound object property and add this additional
testproperty. - notice that the form for the object is rendered as a group, but the custom Group renderer is not being used, although the
testproperty was available on the uischema of the object Control.
{
uischema: {
type: 'VerticalLayout',
elements: [
{
type: 'Control',
acl: 'PRIVATE',
label: 'an ACL compound object',
asCard: false,
preset: 'header',
scope: '#/properties/reinforcement',
},
],
},
schema: {
type: 'object',
properties: {
reinforcement: {
type: 'object',
properties: {
type: {
type: 'string',
enum: ['sunk', 'embedded', 'hybrid'],
},
strength: {
type: 'number',
unit: '<sup>kg</sup>⁄<sub>m<sup>2</sup></sub>',
},
},
},
},
},
Screenshots
No response
Which Version of JSON Forms are you using?
v3.2.1
Framework
React
RendererSet
Material
Additional context
Just spreading all of the uischema props, fixes this:
https://github.com/eclipsesource/jsonforms/blob/bb7a255c8bbabedae0ac31d6031453538e7753ec/packages/material-renderers/src/complex/MaterialObjectRenderer.tsx#L60
findUISchema(
// @ts-expect-error
uischemas,
schema,
uischema.scope,
path,
() =>
isEmpty(path)
? Generate.uiSchema(schema, 'VerticalLayout', undefined, rootSchema)
: {
...uischema,
...Generate.uiSchema(schema, 'Group', undefined, rootSchema),
label,
// preset: 'header',
// asCard: false,
},
uischema,
rootSchema,
),
I setup a custom Object Renderer wit higher priority to do this, but I would suggest to consider this adding it to core behaviour (not only for Group Layouts, but also for VerticalLayout and other renderers and frameworks)
Hi @Sewdn , thank you for the suggestion. I will discuss with the team whether that is something we want to support. Usually, props of UI Schema elements themselves are not propagated down. A specific detail schema for an object can also be provided by using the uischemas prop of JsonForms.