@memberjunction/ng-explorer-core 6.2.0-edge.0 → 6.2.0-edge.1

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 (178) hide show
  1. package/dist/app-routing.module.d.ts +23 -1
  2. package/dist/app-routing.module.d.ts.map +1 -1
  3. package/dist/app-routing.module.js +50 -14
  4. package/dist/app-routing.module.js.map +1 -1
  5. package/dist/lib/command-palette/command-palette.component.d.ts +7 -1
  6. package/dist/lib/command-palette/command-palette.component.d.ts.map +1 -1
  7. package/dist/lib/command-palette/command-palette.component.js +28 -14
  8. package/dist/lib/command-palette/command-palette.component.js.map +1 -1
  9. package/dist/lib/conversation-feedback/conversation-feedback.d.ts +103 -13
  10. package/dist/lib/conversation-feedback/conversation-feedback.d.ts.map +1 -1
  11. package/dist/lib/conversation-feedback/conversation-feedback.js +219 -67
  12. package/dist/lib/conversation-feedback/conversation-feedback.js.map +1 -1
  13. package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.d.ts +64 -10
  14. package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.d.ts.map +1 -1
  15. package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js +172 -66
  16. package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js.map +1 -1
  17. package/dist/lib/generic/resource-container-component.d.ts +19 -5
  18. package/dist/lib/generic/resource-container-component.d.ts.map +1 -1
  19. package/dist/lib/generic/resource-container-component.js +43 -13
  20. package/dist/lib/generic/resource-container-component.js.map +1 -1
  21. package/dist/lib/guards/entities.guard.d.ts +4 -0
  22. package/dist/lib/guards/entities.guard.d.ts.map +1 -1
  23. package/dist/lib/guards/entities.guard.js +10 -2
  24. package/dist/lib/guards/entities.guard.js.map +1 -1
  25. package/dist/lib/identity-claims/claim-redeem.component.d.ts +4 -0
  26. package/dist/lib/identity-claims/claim-redeem.component.d.ts.map +1 -1
  27. package/dist/lib/identity-claims/claim-redeem.component.js +10 -2
  28. package/dist/lib/identity-claims/claim-redeem.component.js.map +1 -1
  29. package/dist/lib/oauth/oauth-callback.component.d.ts +4 -0
  30. package/dist/lib/oauth/oauth-callback.component.d.ts.map +1 -1
  31. package/dist/lib/oauth/oauth-callback.component.js +10 -2
  32. package/dist/lib/oauth/oauth-callback.component.js.map +1 -1
  33. package/dist/lib/profile/profile-dialog.component.d.ts.map +1 -1
  34. package/dist/lib/profile/profile-dialog.component.js +194 -191
  35. package/dist/lib/profile/profile-dialog.component.js.map +1 -1
  36. package/dist/lib/resource-wrappers/artifact-resource.component.d.ts +20 -2
  37. package/dist/lib/resource-wrappers/artifact-resource.component.d.ts.map +1 -1
  38. package/dist/lib/resource-wrappers/artifact-resource.component.js +33 -9
  39. package/dist/lib/resource-wrappers/artifact-resource.component.js.map +1 -1
  40. package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts +80 -10
  41. package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts.map +1 -1
  42. package/dist/lib/resource-wrappers/chat-collections-resource.component.js +168 -56
  43. package/dist/lib/resource-wrappers/chat-collections-resource.component.js.map +1 -1
  44. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +186 -23
  45. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
  46. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +500 -177
  47. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
  48. package/dist/lib/resource-wrappers/chat-deeplink-params.d.ts +2 -0
  49. package/dist/lib/resource-wrappers/chat-deeplink-params.d.ts.map +1 -1
  50. package/dist/lib/resource-wrappers/chat-deeplink-params.js +5 -1
  51. package/dist/lib/resource-wrappers/chat-deeplink-params.js.map +1 -1
  52. package/dist/lib/resource-wrappers/chat-search-routing.d.ts +25 -0
  53. package/dist/lib/resource-wrappers/chat-search-routing.d.ts.map +1 -0
  54. package/dist/lib/resource-wrappers/chat-search-routing.js +24 -0
  55. package/dist/lib/resource-wrappers/chat-search-routing.js.map +1 -0
  56. package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts +14 -2
  57. package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts.map +1 -1
  58. package/dist/lib/resource-wrappers/chat-tasks-resource.component.js +32 -8
  59. package/dist/lib/resource-wrappers/chat-tasks-resource.component.js.map +1 -1
  60. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts +54 -8
  61. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
  62. package/dist/lib/resource-wrappers/dashboard-resource.component.js +138 -46
  63. package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
  64. package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts +223 -30
  65. package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts.map +1 -1
  66. package/dist/lib/resource-wrappers/livekit-room-resource.component.js +438 -118
  67. package/dist/lib/resource-wrappers/livekit-room-resource.component.js.map +1 -1
  68. package/dist/lib/resource-wrappers/search-results-resource.component.d.ts +7 -3
  69. package/dist/lib/resource-wrappers/search-results-resource.component.d.ts.map +1 -1
  70. package/dist/lib/resource-wrappers/search-results-resource.component.js +23 -15
  71. package/dist/lib/resource-wrappers/search-results-resource.component.js.map +1 -1
  72. package/dist/lib/resource-wrappers/view-resource.component.d.ts +68 -10
  73. package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
  74. package/dist/lib/resource-wrappers/view-resource.component.js +178 -62
  75. package/dist/lib/resource-wrappers/view-resource.component.js.map +1 -1
  76. package/dist/lib/services/startup-validation.service.d.ts +4 -0
  77. package/dist/lib/services/startup-validation.service.d.ts.map +1 -1
  78. package/dist/lib/services/startup-validation.service.js +10 -2
  79. package/dist/lib/services/startup-validation.service.js.map +1 -1
  80. package/dist/lib/services/system-validation.service.d.ts +13 -1
  81. package/dist/lib/services/system-validation.service.d.ts.map +1 -1
  82. package/dist/lib/services/system-validation.service.js +29 -5
  83. package/dist/lib/services/system-validation.service.js.map +1 -1
  84. package/dist/lib/shell/components/dialogs/app-access-dialog.component.d.ts +54 -4
  85. package/dist/lib/shell/components/dialogs/app-access-dialog.component.d.ts.map +1 -1
  86. package/dist/lib/shell/components/dialogs/app-access-dialog.component.js +130 -40
  87. package/dist/lib/shell/components/dialogs/app-access-dialog.component.js.map +1 -1
  88. package/dist/lib/shell/components/header/app-nav.component.d.ts +29 -1
  89. package/dist/lib/shell/components/header/app-nav.component.d.ts.map +1 -1
  90. package/dist/lib/shell/components/header/app-nav.component.js +56 -12
  91. package/dist/lib/shell/components/header/app-nav.component.js.map +1 -1
  92. package/dist/lib/shell/components/header/app-switcher.component.d.ts +33 -5
  93. package/dist/lib/shell/components/header/app-switcher.component.d.ts.map +1 -1
  94. package/dist/lib/shell/components/header/app-switcher.component.js +85 -29
  95. package/dist/lib/shell/components/header/app-switcher.component.js.map +1 -1
  96. package/dist/lib/shell/components/record-open/record-origin-crumb.component.js +1 -1
  97. package/dist/lib/shell/components/record-open/record-origin-crumb.component.js.map +1 -1
  98. package/dist/lib/shell/components/tabs/component-cache-manager.d.ts +50 -6
  99. package/dist/lib/shell/components/tabs/component-cache-manager.d.ts.map +1 -1
  100. package/dist/lib/shell/components/tabs/component-cache-manager.js +95 -22
  101. package/dist/lib/shell/components/tabs/component-cache-manager.js.map +1 -1
  102. package/dist/lib/shell/components/tabs/tab-container.component.d.ts +91 -9
  103. package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
  104. package/dist/lib/shell/components/tabs/tab-container.component.js +257 -101
  105. package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
  106. package/dist/lib/shell/loading-themes.d.ts +16 -12
  107. package/dist/lib/shell/loading-themes.d.ts.map +1 -1
  108. package/dist/lib/shell/loading-themes.js +145 -137
  109. package/dist/lib/shell/loading-themes.js.map +1 -1
  110. package/dist/lib/shell/readiness-beacon.d.ts +2 -0
  111. package/dist/lib/shell/readiness-beacon.d.ts.map +1 -1
  112. package/dist/lib/shell/readiness-beacon.js +5 -1
  113. package/dist/lib/shell/readiness-beacon.js.map +1 -1
  114. package/dist/lib/shell/services/about-dialog.service.d.ts +6 -0
  115. package/dist/lib/shell/services/about-dialog.service.d.ts.map +1 -1
  116. package/dist/lib/shell/services/about-dialog.service.js +16 -4
  117. package/dist/lib/shell/services/about-dialog.service.js.map +1 -1
  118. package/dist/lib/shell/services/profile-dialog.service.d.ts +6 -0
  119. package/dist/lib/shell/services/profile-dialog.service.d.ts.map +1 -1
  120. package/dist/lib/shell/services/profile-dialog.service.js +16 -4
  121. package/dist/lib/shell/services/profile-dialog.service.js.map +1 -1
  122. package/dist/lib/shell/services/user-sharing-center-dialog.service.d.ts +6 -0
  123. package/dist/lib/shell/services/user-sharing-center-dialog.service.d.ts.map +1 -1
  124. package/dist/lib/shell/services/user-sharing-center-dialog.service.js +15 -3
  125. package/dist/lib/shell/services/user-sharing-center-dialog.service.js.map +1 -1
  126. package/dist/lib/shell/shell.component.d.ts +262 -39
  127. package/dist/lib/shell/shell.component.d.ts.map +1 -1
  128. package/dist/lib/shell/shell.component.js +688 -292
  129. package/dist/lib/shell/shell.component.js.map +1 -1
  130. package/dist/lib/single-dashboard/Components/add-item/add-item.component.d.ts +64 -8
  131. package/dist/lib/single-dashboard/Components/add-item/add-item.component.d.ts.map +1 -1
  132. package/dist/lib/single-dashboard/Components/add-item/add-item.component.js +129 -37
  133. package/dist/lib/single-dashboard/Components/add-item/add-item.component.js.map +1 -1
  134. package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.d.ts +26 -2
  135. package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.d.ts.map +1 -1
  136. package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js +48 -10
  137. package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js.map +1 -1
  138. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.d.ts +84 -6
  139. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.d.ts.map +1 -1
  140. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js +133 -29
  141. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js.map +1 -1
  142. package/dist/lib/single-dashboard/single-dashboard.component.d.ts +173 -23
  143. package/dist/lib/single-dashboard/single-dashboard.component.d.ts.map +1 -1
  144. package/dist/lib/single-dashboard/single-dashboard.component.js +383 -109
  145. package/dist/lib/single-dashboard/single-dashboard.component.js.map +1 -1
  146. package/dist/lib/single-list-detail/single-list-detail.component.d.ts +383 -55
  147. package/dist/lib/single-list-detail/single-list-detail.component.d.ts.map +1 -1
  148. package/dist/lib/single-list-detail/single-list-detail.component.js +962 -326
  149. package/dist/lib/single-list-detail/single-list-detail.component.js.map +1 -1
  150. package/dist/lib/single-query/single-query.component.d.ts +22 -2
  151. package/dist/lib/single-query/single-query.component.d.ts.map +1 -1
  152. package/dist/lib/single-query/single-query.component.js +40 -10
  153. package/dist/lib/single-query/single-query.component.js.map +1 -1
  154. package/dist/lib/single-record/single-record.component.d.ts +41 -3
  155. package/dist/lib/single-record/single-record.component.d.ts.map +1 -1
  156. package/dist/lib/single-record/single-record.component.js +71 -11
  157. package/dist/lib/single-record/single-record.component.js.map +1 -1
  158. package/dist/lib/single-search-result/single-search-result.component.d.ts +23 -3
  159. package/dist/lib/single-search-result/single-search-result.component.d.ts.map +1 -1
  160. package/dist/lib/single-search-result/single-search-result.component.js +42 -12
  161. package/dist/lib/single-search-result/single-search-result.component.js.map +1 -1
  162. package/dist/lib/system-validation/system-validation-banner.component.d.ts +12 -2
  163. package/dist/lib/system-validation/system-validation-banner.component.d.ts.map +1 -1
  164. package/dist/lib/system-validation/system-validation-banner.component.js +25 -5
  165. package/dist/lib/system-validation/system-validation-banner.component.js.map +1 -1
  166. package/dist/lib/user-menu/user-menu.types.d.ts +4 -0
  167. package/dist/lib/user-menu/user-menu.types.d.ts.map +1 -1
  168. package/dist/lib/user-menu/user-menu.types.js +10 -2
  169. package/dist/lib/user-menu/user-menu.types.js.map +1 -1
  170. package/dist/lib/user-notifications/user-notifications.component.d.ts +59 -7
  171. package/dist/lib/user-notifications/user-notifications.component.d.ts.map +1 -1
  172. package/dist/lib/user-notifications/user-notifications.component.js +151 -47
  173. package/dist/lib/user-notifications/user-notifications.component.js.map +1 -1
  174. package/dist/lib/user-profile/user-profile.component.d.ts +3 -2
  175. package/dist/lib/user-profile/user-profile.component.d.ts.map +1 -1
  176. package/dist/lib/user-profile/user-profile.component.js +5 -4
  177. package/dist/lib/user-profile/user-profile.component.js.map +1 -1
  178. package/package.json +52 -52
