@memberjunction/ng-entity-viewer 2.132.0 → 3.0.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.
Files changed (42) hide show
  1. package/README.md +317 -124
  2. package/dist/lib/entity-cards/entity-cards.component.js +2 -2
  3. package/dist/lib/entity-cards/entity-cards.component.js.map +1 -1
  4. package/dist/lib/entity-data-grid/entity-data-grid.component.d.ts +793 -0
  5. package/dist/lib/entity-data-grid/entity-data-grid.component.d.ts.map +1 -0
  6. package/dist/lib/entity-data-grid/entity-data-grid.component.js +3781 -0
  7. package/dist/lib/entity-data-grid/entity-data-grid.component.js.map +1 -0
  8. package/dist/lib/entity-data-grid/events/grid-events.d.ts +398 -0
  9. package/dist/lib/entity-data-grid/events/grid-events.d.ts.map +1 -0
  10. package/dist/lib/entity-data-grid/events/grid-events.js +556 -0
  11. package/dist/lib/entity-data-grid/events/grid-events.js.map +1 -0
  12. package/dist/lib/entity-data-grid/models/grid-types.d.ts +437 -0
  13. package/dist/lib/entity-data-grid/models/grid-types.d.ts.map +1 -0
  14. package/dist/lib/entity-data-grid/models/grid-types.js +37 -0
  15. package/dist/lib/entity-data-grid/models/grid-types.js.map +1 -0
  16. package/dist/lib/entity-grid/entity-grid.component.js +1 -1
  17. package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.js +2 -2
  18. package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.js.map +1 -1
  19. package/dist/lib/entity-viewer/entity-viewer.component.d.ts +136 -2
  20. package/dist/lib/entity-viewer/entity-viewer.component.d.ts.map +1 -1
  21. package/dist/lib/entity-viewer/entity-viewer.component.js +321 -94
  22. package/dist/lib/entity-viewer/entity-viewer.component.js.map +1 -1
  23. package/dist/lib/pagination/pagination.component.js +2 -2
  24. package/dist/lib/pagination/pagination.component.js.map +1 -1
  25. package/dist/lib/pill/pill.component.js +2 -2
  26. package/dist/lib/pill/pill.component.js.map +1 -1
  27. package/dist/lib/types.d.ts +14 -31
  28. package/dist/lib/types.d.ts.map +1 -1
  29. package/dist/lib/types.js.map +1 -1
  30. package/dist/lib/view-config-panel/view-config-panel.component.d.ts +363 -0
  31. package/dist/lib/view-config-panel/view-config-panel.component.d.ts.map +1 -0
  32. package/dist/lib/view-config-panel/view-config-panel.component.js +2006 -0
  33. package/dist/lib/view-config-panel/view-config-panel.component.js.map +1 -0
  34. package/dist/module.d.ts +16 -13
  35. package/dist/module.d.ts.map +1 -1
  36. package/dist/module.js +25 -15
  37. package/dist/module.js.map +1 -1
  38. package/dist/public-api.d.ts +4 -1
  39. package/dist/public-api.d.ts.map +1 -1
  40. package/dist/public-api.js +6 -1
  41. package/dist/public-api.js.map +1 -1
  42. package/package.json +15 -11
