Optional template for additional toolbar actions
Number of attachments linked to this record
Whether the attachments feature is available for this record
Emitted when the Attachments button is clicked
Emitted BEFORE cancel - can be cancelled by setting event.Cancel = true
Emitted before the clone slide-in opens. Set Cancel to handle cloning yourself.
Emitted BEFORE delete - can be cancelled by setting event.Cancel = true
Emitted BEFORE history view - can be cancelled by setting event.Cancel = true
Emitted BEFORE list management - can be cancelled by setting event.Cancel = true
Emitted BEFORE refresh - can be cancelled by setting event.Cancel = true
Emitted BEFORE save - can be cancelled by setting event.Cancel = true
Request to cancel editing and revert changes
Whether the server said this user may clone records of the current entity.
Form chrome layout. Expand/collapse-all only render for accordion. Left-nav and right-nav show one section at a time.
Emitted after the clone slide-in commits a clone of this record.
Toolbar configuration controlling visibility and behavior
The currently-applied variant ID, or null when the Default form is active.
Emitted when a custom toolbar button is clicked
Request to delete the current record
Computed descendant tree for breadcrumb display
Names of dirty fields for display in save bar
Whether the form is in edit mode
Request to enter or exit edit mode
Entity info for IS-A hierarchy and metadata
Whether favorite init has completed (prevents flash of wrong icon)
Request to toggle favorite status
Reference to the form component instance for event payloads
Request to show record change history
Whether the attachments panel is currently open
Whether the clone slide-in is open.
Whether the record has unsaved changes
Whether the record is currently a favorite
Whether a refresh from database operation is currently in progress
Whether to show the toolbar in a saving/loading state
Whether the tags panel is currently open
Toolbar item property overrides
Count of lists this record belongs to
Request to show list management
ReadonlyMenuPrefix for the More and View panels' ids, unique per toolbar, for the triggers' aria-controls.
Whether the More menu is open.
Emitted for all navigation actions (record links, hierarchy clicks, etc.)
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.
The entity record being displayed/edited
Request to refresh the current record from the database
Dynamic toolbar items registered by FormComponent or BaseFormPanels
Request to save the current record
Request to show dirty field changes
Number of tags applied to this record
Emitted when the Tags button is clicked
Emitted when any toolbar item (standard or custom) is clicked
Whether the current user has delete permission
Whether the current user has edit permission
Whether the variant-picker dropdown is currently open.
Emitted when the user picks an item from the form-variant dropdown.
Payload is the override ID for a specific variant, or null when the
user picks the "Default form" row (CodeGen / Angular fallback).
Available form variants for this entity. When the array has >1 entry
and Config.ShowFormVariantPicker is true, the toolbar renders a
right-side "form picker" button (icon) that opens a dropdown with
the Default form + each variant. Picking emits VariantPicked
with the override ID, or null for the CodeGen Angular default.
Shape is intentionally minimal — Generic doesn't depend on the resolver row type. Hosts shape their data into this. See VariantPickerItem on the container for the canonical shape.
Number of record change versions for this record (displayed as "vN" badge on history button)
Whether the View menu (section and layout controls) is open.
StaticɵdirStaticɵfacWhether another action can be pinned here; counts only the pinned buttons this form shows.
The actual loaded IS-A child chain for the current record. Walks Record.ISAChild → ISAChild.ISAChild → ... collecting each child entity. This differs from ChildEntities (metadata) because it represents the SPECIFIC child type that exists for THIS record, not all possible subtypes.
For overlapping subtype parents, this is empty (ISAChild returns null) — use OverlappingChildren instead.
Child entity types from metadata (all possible subtypes)
Label for the currently-active variant, or "Default form" when none.
The Delete action, shown last in the More menu, unless a host made it an inline button.
Display-friendly names of dirty fields for the edit banner
Whether this entity has child entity types (IS-A parent)
Whether this record has a loaded IS-A child entity
Whether the current record has overlapping child types discovered
Whether this entity has parent entities (IS-A child)
Read-mode actions that always render as buttons: Edit and custom items that are not pinnable.
Whether this entity is part of any IS-A hierarchy (parent or child side)
The maximum number of pinned buttons, the same for every user.
Pinnable actions listed in the More menu, Delete excluded (it has its own row).
For overlapping subtype parents (AllowMultipleSubtypes = true), returns the list of child entity type names that have records for this PK. Populated by InitializeChildEntity() during record load.
IS-A parent chain for breadcrumb display
Pinned actions this form offers, in pin order, up to MaxPinnedActions. Computed once per pass.
Keys the user pinned, in their order, or the configured defaults until they choose. Read from UserInfoEngine on every pass (pending debounced writes included), so every open form agrees. May include actions this form doesn't offer; those neither render nor use a slot here.
Returns either the default Metadata provider or the one specified in the Provider property, if it was specified
Display name for the edit banner.
The Name field is readable by the current user in almost every case, but it is an ordinary
field and field-level security can deny it. BaseEntity.Get() THROWS on a denied field, and
this getter runs on every change-detection cycle for the toolbar that sits on top of every
form — so an unguarded read here does not hide a title, it takes the whole form down. Fall
back to the primary key, which is unrestrictable by construction.
Items drawn on the right, beside the View menu.
overflow is folded in: the placement is part of the public type but the More menu
lists only actions items, so without this an item registered for overflow would
render nowhere and the caller would have no way to tell.
Resolves all standard and custom toolbar items into their active runtime state, evaluated against the current Record and EditMode.
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
True when the Clone action should render for the current record.
True iff the toolbar should render the variant-picker button.
Note the threshold is >= 1, NOT > 1. The picker menu always
includes the "Default form" row (CodeGen / Angular fallback) — that
row isn't in Variants; it's rendered unconditionally as the
first row inside the menu. So any single variant still yields a real
choice (Default vs that variant) and the picker should appear. The
inline-strip implementation that this replaces used > 1 and
therefore hid the picker for entities with exactly one override,
which made that override unreachable from the UI.
Whether the View menu has anything to show.
Whether entity tracks record changes (for history button)
The variant list lives in the View panel; use CloseMenus.
Force a recompute of the IS-A descendant breadcrumb. Needed after in-place record refresh because the Record object identity does not change, so CheckDescendantChains would otherwise skip.
Whether the action is pinned for this user and offered on this form (shown as a button, or waiting past the cap).
Pinned (in the user's list) but not shown on this form, because the pins before it filled every slot. Pins count per form, so one saved on a form without some of the others can land here.
A callback method that performs change-detection, invoked
after the default change-detector has checked the directive's input
bindings in the parent template.
See KeyValueDiffers and IterableDiffers for implementing
custom change checking for collections.
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.
Navigate to a loaded child entity record in the IS-A hierarchy. The child shares the same primary key as the parent (IS-A inheritance).
Opens the clone slide-in, unless a BeforeClone handler cancels.
Turns the clone widget's navigation request into the toolbar's own Navigate event.
Navigate to a descendant entity record in the IS-A hierarchy.
Optionalevent: EventRuns a More-menu item and closes the menu. Focus goes back to the More button first, so a keyboard user isn't left on
; an item that opens its own drawer or dialog then takes it.Navigate to an overlapping child entity record. Used when the parent has AllowMultipleSubtypes = true and multiple child types coexist for the same PK.
Navigate to a parent entity record in the IS-A hierarchy.
"Reorder sections" in the View panel: close it properly (listeners, focus on View), then open the manager.
User picked a row in the variant menu. Closes the menu and emits
VariantPicked (null → "Default form" / CodeGen Angular; UUID →
specific override). No-op when the picked value matches the current.
Pins or unpins an action for this user and saves the choice. Pins for actions this form doesn't offer are kept, so they come back on forms that do.
Compact subtitle for a variant menu row: "Scope · Status".
Configurable form toolbar component.
Renders action buttons (edit, save, delete, favorite, history, lists), the IS-A entity hierarchy breadcrumb, and section controls (search, expand/collapse).
All navigation actions are emitted as events - the toolbar never calls any routing service directly. The host application subscribes and maps to its own navigation.
Example