# Common component properties

## Basic properties of components <a href="#wspolnewlasciwoscikomponentow-podstawowewlasnoscikomponentow" id="wspolnewlasciwoscikomponentow-podstawowewlasnoscikomponentow"></a>

Regardless of the type, each component has defined properties available in the panel displayed on the right after selecting the component.

<table><thead><tr><th width="224.5390625">Eximee Designer property</th><th width="253.6953125">Attribute name in Source</th><th>Description</th></tr></thead><tbody><tr><td>Section <strong>Basic properties</strong></td><td></td><td></td></tr><tr><td><strong>Id</strong></td><td>id</td><td>Unique technical field identifier (assigned automatically when the component is added).</td></tr><tr><td><strong>Business identifier</strong></td><td>mid</td><td><p>Business field identifier (by default it is the same as id, but it can be changed).<br><br>The business identifier (Mid) is a unique identifier associated with business logic. Once assigned, it will be easier for us to find a specific component when adding listeners or Page Services input and output parameters. Components Label (Text) and Formatted Content (TextContent) do not have a Mid.</p><p>The business identifier should be written in camelCase, and it should not contain spaces or Polish characters.<br><br><strong>NOTE!</strong></p><p>Since the Uniflow data model is based on business field identifiers (mid) rather than id, when using the Uniflow data model in a form, business field identifiers must not repeat (e.g. we have two different components with the same business identifier, or a component has the same mid as a session variable id).<br></p></td></tr><tr><td><strong>Label</strong></td><td>label</td><td><p>The component label displayed above the component (the attribute is not supported in some channels).</p><p><br></p></td></tr><tr><td><strong>Inactive field displayed as a label</strong></td><td>labelIfDisabled</td><td><p>Checked (set to "true") means that the inactive component is displayed as text (on the form it looks as if it were displayed as a label).</p><p>Availability of the functionality depends on the license and may not be available in all implementations.</p><p>Demo form: demoLabelIfDisabled</p></td></tr><tr><td><strong>Context help</strong></td><td>toolTips</td><td><p>Defining dynamic context help for a component depending on conditions.</p><p>More in: <a href="/pages/47efd633953179af71744f52fdf4ce4abb9a06f7">Context help - Tooltip</a></p></td></tr><tr><td><strong>Data model key</strong></td><td>model</td><td><p>For fields that can take values, it defines a two-way binding to the data model.</p><p>More in: <a href="/pages/e44921d44a6caa232a238751cfe32772b989797c">Data storage in the model</a></p></td></tr><tr><td>Section <strong>Data quality</strong></td><td></td><td></td></tr><tr><td><strong>Visibility condition</strong></td><td>visibleCondition</td><td>Field visibility condition (conditions are entered using the editor described in <a href="/pages/d6953ccaf81c240c5e37b1d1fdb0ac44c56b4f23">Advanced condition editor</a>).</td></tr><tr><td><strong>Activity condition</strong></td><td>enabledCondition</td><td>Field editability condition (conditions are entered using the editor described in <a href="/pages/d6953ccaf81c240c5e37b1d1fdb0ac44c56b4f23">Advanced condition editor</a>).</td></tr><tr><td><strong>Maximum value length</strong></td><td>maxPropertyLength</td><td><p>For security reasons, every text value in the platform (e.g. text field content, dropdown value and description, radio value, etc.) is validated for length. By default, the platform does not allow strings longer than 256 characters. If, due to business requirements, it is necessary to change the maximum length, it can be done using the attribute <strong>Maximum value length</strong>.<br>Availability of the functionality depends on the license and may not be available in all implementations.</p><p><strong>NOTE!</strong></p><p>The system has an additional hard limit (default: 10485760 characters) - this is an absolute limit that will not be overridden by the Maximum value length attribute.<br></p></td></tr><tr><td><strong>Required condition</strong></td><td>requiredCondition</td><td>Field required condition (conditions are entered using the editor described in <a href="/pages/d6953ccaf81c240c5e37b1d1fdb0ac44c56b4f23">Advanced condition editor</a>).</td></tr><tr><td><strong>Validators</strong></td><td>externalValidators</td><td><p>Defining specialized external validators.</p><p>More in: <a href="/pages/1b49253472ce823ae311d07ebe168488d5fa796f">Complex validations</a></p></td></tr><tr><td><strong>Default value</strong></td><td>defaultValue</td><td>For fields that can take values, it defines the initial value of the component.</td></tr><tr><td><strong>Formatter</strong></td><td>formatter</td><td>See: <a href="/pages/7b73dc4a3305d7bb638b399c45c54700701d6580">Setting formatting for the component</a>.</td></tr><tr><td><strong>Field description</strong></td><td>description</td><td>Text displayed as the field description below it, by default it is empty.<br><br>Availability of the functionality depends on the license and may not be available in all implementations.</td></tr><tr><td>Section <strong>Interactions</strong></td><td></td><td></td></tr><tr><td><strong>Listening</strong></td><td>listeningOn</td><td><p>A list of components on which the component depends. Changing the values of listened-to components will refresh the component state.</p><p>More in: <a href="/pages/e534e5198b3b95bb60874dc4b50ebf268f098741">Listening and clearing</a>.</p></td></tr><tr><td><strong>External data source</strong></td><td>enternalDataSource</td><td><p>Defining external data sources.</p><p>More in: <a href="/pages/4fc2bb50ad367fe76fcf59a2144110c15db42303">Feeding components with external data sources</a></p></td></tr><tr><td><strong>Clear field</strong></td><td>clearOn</td><td>A list of components on which the clearing of data entered into the component depends.</td></tr><tr><td><strong>Data source from another field</strong></td><td>valueSourceId</td><td>The ID of another component that will provide the value for a given component (an example of use is described in: <a href="/pages/dc2061981040ee49c1012afaf54374c872742a1b">Passing values between components or form pages</a>).</td></tr><tr><td>Section <strong>Security</strong></td><td></td><td></td></tr><tr><td><strong>Character whitelist</strong></td><td>extraWhitelistCharacters</td><td><p>For security reasons, every text value in the platform (e.g. text field content, dropdown value and description, radio value, tile group value, etc.) is validated for allowed characters. By default, the platform allows the following character classes:</p><ul><li>letters (including diacritical characters of all languages),</li><li>digits,</li><li>whitespace characters (various kinds of spaces, tabs, newline markers, etc.),</li><li>the following special characters: '.' (dot), ',' (comma), '-' (hyphen), '_' (underscore).</li></ul><p>If a value with a character outside the list reaches the server, the server will restore the last safe value. If, due to business requirements, it is necessary to extend the list of special characters for a given field, the attribute <strong>Character whitelist</strong> (extraWhitelistCharacters) can be used for this. The attribute value is a string of characters that are to be allowed in the given field.</p><p><strong>NOTE!</strong></p><p>When extending the list of allowed characters, for security reasons you should make sure that the services to which this value will be sent are ready to accept the given character and are properly secured.</p><p>The @ character is disallowed by default unless the field is of type "email" (parameter <strong>Data type</strong> (expected type)).</p><p><strong>IMPORTANT!</strong></p><p>For components that, in addition to a label, also have a value (e.g. Radio group, Tile group), and these values differ for some reason (in the context of disallowed characters), it is necessary to define in <strong>Character whitelist</strong> both values - we define this for the Tile group, not for an individual Tile.</p><p>Example: for a tile with the label "5+", the option value ">5" has been defined - in such a situation we must define both "+" and ">" as allowed characters in the whitelist</p><p>(using different values for content and value is not a recommended solution; using consistent values is recommended).</p></td></tr><tr><td><strong>Technical field</strong></td><td>technicalField</td><td>A field used for internal purposes of the form template logic; it is not propagated to downstream systems and is not visible on the form. The property is available for selected components.</td></tr><tr><td>Section <strong>Styling</strong></td><td></td><td></td></tr><tr><td><strong>Style name</strong></td><td>styleName</td><td>The component style name (in eximee Webforms it corresponds to the CSS style that will be assigned to the given component).</td></tr><tr><td>Section <strong>Other</strong></td><td></td><td></td></tr><tr><td><strong>Automatic value update</strong><br></td><td>autoServerUpdate</td><td><p>Automatic sending of the value to the server (regardless of whether something listens to the given component). Additionally, when this flag is selected, processing in the graph (after a value change) starts from the component whose value changed (by default, processing starts from its successors).</p><p><strong>NOTE!</strong></p><p>This setting has a large impact on the performance of the form platform. It should be used only where it is required (e.g. when using the Suggester). If in doubt, please contact the Consdata team.</p><p>Example form with a suggester and the autoServerUpdate property: test_autoserverUpdate.</p></td></tr><tr><td><strong>GTM tag / Enabling GTM</strong></td><td>gtmTagName/pushTagsToGtm</td><td>The ability to configure the <strong>Google Tag Manager</strong>. By default, the field is not checked (value "false").</td></tr><tr><td><strong>Collecting statistics</strong></td><td>getStats</td><td>A field used to collect statistics about a given component. By default, the field is not checked (value "false").</td></tr><tr><td><strong>Visibility on printout</strong></td><td>printable</td><td>Specifies whether the component should be visible on the form printout. By default, the field is checked (value "true").</td></tr><tr><td><strong>Behavior of value changes when the component is hidden</strong></td><td>preserveValueWhenHidden</td><td><p>This flag is used to prevent the component value from being changed to the default when it is hidden (or hidden after unparking). The component value will also be preserved after parking and will be available for use in subsequent sessions. By default, the field is not checked (value "false").</p><p>The functionality is not available for some components.</p></td></tr></tbody></table>

