@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
@@ -174,18 +174,98 @@ function DashboardPreferencesDialogComponent_Conditional_20_Template(rf, ctx) {
174
174
  i0.ɵɵtext(1, " Save Changes ");
175
175
  } }
176
176
  export class DashboardPreferencesDialogComponent extends BaseAngularComponent {
177
- applicationId = null;
178
- scope = 'Global';
179
- result = new EventEmitter();
180
- availableDashboards = [];
181
- configuredDashboards = [];
182
- applicationName = '';
183
- loading = true;
177
+ ApplicationId = null;
178
+ /** @deprecated Use {@link ApplicationId}. */
179
+ set applicationId(value) {
180
+ this.ApplicationId = value;
181
+ }
182
+ /** @deprecated Use {@link ApplicationId}. */
183
+ get applicationId() {
184
+ return this.ApplicationId;
185
+ }
186
+ Scope = 'Global';
187
+ /** @deprecated Use {@link Scope}. */
188
+ set scope(value) {
189
+ this.Scope = value;
190
+ }
191
+ /** @deprecated Use {@link Scope}. */
192
+ get scope() {
193
+ return this.Scope;
194
+ }
195
+ Result = new EventEmitter();
196
+ /**
197
+ * @deprecated Use {@link Result}.
198
+ *
199
+ * The same emitter under the old binding name, so a template still binding
200
+ * (result) keeps working. Must stay AFTER Result: class fields
201
+ * initialise in order, and the other way round this captures undefined.
202
+ */
203
+ result = this.Result;
204
+ AvailableDashboards = [];
205
+ /** @deprecated Use {@link AvailableDashboards}. */
206
+ get availableDashboards() {
207
+ return this.AvailableDashboards;
208
+ }
209
+ /** @deprecated Use {@link AvailableDashboards}. */
210
+ set availableDashboards(value) {
211
+ this.AvailableDashboards = value;
212
+ }
213
+ ConfiguredDashboards = [];
214
+ /** @deprecated Use {@link ConfiguredDashboards}. */
215
+ get configuredDashboards() {
216
+ return this.ConfiguredDashboards;
217
+ }
218
+ /** @deprecated Use {@link ConfiguredDashboards}. */
219
+ set configuredDashboards(value) {
220
+ this.ConfiguredDashboards = value;
221
+ }
222
+ ApplicationName = '';
223
+ /** @deprecated Use {@link ApplicationName}. */
224
+ get applicationName() {
225
+ return this.ApplicationName;
226
+ }
227
+ /** @deprecated Use {@link ApplicationName}. */
228
+ set applicationName(value) {
229
+ this.ApplicationName = value;
230
+ }
231
+ Loading = true;
232
+ /** @deprecated Use {@link Loading}. */
233
+ get loading() {
234
+ return this.Loading;
235
+ }
236
+ /** @deprecated Use {@link Loading}. */
237
+ set loading(value) {
238
+ this.Loading = value;
239
+ }
184
240
  saving = false;
185
241
  error = null;
186
- hasChanges = false;
187
- isSysAdmin = false;
188
- preferenceMode = 'personal';
242
+ HasChanges = false;
243
+ /** @deprecated Use {@link HasChanges}. */
244
+ get hasChanges() {
245
+ return this.HasChanges;
246
+ }
247
+ /** @deprecated Use {@link HasChanges}. */
248
+ set hasChanges(value) {
249
+ this.HasChanges = value;
250
+ }
251
+ IsSysAdmin = false;
252
+ /** @deprecated Use {@link IsSysAdmin}. */
253
+ get isSysAdmin() {
254
+ return this.IsSysAdmin;
255
+ }
256
+ /** @deprecated Use {@link IsSysAdmin}. */
257
+ set isSysAdmin(value) {
258
+ this.IsSysAdmin = value;
259
+ }
260
+ PreferenceMode = 'personal';
261
+ /** @deprecated Use {@link PreferenceMode}. */
262
+ get preferenceMode() {
263
+ return this.PreferenceMode;
264
+ }
265
+ /** @deprecated Use {@link PreferenceMode}. */
266
+ set preferenceMode(value) {
267
+ this.PreferenceMode = value;
268
+ }
189
269
  originalConfiguredIds = [];
190
270
  currentUserPreferences = [];
191
271
  allAvailableDashboards = [];
@@ -198,18 +278,18 @@ export class DashboardPreferencesDialogComponent extends BaseAngularComponent {
198
278
  this.error = 'Failed to load dashboard preferences';
199
279
  }
200
280
  finally {
201
- this.loading = false;
281
+ this.Loading = false;
202
282
  }
203
283
  }