@@ -0,0 +1,363 @@
1
+ import { EventEmitter, OnChanges, OnInit, SimpleChanges, ChangeDetectorRef } from '@angular/core';
2
+ import { EntityInfo, EntityFieldInfo } from '@memberjunction/core';
3
+ import { UserViewEntityExtended, ViewGridState, ColumnFormat, ColumnTextStyle } from '@memberjunction/core-entities';
4
+ import { CompositeFilterDescriptor, FilterFieldInfo } from '@memberjunction/ng-filter-builder';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Column configuration for the view (internal use)
8
+ */
9
+ export interface ColumnConfig {
10
+ fieldId: string;
11
+ fieldName: string;
12
+ /** Original display name from entity metadata */
13
+ displayName: string;
14
+ /** User-defined custom display name (overrides displayName when set) */
15
+ userDisplayName?: string;
16
+ visible: boolean;
17
+ width: number | null;
18
+ orderIndex: number;
19
+ field: EntityFieldInfo;
20
+ /** Column formatting configuration */
21
+ format?: ColumnFormat;
22
+ }
23
+ /**
24
+ * Event emitted when saving the view
25
+ */
26
+ export interface ViewSaveEvent {
27
+ name: string;
28
+ description: string;
29
+ isShared: boolean;
30
+ saveAsNew: boolean;
31
+ columns: ColumnConfig[];
32
+ sortField: string | null;
33
+ sortDirection: 'asc' | 'desc';
34
+ smartFilterEnabled: boolean;
35
+ smartFilterPrompt: string;
36
+ /** Traditional filter state in Kendo-compatible JSON format */
37
+ filterState: CompositeFilterDescriptor | null;
38
+ }
39
+ /**
40
+ * ViewConfigPanelComponent - Sliding panel for configuring view settings
41
+ *
42
+ * Features:
43
+ * - Column visibility and ordering with drag-drop
44
+ * - Column formatting (number, currency, date, etc.)
45
+ * - Sort configuration
46
+ * - View name and description editing
47
+ * - Share settings
48
+ * - Save / Save As New / Cancel actions
49
+ */
50
+ export declare class ViewConfigPanelComponent implements OnInit, OnChanges {
51
+ private cdr;
52
+ /**
53
+ * The entity being viewed
54
+ */
55
+ entity: EntityInfo | null;
56
+ /**
57
+ * The current view entity (null for default view)
58
+ */
59
+ viewEntity: UserViewEntityExtended | null;
60
+ /**
61
+ * Whether the panel is open
62
+ */
63
+ isOpen: boolean;
64
+ /**
65
+ * Current grid state from the grid (includes live column widths/order from user interaction)
66
+ * This takes precedence over viewEntity.Columns for showing current state
67
+ */
68
+ currentGridState: ViewGridState | null;
69
+ /**
70
+ * Sample data for column format preview (first few records)
71
+ */
72
+ sampleData: Record<string, unknown>[];
73
+ /**
74
+ * Emitted when the panel should close
75
+ */
76
+ close: EventEmitter<void>;
77
+ /**
78
+ * Emitted when the view should be saved
79
+ */
80
+ save: EventEmitter<ViewSaveEvent>;
81
+ /**
82
+ * Emitted when default view settings should be saved to user settings
83
+ * (Used for dynamic/default views that persist to MJ: User Settings)
84
+ */
85
+ saveDefaults: EventEmitter<ViewSaveEvent>;
86
+ /**
87
+ * Emitted when the view should be deleted
88
+ */
89
+ delete: EventEmitter<void>;
90
+ /**
91
+ * Emitted when filter dialog should be opened (at dashboard level for full width)
92
+ */
93
+ openFilterDialogRequest: EventEmitter<{
94
+ filterState: CompositeFilterDescriptor;
95
+ filterFields: FilterFieldInfo[];
96
+ }>;
97
+ /**
98
+ * Filter state from external dialog (set by parent after dialog closes)
99
+ */
100
+ externalFilterState: CompositeFilterDescriptor | null;
101
+ viewName: string;
102
+ viewDescription: string;
103
+ isShared: boolean;
104
+ columns: ColumnConfig[];
105
+ sortField: string | null;
106
+ sortDirection: 'asc' | 'desc';
107
+ smartFilterEnabled: boolean;
108
+ smartFilterPrompt: string;
109
+ smartFilterExplanation: string;
110
+ filterState: CompositeFilterDescriptor;
111
+ filterFields: FilterFieldInfo[];
112
+ filterMode: 'smart' | 'traditional';
113
+ activeTab: 'columns' | 'filters' | 'settings';
114
+ isSaving: boolean;
115
+ columnSearchText: string;
116
+ draggedColumn: ColumnConfig | null;
117
+ dropTargetColumn: ColumnConfig | null;
118
+ dropPosition: 'before' | 'after' | null;
119
+ formatEditingColumn: ColumnConfig | null;
120
+ isResizing: boolean;
121
+ panelWidth: number;
122
+ private readonly MIN_PANEL_WIDTH;
123
+ private readonly MAX_PANEL_WIDTH;
124
+ private readonly DEFAULT_PANEL_WIDTH;
125
+ private resizeStartX;
126
+ private resizeStartWidth;
127
+ private metadata;
128
+ constructor(cdr: ChangeDetectorRef);
129
+ /**
130
+ * Handle keyboard shortcuts
131
+ * Escape: Close the panel or format sub-panel
132
+ */
133
+ handleEscape(): void;
134
+ /**
135
+ * Start resizing the panel
136
+ */
137
+ onResizeStart(event: MouseEvent): void;
138
+ /**
139
+ * Handle resize movement (bound to document)
140
+ */
141
+ private onResizeMove;
142
+ /**
143
+ * End resizing the panel (bound to document)
144
+ */
145
+ private onResizeEnd;
146
+ ngOnInit(): void;
147
+ ngOnChanges(changes: SimpleChanges): void;
148
+ /**
149
+ * Initialize form state from entity and view
150
+ * Priority for column state: currentGridState > viewEntity.Columns > entity defaults
151
+ */
152
+ private initializeFromEntity;
153
+ /**
154
+ * Build filter fields from entity fields (including __mj_ fields for filtering by timestamps)
155
+ */
156
+ private buildFilterFields;
157
+ /**
158
+ * Map entity field type to filter field type
159
+ */
160
+ private mapFieldType;
161
+ /**
162
+ * Parse the filter state from JSON string
163
+ */
164
+ private parseFilterState;
165
+ /**
166
+ * Handle filter state change from filter builder
167
+ */
168
+ onFilterChange(filter: CompositeFilterDescriptor): void;
169
+ /**
170
+ * Open the filter dialog - emits event to parent (dashboard) which renders the dialog at viewport level
171
+ */
172
+ openFilterDialog(): void;
173
+ /**
174
+ * Get the count of active filter rules
175
+ */
176
+ getFilterCount(): number;
177
+ /**
178
+ * Count filters recursively
179
+ */
180
+ private countFilters;
181
+ /**
182
+ * Get a human-readable summary of the filter state
183
+ */
184
+ getFilterSummary(): string;
185
+ /**
186
+ * Clear all filters
187
+ */
188
+ clearFilters(): void;
189
+ /**
190
+ * Apply grid state column settings to the columns array
191
+ */
192
+ private applyGridStateToColumns;
193
+ /**
194
+ * Get visible columns
195
+ */
196
+ get visibleColumns(): ColumnConfig[];
197
+ /**
198
+ * Get hidden columns
199
+ */
200
+ get hiddenColumns(): ColumnConfig[];
201
+ /**
202
+ * Get filtered columns for search
203
+ */
204
+ get filteredHiddenColumns(): ColumnConfig[];
205
+ /**
206
+ * Get sortable fields for dropdown (including __mj_ fields for sorting by timestamps)
207
+ */
208
+ get sortableFields(): EntityFieldInfo[];
209
+ /**
210
+ * Check if the current user can edit the view
211
+ */
212
+ get canEdit(): boolean;
213
+ /**
214
+ * Check if the current user can delete the view
215
+ */
216
+ get canDelete(): boolean;
217
+ /**
218
+ * Toggle column visibility
219
+ */
220
+ toggleColumnVisibility(column: ColumnConfig): void;
221
+ /**
222
+ * Move column up in order
223
+ */
224
+ moveColumnUp(column: ColumnConfig): void;
225
+ /**
226
+ * Move column down in order
227
+ */
228
+ moveColumnDown(column: ColumnConfig): void;
229
+ /**
230
+ * Handle drag start for column reordering
231
+ */
232
+ onDragStart(event: DragEvent, column: ColumnConfig): void;
233
+ /**
234
+ * Handle drag over for column reordering - determines drop position
235
+ */
236
+ onDragOver(event: DragEvent, column: ColumnConfig): void;
237
+ /**
238
+ * Handle drag leave - clear drop indicator
239
+ */
240
+ onDragLeave(event: DragEvent): void;
241
+ /**
242
+ * Handle drop for column reordering
243
+ */
244
+ onDrop(event: DragEvent, targetColumn: ColumnConfig): void;
245
+ /**
246
+ * Handle drag end
247
+ */
248
+ onDragEnd(event: DragEvent): void;
249
+ /**
250
+ * Clear all drag state
251
+ */
252
+ private clearDragState;
253
+ /**
254
+ * Reorder a column to a new position
255
+ */
256
+ private reorderColumn;
257
+ /**
258
+ * Check if drop indicator should show before a column
259
+ */
260
+ isDropBefore(column: ColumnConfig): boolean;
261
+ /**
262
+ * Check if drop indicator should show after a column
263
+ */
264
+ isDropAfter(column: ColumnConfig): boolean;
265
+ /**
266
+ * Open the format editor for a column
267
+ */
268
+ openFormatEditor(column: ColumnConfig): void;
269
+ /**
270
+ * Close the format editor
271
+ */
272
+ closeFormatEditor(): void;
273
+ /**
274
+ * Get default format based on field type
275
+ */
276
+ private getDefaultFormat;
277
+ /**
278
+ * Check if a column has custom formatting applied
279
+ */
280
+ hasCustomFormat(column: ColumnConfig): boolean;
281
+ /**
282
+ * Clear formatting for a column
283
+ */
284
+ clearColumnFormat(column: ColumnConfig): void;
285
+ /**
286
+ * Get sample values for preview
287
+ */
288
+ getSampleValues(column: ColumnConfig): unknown[];
289
+ /**
290
+ * Get placeholder sample values when no data available
291
+ */
292
+ private getPlaceholderSamples;
293
+ /**
294
+ * Format a value for preview display
295
+ */
296
+ formatPreviewValue(value: unknown, format: ColumnFormat | undefined): string;
297
+ private formatNumber;
298
+ private formatCurrency;
299
+ private formatPercent;
300
+ private formatDate;
301
+ private formatBoolean;
302
+ /**
303
+ * Close the panel
304
+ */
305
+ onClose(): void;
306
+ /**
307
+ * Check if filter state has any active filters
308
+ */
309
+ private hasActiveFilters;
310
+ /**
311
+ * Save the view
312
+ */
313
+ onSave(): void;
314
+ /**
315
+ * Save as a new view
316
+ */
317
+ onSaveAsNew(): void;
318
+ /**
319
+ * Save default view settings to user settings
320
+ * Used for dynamic/default views that don't have a stored view entity
321
+ */
322
+ onSaveDefaults(): void;
323
+ /**
324
+ * Delete the view
325
+ */
326
+ onDelete(): void;
327
+ /**
328
+ * Set the active tab
329
+ */
330
+ setActiveTab(tab: 'columns' | 'filters' | 'settings'): void;
331
+ /**
332
+ * Set the filter mode (smart or traditional)
333
+ * When switching modes, clear the other mode's settings
334
+ */
335
+ setFilterMode(mode: 'smart' | 'traditional'): void;
336
+ /**
337
+ * Apply a smart filter example to the prompt field
338
+ */
339
+ applySmartFilterExample(example: string): void;
340
+ /**
341
+ * Toggle a header style property
342
+ */
343
+ toggleHeaderStyle(prop: keyof ColumnTextStyle): void;
344
+ /**
345
+ * Update the user-defined display name for a column
346
+ */
347
+ updateUserDisplayName(value: string): void;
348
+ /**
349
+ * Update a header style color property
350
+ */
351
+ updateHeaderColor(prop: 'color' | 'backgroundColor', value: string): void;
352
+ /**
353
+ * Toggle a cell style property
354
+ */
355
+ toggleCellStyle(prop: keyof ColumnTextStyle): void;
356
+ /**
357
+ * Update a cell style color property
358
+ */
359
+ updateCellColor(prop: 'color' | 'backgroundColor', value: string): void;
360
+ static ɵfac: i0.ɵɵFactoryDeclaration<ViewConfigPanelComponent, never>;
361
+ static ɵcmp: i0.ɵɵComponentDeclaration<ViewConfigPanelComponent, "mj-view-config-panel", never, { "entity": { "alias": "entity"; "required": false; }; "viewEntity": { "alias": "viewEntity"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "currentGridState": { "alias": "currentGridState"; "required": false; }; "sampleData": { "alias": "sampleData"; "required": false; }; "externalFilterState": { "alias": "externalFilterState"; "required": false; }; "isSaving": { "alias": "isSaving"; "required": false; }; }, { "close": "close"; "save": "save"; "saveDefaults": "saveDefaults"; "delete": "delete"; "openFilterDialogRequest": "openFilterDialogRequest"; }, never, never, false, never>;
362
+ }
363
+ //# sourceMappingURL=view-config-panel.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-config-panel.component.d.ts","sourceRoot":"","sources":["../../../src/lib/view-config-panel/view-config-panel.component.ts"],"names":[],"mappings":"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"}