Whether to show a "Restore" button on each historical version row. Default false.
ReadonlyBurstMap of Key → selected, used by the conditional chip system.
Conditional filter pills derived from loaded data. Always includes 'All' implicitly. Other pills only render when at least one matching change exists. Overflows into a popover when the count exceeds 2.
Use DialogClosed.
The same emitter under the old binding name, so a template still binding (dialogClosed) keeps working. Must stay AFTER DialogClosed: class fields initialise in order, and the other way round this captures undefined.
Highlighted change ID for the lineage-jump indicator (transient).
Whether the restore commit is in progress (between confirmation and host response).
Optional ID of the historical change currently being previewed directly inside the host entity form ("Time Travel" mode).
Emitted when the user toggles "Preview in Form" on a historical change card
(or clears the preview). Emits the selected MJRecordChangeEntity or
null when exiting preview.
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 change record currently selected for restore preview, or null.
Visibility of the embedded restore preview slide-in.
Emitted when the user confirms a restore in the preview panel.
The host is responsible for applying the snapshot to the record and
saving with record.SetRestoreContext() set first.
Single selected type filter (legacy, kept for backwards compat).
Whether the overflow popover is open.
Controls whether the compact version labels tray is expanded in the header.
StaticɵdirStaticɵfacUse DateGroups.
Human-friendly display name for the current entity (uses EntityInfo.DisplayNameOrName,
stripping technical schema prefixes like MJ_BizApps_Common: when falling back to Name).
Icon class for the current entity, falling back to fa-solid fa-layer-group.
Use ExpandedItems.
Use FilteredData.
Whether any conditional pills are actually visible at all.
Returns true when no conditional pills are selected (i.e. "All" mode).
Returns either the default Metadata provider or the one specified in the Provider property, if it was specified
Display name of the current record (e.g. 'Henry Grantham'), or null if unavailable.
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
Use SearchTerm.
Number of currently selected conditional pills (for the popover trigger label).
Use SelectedSource.
Use SelectedType.
Up to 4 unique contributors for the compact avatar stack in the header.
True when the conditional chips should collapse into an overflow popover because there are more than the threshold.
Use ViewData.
Computes the field-by-field diff between the selected vA (CompareBaseChangeID)
and vB (CompareTargetChangeID) snapshots.
Use GetCreatedFields.
Badge text for the row's primary type tag. For restore rows we override
the underlying Type='Update' and show "Restore" instead — matches the
mockup's intent of treating restore as a first-class operation in the
timeline rather than a flavor of update.
Returns all loaded changes that carry a FullRecordJSON snapshot and can
be previewed in the form, ordered newest-first.
Returns the source change for a given restored row, if found in the currently loaded changes. Returns null when the source isn't loaded (e.g., it's been pruned from history) or when this row isn't a restore.
Optional restore reason — pulled from the dynamic RestoreReason
column added by the lineage migration. Returns null when not present
or not a restore row.
Returns true when change is the historical version currently being
previewed in the host form.
True when this change is the most recent in the loaded history.
viewData is sorted DESC by ChangedAt, so the most recent is index 0.
Restoring to the most recent version is a no-op, so the timeline hides
the Restore button on this row.
True when the row was produced by a restore operation (either the
Source is 'Restore' OR RestoredFromID is populated).
Click handler for the lineage chip — scrolls/highlights the source change row in the timeline. Auto-clears after a few seconds.
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 <select> change events for the vA and vB version selectors.
Called when the user dismisses the restore preview without confirming.
Called when the user confirms the restore in the embedded panel. Translates the panel's RestoreCommitEvent into the broader-shape RestoreVersionEvent the host is wired to handle.
Opens the embedded restore preview panel for a given change record. The panel computes a full-record diff (current vs the change's FullRecordJSON snapshot) — this is the semantic-correctness fix: we restore TO the state at that point in time, not just undo the one delta the user clicked.
Use OnSearchChange.
Toggles in-form Time-Travel preview for the given historical change.
Programmatically opens the restore confirmation panel for a specific historical change (e.g., when triggered from the host form's Time-Travel Preview banner).
Reloads the record changes list from the database. Called by the parent container after a save completes while the drawer is open.
Toggles the "All" pill — clears every conditional selection.
Assigns a historical change ID (or '__CURRENT__') to either the base (vA)
or target (vB) comparison slot.
Optionalevent: EventSwaps the selected vA (base) and vB (target) comparison versions.
Toggles Cross-Version Diff Comparison (vA ↔ vB) mode.
When entering Compare Mode with no versions selected, defaults vB to the
latest version and vA to the immediately preceding snapshot (or live state).
Toggles a conditional pill on/off.
Slide-out timeline of all changes to a single record. Hosts the reusable RestorePreviewPanelComponent for the actual restore confirmation flow, and exposes a
RestoreRequestedevent the host can act on to persist the restore.Example