Fieldset field types
A fieldset is a collection of other fields, stored as a DynamicDataFieldSet
map.
It is usually visualized as a fieldset
in HTML, with the member fields inside it.
When working with fieldsets the different member fields are usually accessed and set directly. The path to a member field of a fieldset will always start with the path of the fieldset it belongs to.
A fieldset
field requires additional field definitions to be registered under the fields
key.
document-definition:
name: company-data
content:
- id: general (1)
type: fieldset
attributes:
templates: section-h1 (2)
fields: (3)
- id: name (4)
type: string
- id: operational
type: boolean
- id: shareholders
type: string
possible-values:
- private
- public
1 | Defines the fieldset field. |
2 | The optional name of a custom template that should be used for visualizing the fieldset. |
3 | Holds the list of other fields that make up this fieldset (in order). |
4 | The full path for directly accessing the name field would be general.name . |
Fieldset collections
It’s also possible to create a collection of fieldset, and even to nest collections.
document-definition:
name: fieldset-collection-demo
content:
- type: fieldset[] (1)
id: fieldset-collection
messages:
addItem: Add an item (2)
member: (3)
fields:
- type: string
id: name
validators:
- required
- type: number
id: number
1 | Defines a collection of fieldset fields (the internal datatype will be ArrayList<DynamicDataFieldset> ). |
2 | Add a custom message for the default add item button (see the output below). |
3 | The member key holds the definition for the fieldset that makes up a single collection item.
It supports all default definition keys like fields , messages , validators and attributes . |
A fieldset collection is visualized using the embedded collection styling of EntityModule. The above example would result in the following output:
Fieldset styling
By default a fieldset is visualized as a HTML fieldset
element, with the member fields inside it:
A different rendering template can be specified by providing a template
attribute value.
For example:
document-definition:
name: company-data
content:
- id: general
type: fieldset
attributes:
template: panel-default
fields:
...
Would visualize as:
Available templates
The following is the list of default templates that are available:
-
fieldset
-
fields-only
-
panel-danger
-
panel-default
-
panel-info
-
panel-primary
-
panel-success
-
panel-warning
-
section-h1
-
section-h2
-
section-h3
These templates correspond with the default ViewElementFieldset
styling templates.
See the corresponding EntityModule documentation for more examples.
If no template attribute is specified, the default value is fieldset for a standalone fieldset, and fields-only for a fieldset that is part of a collection.
|
Registering a custom template
Fieldsets are rendered using the EntityModule ViewElementFieldset
control.
You can add a custom named template by registering a Function<ViewElementFieldset,ViewElement>
for that name on the DynamicDataFieldSetTemplateRegistry
.
This also allows you to replace the default templates.