@@ -140,23 +140,103 @@ function UserViewResource_Conditional_4_Template(rf, ctx) { if (rf & 1) {
140
140
  let UserViewResource = class UserViewResource extends BaseResourceComponent {
141
141
  cdr;
142
142
  exportService;
143
- containerElement;
144
- entityViewerRef;
143
+ ContainerElement;
144
+ /** @deprecated Use {@link ContainerElement}. */
145
+ get containerElement() {
146
+ return this.ContainerElement;
147
+ }
148
+ /** @deprecated Use {@link ContainerElement}. */
149
+ set containerElement(value) {
150
+ this.ContainerElement = value;
151
+ }
152
+ EntityViewerRef;
153
+ /** @deprecated Use {@link EntityViewerRef}. */
154
+ get entityViewerRef() {
155
+ return this.EntityViewerRef;
156
+ }
157
+ /** @deprecated Use {@link EntityViewerRef}. */
158
+ set entityViewerRef(value) {
159
+ this.EntityViewerRef = value;
160
+ }
145
161
  isLoading = false;
146
162
  errorMessage = null;
147
- entityInfo = null;
148
- viewEntity = null;
149
- gridState = null;
163
+ EntityInfo = null;
164
+ /** @deprecated Use {@link EntityInfo}. */
165
+ get entityInfo() {
166
+ return this.EntityInfo;
167
+ }
168
+ /** @deprecated Use {@link EntityInfo}. */
169
+ set entityInfo(value) {
170
+ this.EntityInfo = value;
171
+ }
172
+ ViewEntity = null;
173
+ /** @deprecated Use {@link ViewEntity}. */
174
+ get viewEntity() {
175
+ return this.ViewEntity;
176
+ }
177
+ /** @deprecated Use {@link ViewEntity}. */
178
+ set viewEntity(value) {
179
+ this.ViewEntity = value;
180
+ }
181
+ GridState = null;
182
+ /** @deprecated Use {@link GridState}. */
183
+ get gridState() {
184
+ return this.GridState;
185
+ }
186
+ /** @deprecated Use {@link GridState}. */
187
+ set gridState(value) {
188
+ this.GridState = value;
189
+ }
150
190
  // Export state. The header Export button is a FALLBACK shown only for view types that don't
151
191
  // provide their own export UI (Cards / Map / Timeline). The Grid renderer has its own in-toolbar
152
192
  // Export (full result set + format/sampling dialog), so we suppress this one there to avoid a
153
193
  // duplicate/confusing second button — while keeping export available for every other view type.
154
- isExporting = false;
155
- showFallbackExportButton = false;
194
+ IsExporting = false;
195
+ /** @deprecated Use {@link IsExporting}. */
196
+ get isExporting() {
197
+ return this.IsExporting;
198
+ }
199
+ /** @deprecated Use {@link IsExporting}. */
200
+ set isExporting(value) {
201
+ this.IsExporting = value;
202
+ }
203
+ ShowFallbackExportButton = false;
204
+ /** @deprecated Use {@link ShowFallbackExportButton}. */
205
+ get showFallbackExportButton() {
206
+ return this.ShowFallbackExportButton;
207
+ }
208
+ /** @deprecated Use {@link ShowFallbackExportButton}. */
209
+ set showFallbackExportButton(value) {
210
+ this.ShowFallbackExportButton = value;
211
+ }
156
212
  // Save-as-list dialog state
157
- saveAsListDialogVisible = false;
158
- saveAsListRecordCount = null;
159
- isSavingAsList = false;
213
+ SaveAsListDialogVisible = false;
214
+ /** @deprecated Use {@link SaveAsListDialogVisible}. */
215
+ get saveAsListDialogVisible() {
216
+ return this.SaveAsListDialogVisible;
217
+ }
218
+ /** @deprecated Use {@link SaveAsListDialogVisible}. */
219
+ set saveAsListDialogVisible(value) {
220
+ this.SaveAsListDialogVisible = value;
221
+ }
222
+ SaveAsListRecordCount = null;
223
+ /** @deprecated Use {@link SaveAsListRecordCount}. */
224
+ get saveAsListRecordCount() {
225
+ return this.SaveAsListRecordCount;
226
+ }
227
+ /** @deprecated Use {@link SaveAsListRecordCount}. */
228
+ set saveAsListRecordCount(value) {
229
+ this.SaveAsListRecordCount = value;
230
+ }
231
+ IsSavingAsList = false;
232
+ /** @deprecated Use {@link IsSavingAsList}. */
233
+ get isSavingAsList() {
234
+ return this.IsSavingAsList;
235
+ }
236
+ /** @deprecated Use {@link IsSavingAsList}. */
237
+ set isSavingAsList(value) {
238
+ this.IsSavingAsList = value;
239
+ }
160
240
  dataLoaded = false;
161
241
  get metadata() { return this.ProviderToUse; }
162
242
  constructor(cdr, exportService) {
@@ -176,9 +256,9 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
176
256
  if (!this.dataLoaded || newRecordId !== previousRecordId || newEntity !== previousEntity) {
177
257
  this.dataLoaded = true;
178
258
  // Reset state before loading new view
179
- this.entityInfo = null;
180
- this.viewEntity = null;
181
- this.gridState = null;
259
+ this.EntityInfo = null;
260
+ this.ViewEntity = null;
261
+ this.GridState = null;
182
262
  this.errorMessage = null;
183
263
  this.loadView();
184
264
  }
@@ -239,25 +319,25 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
239
319
  if (!view) {
240
320
  throw new Error(`View with ID ${viewId} not found`);
241
321
  }
242
- this.viewEntity = view;
322
+ this.ViewEntity = view;
243
323
  // Check permissions
244
- if (!this.viewEntity.UserCanView) {
324
+ if (!this.ViewEntity.UserCanView) {
245
325
  throw new Error('You do not have permission to view this view');
246
326
  }
247
327
  // Load the entity info
248
- const entity = this.metadata.Entities.find(e => UUIDsEqual(e.ID, this.viewEntity.EntityID));
328
+ const entity = this.metadata.Entities.find(e => UUIDsEqual(e.ID, this.ViewEntity.EntityID));
249
329
  if (!entity) {
250
330
  throw new Error(`Entity for view not found`);
251
331
  }
252
- this.entityInfo = entity;
332
+ this.EntityInfo = entity;
253
333
  // Parse grid state if available
254
- if (this.viewEntity.GridState) {
334
+ if (this.ViewEntity.GridState) {
255
335
  try {
256
- this.gridState = JSON.parse(this.viewEntity.GridState);
336
+ this.GridState = JSON.parse(this.ViewEntity.GridState);
257
337
  }
258
338
  catch (e) {
259
339
  console.warn('Failed to parse GridState:', e);
260
- this.gridState = null;
340
+ this.GridState = null;
261
341
  }
262
342
  }
263
343
  // View-type + per-view-type config persistence is fully owned by mj-entity-viewer
@@ -272,25 +352,29 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
272
352
  if (!entity) {
273
353
  throw new Error(`Entity '${entityName}' not found`);
274
354
  }
275
- this.entityInfo = entity;
276
- this.viewEntity = null;
277
- this.gridState = null;
355
+ this.EntityInfo = entity;
356
+ this.ViewEntity = null;
357
+ this.GridState = null;
278
358
  // For dynamic views, we could create a synthetic viewEntity with just the WhereClause
279
359
  // but for now, we'll rely on the entity-viewer's default behavior
280
360
  }
281
361
  /**
282
362
  * Handle record opened event - open in new tab
283
363
  */
284
- onRecordOpened(event) {
364
+ OnRecordOpened(event) {
285
365
  if (event && event.entity && event.compositeKey) {
286
366
  this.navigationService.OpenEntityRecord(event.entity.Name, event.compositeKey);
287
367
  }
288
368
  }
369
+ /** @deprecated Use {@link OnRecordOpened}. */
370
+ onRecordOpened(event) {
371
+ return this.OnRecordOpened(event);
372
+ }
289
373
  /**
290
374
  * Handle a related-record navigation requested from within a view-type renderer
291
375
  * (e.g. a foreign-key cell) - open the target record in a new tab.
292
376
  */
293
- onOpenRelatedRecord(nav) {
377
+ OnOpenRelatedRecord(nav) {
294
378
  if (nav?.entityName && nav.recordKey != null) {
295
379
  // The related entity is arbitrary, so its key column can have any name — resolve the key
296
380
  // against its metadata rather than hardcoding `ID` via FromID.
@@ -298,17 +382,29 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
298
382
  this.navigationService.OpenEntityRecord(nav.entityName, CompositeKey.FromURLSegment(entityInfo, String(nav.recordKey)));
299
383
  }
300
384
  }
385
+ /** @deprecated Use {@link OnOpenRelatedRecord}. */
386
+ onOpenRelatedRecord(nav) {
387
+ return this.OnOpenRelatedRecord(nav);
388
+ }
301
389
  /**
302
390
  * Handle data loaded event from entity-viewer
303
391
  */
304
- onDataLoaded() {
392
+ OnDataLoaded() {
305
393
  this.NotifyLoadComplete();
306
394
  this.refreshFallbackExportVisibility();
307
395
  }
396
+ /** @deprecated Use {@link OnDataLoaded}. */
397
+ onDataLoaded() {
398
+ return this.OnDataLoaded();
399
+ }
308
400
  /** The active view type changed — recompute whether the fallback Export button is needed. */
309
- onViewTypeChanged() {
401
+ OnViewTypeChanged() {
310
402
  this.refreshFallbackExportVisibility();
311
403
  }
404
+ /** @deprecated Use {@link OnViewTypeChanged}. */
405
+ onViewTypeChanged() {
406
+ return this.OnViewTypeChanged();
407
+ }
312
408
  /**
313
409
  * Show the wrapper's Export button only for view types that don't ship their own export UI. The
314
410
  * entity-viewer reports this via {@link EntityViewerComponent.ActiveViewTypeHasOwnExport} (true for
@@ -316,9 +412,9 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
316
412
  * detection to avoid an ExpressionChanged error from reading child state during a CD pass.
317
413
  */
318
414
  refreshFallbackExportVisibility() {
319
- const next = !!this.entityViewerRef && !this.entityViewerRef.ActiveViewTypeHasOwnExport;
320
- if (next !== this.showFallbackExportButton) {
321
- this.showFallbackExportButton = next;
415
+ const next = !!this.EntityViewerRef && !this.EntityViewerRef.ActiveViewTypeHasOwnExport;
416
+ if (next !== this.ShowFallbackExportButton) {
417
+ this.ShowFallbackExportButton = next;
322
418
  this.cdr.detectChanges();
323
419
  }
324
420
  }
@@ -327,21 +423,21 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
327
423
  * FULL result set via the entity-viewer's capped, filter/sort-aware fetch (same path the grid uses,
328
424
  * so it's bounded and warns past the cap) and writes an Excel file.
329
425
  */
330
- async onExport() {
426
+ async OnExport() {
331
427
  // Never fail silently — a "nothing happens" click is impossible to diagnose. Surface the
332
428
  // reason both in the UI and the console.
333
- if (!this.entityInfo || !this.entityViewerRef) {
429
+ if (!this.EntityInfo || !this.EntityViewerRef) {
334
430
  console.error('[ViewResource] Export: viewer not ready', {
335
- hasEntity: !!this.entityInfo, hasViewer: !!this.entityViewerRef
431
+ hasEntity: !!this.EntityInfo, hasViewer: !!this.EntityViewerRef
336
432
  });
337
433
  this.showNotification('Export is not ready yet — try again in a moment.', 'error', 5000);
338
434
  return;
339
435
  }
340
- this.isExporting = true;
436
+ this.IsExporting = true;
341
437
  this.cdr.detectChanges();
342
438
  this.showNotification('Preparing your Excel export…', 'info', 2000);
343
439
  try {
344
- const rows = await this.entityViewerRef.FetchAllRowsForExport();
440
+ const rows = await this.EntityViewerRef.FetchAllRowsForExport();
345
441
  if (!rows || rows.length === 0) {
346
442
  this.showNotification('Nothing to export — the view returned no records.', 'warning', 5000);
347
443
  return;
@@ -365,31 +461,35 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
365
461
  console.error('[ViewResource] Export error:', e);
366
462
  }
367
463
  finally {
368
- this.isExporting = false;
464
+ this.IsExporting = false;
369
465
  this.cdr.detectChanges();
370
466
  }
371
467
  }
468
+ /** @deprecated Use {@link OnExport}. */
469
+ async onExport() {
470
+ return this.OnExport();
471
+ }
372
472
  /** Columns to export — from grid state, else the view's columns, else the entity's real fields. */
373
473
  buildExportColumns() {
374
- if (!this.entityInfo)
474
+ if (!this.EntityInfo)
375
475
  return [];
376
- if (this.gridState?.columnSettings && this.gridState.columnSettings.length > 0) {
377
- return this.gridState.columnSettings
476
+ if (this.GridState?.columnSettings && this.GridState.columnSettings.length > 0) {
477
+ return this.GridState.columnSettings
378
478
  .filter(col => col.hidden !== true)
379
479
  .map(col => ({ name: col.Name, displayName: col.DisplayName || col.Name }));
380
480
  }
381
- if (this.viewEntity?.Columns) {
382
- return this.viewEntity.Columns
481
+ if (this.ViewEntity?.Columns) {
482
+ return this.ViewEntity.Columns
383
483
  .filter(col => !col.hidden)
384
484
  .map(col => ({ name: col.Name, displayName: col.DisplayName || col.Name }));
385
485
  }
386
- return this.entityInfo.Fields
486
+ return this.EntityInfo.Fields
387
487
  .filter(f => !f.IsVirtual)
388
488
  .map(f => ({ name: f.Name, displayName: f.DisplayNameOrName }));
389
489
  }
390
490
  buildExportFileName() {
391
- const viewName = this.viewEntity?.Name || 'Data';
392
- return `${this.entityInfo.Name}_${viewName}_${new Date().toISOString().split('T')[0]}`;
491
+ const viewName = this.ViewEntity?.Name || 'Data';
492
+ return `${this.EntityInfo.Name}_${viewName}_${new Date().toISOString().split('T')[0]}`;
393
493
  }
394
494
  /**
395
495
  * Get display name for the resource tab
@@ -416,38 +516,50 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
416
516
  /**
417
517
  * Handle creating a new record for the current entity
418
518
  */
419
- onCreateNewRecord() {
420
- if (!this.entityInfo)
519
+ OnCreateNewRecord() {
520
+ if (!this.EntityInfo)
421
521
  return;
422
522
  // Use NavigationService to open a new record form
423
- this.navigationService.OpenNewEntityRecord(this.entityInfo.Name);
523
+ this.navigationService.OpenNewEntityRecord(this.EntityInfo.Name);
524
+ }
525
+ /** @deprecated Use {@link OnCreateNewRecord}. */
526
+ onCreateNewRecord() {
527
+ return this.OnCreateNewRecord();
424
528
  }
425
529
  /**
426
530
  * Open the Save-as-List dialog. Only meaningful for saved views (a
427
531
  * ViewID is required to materialize). Dynamic views fall back to a
428
532
  * user-visible notification rather than silently doing nothing.
429
533
  */
430
- onSaveAsList() {
431
- if (!this.viewEntity?.ID) {
534
+ OnSaveAsList() {
535
+ if (!this.ViewEntity?.ID) {
432
536
  this.showNotification('Save as List requires a saved View. Save this view first.', 'info', 4000);
433
537
  return;
434
538
  }
435
539
  // Best-effort record-count hint — the entity-viewer exposes the
436
540
  // grid's row count on its gridState; we surface it so the dialog's
437
541
  // confirm button can say "Save List (476 records)".
438
- this.saveAsListRecordCount = this.entityViewerRef?.TotalRecordCount ?? null;
439
- this.saveAsListDialogVisible = true;
542
+ this.SaveAsListRecordCount = this.EntityViewerRef?.TotalRecordCount ?? null;
543
+ this.SaveAsListDialogVisible = true;
440
544
  this.cdr.detectChanges();
441
545
  }
442
- onSaveAsListCancelled() {
443
- this.saveAsListDialogVisible = false;
546
+ /** @deprecated Use {@link OnSaveAsList}. */
547
+ onSaveAsList() {
548
+ return this.OnSaveAsList();
549
+ }
550
+ OnSaveAsListCancelled() {
551
+ this.SaveAsListDialogVisible = false;
444
552
  this.cdr.detectChanges();
445
553
  }
446
- async onSaveAsListSubmit(payload) {
447
- const viewId = this.viewEntity?.ID;
554
+ /** @deprecated Use {@link OnSaveAsListCancelled}. */
555
+ onSaveAsListCancelled() {
556
+ return this.OnSaveAsListCancelled();
557
+ }
558
+ async OnSaveAsListSubmit(payload) {
559
+ const viewId = this.ViewEntity?.ID;
448
560
  if (!viewId)
449
561
  return;
450
- this.isSavingAsList = true;
562
+ this.IsSavingAsList = true;
451
563
  this.cdr.detectChanges();
452
564
  try {
453
565
  const provider = this.ProviderToUse;
@@ -461,7 +573,7 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
461
573
  RefreshMode: payload.RefreshMode,
462
574
  });
463
575
  if (result.Success && result.CreatedListId) {
464
- this.saveAsListDialogVisible = false;
576
+ this.SaveAsListDialogVisible = false;
465
577
  this.showNotification(`List created with ${result.Counts?.Added ?? 0} record(s).`, 'success', 3000);
466
578
  this.navigationService.OpenEntityRecord('MJ: Lists', CompositeKey.FromID(result.CreatedListId));
467
579
  }
@@ -474,10 +586,14 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
474
586
  this.showNotification(`Save failed: ${message}`, 'error', 5000);
475
587
  }
476
588
  finally {
477
- this.isSavingAsList = false;
589
+ this.IsSavingAsList = false;
478
590
  this.cdr.detectChanges();
479
591
  }
480
592
  }
593
+ /** @deprecated Use {@link OnSaveAsListSubmit}. */
594
+ async onSaveAsListSubmit(payload) {
595
+ return this.OnSaveAsListSubmit(payload);
596
+ }
481
597
  /**
482
598
  * Show a notification to the user
483
599
  */
@@ -498,8 +614,8 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
498
614
  i0.ɵɵviewQuery(_c0, 7)(_c1, 5);
499
615
  } if (rf & 2) {
500
616
  let _t;
501
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.containerElement = _t.first);
502
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.entityViewerRef = _t.first);
617
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.ContainerElement = _t.first);
618
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.EntityViewerRef = _t.first);
503
619
  } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 1, consts: [["container", ""], ["entityViewer", ""], [1, "view-resource-container"], [1, "view-loading-state"], [1, "view-error-state"], ["text", "Loading view...", "size", "large"], [1, "fas", "fa-exclamation-triangle"], [1, "view-header"], [1, "header-left"], [1, "view-title"], [1, "view-description"], [1, "header-right"], [1, "action-button", "create-button", 3, "click", "title"], [1, "fa-solid", "fa-plus"], ["title", "Materialize these results as a static List", 1, "action-button", "save-as-list-button", 3, "disabled"], ["title", "Export", 1, "action-button", "export-button", 3, "disabled"], [3, "RecordOpened", "OpenRelatedRecordRequested", "AfterViewTypeChange", "DataLoaded", "Entity", "Provider", "ViewEntity", "GridState", "AutoSaveView"], [3, "Save", "Cancel", "Provider", "Visible", "ViewId", "ViewName", "RecordCount"], ["title", "Materialize these results as a static List", 1, "action-button", "save-as-list-button", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-floppy-disk"], ["title", "Export", 1, "action-button", "export-button", 3, "click", "disabled"], [1, "fa-solid", "fa-file-excel"]], template: function UserViewResource_Template(rf, ctx) { if (rf & 1) {
504
620
  i0.ɵɵelementStart(0, "div", 2, 0);
505
621
  i0.ɵɵconditionalCreate(2, UserViewResource_Conditional_2_Template, 2, 0, "div", 3)(3, UserViewResource_Conditional_3_Template, 4, 1, "div", 4)(4, UserViewResource_Conditional_4_Template, 15, 16);
@@ -516,10 +632,10 @@ export { UserViewResource };
516
632
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserViewResource, [{
517
633
  type: Component,
518
634
  args: [{ standalone: false, selector: 'mj-userview-resource', template: "<div #container class=\"view-resource-container\">\n @if (isLoading) {\n <div class=\"view-loading-state\">\n <mj-loading text=\"Loading view...\" size=\"large\"></mj-loading>\n </div>\n } @else if (errorMessage) {\n <div class=\"view-error-state\">\n <i class=\"fas fa-exclamation-triangle\"></i>\n <p>{{ errorMessage }}</p>\n </div>\n } @else if (entityInfo) {\n <!-- Header with title and action buttons -->\n <div class=\"view-header\">\n <div class=\"header-left\">\n <h2 class=\"view-title\">{{ viewEntity?.Name || entityInfo.Name }}</h2>\n @if (viewEntity?.Description) {\n <p class=\"view-description\">{{ viewEntity!.Description }}</p>\n }\n </div>\n <div class=\"header-right\">\n <!-- Create New Record Button -->\n <button\n class=\"action-button create-button\"\n (click)=\"onCreateNewRecord()\"\n title=\"Create new {{ entityInfo.Name }} record\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>New Record</span>\n </button>\n\n <!-- Save as List Button \u2014 only meaningful for saved (non-dynamic) views. -->\n @if (viewEntity?.ID) {\n <button\n class=\"action-button save-as-list-button\"\n (click)=\"onSaveAsList()\"\n [disabled]=\"isSavingAsList\"\n title=\"Materialize these results as a static List\">\n @if (isSavingAsList) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n <i class=\"fa-solid fa-floppy-disk\"></i>\n }\n <span>{{ isSavingAsList ? 'Saving...' : 'Save as List' }}</span>\n </button>\n }\n <!-- Fallback Export button. Shown ONLY for view types that lack their own export UI\n (Cards / Map / Timeline). The Grid renderer has its own in-toolbar Export (full\n result set + format/sampling dialog), so this is suppressed there to avoid a\n duplicate/confusing second button. -->\n @if (showFallbackExportButton) {\n <button\n class=\"action-button export-button\"\n (click)=\"onExport()\"\n [disabled]=\"isExporting\"\n title=\"Export\">\n @if (isExporting) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n <i class=\"fa-solid fa-file-excel\"></i>\n }\n <span>{{ isExporting ? 'Exporting...' : 'Export' }}</span>\n </button>\n }\n </div>\n </div>\n\n <!-- Entity Viewer -->\n <mj-entity-viewer\n #entityViewer\n [Entity]=\"entityInfo\"\n [Provider]=\"Provider\"\n [ViewEntity]=\"viewEntity\"\n [GridState]=\"gridState\"\n [AutoSaveView]=\"true\"\n (RecordOpened)=\"onRecordOpened($any($event))\"\n (OpenRelatedRecordRequested)=\"onOpenRelatedRecord($event)\"\n (AfterViewTypeChange)=\"onViewTypeChanged()\"\n (DataLoaded)=\"onDataLoaded()\">\n </mj-entity-viewer>\n\n <!-- Save-as-List dialog -->\n <mj-save-view-as-list-dialog\n [Provider]=\"ProviderToUse\"\n [Visible]=\"saveAsListDialogVisible\"\n [ViewId]=\"viewEntity?.ID ?? null\"\n [ViewName]=\"viewEntity?.Name ?? null\"\n [RecordCount]=\"saveAsListRecordCount\"\n (Save)=\"onSaveAsListSubmit($event)\"\n (Cancel)=\"onSaveAsListCancelled()\">\n </mj-save-view-as-list-dialog>\n }\n</div>\n", styles: ["\n :host {\n display: block;\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n }\n .view-resource-container {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n .view-header {\n padding: 16px 20px 8px 20px;\n flex-shrink: 0;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n }\n .header-left {\n flex: 1;\n min-width: 0;\n }\n .header-right {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n }\n .view-title {\n margin: 0 0 4px 0;\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--text-primary, #1a1a1a);\n }\n .view-description {\n margin: 0;\n font-size: 0.875rem;\n color: var(--text-secondary, #666);\n }\n .action-button {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n }\n .action-button:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-default);\n }\n .action-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n .action-button i {\n font-size: 0.875rem;\n }\n .create-button {\n background: var(--mj-brand-primary);\n color: white;\n border-color: var(--mj-brand-primary);\n }\n .create-button:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n border-color: var(--mj-brand-primary-hover);\n }\n .export-button:hover:not(:disabled) {\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n }\n .view-loading-state,\n .view-error-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n gap: 16px;\n }\n .view-error-state {\n color: var(--danger-color, #dc3545);\n }\n .view-error-state i {\n font-size: 2rem;\n }\n .view-error-state p {\n margin: 0;\n font-size: 1rem;\n }\n mj-entity-viewer {\n flex: 1;\n min-height: 0;\n }\n "] }]
519
- }], () => [{ type: i0.ChangeDetectorRef }, { type: i1.ExportService }], { containerElement: [{
635
+ }], () => [{ type: i0.ChangeDetectorRef }, { type: i1.ExportService }], { ContainerElement: [{
520
636
  type: ViewChild,
521
637
  args: ['container', { static: true }]
522
- }], entityViewerRef: [{
638
+ }], EntityViewerRef: [{
523
639
  type: ViewChild,
524
640
  args: ['entityViewer']
525
641
  }] }); })();