The runtime-UX driver currently mounted over the grid (e.g. the Record Process bulk-update runner),
or null when none. Set when an action whose invocation names a RuntimeUXDriverClass is clicked.
Emitted when the Add to List button is clicked. Parent components should handle this to show the list management dialog.
AG Grid column definitions
Emitted when aggregate results are loaded. Contains the array of AggregateResult objects and a values map for easy lookup.
AG Grid theme (v34+) with custom selection colors
AG Grid row selection configuration
Emitted when Communication/Send Message functionality is requested. Parent components should handle this to show the communication dialog.
Emitted when Compare Records functionality is requested. Parent components should handle this to show the compare dialog.
Default column settings
Emitted when duplicate search functionality is requested. Parent components should handle this to show the duplicate search results.
Emitted when an entity action is selected for execution. Parent components should handle the action execution.
Emitted when a foreign key link is clicked in the grid. Parent components should handle this to navigate to the related record.
AG Grid options for infinite scroll mode
Emitted when entity actions need to be loaded. Parent components should load actions and set the EntityActions input.
Raised when the user clicks the column-chooser / "Manage Columns" toolbar affordance. The host opens its column-management UI (see onColumnChooserClick).
Emitted when Merge Records functionality is requested. Parent components should handle this to show the merge dialog.
Emitted when a row is clicked/double-clicked and AutoNavigate is enabled. Parent components should handle this to open the entity record.
Emitted when the "New" button is clicked and CreateRecordMode is 'Dialog'. Parent components should handle this to show a new record dialog.
Emitted when the "New" button is clicked and CreateRecordMode is 'Tab'. Parent components should handle this to open a new record in a tab.
Emits when the user navigates to a different page via the shared PaginationComponent. Parent components should handle this by re-fetching data with updated StartRow/MaxRows.
Current page number for the shared pager (1-based). Set by parent when using external data with server-side paging.
If specified, this provider will be used for communication and for all metadata purposes. By default, if not provided, the Metadata and RunView classes are used for this and the default GraphQLDataProvider is used which is connected to the same back-end MJAPI instance as the Metadata and RunView classes. If you want to have this component connect to a different MJAPI back-end, create an instance of a ProviderBase sub-class like GraphQLDataProvider/etc, and configure it as appropriate to connect to the MJAPI back-end you want to use, and then pass it in here.
AG Grid row data
Whether to show the shared PaginationComponent below the grid. When true, displays page-based navigation (first/prev/next/last) using the TotalRowCount from server responses. The pager auto-hides when there's only one page.
Whether to render the Recycle Bin chip in the toolbar. The chip auto-hides itself when the entity has no deleted records, doesn't track changes, or the user lacks Delete permission — so it stays out of the way on entities where it's not relevant.
StaticɵdirStaticɵfacReturns the raw aggregate results from the last RunView call.
Aggregate configuration for the grid. When provided, aggregate expressions are calculated alongside data and displayed:
Whether aggregates are currently loading.
Returns the aggregate values map, keyed by expression or id. Use this to pass values to AggregatePanelComponent.
Controls whether data loading is allowed. Set to false to defer loading until ready (useful for complex forms where params may change multiple times). When set to true and Params is provided, triggers a data load.
When true, the grid resolves the current entity's active EntityActions itself (via the metadata-only
EntityActionEngineBase) and shows them — no parent wiring or LoadEntityActionsRequested handler
needed. Buttons appear only when the entity actually has active actions (data-driven). Actions whose
invocation names a RuntimeUXDriverClass mount that interactive driver in-place when clicked.
When true, clicking or double-clicking a row will emit a navigation request. The parent component can handle the navigationRequested event to open the record.
When true and using a stored view (ViewID/ViewName/ViewEntity in Params), automatically persists grid state changes (column widths, order, sort) to the UserView entity. Only saves if the user has edit permission on the view. For dynamic views, only emits the gridStateChanged event.
When true, automatically refreshes data when Params changes. When false, you must call Refresh() manually after changing Params.
Size of each cache block in infinite scroll mode. Should match or be a multiple of PageSize for optimal performance.
Whether the current user can edit the view. For dynamic views, always true (persists to user settings). For saved views, depends on view ownership and permissions.
Returns enabled aggregates configured for card display.
Returns enabled aggregates configured for column footer display.
Column definitions - if not provided, auto-generates from entity metadata
How to open new records when the "New" button is clicked:
Pre-loaded data (bypass RunView, use provided data). When provided, the grid displays this data instead of loading via RunView. Parent component is responsible for data loading and passing results here.
Get the effective visual config (user config merged with defaults)
Array of entity actions to display in the toolbar. Set this after receiving the entityActionsLoaded event.
The entity metadata for the current data source. Available after Params is set and data is loaded.
Convenience accessor for the resolved entity name. Returns null when the entity hasn't been resolved yet (e.g., before data loads).
Text to highlight in grid cells. Supports SQL-style % wildcards for pattern matching.
Grid state from a User View - controls columns, widths, order, sort When provided, this takes precedence over auto-generated columns
True if using a dynamic view (EntityName only) rather than a stored view. False if using ViewID, ViewName, ViewEntity in Params, or viewEntity input.
Maximum number of blocks to keep in cache. When exceeded, oldest blocks are purged.
When true, navigation is triggered on double-click only. When false, navigation is triggered on single click. Only applies when AutoNavigate is true.
Default values to set on new records. These values are passed with the newRecordDialogRequested event.
Number of rows to fetch per page when using infinite pagination mode. Default is 100 rows per page.
Pagination mode for the grid:
RunViewParams for data loading - the primary way to specify data source. Supports stored views (ViewID, ViewName, ViewEntity) and dynamic views (EntityName + filters). Mutually exclusive with the legacy entityName/extraFilter inputs. When Params is provided, it takes precedence over legacy inputs.
Returns either the default Metadata provider or the one specified in the Provider property, if it was specified
Returns either the default RunQuery provider or the one specified in the Provider property, if it was specified
Returns either the default RunReport provider or the one specified in the Provider property, if it was specified
Returns either the default RunView provider or the one specified in the Provider property, if it was specified
Whether sorting is handled server-side When true, sort changes trigger a new data load
Show the "Add to List" button in toolbar
Whether to show aggregate panel (has card-type aggregates with values).
Whether to show aggregate summary row (has column-type aggregates with values).
Show the "Send Message" button in toolbar (if entity supports communication)
Show the "Compare" button in toolbar (compare selected records)
Show the "Delete" button in toolbar (deletes selected rows)
Show the "Search for Duplicates" button in toolbar
When true, displays entity action buttons in the toolbar overflow menu. Entity actions are loaded dynamically based on the current entity. The entityActionsLoaded event is emitted when actions are ready.
Show the "Export to Excel" button in toolbar
Show the "Merge" button in toolbar (merge selected records)
Show the "New" button in toolbar (creates new record)
Show the "Refresh" button in toolbar
Debounce time in milliseconds before persisting state changes to the server. Default is 5000ms (5 seconds) to avoid excessive server calls during rapid column adjustments.
Total row count from server for the shared pager. When using external data ([Data] input), the parent must set this so the pager knows the total number of rows across all pages.
The loaded view entity if using a stored view (ViewID, ViewName, or ViewEntity in Params). Null for dynamic views or when using legacy entityName input.
Visual configuration for the grid appearance. Allows customization of header styles, row colors, cell formatting, and more. All properties are optional - unset properties use attractive defaults.
Immediately persists any pending state changes without waiting for debounce. Called on component destroy to ensure changes aren't lost. Also exposed publicly so parent components can flush before view/entity switches.
Scrolls the grid to make the specified row visible.
The primary key of the row to scroll to
Where to position the row: 'top', 'middle', or 'bottom'
Export grid data directly without showing dialog. Use this for programmatic export with specific options.
Optionaloptions: Partial<ExportOptions>Export options (format, sampling, etc.)
If true, automatically downloads the file. Default true.
Export result with data buffer and metadata
Export to CSV format directly (convenience method)
If true, automatically downloads the file. Default true.
Export to Excel format directly (convenience method)
If true, automatically downloads the file. Default true.
Export to JSON format directly (convenience method)
If true, automatically downloads the file. Default true.
Get formatted aggregate value for display
Get row ID function for AG Grid
Checks if an entity action is currently enabled based on selection requirements
A callback method that performs custom clean-up, invoked immediately before a directive, pipe, or service instance is destroyed.
A callback method that is invoked immediately after the default change detector has checked the directive's data-bound properties for the first time, and before any of the view or content children have been checked. It is invoked only once when the directive is instantiated.
Handles cell click events to detect FK link clicks. When a user clicks on a foreign key link, emits ForeignKeyClick event for the parent component to handle navigation.
"Manage Columns" / column-chooser toolbar affordance. The grid is generic and doesn't own a
column-management UI, so it raises ManageColumnsRequested for its host to handle —
in the entity-viewer/workspace this opens the view's config panel (Columns tab), the canonical
column editor backed by UserView.GridState. Hosts that embed the grid standalone can handle
this to surface their own column UI.
Handles entity action click from the overflow menu. When the action names a runtime-UX driver, the
grid mounts that interactive driver in-place (no parent wiring required); otherwise it emits
EntityActionRequested for the host to invoke the action the classic way.
The user dismissed the mounted driver without applying — just unmount.
The mounted driver finished — refresh the grid when it changed data, then unmount.
Fetch aggregate values without reloading data. Used when gridState changes and includes new aggregate config. This runs a RunView with MaxRows=0 to get only aggregate results.
A modern, flexible data grid component for displaying and managing entity data. Built on AG Grid Community edition with a rich Before/After cancelable event system.
Features:
Example