Emitted when the panel should close
Current grid state from the grid (includes live column widths/order from user interaction) This takes precedence over viewEntity.Columns for showing current state
When true, the panel is in "create new view" mode — shows the Settings tab and a "Create View" button even without a viewEntity.
Emitted when the view should be deleted
Emitted when user wants to duplicate the current view (F-005)
The entity being viewed
Filter state from external dialog (set by parent after dialog closes)
Whether the panel is open
True when the Studio was opened via "+ Create New View" (DefaultSaveAsNew), even if a ViewEntity is currently selected
Emitted when filter dialog should be opened (at dashboard level for full width)
Pre-populated alternate base view from the quick save dialog or workspace (used when DefaultSaveAsNew is true)
Pre-populated description from the quick save dialog (used when DefaultSaveAsNew is true)
Pre-populated traditional filter from the quick save dialog (used when DefaultSaveAsNew is true). Without it, reopening this panel from the dialog would reset the filter the user had already configured. ExternalFilterState can't carry it back: the staged filter is the very object this panel is already bound to, so that input never registers a change.
Pre-populated sharing preference from the quick save dialog (used when DefaultSaveAsNew is true)
Pre-populated view name from the quick save dialog (used when DefaultSaveAsNew is true)
Pre-populated smart-filter toggle from the quick save dialog (used when DefaultSaveAsNew is true) — the smart-mode counterpart of PendingNewViewFilterState.
Pre-populated smart-filter prompt from the quick save dialog (used when DefaultSaveAsNew is true)
The view's declared properties being edited (a copy; the view changes only on save).
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.
Sample data for column format preview (first few records)
Emitted when the view should be saved
Emitted when default view settings should be saved to user settings (Used for dynamic/default views that persist to MJ: User Settings)
Multi-column sort configuration (ordered by priority)
Emitted when the user switches from "Save as New Named View" to "Personal Default Layout" so the host can exit its new-view flow (#6037).
StaticɵdirStaticɵfacGet available alternate base views for this entity (Active, plus any Deprecated one currently selected)
Get date/time fields available on the entity for Timeline configuration
Check if the current user can delete the view
Check if the current user can edit the view
Check if the current user can create or modify a custom SQL WHERE clause on this view.
Server-side validation (MJUserViewEntityServer.validateCustomWhereClauseAuthorization)
restricts CustomWhereClause to Owner-type administrators (failing closed when user/Type
is missing) because raw SQL bypasses client-clause screening (#6037).
Get card aggregates
Get column aggregates
Returns the SQL string displayed inside
Get enabled aggregates count
Label shown in the Filter recipe chip in the header
Get filtered columns for search (matches display name, technical name, description, or SQL type)
Returns the SQL WHERE clause generated from the active Rule Builder or Smart Filter
Whether the Filter recipe chip should be highlighted as active
True when the current configuration has an active filter, alternate base view, or custom SQL that requires a named view rather than the personal default layout setting.
Get hidden columns (in Standard Mode, hides internal _mj* system columns unless Advanced Mode is ON)
True when the panel is in "Creating New Named View" mode (either opened with DefaultSaveAsNew, promoted via "Save as Named View...", or automatically promoted because a filter/ABV was configured).
True when the view currently pins an AlternateBaseView that is disabled or no longer registered on the entity, so the UI can show it and let the user reset to Default.
Whether the form is valid for saving
Whether the form is valid for save-as-new (name can default to 'New View')
Whether the panel is currently in expanded wide / full-screen studio mode
Count of visible columns that are pinned left or right
Problems with the view's properties, each naming the property; any one blocks saving.
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 RunView provider or the one specified in the Provider property, if it was specified
Currently selected EntityAlternateBaseViewInfo (if an available alternate base view is selected)
Description for the currently selected Base View shown below the trigger
Primary label shown in the custom Base View dropdown trigger
Physical SQL view name shown as a monospace badge in the trigger
Currently selected EntityFieldInfo for the Timeline Date Axis Field
Friendly label for the currently selected Timeline Date Axis Field
Get sortable fields for dropdown (hiding internal _mj* fields in Standard Mode unless already sorted)
Summary label for the Sort recipe chip in the header
Human-readable badge describing the source of the SQL shown in
Get validation errors for the current form state
The current view entity (null for default view, or while the open studio session has switched from "Save as New Named View" to "Personal Default Layout" mode).
Get visible columns
True when the user opened the Studio on (Default) and it automatically promoted to a Named View because a filter, Smart Filter prompt, Alternate Base View, or Custom SQL WHERE was added.
Add a new conditional formatting rule to the currently edited column
Add a new sort level
Apply a semantic color preset to a conditional formatting rule
Apply a smart filter example to the prompt field
Build a smart suggested name based on the entity, alternate base view, or active filter
Build a ViewConfigSummary for quick-save preview (F-003)
Clear all filters
Close the on-demand Add Columns drawer
Close the aggregate dialog
Close the format editor
Compile a CompositeFilterDescriptor into a SQL WHERE expression using the canonical
MJUserViewEntityExtended.GenerateWhereClauseFromFilterState compiler when entity metadata is present.
Open dialog to edit an existing aggregate
Optionalfield: EntityFieldInfoThe column's field, so a SQL date previews as its stored calendar day rather
than shifting into the reader's zone (MJ#4210).
Get fields available for a sort item (excludes already selected fields except current)
Get the display name for a field
Get the count of active filter rules
Get sortable fields filtered by the user's search query (display name, technical name, type, or description)
Get a human-readable summary of the filter state
Get the EntityFieldInfo for a sort item's field
Close custom dropdowns (Base View, Timeline Date Field, or Sort Field) when clicking outside
Handle keyboard shortcuts Escape: Close open dropdown, format sub-panel, or the panel itself
Optionalevent: EventCheck if a given alternate base view name matches the current selection (case-insensitive)
A callback method that is invoked immediately after the default change detector has checked data-bound properties if at least one has changed, and before the view and content children are checked.
The changed properties.
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.
Handle saving an aggregate from the dialog
Keyboard navigation (ArrowDown / ArrowUp / Enter / Escape) for the Alternate Base View trigger
Close the panel
Handle changes emitted from
Cancel switching to Personal Default Layout mode.
Confirm discarding filter/base-view settings and switching to Personal Default Layout mode.
Delete the view - shows confirmation dialog
Cancelled delete from dialog
Confirmed delete from dialog
Handle drag end
Handle drag leave - clear drop indicator
Handle drag over for column reordering - determines drop position
Duplicate the current view (F-005)
Handle filter state change from filter builder
Cancel the filter mode switch (called from ConfirmDialog)
Confirm the filter mode switch (called from ConfirmDialog)
Save the view
Save edits to an existing view as a new personal copy without overwriting the original
Save as a new view
Save default view settings to user settings Used for dynamic/default views that don't have a stored view entity
Handle Smart Filter prompt change and auto-suggest a view name when promoting from (Default)
Handle drag end for sort item
Handle drag leave for sort item
Handle keyboard navigation (ArrowDown / ArrowUp / Enter / Escape) in the sort field search input
OptionalsortItem: SortItemHandle keyboard navigation on the sort field trigger button
Keyboard navigation (ArrowDown / ArrowUp / Enter / Escape) for the Timeline Date Axis Field trigger
Handle toggling the one-way Custom SQL WHERE Override checkbox.
Non-Owner editors may turn an existing override OFF (enabled === false) to revert a view
to Smart Filter or Rule Builder, matching MJUserViewEntityServer, while turning it ON
requires CanEditCustomSql (#6037).
Open dialog to add a new aggregate
Open the on-demand Add Columns drawer (closing Column Inspector if open)
Open the filter dialog - emits event to parent (dashboard) which renders the dialog at viewport level
Open the format editor for a column (closing Add Columns drawer if open)
Promote the panel from Personal Default View mode to Creating New Named View mode in-place
Remove a conditional formatting rule by index
Request switching from "Save as New Named View" back to "Personal Default Layout" mode. When active filter rules, a Smart Filter prompt, an Alternate Base View, or Custom SQL WHERE would be discarded, prompts the user for confirmation first.
Reset columns to entity metadata defaults (DefaultInView)
Select a base view option from the custom dropdown
Optionalevent: MouseEventSelect a field from the custom sort field dropdown
Optionalevent: MouseEventSelect a date field for Timeline View Defaults
Optionalevent: MouseEventSet Card View size preference
Explicitly set a column's pin position ('left', 'right', or null)
Set the filter mode ('smart', 'traditional', or 'sql') Switching to 'sql' shows the read-only compiled SQL from Smart Filter or Rule Builder until the user checks the one-way Custom SQL Override checkbox.
Set Grid Row Density preference
Set Timeline segment grouping preference
Set Timeline layout orientation preference
Make all columns visible
Switch from "Save as New Named View" back to "Personal Default Layout" mode. Detaches any bound ViewEntity for this Studio session and clears filters, alternate base view, and properties so saving writes the user's default layout rather than overwriting a previously selected view (#6037).
Toggle the on-demand Add Columns drawer
Toggle Studio-Wide Advanced Mode (reveals Canonical Base View, SQL WHERE Clause mode, Conditional Formatting Rules, custom hex color overrides, and technical field metadata)
Toggle aggregate enabled state (BUG-012: immutable update, no excessive logging)
Optionalevent: MouseEventToggle the custom Alternate Base View dropdown
Optionalevent: MouseEventCycle a column's pin position: None -> Pin Left -> Pin Right -> None
Optionalevent: MouseEventToggle whether this view is the user's Default View for the entity
Toggle the inline description textarea in the Pinned Identity Header
Toggle Grid cell text wrapping preference
Toggle sharing between Private (My View) and Shared with Team
Toggle the custom searchable sort field dropdown for a given sort item index
Optionalevent: MouseEventToggle the custom Timeline Date Axis Field dropdown
Optionalevent: MouseEventUpdate a cell style color property
Update a header style color property
Update the user-defined display name for a column
ViewConfigPanelComponent - Unified Full-Screen View Studio (
mj-view-config-panel)Architectural & UX Design Notes:
Unified Full-Screen Studio & Alternate Base View Integration: Configuring a User View spans five tightly coupled dimensions —
Columns,Filters(Smart Filter, Visual Rule Builder, and Advanced SQL WHERE override),Sorting,Aggregates(Summary KPI Cards & Pinned Grid Totals via an integrated right-side Slide-In Drawer), andDisplay(Grid, Cards, Timeline) — plus the underlying Data Source (Canonical Base View vs. Alternate SQL View). Openingmj-view-config-panelas a unified full-screen studio with progressive disclosure (Regular Mode by default vs. Advanced Mode on demand) eliminates fragmented modal popups and keeps Alternate Base View selection, SQL WHERE clause inspection/override (<mj-code-editor Language="sql">), and__mj_*system audit fields behind an intentional Advanced Mode toggle.Purpose-Built Rich Searchable Dropdowns & Visual Choice Cards (vs.
<mj-combobox>/<mj-dropdown>): Standard<mj-combobox>and<mj-dropdown>components render single-line text items. In the View Studio (Sortingfield picker,Data SourceAlternate Base View picker, andDisplay/Aggregatesfield selectors), users need multi-line option cards displaying human-readable descriptions (EntityField.Description/EntityAlternateBaseView.Description), SQL data-type pills (nvarchar,datetimeoffset, etc. in Advanced Mode),__mj_*system-field badges, and viewport-aware flip-up positioning. These controls therefore intentionally use purpose-built searchable listbox dropdowns (role="listbox"/role="option") and visual choice cards (role="radiogroup"/role="radio") with keyboard navigation andEscapecontainment rather than generic single-line comboboxes.