Size of the bottom area as a percentage (0-100) for angular-split. Used by CodeGen-generated templates with as-split.
Per-instance presentation config (toolbar visibility, related-entity
sections, collapsibility, width, in-form navigation). Set by the form host
(MjEntityFormHostComponent) or any consumer that instantiates the form
directly. Read back by MjRecordFormContainerComponent and the collapsible
panels through the FormComponent reference, so it takes effect WITHOUT
regenerating the CodeGen-produced template. Null means "use the container's
own defaults" (the classic full-page tab behavior).
ID of the currently-rendered variant (null when no override is active and the form is the CodeGen /
ProtectedelementProtectedformEmitted when navigation is requested (record link, external link, email, new record, etc.)
Emitted when a user-facing notification should be shown
Hook called when the user picks a different variant from the picker.
Default is a no-op; the Explorer-level single-record component replaces
this on the form instance to wire FormResolverService.SetSelectedVariant
and reload the record. Kept as a method (not an EventEmitter) so the host
doesn't need to subscribe — assignment is enough.
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.
Emitted after a record is deleted successfully
Emitted when a record delete fails
Emitted once after ngOnInit completes and the record is fully initialized (favorites loaded, form state initialized). This is the safe point for the container to start loading badge counts and other record-dependent data.
Emitted after a record is refreshed from the database successfully
Emitted after a record is saved successfully
Emitted when a record save fails
ProtectedsectionsReadonlyToolbarHide the generated-section controls — this form has a fully custom layout.
Height of the top area when a splitter layout is used. Referenced by CodeGen-generated templates for entities with "top area" sections.
Size of the top area as a percentage (0-100) for angular-split. Used by CodeGen-generated templates with as-split.
Emitted when validation fails before save
Variants applicable to the current (entity, user) tuple, supplied by the Explorer-level form resolver. When more than one entry is present, the record-form-container shows a picker that lets the user switch between variants. Empty / single-entry arrays hide the picker.
The container reads this via its EffectiveVariants accessor — generated
form templates do NOT need to bind it explicitly.
StaticɵdirStaticɵfacReturns all organic key related entities across all organic keys, flattened and sorted.
Unsaved changes a form holds OUTSIDE its record's fields and pending records.
A form whose sections own editors — a flow canvas, a designer, a grid — accumulates edits that
neither record.Dirty nor PendingRecordsDirty() can see, because nothing on the entity
changed. Without this the toolbar reports "no changes" while the user is looking at their own
work, and the navigate-away guard lets them lose it silently.
Default false, so no existing form changes behaviour. Override to consult whatever holds the
extra state.
Whether the current entity has any active organic keys with related entities configured.
Returns all active organic keys for the current entity, or an empty array if none.
ProtectedPendingPretty-printed session Config JSON for the Details tab (cached).
Returns either the default Metadata provider or the one specified in the Provider property, if it was specified
Returns all dynamically registered toolbar items.
Returns either the default RunQuery 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
Created → ClosedAt (terminal) or LastActiveAt (still open) duration.
Short, readable session id (first segment of the UUID).
Returns the map of toolbar item overrides.
Builds RunViewParams for a specific organic key related entity.
Convenience method to build organic key view params by organic key name and related entity name.
OptionalrelatedEntityJoinField: stringOne grid over several FKs to the same related entity (Bill-To OR Ship-To).
Configures overrides for any toolbar item (standard built-in items like 'edit', 'delete', 'favorite', 'history', etc., or custom items). Allows dynamically changing visibility, disabled state, tooltips, order, icon, etc.
Dynamically disables a toolbar item by key, with an optional reason string for the tooltip.
Optionalreason: stringOptionaldecimals: numberOptionalcurrency: stringOptionaldecimals: numberOptionalcurrency: stringSessions read best full-width, like the agent-run form.
OptionalrelatedEntityJoinField: stringProtectedgetProtectedinitProtectedInternalOptionaldefaultExpanded: booleanOpens the linked conversation in the Chat app (same pattern as the agent-run form).
Default values for a new related-entity record so it links back here.
Pass relatedEntityJoinField when more than one relationship targets the
same entity (Bill-To vs Ship-To). When omitted and several matches exist,
every matching FK is set — same fields the related grid is filtering on.
OptionalrelatedEntityJoinField: stringDefault values for a new related record, setting every listed join field to this record's key. Pair with BuildRelationshipViewParamsForJoinFields.
A callback method that is invoked immediately after Angular has completed initialization of a component's view. It is invoked only once when the view is instantiated.
A callback method that performs custom clean-up, invoked immediately before a directive, pipe, or service instance is destroyed.
Hook invoked when a custom or dynamic toolbar item is clicked. Subclasses can override this method to handle custom button clicks.
Handles delete requests from the form container. Emits RecordDeleted on success, RecordDeleteFailed on failure. Generated form templates bind this as: (DeleteRequested)="OnDeleteRequested()"
Handles favorite toggle from the form container. Generated form templates bind this as: (FavoriteToggled)="OnFavoriteToggled()"
Handles navigation events from the form container and related entity grids. Relays the event upward via the Navigate
Handles history view requests from the form container. Generated form templates bind this as: (HistoryRequested)="OnHistoryRequested()"
Handles list management requests from the form container. Generated form templates bind this as: (ListManagementRequested)="OnListManagementRequested()"
ProtectedPendingProtectedPopulateProtectedRaiseRe-fetches the current record from the database, updating field values in-place and resetting dirty flags. No-op in edit mode or on an unsaved record. Related-entity grids are notified via the form container's FormRecordRefreshCoordinator after this emits RecordRefreshed.
true if the record was reloaded from the database.
Registers a dynamic toolbar action item / button. Can be called during ngOnInit or at runtime.
Sets the numeric display order for a toolbar item (lower numbers appear earlier).
Called when the splitter layout changes (for entities with "top area" sections). No-op in the generic version; override in host application if splitter resizing is needed.
Unregisters a previously registered dynamic toolbar item by key.
ProtectedValidate
Custom form for 'MJ: AI Agent Sessions' — the observability surface for long-lived realtime (voice) agent sessions. Mirrors the AI Agent Run form's visual language: header with icon / status badge / stats, config bar, and tabbed panes for the delegated run tree, channels, transcript, and details.