@memberjunction/ng-entity-viewer 5.38.0 → 5.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/__tests__/view-types.test.d.ts +2 -0
- package/dist/__tests__/view-types.test.d.ts.map +1 -0
- package/dist/__tests__/view-types.test.js +102 -0
- package/dist/__tests__/view-types.test.js.map +1 -0
- package/dist/lib/aggregate-setup-dialog/aggregate-setup-dialog.component.js +2 -2
- package/dist/lib/aggregate-setup-dialog/aggregate-setup-dialog.component.js.map +1 -1
- package/dist/lib/confirm-dialog/confirm-dialog.component.js +2 -2
- package/dist/lib/confirm-dialog/confirm-dialog.component.js.map +1 -1
- package/dist/lib/duplicate-view-dialog/duplicate-view-dialog.component.js +2 -2
- package/dist/lib/duplicate-view-dialog/duplicate-view-dialog.component.js.map +1 -1
- package/dist/lib/entity-data-grid/entity-data-grid.component.d.ts.map +1 -1
- package/dist/lib/entity-data-grid/entity-data-grid.component.js +10 -2
- package/dist/lib/entity-data-grid/entity-data-grid.component.js.map +1 -1
- package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.js +2 -2
- package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.js.map +1 -1
- package/dist/lib/entity-viewer/entity-viewer.component.d.ts +356 -341
- package/dist/lib/entity-viewer/entity-viewer.component.d.ts.map +1 -1
- package/dist/lib/entity-viewer/entity-viewer.component.js +993 -1097
- package/dist/lib/entity-viewer/entity-viewer.component.js.map +1 -1
- package/dist/lib/quick-save-dialog/quick-save-dialog.component.js +2 -2
- package/dist/lib/quick-save-dialog/quick-save-dialog.component.js.map +1 -1
- package/dist/lib/recycle-bin/recycle-bin.component.js +1 -1
- package/dist/lib/shared-view-warning-dialog/shared-view-warning-dialog.component.js +2 -2
- package/dist/lib/shared-view-warning-dialog/shared-view-warning-dialog.component.js.map +1 -1
- package/dist/lib/view-config-panel/view-config-panel.component.d.ts +126 -126
- package/dist/lib/view-config-panel/view-config-panel.component.js +635 -635
- package/dist/lib/view-config-panel/view-config-panel.component.js.map +1 -1
- package/dist/lib/view-selector/view-selector.component.d.ts +226 -0
- package/dist/lib/view-selector/view-selector.component.d.ts.map +1 -0
- package/dist/lib/view-selector/view-selector.component.js +861 -0
- package/dist/lib/view-selector/view-selector.component.js.map +1 -0
- package/dist/lib/view-type-switcher/view-type-switcher.component.d.ts +114 -0
- package/dist/lib/view-type-switcher/view-type-switcher.component.d.ts.map +1 -0
- package/dist/lib/view-type-switcher/view-type-switcher.component.js +209 -0
- package/dist/lib/view-type-switcher/view-type-switcher.component.js.map +1 -0
- package/dist/lib/view-types/descriptors/cards-view-type.d.ts +18 -0
- package/dist/lib/view-types/descriptors/cards-view-type.d.ts.map +1 -0
- package/dist/lib/view-types/descriptors/cards-view-type.js +31 -0
- package/dist/lib/view-types/descriptors/cards-view-type.js.map +1 -0
- package/dist/lib/view-types/descriptors/grid-view-type.d.ts +17 -0
- package/dist/lib/view-types/descriptors/grid-view-type.d.ts.map +1 -0
- package/dist/lib/view-types/descriptors/grid-view-type.js +30 -0
- package/dist/lib/view-types/descriptors/grid-view-type.js.map +1 -0
- package/dist/lib/view-types/descriptors/map-view-type.d.ts +21 -0
- package/dist/lib/view-types/descriptors/map-view-type.d.ts.map +1 -0
- package/dist/lib/view-types/descriptors/map-view-type.js +35 -0
- package/dist/lib/view-types/descriptors/map-view-type.js.map +1 -0
- package/dist/lib/view-types/descriptors/timeline-view-type.d.ts +22 -0
- package/dist/lib/view-types/descriptors/timeline-view-type.d.ts.map +1 -0
- package/dist/lib/view-types/descriptors/timeline-view-type.js +40 -0
- package/dist/lib/view-types/descriptors/timeline-view-type.js.map +1 -0
- package/dist/lib/view-types/index.d.ts +20 -0
- package/dist/lib/view-types/index.d.ts.map +1 -0
- package/dist/lib/view-types/index.js +29 -0
- package/dist/lib/view-types/index.js.map +1 -0
- package/dist/lib/view-types/renderers/cards-view-renderer.component.d.ts +93 -0
- package/dist/lib/view-types/renderers/cards-view-renderer.component.d.ts.map +1 -0
- package/dist/lib/view-types/renderers/cards-view-renderer.component.js +144 -0
- package/dist/lib/view-types/renderers/cards-view-renderer.component.js.map +1 -0
- package/dist/lib/view-types/renderers/grid-view-renderer.component.d.ts +273 -0
- package/dist/lib/view-types/renderers/grid-view-renderer.component.d.ts.map +1 -0
- package/dist/lib/view-types/renderers/grid-view-renderer.component.js +558 -0
- package/dist/lib/view-types/renderers/grid-view-renderer.component.js.map +1 -0
- package/dist/lib/view-types/renderers/map-view-renderer.component.d.ts +135 -0
- package/dist/lib/view-types/renderers/map-view-renderer.component.d.ts.map +1 -0
- package/dist/lib/view-types/renderers/map-view-renderer.component.js +216 -0
- package/dist/lib/view-types/renderers/map-view-renderer.component.js.map +1 -0
- package/dist/lib/view-types/renderers/timeline-view-renderer.component.d.ts +176 -0
- package/dist/lib/view-types/renderers/timeline-view-renderer.component.d.ts.map +1 -0
- package/dist/lib/view-types/renderers/timeline-view-renderer.component.js +535 -0
- package/dist/lib/view-types/renderers/timeline-view-renderer.component.js.map +1 -0
- package/dist/lib/view-types/view-type.contracts.d.ts +235 -0
- package/dist/lib/view-types/view-type.contracts.d.ts.map +1 -0
- package/dist/lib/view-types/view-type.contracts.js +51 -0
- package/dist/lib/view-types/view-type.contracts.js.map +1 -0
- package/dist/lib/view-types/view-type.engine.d.ts +76 -0
- package/dist/lib/view-types/view-type.engine.d.ts.map +1 -0
- package/dist/lib/view-types/view-type.engine.js +138 -0
- package/dist/lib/view-types/view-type.engine.js.map +1 -0
- package/dist/lib/view-workspace/view-workspace.component.d.ts +451 -0
- package/dist/lib/view-workspace/view-workspace.component.d.ts.map +1 -0
- package/dist/lib/view-workspace/view-workspace.component.js +1212 -0
- package/dist/lib/view-workspace/view-workspace.component.js.map +1 -0
- package/dist/module.d.ts +20 -11
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +50 -8
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +8 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +14 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +19 -18
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
import { EventEmitter, OnInit, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
3
|
+
import { EntityInfo } from '@memberjunction/core';
|
|
4
|
+
import { MJUserViewEntityExtended, ViewGridState } from '@memberjunction/core-entities';
|
|
5
|
+
import { CompositeFilterDescriptor, FilterFieldInfo } from '@memberjunction/ng-filter-builder';
|
|
6
|
+
import { RecordSelectedEvent, RecordOpenedEvent, ViewConfigSummary, QuickSaveEvent, QuickSaveAdvancedEvent, DataLoadedEvent, FilteredCountChangedEvent, EntityViewerConfig } from '../types';
|
|
7
|
+
import { EntityViewerComponent } from '../entity-viewer/entity-viewer.component';
|
|
8
|
+
import { ViewRelatedRecordNavigation } from '../view-types';
|
|
9
|
+
import { ViewSelectorComponent, ViewSelectedEvent, SaveViewRequestedEvent } from '../view-selector/view-selector.component';
|
|
10
|
+
import { ViewConfigPanelComponent, ViewSaveEvent } from '../view-config-panel/view-config-panel.component';
|
|
11
|
+
import { SharedViewAction } from '../shared-view-warning-dialog/shared-view-warning-dialog.component';
|
|
12
|
+
import { DuplicateViewEvent } from '../duplicate-view-dialog/duplicate-view-dialog.component';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
/**
|
|
15
|
+
* Generic cancelable event payload used by the workspace's `Before…` lifecycle outputs.
|
|
16
|
+
* Mirrors the house pattern (`CancelableEvent<T>` in `@memberjunction/ng-clustering` and the
|
|
17
|
+
* grid's `BeforeRowClick`): a handler sets `Cancel = true` on the args object to veto the
|
|
18
|
+
* default operation that would otherwise follow.
|
|
19
|
+
*
|
|
20
|
+
* @typeParam T - the shape of the operation-specific payload carried on {@link Data}.
|
|
21
|
+
*/
|
|
22
|
+
export interface WorkspaceCancelableEvent<T = unknown> {
|
|
23
|
+
/** The operation payload (e.g. the view being saved / deleted). */
|
|
24
|
+
Data: T;
|
|
25
|
+
/** Set to `true` in a `Before…` handler to cancel the pending operation. */
|
|
26
|
+
Cancel: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Payload describing a view save about to occur / that just occurred. Emitted via
|
|
30
|
+
* {@link ViewWorkspaceComponent.BeforeViewSave} (wrapped in {@link WorkspaceCancelableEvent})
|
|
31
|
+
* and {@link ViewWorkspaceComponent.AfterViewSave}.
|
|
32
|
+
*/
|
|
33
|
+
export interface ViewSaveOperation {
|
|
34
|
+
/** The view entity being saved (the new record when creating, the existing record when updating). */
|
|
35
|
+
View: MJUserViewEntityExtended;
|
|
36
|
+
/** True when this save created a brand-new view; false when it updated an existing one. */
|
|
37
|
+
IsNew: boolean;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Payload describing a view delete that just occurred, emitted via
|
|
41
|
+
* {@link ViewWorkspaceComponent.AfterViewDelete}.
|
|
42
|
+
*/
|
|
43
|
+
export interface ViewDeleteOperation {
|
|
44
|
+
/** The `MJ: User Views` row ID that was deleted. */
|
|
45
|
+
ViewID: string;
|
|
46
|
+
/** The name of the deleted view (captured before deletion). */
|
|
47
|
+
ViewName: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* `mj-view-workspace` — the reusable "browse an entity's data across saved views" workspace.
|
|
51
|
+
*
|
|
52
|
+
* This composite component orchestrates the full saved-view lifecycle (select / save / save-as-new /
|
|
53
|
+
* rename / duplicate / delete / revert / quick-save / save-defaults) on top of an entity's data, by
|
|
54
|
+
* composing the existing Generic lego components in this package:
|
|
55
|
+
*
|
|
56
|
+
* - {@link ViewSelectorComponent} — the saved-view dropdown.
|
|
57
|
+
* - {@link EntityViewerComponent} — the data renderer (grid / cards / timeline / map / plug-ins).
|
|
58
|
+
* - {@link ViewConfigPanelComponent} — the slide-in column/sort/filter configuration panel.
|
|
59
|
+
* - `mj-view-type-switcher` — the toolbar dropdown for switching the active view type.
|
|
60
|
+
* - `mj-quick-save-dialog`, `mj-duplicate-view-dialog`, `mj-shared-view-warning-dialog`,
|
|
61
|
+
* `mj-ev-confirm-dialog` — the focused modals.
|
|
62
|
+
*
|
|
63
|
+
* It is the generic extraction of what `DataExplorerDashboardComponent` does today, **minus routing,
|
|
64
|
+
* URL/query-param sync, and the Explorer state service**. Anything that requires app-level routing is
|
|
65
|
+
* emitted as an event ({@link OpenRecordRequested}, {@link OpenViewInTabRequested},
|
|
66
|
+
* {@link CreateNewRecordRequested}) for the host to handle — this component never imports `Router`.
|
|
67
|
+
*
|
|
68
|
+
* ## Persistence model
|
|
69
|
+
* - When {@link AutoSaveView} is `true`, the workspace persists view CRUD itself via the
|
|
70
|
+
* `MJUserViewEntityExtended` BaseEntity (`.Save()` / `.Delete()`) and `UserInfoEngine` for the
|
|
71
|
+
* per-user default-view settings, firing the cancelable `Before…` events and notification `After…`
|
|
72
|
+
* events around each operation.
|
|
73
|
+
* - When {@link AutoSaveView} is `false` (the default), the workspace performs no persistence — it
|
|
74
|
+
* emits the change-request events ({@link SaveViewRequested}, {@link DeleteViewRequested},
|
|
75
|
+
* {@link DuplicateViewRequested}, etc.) and the host is responsible for persisting and feeding back
|
|
76
|
+
* the updated view via the `[SelectedView]` input.
|
|
77
|
+
*
|
|
78
|
+
* State is held in plain component fields — there is no state-management service.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```html
|
|
82
|
+
* <mj-view-workspace
|
|
83
|
+
* [EntityName]="'Accounts'"
|
|
84
|
+
* [AutoSaveView]="true"
|
|
85
|
+
* (OpenRecordRequested)="navService.openRecord($event.entity, $event.record)"
|
|
86
|
+
* (OpenViewInTabRequested)="navService.openView($event)"
|
|
87
|
+
* (CreateNewRecordRequested)="navService.newRecord($event)">
|
|
88
|
+
* </mj-view-workspace>
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare class ViewWorkspaceComponent extends BaseAngularComponent implements OnInit {
|
|
92
|
+
private cdr;
|
|
93
|
+
private _entity;
|
|
94
|
+
private _initialized;
|
|
95
|
+
/**
|
|
96
|
+
* The entity whose data this workspace browses. May be supplied directly, or resolved from
|
|
97
|
+
* {@link EntityName} / {@link EntityID}. When it changes the selected view and config panel reset.
|
|
98
|
+
*/
|
|
99
|
+
get Entity(): EntityInfo | null;
|
|
100
|
+
set Entity(value: EntityInfo | null);
|
|
101
|
+
/**
|
|
102
|
+
* Convenience input: resolve {@link Entity} by entity **name** via the active provider.
|
|
103
|
+
* Use this OR {@link Entity} OR {@link EntityID}.
|
|
104
|
+
*/
|
|
105
|
+
set EntityName(value: string | null);
|
|
106
|
+
/**
|
|
107
|
+
* Convenience input: resolve {@link Entity} by entity **ID** via the active provider.
|
|
108
|
+
* Use this OR {@link Entity} OR {@link EntityName}.
|
|
109
|
+
*/
|
|
110
|
+
set EntityID(value: string | null);
|
|
111
|
+
/**
|
|
112
|
+
* When `true`, the workspace persists view CRUD itself (BaseEntity `.Save()`/`.Delete()` plus
|
|
113
|
+
* `UserInfoEngine` for the default-view settings) and fires the cancelable `Before…` / notification
|
|
114
|
+
* `After…` events around each persistence operation. When `false` (the default) the workspace only
|
|
115
|
+
* emits the change-request events and the host persists. Persistence is provider-based and
|
|
116
|
+
* generic-safe — it never performs routing.
|
|
117
|
+
*/
|
|
118
|
+
AutoSaveView: boolean;
|
|
119
|
+
/**
|
|
120
|
+
* The currently-selected view. Hosts that own persistence (when {@link AutoSaveView} is `false`)
|
|
121
|
+
* feed the loaded view back in here after handling a save/select request. Bound two-way friendly:
|
|
122
|
+
* the workspace emits {@link SelectedViewChange} whenever the selection changes internally.
|
|
123
|
+
*/
|
|
124
|
+
get SelectedView(): MJUserViewEntityExtended | null;
|
|
125
|
+
set SelectedView(value: MJUserViewEntityExtended | null);
|
|
126
|
+
/**
|
|
127
|
+
* The free-text filter to apply to the inner viewer. When a host owns the filter box it binds
|
|
128
|
+
* this (typically a debounced value); the workspace's {@link filterText} field tracks it.
|
|
129
|
+
*/
|
|
130
|
+
get FilterText(): string;
|
|
131
|
+
set FilterText(value: string);
|
|
132
|
+
/**
|
|
133
|
+
* The composite-key string of the record to highlight in the inner viewer. When a host owns
|
|
134
|
+
* record selection (e.g. via a detail panel) it binds this; the workspace's
|
|
135
|
+
* {@link selectedRecordId} field tracks it.
|
|
136
|
+
*/
|
|
137
|
+
get SelectedRecordId(): string | null;
|
|
138
|
+
set SelectedRecordId(value: string | null);
|
|
139
|
+
/** Partial {@link EntityViewerConfig} forwarded to the inner viewer (toolbar/pagination/etc.). */
|
|
140
|
+
ViewerConfig: Partial<EntityViewerConfig> | null;
|
|
141
|
+
/**
|
|
142
|
+
* Emitted when the user opens a record (double-click / open). The host performs the navigation.
|
|
143
|
+
*/
|
|
144
|
+
OpenRecordRequested: EventEmitter<{
|
|
145
|
+
entity: EntityInfo;
|
|
146
|
+
record: Record<string, unknown>;
|
|
147
|
+
}>;
|
|
148
|
+
/**
|
|
149
|
+
* Emitted when the user asks to open the current view in its own tab. Carries the `MJ: User Views`
|
|
150
|
+
* row ID. The host performs the navigation.
|
|
151
|
+
*/
|
|
152
|
+
OpenViewInTabRequested: EventEmitter<string>;
|
|
153
|
+
/**
|
|
154
|
+
* Emitted when the user asks to create a new record for the current entity — either from the
|
|
155
|
+
* selector or bubbled up from a plug-in renderer's "New" button. The host opens the form.
|
|
156
|
+
*/
|
|
157
|
+
CreateNewRecordRequested: EventEmitter<EntityInfo>;
|
|
158
|
+
/**
|
|
159
|
+
* NAVIGATION request bubbled up from a plug-in renderer (via the inner viewer) to open a *related*
|
|
160
|
+
* record on a (possibly different) entity — e.g. a grid foreign-key drill-through. The host routes.
|
|
161
|
+
*/
|
|
162
|
+
OpenRelatedRecordRequested: EventEmitter<ViewRelatedRecordNavigation>;
|
|
163
|
+
/**
|
|
164
|
+
* Emitted when a record is selected (single click) in the viewer.
|
|
165
|
+
*/
|
|
166
|
+
RecordSelected: EventEmitter<RecordSelectedEvent>;
|
|
167
|
+
/**
|
|
168
|
+
* Emitted when the selected view changes (selection, save, delete). Notification only.
|
|
169
|
+
*/
|
|
170
|
+
ViewSelected: EventEmitter<MJUserViewEntityExtended | null>;
|
|
171
|
+
/**
|
|
172
|
+
* Two-way-binding companion for {@link SelectedView}.
|
|
173
|
+
*/
|
|
174
|
+
SelectedViewChange: EventEmitter<MJUserViewEntityExtended | null>;
|
|
175
|
+
/**
|
|
176
|
+
* Emitted when the inner viewer's filter text changes (two-way friendly with {@link FilterText}).
|
|
177
|
+
*/
|
|
178
|
+
FilterTextChanged: EventEmitter<string>;
|
|
179
|
+
/**
|
|
180
|
+
* Emitted when the inner viewer finishes loading data — carries counts, timing and the records.
|
|
181
|
+
*/
|
|
182
|
+
DataLoaded: EventEmitter<DataLoadedEvent>;
|
|
183
|
+
/**
|
|
184
|
+
* Emitted when the inner viewer's filtered/total counts change.
|
|
185
|
+
*/
|
|
186
|
+
FilteredCountChanged: EventEmitter<FilteredCountChangedEvent>;
|
|
187
|
+
/**
|
|
188
|
+
* Emitted (cancelable) BEFORE a view save is persisted. A handler may set `Cancel = true` to veto.
|
|
189
|
+
* Only fires when {@link AutoSaveView} is `true`.
|
|
190
|
+
*/
|
|
191
|
+
BeforeViewSave: EventEmitter<WorkspaceCancelableEvent<ViewSaveOperation>>;
|
|
192
|
+
/**
|
|
193
|
+
* Emitted AFTER a view save has been persisted. Notification only.
|
|
194
|
+
*/
|
|
195
|
+
AfterViewSave: EventEmitter<ViewSaveOperation>;
|
|
196
|
+
/**
|
|
197
|
+
* Emitted (cancelable) BEFORE a view delete is persisted. A handler may set `Cancel = true` to veto.
|
|
198
|
+
* Only fires when {@link AutoSaveView} is `true`.
|
|
199
|
+
*/
|
|
200
|
+
BeforeViewDelete: EventEmitter<WorkspaceCancelableEvent<MJUserViewEntityExtended>>;
|
|
201
|
+
/**
|
|
202
|
+
* Emitted AFTER a view delete has been persisted. Notification only.
|
|
203
|
+
*/
|
|
204
|
+
AfterViewDelete: EventEmitter<ViewDeleteOperation>;
|
|
205
|
+
/**
|
|
206
|
+
* Emitted when the user requests a save and {@link AutoSaveView} is `false`. The host persists.
|
|
207
|
+
*/
|
|
208
|
+
SaveViewRequested: EventEmitter<ViewSaveEvent>;
|
|
209
|
+
/**
|
|
210
|
+
* Emitted when the user requests a delete and {@link AutoSaveView} is `false`. The host persists.
|
|
211
|
+
*/
|
|
212
|
+
DeleteViewRequested: EventEmitter<MJUserViewEntityExtended>;
|
|
213
|
+
/**
|
|
214
|
+
* Emitted when the user requests a duplicate and {@link AutoSaveView} is `false`. The host persists.
|
|
215
|
+
* Carries the source view ID and the chosen name for the copy.
|
|
216
|
+
*/
|
|
217
|
+
DuplicateViewRequested: EventEmitter<{
|
|
218
|
+
sourceViewId: string;
|
|
219
|
+
newName: string;
|
|
220
|
+
}>;
|
|
221
|
+
/**
|
|
222
|
+
* Emitted when the user saves per-user default view settings and {@link AutoSaveView} is `false`.
|
|
223
|
+
*/
|
|
224
|
+
SaveDefaultsRequested: EventEmitter<ViewSaveEvent>;
|
|
225
|
+
/** Reference to the view selector (for reloading the view list after CRUD). */
|
|
226
|
+
protected viewSelectorRef?: ViewSelectorComponent;
|
|
227
|
+
/** Reference to the entity viewer (for flushing pending grid changes + reloading data). */
|
|
228
|
+
protected entityViewerRef?: EntityViewerComponent;
|
|
229
|
+
/** Reference to the config panel (for building summaries + canEdit checks). */
|
|
230
|
+
protected viewConfigPanelRef?: ViewConfigPanelComponent;
|
|
231
|
+
/** The currently selected view entity (null = the default/unsaved view). */
|
|
232
|
+
currentViewEntity: MJUserViewEntityExtended | null;
|
|
233
|
+
/** The currently selected view ID (null = default view). */
|
|
234
|
+
selectedViewId: string | null;
|
|
235
|
+
/** Live grid state (column widths / order / sort / aggregates) reflecting user interaction. */
|
|
236
|
+
currentGridState: ViewGridState | null;
|
|
237
|
+
/** Whether the current view has unsaved modifications. */
|
|
238
|
+
viewModified: boolean;
|
|
239
|
+
/** The current free-text filter. */
|
|
240
|
+
filterText: string;
|
|
241
|
+
/** The currently selected record's composite-key string (for grid highlight). */
|
|
242
|
+
selectedRecordId: string | null;
|
|
243
|
+
/** Records loaded by the viewer, kept for config-panel sample data. */
|
|
244
|
+
loadedRecords: Record<string, unknown>[];
|
|
245
|
+
/** Whether a save operation is in progress (drives the saving spinners). */
|
|
246
|
+
isSavingView: boolean;
|
|
247
|
+
/** Whether the slide-in config panel is open. */
|
|
248
|
+
isConfigPanelOpen: boolean;
|
|
249
|
+
/** Whether the quick-save dialog is open. */
|
|
250
|
+
showQuickSaveDialog: boolean;
|
|
251
|
+
/** Whether the duplicate-view dialog is open. */
|
|
252
|
+
showDuplicateDialog: boolean;
|
|
253
|
+
/** Whether the shared-view warning dialog is open. */
|
|
254
|
+
showSharedViewWarning: boolean;
|
|
255
|
+
/** Whether the config panel opens in "save as new" mode. */
|
|
256
|
+
defaultSaveAsNew: boolean;
|
|
257
|
+
/** Summary shown in the quick-save dialog. */
|
|
258
|
+
quickSaveSummary: ViewConfigSummary | null;
|
|
259
|
+
/** Summary shown in the duplicate-view dialog. */
|
|
260
|
+
duplicateSummary: ViewConfigSummary | null;
|
|
261
|
+
/** Source view name shown in the duplicate-view dialog. */
|
|
262
|
+
duplicateSourceViewName: string;
|
|
263
|
+
/** The view ID being duplicated. */
|
|
264
|
+
private duplicateTargetViewId;
|
|
265
|
+
/** A quick-save event held while the shared-view warning is shown. */
|
|
266
|
+
private pendingQuickSaveEvent;
|
|
267
|
+
/** Pre-populated name carried from quick-save dialog into the config panel. */
|
|
268
|
+
pendingNewViewName: string;
|
|
269
|
+
/** Pre-populated description carried from quick-save dialog into the config panel. */
|
|
270
|
+
pendingNewViewDescription: string;
|
|
271
|
+
/** Pre-populated sharing preference carried from quick-save dialog into the config panel. */
|
|
272
|
+
pendingNewViewIsShared: boolean;
|
|
273
|
+
/** Whether the full-width filter dialog is open. */
|
|
274
|
+
isFilterDialogOpen: boolean;
|
|
275
|
+
/** The filter state currently being edited in the filter dialog. */
|
|
276
|
+
filterDialogState: CompositeFilterDescriptor | null;
|
|
277
|
+
/** The filter fields available in the filter dialog. */
|
|
278
|
+
filterDialogFields: FilterFieldInfo[];
|
|
279
|
+
constructor(cdr: ChangeDetectorRef);
|
|
280
|
+
/** Initializes the workspace and loads the per-user default grid state for the entity. */
|
|
281
|
+
ngOnInit(): void;
|
|
282
|
+
/** Resets all view/selection state when the bound entity changes to a different entity. */
|
|
283
|
+
private resetForEntityChange;
|
|
284
|
+
/** Closes every dialog/panel — used on entity change. */
|
|
285
|
+
private closeAllDialogs;
|
|
286
|
+
/**
|
|
287
|
+
* Drive the inner entity-viewer to switch to the chosen view type. The toolbar-level
|
|
288
|
+
* {@link ViewTypeSwitcherComponent} emits the selection; we route it to the viewer's
|
|
289
|
+
* {@link EntityViewerComponent.SelectViewTypeById} (its existing lifecycle: cancelable events
|
|
290
|
+
* + persistence). The viewer's own header switcher is suppressed via Config, so this is the
|
|
291
|
+
* single switcher in the workspace.
|
|
292
|
+
*/
|
|
293
|
+
onToolbarViewTypeSelected(event: {
|
|
294
|
+
viewTypeId: string;
|
|
295
|
+
driverClass: string;
|
|
296
|
+
}): void;
|
|
297
|
+
/**
|
|
298
|
+
* The active view type's `MJ: View Types` row ID, read from the inner viewer for the toolbar
|
|
299
|
+
* switcher's active highlight. Safe to read in the template — it reflects the viewer's own
|
|
300
|
+
* resolved state rather than driving it.
|
|
301
|
+
*/
|
|
302
|
+
get activeViewTypeId(): string | null;
|
|
303
|
+
/**
|
|
304
|
+
* The Config forwarded to the inner viewer. Merges the host-supplied {@link ViewerConfig} but
|
|
305
|
+
* always forces `showViewModeToggle: false` so the view-type switcher appears only once — in the
|
|
306
|
+
* workspace toolbar, not duplicated in the viewer's own header.
|
|
307
|
+
*/
|
|
308
|
+
get innerViewerConfig(): Partial<EntityViewerConfig>;
|
|
309
|
+
/**
|
|
310
|
+
* Handle a view selection from the selector dropdown. Applies the view's grid state and filter,
|
|
311
|
+
* resets the modified flag, and notifies the host. (Generalized from DataExplorer.onViewSelected.)
|
|
312
|
+
*/
|
|
313
|
+
onViewSelected(event: ViewSelectedEvent): void;
|
|
314
|
+
/** Handle filter text change from the viewer — re-emit so the host can sync its filter box / URL. */
|
|
315
|
+
onFilterTextChanged(filterText: string): void;
|
|
316
|
+
/** Track loaded records so the config panel has sample data, and re-emit the full event. */
|
|
317
|
+
onDataLoaded(event: DataLoadedEvent): void;
|
|
318
|
+
/** Re-emit the inner viewer's filtered-count change for the host. */
|
|
319
|
+
onFilteredCountChanged(event: FilteredCountChangedEvent): void;
|
|
320
|
+
/** Handle a record single-click — track selection and re-emit for the host. */
|
|
321
|
+
onRecordSelected(event: RecordSelectedEvent): void;
|
|
322
|
+
/** Handle a record open (double-click) — emit for the host to route to the record. */
|
|
323
|
+
onRecordOpened(event: RecordOpenedEvent): void;
|
|
324
|
+
/**
|
|
325
|
+
* Handle a plug-in renderer's request (via the inner viewer) to open a related record on a
|
|
326
|
+
* (possibly different) entity — re-emit for the host to route.
|
|
327
|
+
*/
|
|
328
|
+
onOpenRelatedRecordRequested(nav: ViewRelatedRecordNavigation): void;
|
|
329
|
+
/**
|
|
330
|
+
* Handle a plug-in renderer's request (via the inner viewer) to create a new record of the
|
|
331
|
+
* current entity (e.g. a grid's "New" button) — re-emit for the host to open the form.
|
|
332
|
+
*/
|
|
333
|
+
onCreateRecordRequested(): void;
|
|
334
|
+
/** Handle the selector's "open in tab" request — emit for the host to route. */
|
|
335
|
+
onOpenInTabRequested(viewId: string): void;
|
|
336
|
+
/** Handle the selector's "create new record" request — emit for the host. */
|
|
337
|
+
onCreateNewRecordRequested(): void;
|
|
338
|
+
/** Handle the selector's "configure view" request — open the config panel. */
|
|
339
|
+
onConfigureViewRequested(): void;
|
|
340
|
+
/** Handle the selector's "save view" request — open the config panel in the requested mode. */
|
|
341
|
+
onSaveViewRequested(event: SaveViewRequestedEvent): void;
|
|
342
|
+
/** Close the config panel and clear any pending new-view carry-over state. */
|
|
343
|
+
onCloseConfigPanel(): void;
|
|
344
|
+
/** Reset the carry-over state used when continuing a new-view flow into the config panel. */
|
|
345
|
+
private clearPendingNewViewState;
|
|
346
|
+
/** Open the full-width filter dialog from the config panel's request. */
|
|
347
|
+
onOpenFilterDialogRequest(event: {
|
|
348
|
+
filterState: CompositeFilterDescriptor;
|
|
349
|
+
filterFields: FilterFieldInfo[];
|
|
350
|
+
}): void;
|
|
351
|
+
/** Close the filter dialog. */
|
|
352
|
+
onCloseFilterDialog(): void;
|
|
353
|
+
/** Apply a filter from the dialog — the config panel picks it up via `externalFilterState`. */
|
|
354
|
+
onFilterApplied(filter: CompositeFilterDescriptor): void;
|
|
355
|
+
/**
|
|
356
|
+
* Handle a save from the config panel. When {@link AutoSaveView}, persists the view itself
|
|
357
|
+
* (create-new or update) via the BaseEntity; otherwise emits {@link SaveViewRequested} for the host.
|
|
358
|
+
* (Faithful generalization of DataExplorer.onSaveView, minus routing/state-service/notifications.)
|
|
359
|
+
*/
|
|
360
|
+
onSaveView(event: ViewSaveEvent): Promise<void>;
|
|
361
|
+
/**
|
|
362
|
+
* Create and persist a brand-new view from the save event. Fires the cancelable
|
|
363
|
+
* {@link BeforeViewSave} before saving and {@link AfterViewSave} after success.
|
|
364
|
+
*/
|
|
365
|
+
private persistNewView;
|
|
366
|
+
/**
|
|
367
|
+
* Update and persist the currently-selected view from the save event. Fires the cancelable
|
|
368
|
+
* {@link BeforeViewSave} before saving and {@link AfterViewSave} after success.
|
|
369
|
+
*/
|
|
370
|
+
private persistExistingView;
|
|
371
|
+
/**
|
|
372
|
+
* Handle saving per-user default view settings from the config panel. When {@link AutoSaveView},
|
|
373
|
+
* persists to `UserInfoEngine`; otherwise emits {@link SaveDefaultsRequested}.
|
|
374
|
+
* (Generalized from DataExplorer.onSaveDefaultViewSettings.)
|
|
375
|
+
*/
|
|
376
|
+
onSaveDefaultViewSettings(event: ViewSaveEvent): Promise<void>;
|
|
377
|
+
/**
|
|
378
|
+
* Handle a delete from the config panel. When {@link AutoSaveView}, persists the delete itself
|
|
379
|
+
* (firing cancelable {@link BeforeViewDelete} / notification {@link AfterViewDelete}); otherwise
|
|
380
|
+
* emits {@link DeleteViewRequested}. (Generalized from DataExplorer.onDeleteView.)
|
|
381
|
+
*/
|
|
382
|
+
onDeleteView(): Promise<void>;
|
|
383
|
+
/**
|
|
384
|
+
* Handle a quick-save request from the selector (F-001). Builds a summary from the config panel
|
|
385
|
+
* and opens the quick-save dialog. (Generalized from DataExplorer.onQuickSaveRequested.)
|
|
386
|
+
*/
|
|
387
|
+
onQuickSaveRequested(saveAsNew: boolean): void;
|
|
388
|
+
/**
|
|
389
|
+
* Handle the quick-save dialog's save. Intercepts updates to a shared view with the shared-view
|
|
390
|
+
* warning; otherwise executes the save. (Generalized from DataExplorer.onQuickSave.)
|
|
391
|
+
*/
|
|
392
|
+
onQuickSave(event: QuickSaveEvent): Promise<void>;
|
|
393
|
+
/** Build a `ViewSaveEvent` from a `QuickSaveEvent` and delegate to {@link onSaveView}. */
|
|
394
|
+
private executeQuickSave;
|
|
395
|
+
/** Handle the shared-view warning action (update / save-as-copy / cancel). */
|
|
396
|
+
onSharedViewAction(action: SharedViewAction): Promise<void>;
|
|
397
|
+
/** Handle the shared-view warning cancel. */
|
|
398
|
+
onSharedViewWarningCancel(): void;
|
|
399
|
+
/** Handle the quick-save dialog close. */
|
|
400
|
+
onQuickSaveClose(): void;
|
|
401
|
+
/** Handle "open advanced" from the quick-save dialog — carry data into the config panel. */
|
|
402
|
+
onQuickSaveOpenAdvanced(event: QuickSaveAdvancedEvent): void;
|
|
403
|
+
/**
|
|
404
|
+
* Handle a duplicate request (F-005). Opens the duplicate dialog so the user names the copy.
|
|
405
|
+
* (Generalized from DataExplorer.onDuplicateView.)
|
|
406
|
+
*/
|
|
407
|
+
onDuplicateViewRequested(viewId?: string): void;
|
|
408
|
+
/** Build a {@link ViewConfigSummary} from a view entity for the duplicate dialog. */
|
|
409
|
+
private buildDuplicateSummary;
|
|
410
|
+
/**
|
|
411
|
+
* Handle the duplicate dialog confirmation. When {@link AutoSaveView}, loads the source view,
|
|
412
|
+
* copies its config into a new personal view, and persists it; otherwise emits
|
|
413
|
+
* {@link DuplicateViewRequested}. (Generalized from DataExplorer.onDuplicateConfirmed.)
|
|
414
|
+
*/
|
|
415
|
+
onDuplicateConfirmed(event: DuplicateViewEvent): Promise<void>;
|
|
416
|
+
/** Load the source view, copy its config into a new personal view, and persist it. */
|
|
417
|
+
private persistDuplicate;
|
|
418
|
+
/** Handle the duplicate dialog cancel. */
|
|
419
|
+
onDuplicateCancel(): void;
|
|
420
|
+
/** Handle duplicate triggered from the config panel — duplicate the selected view. */
|
|
421
|
+
onDuplicateFromPanel(): void;
|
|
422
|
+
/**
|
|
423
|
+
* Handle a revert request (F-007). Re-parses the saved view's grid state, clears the modified
|
|
424
|
+
* flag, and reloads. (Generalized from DataExplorer.onRevertView.)
|
|
425
|
+
*/
|
|
426
|
+
onRevertView(): Promise<void>;
|
|
427
|
+
/**
|
|
428
|
+
* Build a `GridState` (Kendo-compatible) from the save event. Priority: explicit columns from the
|
|
429
|
+
* config panel → live grid state → entity `DefaultInView` fields. Returns null when no columns.
|
|
430
|
+
*/
|
|
431
|
+
private buildGridState;
|
|
432
|
+
/** Build grid sort settings (`{field, dir}[]`) from the save event, falling back to live state. */
|
|
433
|
+
private buildGridSortSettings;
|
|
434
|
+
/** Build a `SortState` (`{field, direction}[]`) from the save event. Returns null when no sort. */
|
|
435
|
+
private buildSortState;
|
|
436
|
+
/** Serialize the filter state to JSON, defaulting to an empty Kendo filter. */
|
|
437
|
+
private buildFilterStateJson;
|
|
438
|
+
/**
|
|
439
|
+
* Parse a view's `GridState` into a {@link ViewGridState}, validating columns/sorts against the
|
|
440
|
+
* current entity to avoid stale fields from a previous entity. Returns null when no valid columns.
|
|
441
|
+
*/
|
|
442
|
+
private parseViewGridState;
|
|
443
|
+
/**
|
|
444
|
+
* Load the per-user default grid state for the current entity from `UserInfoEngine`, validating
|
|
445
|
+
* columns/sorts against the entity. Returns null when none saved.
|
|
446
|
+
*/
|
|
447
|
+
private loadUserDefaultGridState;
|
|
448
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ViewWorkspaceComponent, never>;
|
|
449
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ViewWorkspaceComponent, "mj-view-workspace", never, { "Entity": { "alias": "Entity"; "required": false; }; "EntityName": { "alias": "EntityName"; "required": false; }; "EntityID": { "alias": "EntityID"; "required": false; }; "AutoSaveView": { "alias": "AutoSaveView"; "required": false; }; "SelectedView": { "alias": "SelectedView"; "required": false; }; "FilterText": { "alias": "FilterText"; "required": false; }; "SelectedRecordId": { "alias": "SelectedRecordId"; "required": false; }; "ViewerConfig": { "alias": "ViewerConfig"; "required": false; }; }, { "OpenRecordRequested": "OpenRecordRequested"; "OpenViewInTabRequested": "OpenViewInTabRequested"; "CreateNewRecordRequested": "CreateNewRecordRequested"; "OpenRelatedRecordRequested": "OpenRelatedRecordRequested"; "RecordSelected": "RecordSelected"; "ViewSelected": "ViewSelected"; "SelectedViewChange": "SelectedViewChange"; "FilterTextChanged": "FilterTextChanged"; "DataLoaded": "DataLoaded"; "FilteredCountChanged": "FilteredCountChanged"; "BeforeViewSave": "BeforeViewSave"; "AfterViewSave": "AfterViewSave"; "BeforeViewDelete": "BeforeViewDelete"; "AfterViewDelete": "AfterViewDelete"; "SaveViewRequested": "SaveViewRequested"; "DeleteViewRequested": "DeleteViewRequested"; "DuplicateViewRequested": "DuplicateViewRequested"; "SaveDefaultsRequested": "SaveDefaultsRequested"; }, never, never, false, never>;
|
|
450
|
+
}
|
|
451
|
+
//# sourceMappingURL=view-workspace.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-workspace.component.d.ts","sourceRoot":"","sources":["../../../src/lib/view-workspace/view-workspace.component.ts"],"names":[],"mappings":"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"}
|