Table of Contents

UI view behavior

This article outlines a list of configurable UI behaviors, which can be defined either globally for the entire application or per individual UI view.

To facilitate smoother migrations and avoid breaking changes, certain options have been added to allow rollback to behaviors from previous versions. Additionally, new behaviors can be introduced that may become the standard in future releases, giving you the flexibility to adopt them ahead of time.

Global configuration

To define a behavior globally, use the cluster configuration file by adding the desired settings under the UIDefaultBehavior section:

UIDefaultBehavior:
  InitSelectionOnLoad: false

Per UI view configuration

To configure a behavior for a specific UI view, set it in the Initialized event rule:

Behavior.InitSelectionOnLoad = false;

Behavior options

PersistValidationRuleMessagesOnLoad

Note

Available since 3.0.0

Controls whether the validation rule messages are persisted immediately on loaded items.

Default value: true

FlushPendingEventHandlersOnSave

Note

Available since 2.5.0

Controls whether the save waits for all pending event handlers (property changed, position changed) to complete before proceeding.

Default value: true

DatagridEllipsis

Note

Available since 2.3.0.

Controls whether text in datagrid cells is truncated with an ellipsis when it exceeds the cell's available width.

When enabled (true), the Ellipsis option defined at the UI view property level is applied. By default, the Ellipsis option is set to true for all properties.

When disabled (false), the Ellipsis option defined in UI view properties are ignored, and overflowing text will be cut off without displaying an ellipsis.

Default value: true

DatagridInfiniteScrolling

Note

Available since 1.19.0

Controls whether infinite scrolling is enabled by default for datagrids.

Default value: false

DatagridInputNumberType

Note

Available since 3.0.0

Defines the input number component used for numeric fields. Two modes are available:

  • default: Standard input number component.
  • calculable: Input number component with built-in calculation support.

Default value: default

Note

Available since 3.3.0

Controls whether navigation buttons (such as OpenViewButton or an ActionButton opening a view) render as real hyperlinks when the target navigation is eligible: one that opens or reuses an application tab or page and updates the browser's address bar, with no explicit target (nested frame, same frame, popup, explicit frame id) or rule (a custom onNavigating, a remote view, a modal currently open, ...) that would prevent the link from being reproduced. A plain click on such a link still navigates in-app, exactly as before; what changes is that the browser's own native behaviors - opening in a new tab, copying the link, using the context menu - now work as expected too, since a real, resolvable URL is set on the element.

An ActionButton can render as a link only when its action is of type Open view: an action of type Code always navigates through a click. The navigation customization code of an Open view action is executed to compute the link, so it must be synchronous and without side effects.

A menu item, in the side menu, in a MenuButton or in the global search results, can render as a link only when it opens a view: an item that executes code, or that has sub-items, always works through a click.

A link only carries what an URL can hold, exactly like a page refresh or a copied URL:

Navigation option Kept in a link opened in a new tab or copied
Target view, identifier (WithId), creation mode, title Yes
URL parameters (WithUrlParameter, WithUrlParameters) Yes
Filter (WithFilter), parameters (WithParameter, WithParameters), callback, creation data No: the view opens without them

A click applies all the options. To pass a value through a link, use a URL parameter and read it in the opened view.

This is a global, application-level flag: it is not part of the per-UI-view behavior configuration and cannot be overridden in the Initialized event rule.

Default value: false

FilterBarDisplayMode

Note

Available since 2.3.0.

Defines the default display mode of the filter bar. Two modes are available:

  • inputs: Displays input fields.
  • editable-chips: Displays editable chips.

When the editable-chips mode was introduced in version 2.2, the default filter bar behavior remained unchanged to prevent breaking changes. As a result, adopting the new mode required explicitly setting it in each UI template.

Starting with version 2.3.0, you can now configure the filter bar display mode globally, allowing for easier standardization across the application.

Default value: inputs

InitSelectionOnLoad

Note

Available since 1.21.5

Determines whether the default selection is initialized after data is loaded when opening a view.

Since version 1.21.0, the current item, which is the first item in most cases, is automatically selected by default after data loading.

Default value: true

LayoutOverflowFix

Note

Available since 2.5.0

Determines whether a fix is applied to prevent content overflow in layouts with fixed width, fixed height or the attributes layout:width="fill" or layout:height="fill".

Since version 2.5.0, enabling this option applies CSS rules that prevent content overflow when the content exceeds the dimensions of its containing vertical or horizontal layout.
This option is disabled by default for existing clusters to avoid UI breaking changes, as scrollbars might appear in areas where content previously overflowed by a few pixels, especially in pixel-perfect layouts.

In version 3.0, the option will be enabled by default for all clusters.

The option is read when the application starts and applies to every element with a fill or fixed size: in the Xml templates, in the native UI views and in the framework components that fill their parent. An explicit style:overflow wins over the scroll added by the option.

Default value: false for existing clusters, true for new clusters

RemoveCurrentWithNoSelection

Note

Available since 2.0.0.

Determines the behavior of the "Remove" button when no item is selected.

As of version 2.0.0, the "Remove" button only affects selected items. In mono-record mode, it will act on the current item if none is selected.

Default value: false