### Visibility conditions <a href="#wspolnewlasciwoscikomponentow-warunkiwidocznosci" id="wspolnewlasciwoscikomponentow-warunkiwidocznosci"></a>

For each component in the **Properties** panel, you can define conditions for its visibility by clicking **Add visibility condition** in the **VISIBILITY CONDITION** field (available in the section **Data quality**). In the displayed condition editor, you can enter conditions written in a simple expression language (more in [Advanced condition editor](/documentation/documentation-en/budowanie-aplikacji/logika-biznesowa/jezyk-wyrazen-definiowania-warunkow-warunki-z-getvalue/zaawansowany-edytor-warunkow.md)). The expression language used is described in [Expression language for defining conditions](/documentation/documentation-en/budowanie-aplikacji/logika-biznesowa/jezyk-wyrazen-definiowania-warunkow-warunki-z-getvalue.md).

<figure><img src="/files/9a082d3cfbb76c968a46e481ff8b4eaf52e44aaa" alt=""><figcaption><p><em><strong>Figure 1.</strong> Empty property for defining a visibility condition</em></p></figcaption></figure>

The component is visible only if the condition entered in the field is met **VISIBILITY CONDITION**.

### Required conditions <a href="#wspolnewlasciwoscikomponentow-warunkiwymagalnosci" id="wspolnewlasciwoscikomponentow-warunkiwymagalnosci"></a>

