Widget: Accounts Bookmark
Purpose
The Accounts Bookmark widget displays a simple list of customer Accounts directly on the detail of another entity — typically a customer, a contact person, or within a custom configuration. It gives the user a quick overview of "what belongs to this record", lets them navigate to a specific account's detail with a single click and, when needed, create a new account or assign an existing one right away.
The widget is designed to look unobtrusive — just a table with a few columns and a "+" button. It does not overwhelm the user with a filter panel, a view switcher, or profile controls, even though under the hood it uses the standard listing infrastructure (which is why it supports sorting, pagination, and optional export).
Where it is used
Typical scenarios:
- Customer detail — the widget shows accounts belonging to the given customer.
- Person detail — the widget shows accounts in which the given person has been assigned a role (e.g. responsible person, billing contact).
- Custom detail page in the form configurator — the widget is inserted into a layout and configured to show a specific set of accounts.
- Preview mode — instead of the table, a compact overview (count and keys) is displayed, suitable as a "link" to a full list page.
What the user sees in the application
Default mode
Table with the following columns:
| Column | Description |
|---|---|
| Account | Account key, clickable link to the detail |
| Title | Account title |
| Payment behaviour | Payment behaviour (optionally displayed) |
| State | Account state (Active, Preparing, Suspended, Ceased) |
| Role | The person's role in relation to the account — only in person mode. Inactive roles are struck through. |
| Valid from | Valid from |
| Valid to | Valid to |
In the top-right corner there is a "+" button for adding an account (visible depending on permissions and configuration).
Interactions
- Double-click on a row or click on the account key → opens the account detail.
- Click on "+" (customer / custom context) → opens a dialog for creating a new account with values pre-filled from the context.
- Click on "+" (person mode) → opens a dialog for selecting existing accounts and assigning them to the given person with selected roles.
- Sorting by clicking a column header (default sort can be configured).
- Pagination at the bottom of the table (rows per page are configurable).
- Column resizing by dragging (optional).
Preview mode
If the widget is switched to preview mode, only the list of account keys (or just their count) is displayed as a compact element — typically as part of a summary overview, where the detail is opened elsewhere on the screen.
Read-only mode
In read-only mode the table is available unchanged, but the "+" button is hidden. The user can therefore browse records and navigate to details, but cannot add anything.
Designer settings
In the widget's configuration dialog (in the fluent-forms designer) the settings are split into tabs:
Basic information
Name, identifier, description, visibility — standard fields like in other widgets.
Widget Specific Settings
| Field | Description | Default |
|---|---|---|
| Display mode | Widget context: Customer / Person / Custom. Affects the visibility of the "Role" column and the behaviour of the "+" button (see Interactions above). | Custom |
| Account type | Restriction to a specific account type (selection from a list of types). | — |
| Show new account button | Show the "+" button. | enabled |
| Preview mode | Switches the widget to the compact preview. | disabled |
| Display only preview count | In preview, show only the count, without listing keys. | disabled |
| New record config | Default values for the new account dialog (object). | — |
Filter
The widget uses the standard filter builder — the same interface you know from other listing widgets. Instead of writing a JSON object, you add individual filter rules by clicking "+ Add filter"; each rule has three components:
| Component | Examples |
|---|---|
| Field | customer.id, personRoles.person.id, status, accountType.id, accountStartDate, ... |
| Operator | equals, in, contains, like, between, is null, ... |
| Value | A specific value or an expression referencing the page context (e.g. ${entity.id}) |
Each filter can be set as:
- Hidden from the user (readonly, invisible) — always applied and the end user does not know about it; suitable for "contextual" filters such as "customer = current record".
- Visible in the table header — the user can modify it and thus influence what they see.
- Disabled — temporarily turned off without having to delete it.
There can be any number of rules. They are combined with a logical "AND" — the widget shows only those accounts that satisfy all active rules.
Table
Section that influences the appearance of the table:
| Field | Description | Default |
|---|---|---|
| Visible columns | Which columns to display | all |
| Default sort | Default sorting | Valid from, descending |
| Page size | Rows per page | 10 |
| Show header | Show the table header (sorting icons) | enabled |
| Allow column resize | Allow the user to change column widths | enabled |
| Allow export | Allow exporting data using a button in the header | disabled |
Validation
Standard validation and required-field settings.
Permissions
- Displaying the widget — no special right (controlled by the visibility of the page on which the widget is placed).
- Adding an account ("+" button) — the
Crm.Account.Addpermission. Without this permission the button is not shown. - Opening an account detail (click-through) — controlled by the permissions of the account detail page.
Behaviour and limitations
- On first display the widget always loads fresh data from the backend; no manual refresh is needed.
- After an account is created or assigned through the "+" dialog, the list is refreshed automatically.
- If no filter is configured, the widget displays all accounts in the system (limited by the user's permissions). In the designer it is therefore usually appropriate to set at least one filter bound to the page context.
- The widget respects global user interface settings (dark mode, compact display).
Migration from the previous version
An earlier version of the widget used three separate text fields: Customer filter, Person filter and Account filter, into which a JSON object was inserted. You will not find these fields in the new designer — they have been replaced by the unified filter builder described above.
Saved widget configurations from the previous version are automatically converted to the new format on deployment. The conversion runs once over the database of form schemas and maps the original fields as follows:
| Old field | New equivalent |
|---|---|
customerFilter: { id: X } | Rule customer.id equals X + Display mode = Customer |
personFilter: { id: X, roles: [...] } | Rule personRoles.person.id equals X (+ optionally a roles filter) + Display mode = Person |
accountFilter: { status: 'ACTIVE', ... } | A separate rule for each key/value pair |
accountTypeId | Rule accountType.id equals <ID> |
After migration it is recommended to review the configuration once in the form designer — especially for more complex filters where the original JSON contained nested structures.