204
284
  async loadData() {
205
285
  const md = this.ProviderToUse;
206
286
  // Check if current user is sysadmin
207
- this.isSysAdmin = md.CurrentUser.Type.trim().toLowerCase() === 'owner';
208
- console.log('User is sysadmin:', this.isSysAdmin);
287
+ this.IsSysAdmin = md.CurrentUser.Type.trim().toLowerCase() === 'owner';
288
+ console.log('User is sysadmin:', this.IsSysAdmin);
209
289
  // Default to personal preferences for all users (including sysadmin)
210
- this.preferenceMode = 'personal';
290
+ this.PreferenceMode = 'personal';
211
291
  // Load application name if we're in app scope
212
- if (this.scope === 'App' && this.applicationId) {
292
+ if (this.Scope === 'App' && this.ApplicationId) {
213
293
  await this.loadApplicationName();
214
294
  }
215
295
  // Get cached dashboards from MJ_Metadata dataset
@@ -222,13 +302,13 @@ export class DashboardPreferencesDialogComponent extends BaseAngularComponent {
222
302
  throw new Error('Dashboards dataset not found');
223
303
  }
224
304
  // Filter dashboards by scope
225
- const appFilter = this.applicationId ? ` AND ApplicationID='${this.applicationId}'` : ' AND ApplicationID IS NULL';
305
+ const appFilter = this.ApplicationId ? ` AND ApplicationID='${this.ApplicationId}'` : ' AND ApplicationID IS NULL';
226
306
  this.allAvailableDashboards = dashList.Results.filter((d) => {
227
- if (this.scope === 'Global') {
307
+ if (this.Scope === 'Global') {
228
308
  return d.Scope === 'Global' && !d.ApplicationID;
229
309
  }
230
310
  else {
231
- return UUIDsEqual(d.ApplicationID, this.applicationId); // ignore scope for dashboards that match app id, sometimes they have a global scope as they can be shown globally as well as app specific
311
+ return UUIDsEqual(d.ApplicationID, this.ApplicationId); // ignore scope for dashboards that match app id, sometimes they have a global scope as they can be shown globally as well as app specific
232
312
  }
233
313
  });
234
314
  // Load current user preferences
@@ -236,32 +316,32 @@ export class DashboardPreferencesDialogComponent extends BaseAngularComponent {
236
316
  // Split dashboards into available and configured
237
317
  this.splitDashboards();
238
318
  // Store original state to detect changes
239
- this.originalConfiguredIds = this.configuredDashboards.map(d => d.ID);
319
+ this.originalConfiguredIds = this.ConfiguredDashboards.map(d => d.ID);
240
320
  }
241
321
  async loadApplicationName() {
242
- if (!this.applicationId)
322
+ if (!this.ApplicationId)
243
323
  return;
244
324
  try {
245
325
  const md = this.ProviderToUse;
246
326
  const ds = await md.GetAndCacheDatasetByName("MJ_Metadata");
247
327
  const appList = ds.Results.find(r => r.Code === 'Applications');
248
328
  if (appList) {
249
- const app = appList.Results.find((a) => UUIDsEqual(a.ID, this.applicationId));
250
- this.applicationName = app?.Name || 'Unknown Application';
329
+ const app = appList.Results.find((a) => UUIDsEqual(a.ID, this.ApplicationId));
330
+ this.ApplicationName = app?.Name || 'Unknown Application';
251
331
  }
252
332
  }
253
333
  catch (error) {
254
334
  LogError('Error loading application name', null, error);
255
- this.applicationName = 'Unknown Application';
335
+ this.ApplicationName = 'Unknown Application';
256
336
  }
257
337
  }
258
338
  async loadCurrentPreferences() {
259
339
  const rv = RunView.FromMetadataProvider(this.ProviderToUse);
260
340
  const md = this.ProviderToUse;
261
- const appFilter = this.applicationId ? ` AND ApplicationID='${this.applicationId}'` : '';
262
- const baseCondition = `Scope='${this.scope}'${appFilter}`;
341
+ const appFilter = this.ApplicationId ? ` AND ApplicationID='${this.ApplicationId}'` : '';
342
+ const baseCondition = `Scope='${this.Scope}'${appFilter}`;
263
343
  let filter;
264
- if (this.isSysAdmin && this.scope === 'Global' && this.preferenceMode === 'system') {
344
+ if (this.IsSysAdmin && this.Scope === 'Global' && this.PreferenceMode === 'system') {
265
345
  // Load system defaults only (UserID IS NULL)
266
346
  filter = `UserID IS NULL AND ${baseCondition}`;
267
347
  }
@@ -284,15 +364,15 @@ export class DashboardPreferencesDialogComponent extends BaseAngularComponent {
284
364
  splitDashboards() {
285
365
  const configuredIds = new Set(this.currentUserPreferences.map(p => p.DashboardID));
286
366
  // Get configured dashboards in the right order
287
- this.configuredDashboards = this.currentUserPreferences
367
+ this.ConfiguredDashboards = this.currentUserPreferences
288
368
  .map(pref => this.allAvailableDashboards.find(d => UUIDsEqual(d.ID, pref.DashboardID)))
289
369
  .filter((d) => d !== undefined);
290
370
  // Get available dashboards (not configured)
291
- this.availableDashboards = this.allAvailableDashboards
371
+ this.AvailableDashboards = this.allAvailableDashboards
292
372
  .filter(d => !configuredIds.has(d.ID))
293
373
  .sort((a, b) => a.Name.localeCompare(b.Name));
294
374
  }
295
- onDrop(event) {
375
+ OnDrop(event) {
296
376
  try {
297
377
  if (event.previousContainer === event.container) {
298
378
  // Reordering within the same list
@@ -302,8 +382,8 @@ export class DashboardPreferencesDialogComponent extends BaseAngularComponent {
302
382
  // Moving between lists
303
383
  transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);
304
384
  // If moving to configured dashboards, sort the available list
305
- if (event.container.data === this.configuredDashboards) {
306
- this.availableDashboards.sort((a, b) => a.Name.localeCompare(b.Name));
385
+ if (event.container.data === this.ConfiguredDashboards) {
386
+ this.AvailableDashboards.sort((a, b) => a.Name.localeCompare(b.Name));
307
387
  }
308
388
  }
309
389
  this.checkForChanges();
@@ -317,12 +397,16 @@ export class DashboardPreferencesDialogComponent extends BaseAngularComponent {
317
397
  }, 3000);
318
398
  }
319
399
  }
320
- addDashboard(dashboard) {
400
+ /** @deprecated Use {@link OnDrop}. */
401
+ onDrop(event) {
402
+ return this.OnDrop(event);
403
+ }
404
+ AddDashboard(dashboard) {
321
405
  try {
322
- const index = this.availableDashboards.findIndex(d => UUIDsEqual(d.ID, dashboard.ID));
406
+ const index = this.AvailableDashboards.findIndex(d => UUIDsEqual(d.ID, dashboard.ID));
323
407
  if (index !== -1) {
324
- this.availableDashboards.splice(index, 1);
325
- this.configuredDashboards.push(dashboard);
408
+ this.AvailableDashboards.splice(index, 1);
409
+ this.ConfiguredDashboards.push(dashboard);
326
410
  this.checkForChanges();
327
411
  }
328
412
  }
@@ -335,13 +419,17 @@ export class DashboardPreferencesDialogComponent extends BaseAngularComponent {
335
419
  }, 3000);
336
420
  }
337
421
  }
338
- removeDashboard(dashboard) {
422
+ /** @deprecated Use {@link AddDashboard}. */
423
+ addDashboard(dashboard) {
424
+ return this.AddDashboard(dashboard);
425
+ }
426
+ RemoveDashboard(dashboard) {
339
427
  try {
340
- const index = this.configuredDashboards.findIndex(d => UUIDsEqual(d.ID, dashboard.ID));
428
+ const index = this.ConfiguredDashboards.findIndex(d => UUIDsEqual(d.ID, dashboard.ID));
341
429
  if (index !== -1) {
342
- this.configuredDashboards.splice(index, 1);
343
- this.availableDashboards.push(dashboard);
344
- this.availableDashboards.sort((a, b) => a.Name.localeCompare(b.Name));
430
+ this.ConfiguredDashboards.splice(index, 1);
431
+ this.AvailableDashboards.push(dashboard);
432
+ this.AvailableDashboards.sort((a, b) => a.Name.localeCompare(b.Name));
345
433
  this.checkForChanges();
346
434
  }
347
435
  }
@@ -354,58 +442,66 @@ export class DashboardPreferencesDialogComponent extends BaseAngularComponent {
354
442
  }, 3000);
355
443
  }
356
444
  }
357
- async onPreferenceModeChange() {
445
+ /** @deprecated Use {@link RemoveDashboard}. */
446
+ removeDashboard(dashboard) {
447
+ return this.RemoveDashboard(dashboard);
448
+ }
449
+ async OnPreferenceModeChange() {
358
450
  try {
359
- this.loading = true;
451
+ this.Loading = true;
360
452
  this.error = null;
361
453
  // Reload preferences with new mode
362
454
  await this.loadCurrentPreferences();
363
455
  this.splitDashboards();
364
- this.originalConfiguredIds = this.configuredDashboards.map(d => d.ID);
365
- this.hasChanges = false;
456
+ this.originalConfiguredIds = this.ConfiguredDashboards.map(d => d.ID);
457
+ this.HasChanges = false;
366
458
  }
367
459
  catch (error) {
368
460
  LogError('Error changing preference mode', null, error);
369
461
  this.error = 'Error loading preferences. Please try again.';
370
462
  }
371
463
  finally {
372
- this.loading = false;
464
+ this.Loading = false;
373
465
  }
374
466
  }
467
+ /** @deprecated Use {@link OnPreferenceModeChange}. */
468
+ async onPreferenceModeChange() {
469
+ return this.OnPreferenceModeChange();
470
+ }
375
471
  checkForChanges() {
376
472
  try {
377
- const currentConfiguredIds = this.configuredDashboards.map(d => d.ID);
473
+ const currentConfiguredIds = this.ConfiguredDashboards.map(d => d.ID);
378
474
  // Check if the order or selection has changed
379
- this.hasChanges = currentConfiguredIds.length !== this.originalConfiguredIds.length ||
475
+ this.HasChanges = currentConfiguredIds.length !== this.originalConfiguredIds.length ||
380
476
  currentConfiguredIds.some((id, index) => id !== this.originalConfiguredIds[index]);
381
477
  // Debug logging
382
478
  console.log('Dashboard preferences change check:', {
383
479
  original: this.originalConfiguredIds,
384
480
  current: currentConfiguredIds,
385
- hasChanges: this.hasChanges
481
+ hasChanges: this.HasChanges
386
482
  });
387
483
  }
388
484
  catch (error) {
389
485
  LogError('Error checking for changes', null, error);
390
- this.hasChanges = false;
486
+ this.HasChanges = false;
391
487
  }
392
488
  }
393
- async onSave() {
394
- if (this.saving || !this.hasChanges) {
395
- console.log('Save cancelled:', { saving: this.saving, hasChanges: this.hasChanges });
489
+ async OnSave() {
490
+ if (this.saving || !this.HasChanges) {
491
+ console.log('Save cancelled:', { saving: this.saving, hasChanges: this.HasChanges });
396
492
  return;
397
493
  }
398
494
  try {
399
495
  this.saving = true;
400
- console.log('Starting save process with configured dashboards:', this.configuredDashboards.map(d => ({ id: d.ID, name: d.Name })));
496
+ console.log('Starting save process with configured dashboards:', this.ConfiguredDashboards.map(d => ({ id: d.ID, name: d.Name })));
401
497
  const md = this.ProviderToUse;
402
498
  const rv = RunView.FromMetadataProvider(this.ProviderToUse);
403
499
  // Get existing preferences for this scope
404
- const baseCondition = this.scope === 'Global'
500
+ const baseCondition = this.Scope === 'Global'
405
501
  ? `Scope='Global' AND ApplicationID IS NULL`
406
- : `Scope='App' AND ApplicationID='${this.applicationId}'`;
502
+ : `Scope='App' AND ApplicationID='${this.ApplicationId}'`;
407
503
  let userFilter;
408
- if (this.isSysAdmin && this.scope === 'Global' && this.preferenceMode === 'system') {
504
+ if (this.IsSysAdmin && this.Scope === 'Global' && this.PreferenceMode === 'system') {
409
505
  // Managing system defaults
410
506
  userFilter = `UserID IS NULL AND ${baseCondition}`;
411
507
  }
@@ -426,7 +522,7 @@ export class DashboardPreferencesDialogComponent extends BaseAngularComponent {
426
522
  existingPreferences.forEach(pref => {
427
523
  existingByDashboardId.set(pref.DashboardID, pref);
428
524
  });
429
- const configuredDashboardIds = new Set(this.configuredDashboards.map(d => d.ID));
525
+ const configuredDashboardIds = new Set(this.ConfiguredDashboards.map(d => d.ID));
430
526
  // Step 1: Delete preferences that are no longer configured
431
527
  const prefsToDelete = existingPreferences.filter(pref => !configuredDashboardIds.has(pref.DashboardID));
432
528
  console.log('Preferences to delete:', prefsToDelete.length);
@@ -439,8 +535,8 @@ export class DashboardPreferencesDialogComponent extends BaseAngularComponent {
439
535
  }
440
536
  // Step 2: Update existing preferences or create new ones
441
537
  const newPreferences = [];
442
- for (let i = 0; i < this.configuredDashboards.length; i++) {
443
- const dashboard = this.configuredDashboards[i];
538
+ for (let i = 0; i < this.ConfiguredDashboards.length; i++) {
539
+ const dashboard = this.ConfiguredDashboards[i];
444
540
  const newDisplayOrder = i + 1;
445
541
  let prefEntity = existingByDashboardId.get(dashboard.ID);
446
542
  if (prefEntity) {
@@ -457,7 +553,7 @@ export class DashboardPreferencesDialogComponent extends BaseAngularComponent {
457
553
  console.log(`Creating new preference for dashboard ${dashboard.Name}, order: ${newDisplayOrder}`);
458
554
  prefEntity = await md.GetEntityObject('MJ: Dashboard User Preferences');
459
555
  // Set UserID based on preference mode
460
- if (this.isSysAdmin && this.scope === 'Global' && this.preferenceMode === 'system') {
556
+ if (this.IsSysAdmin && this.Scope === 'Global' && this.PreferenceMode === 'system') {
461
557
  prefEntity.UserID = null; // System default
462
558
  }
463
559
  else {
@@ -465,8 +561,8 @@ export class DashboardPreferencesDialogComponent extends BaseAngularComponent {
465
561
  }
466
562
  prefEntity.DashboardID = dashboard.ID;
467
563
  prefEntity.DisplayOrder = newDisplayOrder;
468
- prefEntity.Scope = this.scope;
469
- prefEntity.ApplicationID = this.applicationId;
564
+ prefEntity.Scope = this.Scope;
565
+ prefEntity.ApplicationID = this.ApplicationId;
470
566
  console.log('Creating preference entity:', {
471
567
  UserID: prefEntity.UserID,
472
568
  DashboardID: prefEntity.DashboardID,
@@ -483,7 +579,7 @@ export class DashboardPreferencesDialogComponent extends BaseAngularComponent {
483
579
  }
484
580
  console.log('Successfully processed', newPreferences.length, 'preferences');
485
581
  // Emit success result
486
- this.result.emit({
582
+ this.Result.emit({
487
583
  saved: true,
488
584
  preferences: newPreferences
489
585
  });
@@ -501,11 +597,15 @@ export class DashboardPreferencesDialogComponent extends BaseAngularComponent {
501
597
  this.saving = false;
502
598
  }
503
599
  }
600
+ /** @deprecated Use {@link OnSave}. */
601
+ async onSave() {
602
+ return this.OnSave();
603
+ }
504
604
  onCancel() {
505
- this.result.emit({ saved: false });
605
+ this.Result.emit({ saved: false });
506
606
  }
507
607
  static ɵfac = /*@__PURE__*/ (() => { let ɵDashboardPreferencesDialogComponent_BaseFactory; return function DashboardPreferencesDialogComponent_Factory(__ngFactoryType__) { return (ɵDashboardPreferencesDialogComponent_BaseFactory || (ɵDashboardPreferencesDialogComponent_BaseFactory = i0.ɵɵgetInheritedFactory(DashboardPreferencesDialogComponent)))(__ngFactoryType__ || DashboardPreferencesDialogComponent); }; })();
508
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DashboardPreferencesDialogComponent, selectors: [["mj-dashboard-preferences-dialog"]], inputs: { applicationId: "applicationId", scope: "scope" }, outputs: { result: "result" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 21, vars: 11, consts: [["availableList", "cdkDropList"], ["configuredList", "cdkDropList"], ["Title", "Dashboard Preferences", 3, "Close", "Visible", "Width", "Height", "MinWidth"], [1, "dashboard-preferences-dialog"], [1, "dialog-header"], [1, "fa-solid", "fa-sliders"], [1, "scope-indicator"], [1, "preference-mode-selector"], [1, "dialog-content"], [1, "loading-overlay"], ["Variant", "error", "Size", "compact", "Icon", "fa-solid fa-triangle-exclamation", 3, "Title"], [1, "preferences-panels"], ["type", "button", 1, "btn", "btn-secondary", 3, "click"], [1, "fa-solid", "fa-times"], ["type", "button", 1, "btn", "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-globe"], [1, "fa-solid", "fa-layer-group"], ["type", "radio", "name", "preferenceMode", "value", "personal", 3, "ngModelChange", "change", "ngModel"], ["type", "radio", "name", "preferenceMode", "value", "system", 3, "ngModelChange", "change", "ngModel"], ["text", "Loading preferences...", "size", "large"], [1, "panel", "available-panel"], [1, "fa-solid", "fa-list"], ["cdkDropList", "", 1, "dashboard-list", 3, "cdkDropListDropped", "cdkDropListData", "cdkDropListConnectedTo"], ["Variant", "success", "Size", "compact", "Icon", "fa-solid fa-circle-check", "Title", "All dashboards are configured"], ["cdkDrag", "", 1, "dashboard-item", "available-item", 3, "cdkDragData"], [1, "panel", "configured-panel"], [1, "fa-solid", "fa-list-ol"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No dashboards configured"], ["cdkDrag", "", 1, "dashboard-item", "configured-item", 3, "cdkDragData"], [1, "dashboard-item-content"], [1, "fa-solid", "fa-grip-vertical", "drag-handle"], [1, "dashboard-info"], [1, "dashboard-name"], [1, "dashboard-description"], ["type", "button", "title", "Add to configured dashboards", 1, "add-button", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "order-number"], ["type", "button", "title", "Remove from configured dashboards", 1, "remove-button", 3, "click"], ["size", "small", 3, "showText"], [1, "fa-solid", "fa-check"]], template: function DashboardPreferencesDialogComponent_Template(rf, ctx) { if (rf & 1) {
608
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DashboardPreferencesDialogComponent, selectors: [["mj-dashboard-preferences-dialog"]], inputs: { ApplicationId: "ApplicationId", applicationId: "applicationId", Scope: "Scope", scope: "scope" }, outputs: { Result: "Result", result: "result" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 21, vars: 11, consts: [["availableList", "cdkDropList"], ["configuredList", "cdkDropList"], ["Title", "Dashboard Preferences", 3, "Close", "Visible", "Width", "Height", "MinWidth"], [1, "dashboard-preferences-dialog"], [1, "dialog-header"], [1, "fa-solid", "fa-sliders"], [1, "scope-indicator"], [1, "preference-mode-selector"], [1, "dialog-content"], [1, "loading-overlay"], ["Variant", "error", "Size", "compact", "Icon", "fa-solid fa-triangle-exclamation", 3, "Title"], [1, "preferences-panels"], ["type", "button", 1, "btn", "btn-secondary", 3, "click"], [1, "fa-solid", "fa-times"], ["type", "button", 1, "btn", "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-globe"], [1, "fa-solid", "fa-layer-group"], ["type", "radio", "name", "preferenceMode", "value", "personal", 3, "ngModelChange", "change", "ngModel"], ["type", "radio", "name", "preferenceMode", "value", "system", 3, "ngModelChange", "change", "ngModel"], ["text", "Loading preferences...", "size", "large"], [1, "panel", "available-panel"], [1, "fa-solid", "fa-list"], ["cdkDropList", "", 1, "dashboard-list", 3, "cdkDropListDropped", "cdkDropListData", "cdkDropListConnectedTo"], ["Variant", "success", "Size", "compact", "Icon", "fa-solid fa-circle-check", "Title", "All dashboards are configured"], ["cdkDrag", "", 1, "dashboard-item", "available-item", 3, "cdkDragData"], [1, "panel", "configured-panel"], [1, "fa-solid", "fa-list-ol"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No dashboards configured"], ["cdkDrag", "", 1, "dashboard-item", "configured-item", 3, "cdkDragData"], [1, "dashboard-item-content"], [1, "fa-solid", "fa-grip-vertical", "drag-handle"], [1, "dashboard-info"], [1, "dashboard-name"], [1, "dashboard-description"], ["type", "button", "title", "Add to configured dashboards", 1, "add-button", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "order-number"], ["type", "button", "title", "Remove from configured dashboards", 1, "remove-button", 3, "click"], ["size", "small", 3, "showText"], [1, "fa-solid", "fa-check"]], template: function DashboardPreferencesDialogComponent_Template(rf, ctx) { if (rf & 1) {
509
609
  i0.ɵɵelementStart(0, "mj-dialog", 2);
510
610
  i0.ɵɵlistener("Close", function DashboardPreferencesDialogComponent_Template_mj_dialog_Close_0_listener() { return ctx.onCancel(); });
511
611
  i0.ɵɵelementStart(1, "div", 3)(2, "div", 4)(3, "h3");
@@ -552,10 +652,16 @@ export class DashboardPreferencesDialogComponent extends BaseAngularComponent {
552
652
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DashboardPreferencesDialogComponent, [{
553
653
  type: Component,
554
654
  args: [{ standalone: false, selector: 'mj-dashboard-preferences-dialog', template: "<mj-dialog [Visible]=\"true\" Title=\"Dashboard Preferences\"\n [Width]=\"800\"\n [Height]=\"600\"\n [MinWidth]=\"600\"\n (Close)=\"onCancel()\">\n<div class=\"dashboard-preferences-dialog\">\n <div class=\"dialog-header\">\n <h3><i class=\"fa-solid fa-sliders\"></i> Dashboard Preferences</h3>\n <p class=\"scope-indicator\">\n @if (scope === 'Global') {\n <i class=\"fa-solid fa-globe\"></i> Global Scope\n } @else {\n <i class=\"fa-solid fa-layer-group\"></i> Application: {{ applicationName }}\n }\n </p>\n @if (isSysAdmin && scope === 'Global') {\n <div class=\"preference-mode-selector\">\n <label>\n <input type=\"radio\"\n name=\"preferenceMode\"\n value=\"personal\"\n [(ngModel)]=\"preferenceMode\"\n (change)=\"onPreferenceModeChange()\">\n Personal Preferences\n </label>\n <label>\n <input type=\"radio\"\n name=\"preferenceMode\"\n value=\"system\"\n [(ngModel)]=\"preferenceMode\"\n (change)=\"onPreferenceModeChange()\">\n System Defaults\n </label>\n </div>\n }\n </div>\n\n <div class=\"dialog-content\">\n @if (loading) {\n <div class=\"loading-overlay\">\n <mj-loading text=\"Loading preferences...\" size=\"large\"></mj-loading>\n </div>\n }\n\n @if (error) {\n <mj-empty-state\n Variant=\"error\"\n Size=\"compact\"\n Icon=\"fa-solid fa-triangle-exclamation\"\n [Title]=\"error\" />\n }\n\n @if (!loading && !error) {\n <div class=\"preferences-panels\">\n <!-- Available Dashboards Panel -->\n <div class=\"panel available-panel\">\n <h4><i class=\"fa-solid fa-list\"></i> Available Dashboards</h4>\n <div class=\"dashboard-list\"\n cdkDropList\n #availableList=\"cdkDropList\"\n [cdkDropListData]=\"availableDashboards\"\n [cdkDropListConnectedTo]=\"[configuredList]\"\n (cdkDropListDropped)=\"onDrop($event)\">\n\n @if (availableDashboards.length === 0) {\n <mj-empty-state\n Variant=\"success\"\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-check\"\n Title=\"All dashboards are configured\" />\n }\n\n @for (dashboard of availableDashboards; track dashboard.ID) {\n <div class=\"dashboard-item available-item\"\n cdkDrag\n [cdkDragData]=\"dashboard\">\n <div class=\"dashboard-item-content\">\n <i class=\"fa-solid fa-grip-vertical drag-handle\"></i>\n <div class=\"dashboard-info\">\n <span class=\"dashboard-name\">{{ dashboard.Name }}</span>\n @if (dashboard.Description) {\n <span class=\"dashboard-description\">{{ dashboard.Description }}</span>\n }\n </div>\n <button type=\"button\"\n class=\"add-button\"\n (click)=\"addDashboard(dashboard)\"\n title=\"Add to configured dashboards\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n\n <!-- Configured Dashboards Panel -->\n <div class=\"panel configured-panel\">\n <h4><i class=\"fa-solid fa-list-ol\"></i> Configured Dashboards</h4>\n <div class=\"dashboard-list\"\n cdkDropList\n #configuredList=\"cdkDropList\"\n [cdkDropListData]=\"configuredDashboards\"\n [cdkDropListConnectedTo]=\"[availableList]\"\n (cdkDropListDropped)=\"onDrop($event)\">\n\n @if (configuredDashboards.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-info\"\n Title=\"No dashboards configured\" />\n }\n\n @for (dashboard of configuredDashboards; track dashboard.ID; let i = $index) {\n <div class=\"dashboard-item configured-item\"\n cdkDrag\n [cdkDragData]=\"dashboard\">\n <div class=\"dashboard-item-content\">\n <i class=\"fa-solid fa-grip-vertical drag-handle\"></i>\n <span class=\"order-number\">{{ i + 1 }}</span>\n <div class=\"dashboard-info\">\n <span class=\"dashboard-name\">{{ dashboard.Name }}</span>\n @if (dashboard.Description) {\n <span class=\"dashboard-description\">{{ dashboard.Description }}</span>\n }\n </div>\n <button type=\"button\"\n class=\"remove-button\"\n (click)=\"removeDashboard(dashboard)\"\n title=\"Remove from configured dashboards\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n\n <mj-dialog-actions>\n <button type=\"button\"\n class=\"btn btn-secondary\"\n (click)=\"onCancel()\">\n <i class=\"fa-solid fa-times\"></i> Cancel\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n [disabled]=\"!hasChanges || saving\"\n (click)=\"onSave()\">\n @if (saving) {\n <mj-loading [showText]=\"false\" size=\"small\"></mj-loading>\n Saving...\n } @else {\n <i class=\"fa-solid fa-check\"></i> Save Changes\n }\n </button>\n </mj-dialog-actions>\n</div>\n</mj-dialog>\n", styles: [".dashboard-preferences-dialog {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.dialog-header {\n padding: 20px 24px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.dialog-header h3 {\n margin: 0 0 8px 0;\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.dialog-header h3 i {\n margin-right: 8px;\n color: var(--mj-text-secondary);\n}\n\n.scope-indicator {\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.scope-indicator i {\n margin-right: 6px;\n}\n\n.preference-mode-selector {\n margin-top: 12px;\n display: flex;\n gap: 20px;\n}\n\n.preference-mode-selector label {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.preference-mode-selector input[type=\"radio\"] {\n margin: 0;\n}\n\n.dialog-content {\n flex: 1;\n overflow: hidden;\n padding: 20px 24px;\n}\n\n.loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 200px;\n flex-direction: column;\n gap: 12px;\n}\n\n.preferences-panels {\n display: flex;\n gap: 20px;\n height: 100%;\n}\n\n.panel {\n flex: 1;\n display: flex;\n flex-direction: column;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.panel h4 {\n margin: 0;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.panel h4 i {\n margin-right: 8px;\n color: var(--mj-text-muted);\n}\n\n.dashboard-list {\n flex: 1;\n overflow-y: auto;\n padding: 8px;\n}\n\n.dashboard-item {\n margin-bottom: 8px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n transition: all 0.2s ease;\n cursor: move;\n}\n\n.dashboard-item:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 4px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.dashboard-item.cdk-drag-preview {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n transform: rotate(2deg);\n}\n\n.dashboard-item.cdk-drag-placeholder {\n opacity: 0.3;\n border-style: dashed;\n}\n\n.dashboard-item-content {\n display: flex;\n align-items: center;\n padding: 12px;\n gap: 12px;\n}\n\n.drag-handle {\n color: var(--mj-text-disabled);\n cursor: move;\n font-size: 14px;\n}\n\n.order-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n background: var(--mj-brand-primary);\n color: white;\n border-radius: 50%;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.dashboard-info {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.dashboard-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n font-size: 14px;\n}\n\n.dashboard-description {\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.3;\n}\n\n.add-button {\n background: none;\n border: none;\n padding: 4px;\n cursor: pointer;\n color: var(--mj-status-success);\n border-radius: 4px;\n transition: background-color 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n opacity: 0.7;\n}\n\n.add-button:hover {\n background-color: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n opacity: 1;\n}\n\n.remove-button {\n background: none;\n border: none;\n padding: 4px;\n cursor: pointer;\n color: var(--mj-status-error);\n border-radius: 4px;\n transition: background-color 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n}\n\n.remove-button:hover {\n background-color: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n}\n\n.cdk-drop-list-dragging .dashboard-item:not(.cdk-drag-placeholder) {\n transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);\n}\n\n.dialog-footer {\n padding: 16px 24px;\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n background: var(--mj-bg-surface-card);\n}\n\n.btn {\n padding: 8px 16px;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n border: 1px solid transparent;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.btn-secondary {\n background: var(--mj-bg-surface);\n border-color: var(--mj-text-muted);\n color: var(--mj-text-muted);\n}\n\n.btn-secondary:hover:not(:disabled) {\n background: var(--mj-text-muted);\n color: white;\n}\n\n.btn-primary {\n background: var(--mj-brand-primary);\n color: white;\n border-color: var(--mj-brand-primary);\n}\n\n.btn-primary:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n border-color: var(--mj-brand-primary-hover);\n}\n\n/* Responsive design */\n@media (max-width: 768px) {\n .dashboard-preferences-dialog {\n width: 95vw;\n max-height: 90vh;\n }\n\n .preferences-panels {\n flex-direction: column;\n gap: 16px;\n }\n\n .panel {\n min-height: 200px;\n }\n\n .dashboard-list {\n min-height: 150px;\n }\n}\n"] }]
555
- }], null, { applicationId: [{
655
+ }], null, { ApplicationId: [{
656
+ type: Input
657
+ }], applicationId: [{
658
+ type: Input
659
+ }], Scope: [{
556
660
  type: Input
557
661
  }], scope: [{
558
662
  type: Input
663
+ }], Result: [{
664
+ type: Output
559
665
  }], result: [{
560
666
  type: Output
561
667
  }] }); })();