For each component in the **Properties** you can define the conditions under which the component is required by clicking **Add required condition** in the **REQUIRED CONDITION** field (available in the section **Data quality**). The condition editing window is analogous to the component visibility condition editing window. Conditions are defined using the JavaScript language described in [Expression language for defining conditions](/documentation/documentation-en/budowanie-aplikacji/logika-biznesowa/jezyk-wyrazen-definiowania-warunkow-warunki-z-getvalue.md).

Components for which the condition is met are required and it is not possible to proceed to the next page of the form without entering a value.

### Component conditions in read-only mode <a href="#wspolnewlasciwoscikomponentow-warunkikomponentowwtrybietylkodoodczytu" id="wspolnewlasciwoscikomponentow-warunkikomponentowwtrybietylkodoodczytu"></a>

For each component in the **Properties** you can define the conditions under which the component is presented in read-only mode by clicking **Add activity condition** in the **ACTIVITY CONDITION**. The condition editing window is analogous to the component visibility condition editing window. Conditions are defined using the JavaScript language described in [Expression language for defining conditions](/documentation/documentation-en/budowanie-aplikacji/logika-biznesowa/jezyk-wyrazen-definiowania-warunkow-warunki-z-getvalue.md).

For components with an unmet condition, editing their values is disabled during form presentation.

### Listening <a href="#wspolnewlasciwoscikomponentow-nasluchiwanie" id="wspolnewlasciwoscikomponentow-nasluchiwanie"></a>

For each component, you can define a list of components that the given component listens to (more in [Listening and clearing](/documentation/documentation-en/budowanie-aplikacji/interfejs-uzytkownika/formularze/dynamicznosc-formularza/nasluchiwanie-i-czyszczenie.md)).

Based on listening, a dependency graph is created. When the state of a component changes, the dependency subgraph containing all paths ending at the changed component is topologically sorted and the components in the subgraph are refreshed. Components are refreshed in the order resulting from topological sorting, such that only those components are refreshed whose at least one direct predecessor in the graph changed state.

Cycles in the dependency graph are resolved arbitrarily (cut off after the component deeper in the graph)

It is possible to enable refreshing of all components in the graph (regardless of whether the direct predecessor changed state). This is an administrative action and requires changing the following entry in the /etc/eximee/webforms.xml file:

```
<webforms>
    <server>
        ...
        <nonBlockingGraphFormTemplates>template_name1,template_name2</nonBlockingGraphFormTemplates>
    </server>
</webforms>
```

{% hint style="info" %}
Demo form: demoWspolneWlasciwosciKomponentow
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.eximee.com/documentation/documentation-en/budowanie-aplikacji/interfejs-uzytkownika/formularze/praca-z-komponentami-bazowymi/wspolne-wlasciwosci-komponentow.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
