@memberjunction/ng-explorer-core 5.42.0 → 5.44.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 (61) hide show
  1. package/dist/generated/lazy-feature-config.d.ts +1 -1
  2. package/dist/generated/lazy-feature-config.d.ts.map +1 -1
  3. package/dist/generated/lazy-feature-config.js +14 -3
  4. package/dist/generated/lazy-feature-config.js.map +1 -1
  5. package/dist/lib/about/about-dialog.component.d.ts +0 -1
  6. package/dist/lib/about/about-dialog.component.d.ts.map +1 -1
  7. package/dist/lib/about/about-dialog.component.js +217 -218
  8. package/dist/lib/about/about-dialog.component.js.map +1 -1
  9. package/dist/lib/command-palette/command-palette.component.js +8 -14
  10. package/dist/lib/command-palette/command-palette.component.js.map +1 -1
  11. package/dist/lib/conversation-feedback/conversation-feedback.js +66 -73
  12. package/dist/lib/conversation-feedback/conversation-feedback.js.map +1 -1
  13. package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js +35 -45
  14. package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js.map +1 -1
  15. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +2 -1
  16. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
  17. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +14 -8
  18. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
  19. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
  20. package/dist/lib/resource-wrappers/dashboard-resource.component.js +9 -8
  21. package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
  22. package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts +62 -2
  23. package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts.map +1 -1
  24. package/dist/lib/resource-wrappers/livekit-room-resource.component.js +604 -105
  25. package/dist/lib/resource-wrappers/livekit-room-resource.component.js.map +1 -1
  26. package/dist/lib/resource-wrappers/search-results-resource.component.d.ts.map +1 -1
  27. package/dist/lib/resource-wrappers/search-results-resource.component.js +35 -43
  28. package/dist/lib/resource-wrappers/search-results-resource.component.js.map +1 -1
  29. package/dist/lib/shell/components/tabs/component-cache-manager.d.ts +10 -2
  30. package/dist/lib/shell/components/tabs/component-cache-manager.d.ts.map +1 -1
  31. package/dist/lib/shell/components/tabs/component-cache-manager.js +19 -1
  32. package/dist/lib/shell/components/tabs/component-cache-manager.js.map +1 -1
  33. package/dist/lib/shell/components/tabs/tab-container.component.d.ts +1 -0
  34. package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
  35. package/dist/lib/shell/components/tabs/tab-container.component.js +3 -2
  36. package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
  37. package/dist/lib/shell/shell.module.d.ts +1 -1
  38. package/dist/lib/shell/shell.module.d.ts.map +1 -1
  39. package/dist/lib/shell/shell.module.js +4 -1
  40. package/dist/lib/shell/shell.module.js.map +1 -1
  41. package/dist/lib/single-dashboard/Components/add-item/add-item.component.js +5 -7
  42. package/dist/lib/single-dashboard/Components/add-item/add-item.component.js.map +1 -1
  43. package/dist/lib/single-dashboard/single-dashboard.component.js +17 -27
  44. package/dist/lib/single-dashboard/single-dashboard.component.js.map +1 -1
  45. package/dist/lib/single-list-detail/single-list-detail.component.d.ts +6 -2
  46. package/dist/lib/single-list-detail/single-list-detail.component.d.ts.map +1 -1
  47. package/dist/lib/single-list-detail/single-list-detail.component.js +48 -57
  48. package/dist/lib/single-list-detail/single-list-detail.component.js.map +1 -1
  49. package/dist/lib/single-search-result/single-search-result.component.js +17 -22
  50. package/dist/lib/single-search-result/single-search-result.component.js.map +1 -1
  51. package/dist/lib/user-notifications/user-notifications.component.js +60 -75
  52. package/dist/lib/user-notifications/user-notifications.component.js.map +1 -1
  53. package/dist/module.d.ts +1 -1
  54. package/dist/module.d.ts.map +1 -1
  55. package/dist/module.js +12 -5
  56. package/dist/module.js.map +1 -1
  57. package/package.json +47 -47
  58. package/dist/lib/__tests__/explorer-core.test.d.ts +0 -2
  59. package/dist/lib/__tests__/explorer-core.test.d.ts.map +0 -1
  60. package/dist/lib/__tests__/explorer-core.test.js +0 -229
  61. package/dist/lib/__tests__/explorer-core.test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-preferences-dialog.component.js","sourceRoot":"","sources":["../../../src/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.ts","../../../src/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { CdkDragDrop, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { LogError, Metadata, RunView } from '@memberjunction/core';\nimport { MJDashboardEntityExtended, MJDashboardUserPreferenceEntity, MJApplicationEntity } from '@memberjunction/core-entities';\nimport { UUIDsEqual } from '@memberjunction/global';\n\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nexport interface DashboardPreferencesResult {\n saved: boolean;\n preferences?: MJDashboardUserPreferenceEntity[];\n}\n\n@Component({\n standalone: false,\n selector: 'mj-dashboard-preferences-dialog',\n templateUrl: './dashboard-preferences-dialog.component.html',\n styleUrls: ['./dashboard-preferences-dialog.component.css']\n})\nexport class DashboardPreferencesDialogComponent extends BaseAngularComponent implements OnInit {\n @Input() public applicationId: string | null = null;\n @Input() public scope: 'Global' | 'App' = 'Global';\n @Output() public result = new EventEmitter<DashboardPreferencesResult>();\n\n public availableDashboards: MJDashboardEntityExtended[] = [];\n public configuredDashboards: MJDashboardEntityExtended[] = [];\n public applicationName: string = '';\n public loading: boolean = true;\n public saving: boolean = false;\n public error: string | null = null;\n public hasChanges: boolean = false;\n public isSysAdmin: boolean = false;\n public preferenceMode: 'personal' | 'system' = 'personal';\n\n private originalConfiguredIds: string[] = [];\n private currentUserPreferences: MJDashboardUserPreferenceEntity[] = [];\n private allAvailableDashboards: MJDashboardEntityExtended[] = [];\n\n async ngOnInit(): Promise<void> {\n try {\n await this.loadData();\n } catch (error) {\n LogError('Error initializing dashboard preferences dialog', null, error);\n this.error = 'Failed to load dashboard preferences';\n } finally {\n this.loading = false;\n }\n }\n\n private async loadData(): Promise<void> {\n const md = this.ProviderToUse;\n \n // Check if current user is sysadmin\n this.isSysAdmin = md.CurrentUser.Type.trim().toLowerCase() === 'owner';\n console.log('User is sysadmin:', this.isSysAdmin);\n \n // Default to personal preferences for all users (including sysadmin)\n this.preferenceMode = 'personal';\n \n // Load application name if we're in app scope\n if (this.scope === 'App' && this.applicationId) {\n await this.loadApplicationName();\n }\n\n // Get cached dashboards from MJ_Metadata dataset\n const ds = await md.GetAndCacheDatasetByName(\"MJ_Metadata\");\n if (!ds || !ds.Success) {\n throw new Error(ds?.Status || 'Failed to load metadata dataset');\n }\n\n const dashList = ds.Results.find(r => r.Code === 'Dashboards');\n if (!dashList) {\n throw new Error('Dashboards dataset not found');\n }\n\n // Filter dashboards by scope\n const appFilter = this.applicationId ? ` AND ApplicationID='${this.applicationId}'` : ' AND ApplicationID IS NULL';\n this.allAvailableDashboards = dashList.Results.filter((d: MJDashboardEntityExtended) => {\n if (this.scope === 'Global') {\n return d.Scope === 'Global' && !d.ApplicationID;\n } else {\n 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\n }\n });\n\n // Load current user preferences\n await this.loadCurrentPreferences();\n \n // Split dashboards into available and configured\n this.splitDashboards();\n \n // Store original state to detect changes\n this.originalConfiguredIds = this.configuredDashboards.map(d => d.ID);\n }\n\n private async loadApplicationName(): Promise<void> {\n if (!this.applicationId) return;\n \n try {\n const md = this.ProviderToUse;\n const ds = await md.GetAndCacheDatasetByName(\"MJ_Metadata\");\n const appList = ds.Results.find(r => r.Code === 'Applications');\n if (appList) {\n const app = appList.Results.find((a: MJApplicationEntity) => UUIDsEqual(a.ID, this.applicationId));\n this.applicationName = app?.Name || 'Unknown Application';\n }\n } catch (error) {\n LogError('Error loading application name', null, error);\n this.applicationName = 'Unknown Application';\n }\n }\n\n private async loadCurrentPreferences(): Promise<void> {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const md = this.ProviderToUse;\n \n const appFilter = this.applicationId ? ` AND ApplicationID='${this.applicationId}'` : '';\n const baseCondition = `Scope='${this.scope}'${appFilter}`;\n \n let filter: string;\n \n if (this.isSysAdmin && this.scope === 'Global' && this.preferenceMode === 'system') {\n // Load system defaults only (UserID IS NULL)\n filter = `UserID IS NULL AND ${baseCondition}`;\n } else {\n // Load personal user preferences (including for sysadmin when in personal mode)\n // For personal mode, we ONLY load the user's specific preferences, no fallback to system defaults\n // This allows sysadmin to see their actual personal preferences vs system defaults\n filter = `UserID='${md.CurrentUser.ID}' AND ${baseCondition}`;\n }\n\n console.log('Loading preferences with filter:', filter);\n\n const prefsResult = await rv.RunView<MJDashboardUserPreferenceEntity>({\n EntityName: 'MJ: Dashboard User Preferences',\n ExtraFilter: filter,\n ResultType: 'entity_object',\n OrderBy: 'DisplayOrder',\n });\n\n this.currentUserPreferences = prefsResult?.Results || [];\n console.log('Loaded preferences:', this.currentUserPreferences.length);\n }\n\n private splitDashboards(): void {\n const configuredIds = new Set(this.currentUserPreferences.map(p => p.DashboardID));\n \n // Get configured dashboards in the right order\n this.configuredDashboards = this.currentUserPreferences\n .map(pref => this.allAvailableDashboards.find(d => UUIDsEqual(d.ID, pref.DashboardID)))\n .filter((d): d is MJDashboardEntityExtended => d !== undefined);\n \n // Get available dashboards (not configured)\n this.availableDashboards = this.allAvailableDashboards\n .filter(d => !configuredIds.has(d.ID))\n .sort((a, b) => a.Name.localeCompare(b.Name));\n }\n\n public onDrop(event: CdkDragDrop<MJDashboardEntityExtended[]>): void {\n try {\n if (event.previousContainer === event.container) {\n // Reordering within the same list\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n // Moving between lists\n transferArrayItem(\n event.previousContainer.data,\n event.container.data,\n event.previousIndex,\n event.currentIndex\n );\n \n // If moving to configured dashboards, sort the available list\n if (event.container.data === this.configuredDashboards) {\n this.availableDashboards.sort((a, b) => a.Name.localeCompare(b.Name));\n }\n }\n \n this.checkForChanges();\n } catch (error) {\n LogError('Error in drag drop operation', null, error);\n this.error = 'Error reordering dashboards. Please try again.';\n \n // Clear error after 3 seconds\n setTimeout(() => {\n this.error = null;\n }, 3000);\n }\n }\n\n public addDashboard(dashboard: MJDashboardEntityExtended): void {\n try {\n const index = this.availableDashboards.findIndex(d => UUIDsEqual(d.ID, dashboard.ID));\n if (index !== -1) {\n this.availableDashboards.splice(index, 1);\n this.configuredDashboards.push(dashboard);\n this.checkForChanges();\n }\n } catch (error) {\n LogError('Error adding dashboard', null, error);\n this.error = 'Error adding dashboard. Please try again.';\n \n // Clear error after 3 seconds\n setTimeout(() => {\n this.error = null;\n }, 3000);\n }\n }\n\n public removeDashboard(dashboard: MJDashboardEntityExtended): void {\n try {\n const index = this.configuredDashboards.findIndex(d => UUIDsEqual(d.ID, dashboard.ID));\n if (index !== -1) {\n this.configuredDashboards.splice(index, 1);\n this.availableDashboards.push(dashboard);\n this.availableDashboards.sort((a, b) => a.Name.localeCompare(b.Name));\n this.checkForChanges();\n }\n } catch (error) {\n LogError('Error removing dashboard', null, error);\n this.error = 'Error removing dashboard. Please try again.';\n \n // Clear error after 3 seconds\n setTimeout(() => {\n this.error = null;\n }, 3000);\n }\n }\n\n public async onPreferenceModeChange(): Promise<void> {\n try {\n this.loading = true;\n this.error = null;\n \n // Reload preferences with new mode\n await this.loadCurrentPreferences();\n this.splitDashboards();\n this.originalConfiguredIds = this.configuredDashboards.map(d => d.ID);\n this.hasChanges = false;\n \n } catch (error) {\n LogError('Error changing preference mode', null, error);\n this.error = 'Error loading preferences. Please try again.';\n } finally {\n this.loading = false;\n }\n }\n\n private checkForChanges(): void {\n try {\n const currentConfiguredIds = this.configuredDashboards.map(d => d.ID);\n \n // Check if the order or selection has changed\n this.hasChanges = currentConfiguredIds.length !== this.originalConfiguredIds.length ||\n currentConfiguredIds.some((id, index) => id !== this.originalConfiguredIds[index]);\n \n // Debug logging\n console.log('Dashboard preferences change check:', {\n original: this.originalConfiguredIds,\n current: currentConfiguredIds,\n hasChanges: this.hasChanges\n });\n } catch (error) {\n LogError('Error checking for changes', null, error);\n this.hasChanges = false;\n }\n }\n\n public async onSave(): Promise<void> {\n if (this.saving || !this.hasChanges) {\n console.log('Save cancelled:', { saving: this.saving, hasChanges: this.hasChanges });\n return;\n }\n\n try {\n this.saving = true;\n console.log('Starting save process with configured dashboards:', this.configuredDashboards.map(d => ({ id: d.ID, name: d.Name })));\n \n const md = this.ProviderToUse;\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n\n // Get existing preferences for this scope\n const baseCondition = this.scope === 'Global' \n ? `Scope='Global' AND ApplicationID IS NULL`\n : `Scope='App' AND ApplicationID='${this.applicationId}'`;\n \n let userFilter: string;\n \n if (this.isSysAdmin && this.scope === 'Global' && this.preferenceMode === 'system') {\n // Managing system defaults\n userFilter = `UserID IS NULL AND ${baseCondition}`;\n } else {\n // Managing personal preferences\n userFilter = `UserID='${md.CurrentUser.ID}' AND ${baseCondition}`;\n }\n \n console.log('Loading existing preferences with filter:', userFilter);\n \n const existingPrefs = await rv.RunView<MJDashboardUserPreferenceEntity>({\n EntityName: 'MJ: Dashboard User Preferences',\n ExtraFilter: userFilter,\n ResultType: 'entity_object',\n });\n\n const existingPreferences = existingPrefs?.Results || [];\n console.log('Found existing preferences:', existingPreferences.length);\n\n // Create maps for efficient lookups\n const existingByDashboardId = new Map<string, MJDashboardUserPreferenceEntity>();\n existingPreferences.forEach(pref => {\n existingByDashboardId.set(pref.DashboardID, pref);\n });\n\n const configuredDashboardIds = new Set(this.configuredDashboards.map(d => d.ID));\n\n // Step 1: Delete preferences that are no longer configured\n const prefsToDelete = existingPreferences.filter(pref => !configuredDashboardIds.has(pref.DashboardID));\n console.log('Preferences to delete:', prefsToDelete.length);\n \n for (const pref of prefsToDelete) {\n console.log('Deleting preference for dashboard:', pref.DashboardID);\n if (!await pref.Delete()) {\n const errorMsg = pref.LatestResult?.Error || pref.LatestResult?.Message || 'Unknown error';\n throw new Error(`Failed to delete preference: ${errorMsg}`);\n }\n }\n\n // Step 2: Update existing preferences or create new ones\n const newPreferences: MJDashboardUserPreferenceEntity[] = [];\n \n for (let i = 0; i < this.configuredDashboards.length; i++) {\n const dashboard = this.configuredDashboards[i];\n const newDisplayOrder = i + 1;\n \n let prefEntity = existingByDashboardId.get(dashboard.ID);\n \n if (prefEntity) {\n // Update existing preference\n console.log(`Updating existing preference for dashboard ${dashboard.Name}, new order: ${newDisplayOrder}`);\n prefEntity.DisplayOrder = newDisplayOrder;\n \n if (!await prefEntity.Save()) {\n const errorMsg = prefEntity.LatestResult?.Error || prefEntity.LatestResult?.Message || 'Unknown error';\n throw new Error(`Failed to update preference for dashboard ${dashboard.Name}: ${errorMsg}`);\n }\n } else {\n // Create new preference\n console.log(`Creating new preference for dashboard ${dashboard.Name}, order: ${newDisplayOrder}`);\n prefEntity = await md.GetEntityObject<MJDashboardUserPreferenceEntity>('MJ: Dashboard User Preferences');\n \n // Set UserID based on preference mode\n if (this.isSysAdmin && this.scope === 'Global' && this.preferenceMode === 'system') {\n prefEntity.UserID = null; // System default\n } else {\n prefEntity.UserID = md.CurrentUser.ID; // Personal preference\n }\n \n prefEntity.DashboardID = dashboard.ID;\n prefEntity.DisplayOrder = newDisplayOrder;\n prefEntity.Scope = this.scope;\n prefEntity.ApplicationID = this.applicationId;\n\n console.log('Creating preference entity:', {\n UserID: prefEntity.UserID,\n DashboardID: prefEntity.DashboardID,\n DisplayOrder: prefEntity.DisplayOrder,\n Scope: prefEntity.Scope,\n ApplicationID: prefEntity.ApplicationID\n });\n\n if (!await prefEntity.Save()) {\n const errorMsg = prefEntity.LatestResult?.Error || prefEntity.LatestResult?.Message || 'Unknown error';\n throw new Error(`Failed to create preference for dashboard ${dashboard.Name}: ${errorMsg}`);\n }\n }\n \n newPreferences.push(prefEntity);\n }\n\n console.log('Successfully processed', newPreferences.length, 'preferences');\n\n // Emit success result\n this.result.emit({\n saved: true,\n preferences: newPreferences\n });\n\n } catch (error) {\n console.error('Save error:', error);\n LogError('Error saving dashboard preferences', null, error);\n this.error = `Failed to save preferences: ${error instanceof Error ? error.message : 'Unknown error'}`;\n \n // Clear error after 5 seconds\n setTimeout(() => {\n this.error = null;\n }, 5000);\n } finally {\n this.saving = false;\n }\n }\n\n public onCancel(): void {\n this.result.emit({ saved: false });\n }\n}","<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 <div class=\"error-container\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ error }}\n </div>\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 <div class=\"empty-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n All dashboards are configured\n </div>\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 <div class=\"empty-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n No dashboards configured\n </div>\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"]}
1
+ {"version":3,"file":"dashboard-preferences-dialog.component.js","sourceRoot":"","sources":["../../../src/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.ts","../../../src/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { CdkDragDrop, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { LogError, Metadata, RunView } from '@memberjunction/core';\nimport { MJDashboardEntityExtended, MJDashboardUserPreferenceEntity, MJApplicationEntity } from '@memberjunction/core-entities';\nimport { UUIDsEqual } from '@memberjunction/global';\n\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nexport interface DashboardPreferencesResult {\n saved: boolean;\n preferences?: MJDashboardUserPreferenceEntity[];\n}\n\n@Component({\n standalone: false,\n selector: 'mj-dashboard-preferences-dialog',\n templateUrl: './dashboard-preferences-dialog.component.html',\n styleUrls: ['./dashboard-preferences-dialog.component.css']\n})\nexport class DashboardPreferencesDialogComponent extends BaseAngularComponent implements OnInit {\n @Input() public applicationId: string | null = null;\n @Input() public scope: 'Global' | 'App' = 'Global';\n @Output() public result = new EventEmitter<DashboardPreferencesResult>();\n\n public availableDashboards: MJDashboardEntityExtended[] = [];\n public configuredDashboards: MJDashboardEntityExtended[] = [];\n public applicationName: string = '';\n public loading: boolean = true;\n public saving: boolean = false;\n public error: string | null = null;\n public hasChanges: boolean = false;\n public isSysAdmin: boolean = false;\n public preferenceMode: 'personal' | 'system' = 'personal';\n\n private originalConfiguredIds: string[] = [];\n private currentUserPreferences: MJDashboardUserPreferenceEntity[] = [];\n private allAvailableDashboards: MJDashboardEntityExtended[] = [];\n\n async ngOnInit(): Promise<void> {\n try {\n await this.loadData();\n } catch (error) {\n LogError('Error initializing dashboard preferences dialog', null, error);\n this.error = 'Failed to load dashboard preferences';\n } finally {\n this.loading = false;\n }\n }\n\n private async loadData(): Promise<void> {\n const md = this.ProviderToUse;\n \n // Check if current user is sysadmin\n this.isSysAdmin = md.CurrentUser.Type.trim().toLowerCase() === 'owner';\n console.log('User is sysadmin:', this.isSysAdmin);\n \n // Default to personal preferences for all users (including sysadmin)\n this.preferenceMode = 'personal';\n \n // Load application name if we're in app scope\n if (this.scope === 'App' && this.applicationId) {\n await this.loadApplicationName();\n }\n\n // Get cached dashboards from MJ_Metadata dataset\n const ds = await md.GetAndCacheDatasetByName(\"MJ_Metadata\");\n if (!ds || !ds.Success) {\n throw new Error(ds?.Status || 'Failed to load metadata dataset');\n }\n\n const dashList = ds.Results.find(r => r.Code === 'Dashboards');\n if (!dashList) {\n throw new Error('Dashboards dataset not found');\n }\n\n // Filter dashboards by scope\n const appFilter = this.applicationId ? ` AND ApplicationID='${this.applicationId}'` : ' AND ApplicationID IS NULL';\n this.allAvailableDashboards = dashList.Results.filter((d: MJDashboardEntityExtended) => {\n if (this.scope === 'Global') {\n return d.Scope === 'Global' && !d.ApplicationID;\n } else {\n 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\n }\n });\n\n // Load current user preferences\n await this.loadCurrentPreferences();\n \n // Split dashboards into available and configured\n this.splitDashboards();\n \n // Store original state to detect changes\n this.originalConfiguredIds = this.configuredDashboards.map(d => d.ID);\n }\n\n private async loadApplicationName(): Promise<void> {\n if (!this.applicationId) return;\n \n try {\n const md = this.ProviderToUse;\n const ds = await md.GetAndCacheDatasetByName(\"MJ_Metadata\");\n const appList = ds.Results.find(r => r.Code === 'Applications');\n if (appList) {\n const app = appList.Results.find((a: MJApplicationEntity) => UUIDsEqual(a.ID, this.applicationId));\n this.applicationName = app?.Name || 'Unknown Application';\n }\n } catch (error) {\n LogError('Error loading application name', null, error);\n this.applicationName = 'Unknown Application';\n }\n }\n\n private async loadCurrentPreferences(): Promise<void> {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const md = this.ProviderToUse;\n \n const appFilter = this.applicationId ? ` AND ApplicationID='${this.applicationId}'` : '';\n const baseCondition = `Scope='${this.scope}'${appFilter}`;\n \n let filter: string;\n \n if (this.isSysAdmin && this.scope === 'Global' && this.preferenceMode === 'system') {\n // Load system defaults only (UserID IS NULL)\n filter = `UserID IS NULL AND ${baseCondition}`;\n } else {\n // Load personal user preferences (including for sysadmin when in personal mode)\n // For personal mode, we ONLY load the user's specific preferences, no fallback to system defaults\n // This allows sysadmin to see their actual personal preferences vs system defaults\n filter = `UserID='${md.CurrentUser.ID}' AND ${baseCondition}`;\n }\n\n console.log('Loading preferences with filter:', filter);\n\n const prefsResult = await rv.RunView<MJDashboardUserPreferenceEntity>({\n EntityName: 'MJ: Dashboard User Preferences',\n ExtraFilter: filter,\n ResultType: 'entity_object',\n OrderBy: 'DisplayOrder',\n });\n\n this.currentUserPreferences = prefsResult?.Results || [];\n console.log('Loaded preferences:', this.currentUserPreferences.length);\n }\n\n private splitDashboards(): void {\n const configuredIds = new Set(this.currentUserPreferences.map(p => p.DashboardID));\n \n // Get configured dashboards in the right order\n this.configuredDashboards = this.currentUserPreferences\n .map(pref => this.allAvailableDashboards.find(d => UUIDsEqual(d.ID, pref.DashboardID)))\n .filter((d): d is MJDashboardEntityExtended => d !== undefined);\n \n // Get available dashboards (not configured)\n this.availableDashboards = this.allAvailableDashboards\n .filter(d => !configuredIds.has(d.ID))\n .sort((a, b) => a.Name.localeCompare(b.Name));\n }\n\n public onDrop(event: CdkDragDrop<MJDashboardEntityExtended[]>): void {\n try {\n if (event.previousContainer === event.container) {\n // Reordering within the same list\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n // Moving between lists\n transferArrayItem(\n event.previousContainer.data,\n event.container.data,\n event.previousIndex,\n event.currentIndex\n );\n \n // If moving to configured dashboards, sort the available list\n if (event.container.data === this.configuredDashboards) {\n this.availableDashboards.sort((a, b) => a.Name.localeCompare(b.Name));\n }\n }\n \n this.checkForChanges();\n } catch (error) {\n LogError('Error in drag drop operation', null, error);\n this.error = 'Error reordering dashboards. Please try again.';\n \n // Clear error after 3 seconds\n setTimeout(() => {\n this.error = null;\n }, 3000);\n }\n }\n\n public addDashboard(dashboard: MJDashboardEntityExtended): void {\n try {\n const index = this.availableDashboards.findIndex(d => UUIDsEqual(d.ID, dashboard.ID));\n if (index !== -1) {\n this.availableDashboards.splice(index, 1);\n this.configuredDashboards.push(dashboard);\n this.checkForChanges();\n }\n } catch (error) {\n LogError('Error adding dashboard', null, error);\n this.error = 'Error adding dashboard. Please try again.';\n \n // Clear error after 3 seconds\n setTimeout(() => {\n this.error = null;\n }, 3000);\n }\n }\n\n public removeDashboard(dashboard: MJDashboardEntityExtended): void {\n try {\n const index = this.configuredDashboards.findIndex(d => UUIDsEqual(d.ID, dashboard.ID));\n if (index !== -1) {\n this.configuredDashboards.splice(index, 1);\n this.availableDashboards.push(dashboard);\n this.availableDashboards.sort((a, b) => a.Name.localeCompare(b.Name));\n this.checkForChanges();\n }\n } catch (error) {\n LogError('Error removing dashboard', null, error);\n this.error = 'Error removing dashboard. Please try again.';\n \n // Clear error after 3 seconds\n setTimeout(() => {\n this.error = null;\n }, 3000);\n }\n }\n\n public async onPreferenceModeChange(): Promise<void> {\n try {\n this.loading = true;\n this.error = null;\n \n // Reload preferences with new mode\n await this.loadCurrentPreferences();\n this.splitDashboards();\n this.originalConfiguredIds = this.configuredDashboards.map(d => d.ID);\n this.hasChanges = false;\n \n } catch (error) {\n LogError('Error changing preference mode', null, error);\n this.error = 'Error loading preferences. Please try again.';\n } finally {\n this.loading = false;\n }\n }\n\n private checkForChanges(): void {\n try {\n const currentConfiguredIds = this.configuredDashboards.map(d => d.ID);\n \n // Check if the order or selection has changed\n this.hasChanges = currentConfiguredIds.length !== this.originalConfiguredIds.length ||\n currentConfiguredIds.some((id, index) => id !== this.originalConfiguredIds[index]);\n \n // Debug logging\n console.log('Dashboard preferences change check:', {\n original: this.originalConfiguredIds,\n current: currentConfiguredIds,\n hasChanges: this.hasChanges\n });\n } catch (error) {\n LogError('Error checking for changes', null, error);\n this.hasChanges = false;\n }\n }\n\n public async onSave(): Promise<void> {\n if (this.saving || !this.hasChanges) {\n console.log('Save cancelled:', { saving: this.saving, hasChanges: this.hasChanges });\n return;\n }\n\n try {\n this.saving = true;\n console.log('Starting save process with configured dashboards:', this.configuredDashboards.map(d => ({ id: d.ID, name: d.Name })));\n \n const md = this.ProviderToUse;\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n\n // Get existing preferences for this scope\n const baseCondition = this.scope === 'Global' \n ? `Scope='Global' AND ApplicationID IS NULL`\n : `Scope='App' AND ApplicationID='${this.applicationId}'`;\n \n let userFilter: string;\n \n if (this.isSysAdmin && this.scope === 'Global' && this.preferenceMode === 'system') {\n // Managing system defaults\n userFilter = `UserID IS NULL AND ${baseCondition}`;\n } else {\n // Managing personal preferences\n userFilter = `UserID='${md.CurrentUser.ID}' AND ${baseCondition}`;\n }\n \n console.log('Loading existing preferences with filter:', userFilter);\n \n const existingPrefs = await rv.RunView<MJDashboardUserPreferenceEntity>({\n EntityName: 'MJ: Dashboard User Preferences',\n ExtraFilter: userFilter,\n ResultType: 'entity_object',\n });\n\n const existingPreferences = existingPrefs?.Results || [];\n console.log('Found existing preferences:', existingPreferences.length);\n\n // Create maps for efficient lookups\n const existingByDashboardId = new Map<string, MJDashboardUserPreferenceEntity>();\n existingPreferences.forEach(pref => {\n existingByDashboardId.set(pref.DashboardID, pref);\n });\n\n const configuredDashboardIds = new Set(this.configuredDashboards.map(d => d.ID));\n\n // Step 1: Delete preferences that are no longer configured\n const prefsToDelete = existingPreferences.filter(pref => !configuredDashboardIds.has(pref.DashboardID));\n console.log('Preferences to delete:', prefsToDelete.length);\n \n for (const pref of prefsToDelete) {\n console.log('Deleting preference for dashboard:', pref.DashboardID);\n if (!await pref.Delete()) {\n const errorMsg = pref.LatestResult?.Error || pref.LatestResult?.Message || 'Unknown error';\n throw new Error(`Failed to delete preference: ${errorMsg}`);\n }\n }\n\n // Step 2: Update existing preferences or create new ones\n const newPreferences: MJDashboardUserPreferenceEntity[] = [];\n \n for (let i = 0; i < this.configuredDashboards.length; i++) {\n const dashboard = this.configuredDashboards[i];\n const newDisplayOrder = i + 1;\n \n let prefEntity = existingByDashboardId.get(dashboard.ID);\n \n if (prefEntity) {\n // Update existing preference\n console.log(`Updating existing preference for dashboard ${dashboard.Name}, new order: ${newDisplayOrder}`);\n prefEntity.DisplayOrder = newDisplayOrder;\n \n if (!await prefEntity.Save()) {\n const errorMsg = prefEntity.LatestResult?.Error || prefEntity.LatestResult?.Message || 'Unknown error';\n throw new Error(`Failed to update preference for dashboard ${dashboard.Name}: ${errorMsg}`);\n }\n } else {\n // Create new preference\n console.log(`Creating new preference for dashboard ${dashboard.Name}, order: ${newDisplayOrder}`);\n prefEntity = await md.GetEntityObject<MJDashboardUserPreferenceEntity>('MJ: Dashboard User Preferences');\n \n // Set UserID based on preference mode\n if (this.isSysAdmin && this.scope === 'Global' && this.preferenceMode === 'system') {\n prefEntity.UserID = null; // System default\n } else {\n prefEntity.UserID = md.CurrentUser.ID; // Personal preference\n }\n \n prefEntity.DashboardID = dashboard.ID;\n prefEntity.DisplayOrder = newDisplayOrder;\n prefEntity.Scope = this.scope;\n prefEntity.ApplicationID = this.applicationId;\n\n console.log('Creating preference entity:', {\n UserID: prefEntity.UserID,\n DashboardID: prefEntity.DashboardID,\n DisplayOrder: prefEntity.DisplayOrder,\n Scope: prefEntity.Scope,\n ApplicationID: prefEntity.ApplicationID\n });\n\n if (!await prefEntity.Save()) {\n const errorMsg = prefEntity.LatestResult?.Error || prefEntity.LatestResult?.Message || 'Unknown error';\n throw new Error(`Failed to create preference for dashboard ${dashboard.Name}: ${errorMsg}`);\n }\n }\n \n newPreferences.push(prefEntity);\n }\n\n console.log('Successfully processed', newPreferences.length, 'preferences');\n\n // Emit success result\n this.result.emit({\n saved: true,\n preferences: newPreferences\n });\n\n } catch (error) {\n console.error('Save error:', error);\n LogError('Error saving dashboard preferences', null, error);\n this.error = `Failed to save preferences: ${error instanceof Error ? error.message : 'Unknown error'}`;\n \n // Clear error after 5 seconds\n setTimeout(() => {\n this.error = null;\n }, 5000);\n } finally {\n this.saving = false;\n }\n }\n\n public onCancel(): void {\n this.result.emit({ saved: false });\n }\n}","<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"]}
@@ -45,13 +45,14 @@ export declare class ChatConversationsResource extends BaseResourceComponent imp
45
45
  private readonly SIDEBAR_MIN_WIDTH;
46
46
  private readonly SIDEBAR_MAX_WIDTH;
47
47
  pendingArtifactId: string | null;
48
+ pendingArtifactConversationId: string | null;
48
49
  /**
49
50
  * A pending request to open the REALTIME SESSION REVIEW overlay (deep link /
50
51
  * cross-resource nav with `realtimeSessionId`, e.g. the AI Agent Session form's
51
52
  * "open session" pill). Applied once after the chat area renders — this is also the
52
53
  * reference example for invoking an EXISTING realtime session programmatically:
53
54
  * `await chatArea.OpenRealtimeSessionReview(agentSessionId)` (a NEW session starts
54
- * through the composer's phone button / `RealtimeSessionService.StartVoiceSession`).
55
+ * through the composer's phone button / `RealtimeSessionService.StartRealtimeSession`).
55
56
  */
56
57
  pendingRealtimeSessionId: string | null;
57
58
  pendingArtifactVersionNumber: number | null;
@@ -1 +1 @@
1
- {"version":3,"file":"chat-conversations-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/chat-conversations-resource.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-conversations-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/chat-conversations-resource.component.ts"],"names":[],"mappings":"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"}
@@ -55,7 +55,7 @@ function ChatConversationsResource_Conditional_0_Conditional_5_Template(rf, ctx)
55
55
  i0.ɵɵelementEnd();
56
56
  } if (rf & 2) {
57
57
  const ctx_r1 = i0.ɵɵnextContext(2);
58
- i0.ɵɵproperty("environmentId", ctx_r1.environmentId)("currentUser", ctx_r1.currentUser)("conversationId", ctx_r1.selectedConversationId)("conversation", ctx_r1.selectedConversation)("threadId", ctx_r1.selectedThreadId)("isNewConversation", ctx_r1.isNewUnsavedConversation)("pendingMessage", ctx_r1.pendingMessageToSend)("pendingAttachments", ctx_r1.pendingAttachmentsToSend)("pendingArtifactId", ctx_r1.pendingArtifactId)("pendingArtifactVersionNumber", ctx_r1.pendingArtifactVersionNumber)("showSidebarToggle", ctx_r1.isSidebarCollapsed && ctx_r1.isSidebarSettingsLoaded);
58
+ i0.ɵɵproperty("environmentId", ctx_r1.environmentId)("currentUser", ctx_r1.currentUser)("conversationId", ctx_r1.selectedConversationId)("conversation", ctx_r1.selectedConversation)("threadId", ctx_r1.selectedThreadId)("isNewConversation", ctx_r1.isNewUnsavedConversation)("pendingMessage", ctx_r1.pendingMessageToSend)("pendingAttachments", ctx_r1.pendingAttachmentsToSend)("pendingArtifactId", ctx_r1.pendingArtifactId)("pendingArtifactConversationId", ctx_r1.pendingArtifactConversationId)("pendingArtifactVersionNumber", ctx_r1.pendingArtifactVersionNumber)("showSidebarToggle", ctx_r1.isSidebarCollapsed && ctx_r1.isSidebarSettingsLoaded);
59
59
  } }
