Composite components

There are a few components available to structure the layout and wrap fields : sections, tabs, etc.

Sections

The default component used to render an object is a section.

The title of the section can be derived from the title attribute of the object or from layout.title. An empty or null title will make the section into a simple container for its children.

The attribute layout.option.titleDepth can be used to configure the title tag (h1, h2, etc). Its default value is 2 and it is incremented automatically when nesting sections.

Sections described in parent

You might want to organize your properties into sections without adding actual object containers in your data.

To do so you can define sections in the layout.children attribute of the parent node.

Idented sections

By default nested sections are rendered in a flat way, using the indent option you change that.

Only sections with a title are indented, other sections remain invisible.

Tabs

Children of an object can be rendered into tabs using layout: {comp: 'tabs'} or the shorter `layout: 'tabs'.

Vertical tabs

Children of an object can be rendered into vertical tabs using layout: {comp: 'vertical-tabs'} or the shorter layout: 'vertical-tabs'.

Expansion panels

Children of an object can be rendered into expansion panels using layout: {comp: 'expansion-panels'} or the shorter `layout: 'expansion-panels'.

Cards

An object can be rendered as a card using layout: {comp: 'cards'} or the shorter `layout: 'cards'.

Complex children

You can organize your properties into multiple sorts of composite components without creating intermediate object levels in your schemas.

To do so you have to define objects inside the layout.children attribute.

Read-only children

The standard JSON Schema attribute readOnly can have multiple effect on children of a section depending on the readOnlyPropertiesMode option.