ig-form #
Overview #
The Form component is able to generate and render HTML forms based on resource types. For each property of the resource type a form element will be rendered, based on the value type of the property. This enables you to quickly integrate forms into an application without having to code anything. When the linked resource type changes, the form will update automatically according to those changes.
The FormConfiguration provides a convenient way to configure a form using a domain specific language (DSL).
Properties #
Property | Attribute | Description | Type | Default |
---|---|---|---|---|
data |
– | Data which should be prefilled in the form. | Object |
undefined |
debug |
debug |
When set to true, the debug overlay is displayed to inspect the data while interacting with the form. | boolean |
false |
fieldRenderActions |
– | When provided, the given function will be called for the specified field (path). This can be used to display crud icons like edit, delete. The function should return a list of objects with the properties ‘html’ (function which returns the html to render) and ‘callback’ (callback function which is called upon clicking the element). Example: this.formCmp[‘fieldRenderActions’] = { ‘student.name’: [{ |
{ [path: string]: FieldAction[]; } |
undefined |
form |
– | Instead of passing a formId, the form blueprint to render can also be specified directly using this property. A form can be retrieved using the REST endpoints ‘/ig/rest/form/generate’ or ‘/ig/rest/form/generateforschema’. | Form |
undefined |
formId |
form-id |
The identifier of the form configuration as configured within InformationGrid. | string |
undefined |
initialValidate |
initial-validate |
When set to true, validation of the form is executed directly upon the initial form load. | boolean |
true |
labelProvider |
– | A label provider function can be provided which will be called for every label (both form section labels as field labels) to provide translations. Label providers will be called with 2 arguments: the default label (string), and the path of the property the label belongs to (string). | Function |
undefined |
observableResourcePaths |
– | optional array of paths for which a dataPartChanged event should be emitted | string[] |
[] |
suggestionDataProvider |
– | A suggestion data provider can be provided in case the form data itself is not sufficient for retrieving the suggestions | (editor: any) => object |
undefined |
suggestionPathProvider |
– | A suggestion path provider can be provided in case the form data itself is not sufficient for retrieving the suggestions for a certain path | (editor: any) => object |
undefined |
Events #
Event | Description | Type |
---|---|---|
dataChanged |
Emitted when the data has changed in any way | CustomEvent<any> |
dataPartChanged |
If observableResourcePaths is set, this event will be emitted when data changed for one of the provided resource paths. | CustomEvent<any> |
formSubmitted |
Emitted when the form is submitted. Can be used to e.g. store the data and redirect the user to an overview. | CustomEvent<any> |
formValidated |
Emitted when the form is validated by applying the constraints as specified in the form. Can be used to e.g. trigger additional validation in the back-end. The event provides a callback method and the data object. The callback method must be called in order to continue the submit process. Validation results (if any) can be provided as argument to the callback method. Example: formCmp.addEventListener(‘formValidated’, (event) => { |
CustomEvent<any> |
formValidationPerformed |
Emitted when all validation is done and the validation messages (if any) are displayed within the form. | CustomEvent<any> |
onLoad |
this event will be emitted when the form has been rendered for the first time. | CustomEvent<HTMLElement> |
sectionsVisibilityUpdate |
this event will be emitted when values for resource paths are changed which are included in the expression of a form section visibility | CustomEvent<any> |
Methods #
getData() => Promise<object>
#
Returns all the entered data in the form so far.
Returns #
Type: Promise<object>
getIdentifyingFieldValue() => Promise<string | null>
#
Returns the value of the identifying field. If the associated resource type doesn’t have an identifying field, null is returned.
Returns #
Type: Promise<string>
getLabelProvider() => Promise<Function>
#
Returns the configured label provider.
Returns #
Type: Promise<Function>
getLocale() => Promise<string>
#
Returns the locale of this form
Returns #
Type: Promise<string>
getResourceTypeId() => Promise<string | null>
#
Return the identifier of the resource type this form was generated for.
Returns #
Type: Promise<string>
refresh() => Promise<void>
#
Returns #
Type: Promise<void>
refreshLookupField(resourcePath: any) => Promise<void>
#
Notify lookup field to refresh its suggestions
Parameters #
Name | Type | Description |
---|---|---|
resourcePath |
any |
Returns #
Type: Promise<void>
setData(path: string, value: any) => Promise<void>
#
Sets a new value for the given path.
Parameters #
Name | Type | Description |
---|---|---|
path |
string |
the path to set a value for. Brackets can be used to target arrays. E.g. student.addresses[1].street |
value |
any |
the new value to set. |
Returns #
Type: Promise<void>
setExternalValidationResult(validationResult: IgFormCmp.ValidationResult) => Promise<void>
#
Sets the given external validation result and display the appropriate messages (if any)
Parameters #
Name | Type | Description |
---|---|---|
validationResult |
ValidationResult |
Returns #
Type: Promise<void>
submitForm() => Promise<void>
#
Triggers submission of the form. When the returned promise resolves, the form is valid and submitted.
Returns #
Type: Promise<void>
Dependencies #
Used by #
Depends on #
Graph #
graph TD;
ig-form --> ig-modal
ig-form --> ig-form-section
ig-modal --> ig-modal
ig-form-section --> ig-tooltip
ig-form-section --> ig-form-field
ig-form-section --> ig-popover
ig-tooltip --> ig-popover
ig-form-field --> ig-form-field-translatable-string
ig-form-field --> ig-form-field-dsl
ig-form-field --> ig-form-field-text-editor
ig-form-field --> ig-form-field-lookup
ig-form-field --> ig-form-field-date
ig-form-field --> ig-form-field-upload
ig-form-field --> ig-form-field-primitive
ig-form-field --> ig-form-field-enum
ig-form-field --> ig-form-field-array
ig-form-field --> ig-form-field-map
ig-form-field --> ig-form-field-resource-type
ig-form-field --> ig-form-field-resource-type-group
ig-form-field-translatable-string --> ig-form-field
ig-form-field-translatable-string --> ig-popover
ig-form-field-lookup --> ig-popover
ig-form-field-array --> ig-form-field
ig-form-field-array --> ig-popover
ig-form-field-map --> ig-form-field
ig-form-field-map --> ig-popover
ig-form-field-resource-type --> ig-form-section
ig-form-field-resource-type-group --> ig-form-section
ig-aggregate-manager --> ig-form
ig-collection-manager --> ig-form
ig-command-form --> ig-form
style ig-form fill:#f9f,stroke:#333,stroke-width:4px