60
60
  function ChatConversationsResource_Conditional_0_Template(rf, ctx) { if (rf & 1) {
61
61
  i0.ɵɵelementStart(0, "div", 2);
@@ -63,7 +63,7 @@ function ChatConversationsResource_Conditional_0_Template(rf, ctx) { if (rf & 1)
63
63
  i0.ɵɵconditionalCreate(2, ChatConversationsResource_Conditional_0_Conditional_2_Template, 2, 7, "div", 5);
64
64
  i0.ɵɵconditionalCreate(3, ChatConversationsResource_Conditional_0_Conditional_3_Template, 1, 0, "div", 6);
65
65
  i0.ɵɵelementStart(4, "div", 7);
66
- i0.ɵɵconditionalCreate(5, ChatConversationsResource_Conditional_0_Conditional_5_Template, 2, 11, "mj-conversation-chat-area", 8);
66
+ i0.ɵɵconditionalCreate(5, ChatConversationsResource_Conditional_0_Conditional_5_Template, 2, 12, "mj-conversation-chat-area", 8);
67
67
  i0.ɵɵelementEnd()();
68
68
  } if (rf & 2) {
69
69
  const ctx_r1 = i0.ɵɵnextContext();
@@ -125,13 +125,14 @@ let ChatConversationsResource = class ChatConversationsResource extends BaseReso
125
125
  SIDEBAR_MAX_WIDTH = 500;
126
126
  // Pending navigation state
127
127
  pendingArtifactId = null;
128
+ pendingArtifactConversationId = null;
128
129
  /**
129
130
  * A pending request to open the REALTIME SESSION REVIEW overlay (deep link /
130
131
  * cross-resource nav with `realtimeSessionId`, e.g. the AI Agent Session form's
131
132
  * "open session" pill). Applied once after the chat area renders — this is also the
132
133
  * reference example for invoking an EXISTING realtime session programmatically:
133
134
  * `await chatArea.OpenRealtimeSessionReview(agentSessionId)` (a NEW session starts
134
- * through the composer's phone button / `RealtimeSessionService.StartVoiceSession`).
135
+ * through the composer's phone button / `RealtimeSessionService.StartRealtimeSession`).
135
136
  */
136
137
  pendingRealtimeSessionId = null;
137
138
  pendingArtifactVersionNumber = null;
@@ -186,7 +187,7 @@ let ChatConversationsResource = class ChatConversationsResource extends BaseReso
186
187
  // open:url commands are handled directly by the service; open:resource needs NavigationService.
187
188
  this.uiCommandHandler.actionableCommandRequested
188
189
  .pipe(takeUntil(this.destroy$))
189
- .subscribe(command => this.handleActionableCommand(command));
190
+ .subscribe(request => this.handleActionableCommand(request.command));
190
191
  // Subscribe to bridge switch events so the overlay can hand off a conversation to this workspace
191
192
  this.bridge.SwitchEvent$
192
193
  .pipe(takeUntil(this.destroy$))
@@ -278,6 +279,7 @@ let ChatConversationsResource = class ChatConversationsResource extends BaseReso
278
279
  // Set pending artifact if provided
279
280
  if (artifactId) {
280
281
  this.pendingArtifactId = artifactId;
282
+ this.pendingArtifactConversationId = conversationId || null;
281
283
  this.pendingArtifactVersionNumber = versionNumber;
282
284
  }
283
285
  // Set conversationId synchronously so child components see it immediately
@@ -329,6 +331,7 @@ let ChatConversationsResource = class ChatConversationsResource extends BaseReso
329
331
  const versionNumber = params['versionNumber'] ? parseInt(params['versionNumber'], 10) : null;
330
332
  // Reflect any artifact intent so the chat area can open it.
331
333
  this.pendingArtifactId = artifactId;
334
+ this.pendingArtifactConversationId = artifactId ? conversationId : null;
332
335
  this.pendingArtifactVersionNumber = versionNumber;
333
336
  if (conversationId && conversationId !== this.selectedConversationId) {
334
337
  // The URL is already the source of truth here — suppress the echo back to it.
@@ -397,8 +400,9 @@ let ChatConversationsResource = class ChatConversationsResource extends BaseReso
397
400
  // it on every tab re-focus / popstate, which reopened the review overlay forever
398
401
  // (the live-tested "stuck overlay" bug).
399
402
  queryParams['realtimeSessionId'] = null;
400
- // Use NavigationService to update query params properly
401
- this.navigationService.UpdateActiveTabQueryParams(queryParams);
403
+ // Use the resource-scoped helper so a cached conversation component cannot
404
+ // write conversation params onto a tab that has since been reused for a record.
405
+ this.UpdateQueryParams(queryParams);
402
406
  }
403
407
  /**
404
408
  * Update the tab/browser title based on the currently selected conversation.
@@ -727,6 +731,7 @@ let ChatConversationsResource = class ChatConversationsResource extends BaseReso
727
731
  */
728
732
  onPendingArtifactConsumed() {
729
733
  this.pendingArtifactId = null;
734
+ this.pendingArtifactConversationId = null;
730
735
  this.pendingArtifactVersionNumber = null;
731
736
  // Update URL to remove artifact params
732
737
  this.updateUrl();
@@ -854,7 +859,7 @@ let ChatConversationsResource = class ChatConversationsResource extends BaseReso
854
859
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.chatArea = _t.first);
855
860
  } }, hostBindings: function ChatConversationsResource_HostBindings(rf, ctx) { if (rf & 1) {
856
861
  i0.ɵɵlistener("resize", function ChatConversationsResource_resize_HostBindingHandler() { return ctx.onWindowResize(); }, i0.ɵɵresolveWindow)("click", function ChatConversationsResource_click_HostBindingHandler($event) { return ctx.onDocumentClick($event); }, i0.ɵɵresolveDocument);
857
- } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 1, consts: [["conversationList", ""], ["chatArea", ""], [1, "chat-conversations-container"], [1, "initializing-container"], [1, "mobile-sidebar-backdrop"], [1, "conversation-sidebar", 3, "collapsed", "no-transition", "width"], [1, "sidebar-resize-handle"], [1, "conversation-main"], [3, "environmentId", "currentUser", "conversationId", "conversation", "threadId", "isNewConversation", "pendingMessage", "pendingAttachments", "pendingArtifactId", "pendingArtifactVersionNumber", "showSidebarToggle"], [1, "mobile-sidebar-backdrop", 3, "click"], [1, "conversation-sidebar"], [3, "environmentId", "currentUser", "selectedConversationId", "renamedConversationId", "isSidebarPinned", "isMobileView"], [3, "conversationSelected", "conversationDeleted", "newConversationRequested", "pinSidebarRequested", "unpinSidebarRequested", "refreshRequested", "environmentId", "currentUser", "selectedConversationId", "renamedConversationId", "isSidebarPinned", "isMobileView"], [1, "sidebar-resize-handle", 3, "mousedown"], [3, "sidebarToggleClicked", "conversationRenamed", "conversationCreated", "threadOpened", "threadClosed", "pendingArtifactConsumed", "pendingMessageConsumed", "pendingMessageRequested", "artifactLinkClicked", "openEntityRecord", "navigationRequest", "environmentId", "currentUser", "conversationId", "conversation", "threadId", "isNewConversation", "pendingMessage", "pendingAttachments", "pendingArtifactId", "pendingArtifactVersionNumber", "showSidebarToggle"], ["text", "Initializing...", "size", "large"]], template: function ChatConversationsResource_Template(rf, ctx) { if (rf & 1) {
862
+ } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 1, consts: [["conversationList", ""], ["chatArea", ""], [1, "chat-conversations-container"], [1, "initializing-container"], [1, "mobile-sidebar-backdrop"], [1, "conversation-sidebar", 3, "collapsed", "no-transition", "width"], [1, "sidebar-resize-handle"], [1, "conversation-main"], [3, "environmentId", "currentUser", "conversationId", "conversation", "threadId", "isNewConversation", "pendingMessage", "pendingAttachments", "pendingArtifactId", "pendingArtifactConversationId", "pendingArtifactVersionNumber", "showSidebarToggle"], [1, "mobile-sidebar-backdrop", 3, "click"], [1, "conversation-sidebar"], [3, "environmentId", "currentUser", "selectedConversationId", "renamedConversationId", "isSidebarPinned", "isMobileView"], [3, "conversationSelected", "conversationDeleted", "newConversationRequested", "pinSidebarRequested", "unpinSidebarRequested", "refreshRequested", "environmentId", "currentUser", "selectedConversationId", "renamedConversationId", "isSidebarPinned", "isMobileView"], [1, "sidebar-resize-handle", 3, "mousedown"], [3, "sidebarToggleClicked", "conversationRenamed", "conversationCreated", "threadOpened", "threadClosed", "pendingArtifactConsumed", "pendingMessageConsumed", "pendingMessageRequested", "artifactLinkClicked", "openEntityRecord", "navigationRequest", "environmentId", "currentUser", "conversationId", "conversation", "threadId", "isNewConversation", "pendingMessage", "pendingAttachments", "pendingArtifactId", "pendingArtifactConversationId", "pendingArtifactVersionNumber", "showSidebarToggle"], ["text", "Initializing...", "size", "large"]], template: function ChatConversationsResource_Template(rf, ctx) { if (rf & 1) {
858
863
  i0.ɵɵconditionalCreate(0, ChatConversationsResource_Conditional_0_Template, 6, 4, "div", 2)(1, ChatConversationsResource_Conditional_1_Template, 2, 0, "div", 3);
859
864
  i0.ɵɵelement(2, "mj-toast");
860
865
  } if (rf & 2) {
@@ -918,6 +923,7 @@ export { ChatConversationsResource };
918
923
  [pendingMessage]="pendingMessageToSend"
919
924
  [pendingAttachments]="pendingAttachmentsToSend"
920
925
  [pendingArtifactId]="pendingArtifactId"
926
+ [pendingArtifactConversationId]="pendingArtifactConversationId"
921
927
  [pendingArtifactVersionNumber]="pendingArtifactVersionNumber"
922
928
  [showSidebarToggle]="isSidebarCollapsed && isSidebarSettingsLoaded"
923
929
  (sidebarToggleClicked)="expandSidebar()"
@@ -957,5 +963,5 @@ export { ChatConversationsResource };
957
963
  type: HostListener,
958
964
  args: ['document:click', ['$event']]
959
965
  }] }); })();
960
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ChatConversationsResource, { className: "ChatConversationsResource", filePath: "src/lib/resource-wrappers/chat-conversations-resource.component.ts", lineNumber: 237 }); })();
966
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ChatConversationsResource, { className: "ChatConversationsResource", filePath: "src/lib/resource-wrappers/chat-conversations-resource.component.ts", lineNumber: 238 }); })();
961
967
  //# sourceMappingURL=chat-conversations-resource.component.js.map