@memberjunction/ng-explorer-core 6.1.4 → 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 (184) 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 +73 -17
  4. package/dist/app-routing.module.js.map +1 -1
  5. package/dist/generated/lazy-feature-config.d.ts +1 -1
  6. package/dist/generated/lazy-feature-config.d.ts.map +1 -1
  7. package/dist/generated/lazy-feature-config.js +1 -8
  8. package/dist/generated/lazy-feature-config.js.map +1 -1
  9. package/dist/lib/command-palette/command-palette.component.d.ts +7 -1
  10. package/dist/lib/command-palette/command-palette.component.d.ts.map +1 -1
  11. package/dist/lib/command-palette/command-palette.component.js +28 -14
  12. package/dist/lib/command-palette/command-palette.component.js.map +1 -1
  13. package/dist/lib/conversation-feedback/conversation-feedback.d.ts +103 -13
  14. package/dist/lib/conversation-feedback/conversation-feedback.d.ts.map +1 -1
  15. package/dist/lib/conversation-feedback/conversation-feedback.js +219 -67
  16. package/dist/lib/conversation-feedback/conversation-feedback.js.map +1 -1
  17. package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.d.ts +64 -10
  18. package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.d.ts.map +1 -1
  19. package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js +172 -66
  20. package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js.map +1 -1
  21. package/dist/lib/generic/resource-container-component.d.ts +19 -5
  22. package/dist/lib/generic/resource-container-component.d.ts.map +1 -1
  23. package/dist/lib/generic/resource-container-component.js +43 -13
  24. package/dist/lib/generic/resource-container-component.js.map +1 -1
  25. package/dist/lib/guards/entities.guard.d.ts +4 -0
  26. package/dist/lib/guards/entities.guard.d.ts.map +1 -1
  27. package/dist/lib/guards/entities.guard.js +10 -2
  28. package/dist/lib/guards/entities.guard.js.map +1 -1
  29. package/dist/lib/identity-claims/claim-redeem.component.d.ts +4 -0
  30. package/dist/lib/identity-claims/claim-redeem.component.d.ts.map +1 -1
  31. package/dist/lib/identity-claims/claim-redeem.component.js +10 -2
  32. package/dist/lib/identity-claims/claim-redeem.component.js.map +1 -1
  33. package/dist/lib/oauth/oauth-callback.component.d.ts +4 -0
  34. package/dist/lib/oauth/oauth-callback.component.d.ts.map +1 -1
  35. package/dist/lib/oauth/oauth-callback.component.js +10 -2
  36. package/dist/lib/oauth/oauth-callback.component.js.map +1 -1
  37. package/dist/lib/profile/profile-dialog.component.d.ts.map +1 -1
  38. package/dist/lib/profile/profile-dialog.component.js +194 -191
  39. package/dist/lib/profile/profile-dialog.component.js.map +1 -1
  40. package/dist/lib/resource-wrappers/artifact-resource.component.d.ts +20 -2
  41. package/dist/lib/resource-wrappers/artifact-resource.component.d.ts.map +1 -1
  42. package/dist/lib/resource-wrappers/artifact-resource.component.js +33 -9
  43. package/dist/lib/resource-wrappers/artifact-resource.component.js.map +1 -1
  44. package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts +80 -10
  45. package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts.map +1 -1
  46. package/dist/lib/resource-wrappers/chat-collections-resource.component.js +168 -56
  47. package/dist/lib/resource-wrappers/chat-collections-resource.component.js.map +1 -1
  48. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +186 -23
  49. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
  50. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +500 -177
  51. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
  52. package/dist/lib/resource-wrappers/chat-deeplink-params.d.ts +2 -0
  53. package/dist/lib/resource-wrappers/chat-deeplink-params.d.ts.map +1 -1
  54. package/dist/lib/resource-wrappers/chat-deeplink-params.js +5 -1
  55. package/dist/lib/resource-wrappers/chat-deeplink-params.js.map +1 -1
  56. package/dist/lib/resource-wrappers/chat-search-routing.d.ts +25 -0
  57. package/dist/lib/resource-wrappers/chat-search-routing.d.ts.map +1 -0
  58. package/dist/lib/resource-wrappers/chat-search-routing.js +24 -0
  59. package/dist/lib/resource-wrappers/chat-search-routing.js.map +1 -0
  60. package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts +14 -2
  61. package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts.map +1 -1
  62. package/dist/lib/resource-wrappers/chat-tasks-resource.component.js +32 -8
  63. package/dist/lib/resource-wrappers/chat-tasks-resource.component.js.map +1 -1
  64. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts +54 -8
  65. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
  66. package/dist/lib/resource-wrappers/dashboard-resource.component.js +138 -46
  67. package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
  68. package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts +223 -30
  69. package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts.map +1 -1
  70. package/dist/lib/resource-wrappers/livekit-room-resource.component.js +438 -118
  71. package/dist/lib/resource-wrappers/livekit-room-resource.component.js.map +1 -1
  72. package/dist/lib/resource-wrappers/search-results-resource.component.d.ts +7 -3
  73. package/dist/lib/resource-wrappers/search-results-resource.component.d.ts.map +1 -1
  74. package/dist/lib/resource-wrappers/search-results-resource.component.js +23 -15
  75. package/dist/lib/resource-wrappers/search-results-resource.component.js.map +1 -1
  76. package/dist/lib/resource-wrappers/view-resource.component.d.ts +68 -10
  77. package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
  78. package/dist/lib/resource-wrappers/view-resource.component.js +178 -62
  79. package/dist/lib/resource-wrappers/view-resource.component.js.map +1 -1
  80. package/dist/lib/services/startup-validation.service.d.ts +4 -0
  81. package/dist/lib/services/startup-validation.service.d.ts.map +1 -1
  82. package/dist/lib/services/startup-validation.service.js +10 -2
  83. package/dist/lib/services/startup-validation.service.js.map +1 -1
  84. package/dist/lib/services/system-validation.service.d.ts +13 -1
  85. package/dist/lib/services/system-validation.service.d.ts.map +1 -1
  86. package/dist/lib/services/system-validation.service.js +29 -5
  87. package/dist/lib/services/system-validation.service.js.map +1 -1
  88. package/dist/lib/shell/components/dialogs/app-access-dialog.component.d.ts +54 -4
  89. package/dist/lib/shell/components/dialogs/app-access-dialog.component.d.ts.map +1 -1
  90. package/dist/lib/shell/components/dialogs/app-access-dialog.component.js +130 -40
  91. package/dist/lib/shell/components/dialogs/app-access-dialog.component.js.map +1 -1
  92. package/dist/lib/shell/components/header/app-nav.component.d.ts +29 -1
  93. package/dist/lib/shell/components/header/app-nav.component.d.ts.map +1 -1
  94. package/dist/lib/shell/components/header/app-nav.component.js +56 -12
  95. package/dist/lib/shell/components/header/app-nav.component.js.map +1 -1
  96. package/dist/lib/shell/components/header/app-switcher.component.d.ts +33 -5
  97. package/dist/lib/shell/components/header/app-switcher.component.d.ts.map +1 -1
  98. package/dist/lib/shell/components/header/app-switcher.component.js +85 -29
  99. package/dist/lib/shell/components/header/app-switcher.component.js.map +1 -1
  100. package/dist/lib/shell/components/record-open/record-origin-crumb.component.d.ts +7 -1
  101. package/dist/lib/shell/components/record-open/record-origin-crumb.component.d.ts.map +1 -1
  102. package/dist/lib/shell/components/record-open/record-origin-crumb.component.js +63 -9
  103. package/dist/lib/shell/components/record-open/record-origin-crumb.component.js.map +1 -1
  104. package/dist/lib/shell/components/tabs/component-cache-manager.d.ts +30 -1
  105. package/dist/lib/shell/components/tabs/component-cache-manager.d.ts.map +1 -1
  106. package/dist/lib/shell/components/tabs/component-cache-manager.js +63 -15
  107. package/dist/lib/shell/components/tabs/component-cache-manager.js.map +1 -1
  108. package/dist/lib/shell/components/tabs/tab-container.component.d.ts +99 -9
  109. package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
  110. package/dist/lib/shell/components/tabs/tab-container.component.js +310 -110
  111. package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
  112. package/dist/lib/shell/loading-themes.d.ts +16 -12
  113. package/dist/lib/shell/loading-themes.d.ts.map +1 -1
  114. package/dist/lib/shell/loading-themes.js +145 -137
  115. package/dist/lib/shell/loading-themes.js.map +1 -1
  116. package/dist/lib/shell/readiness-beacon.d.ts +24 -0
  117. package/dist/lib/shell/readiness-beacon.d.ts.map +1 -0
  118. package/dist/lib/shell/readiness-beacon.js +40 -0
  119. package/dist/lib/shell/readiness-beacon.js.map +1 -0
  120. package/dist/lib/shell/services/about-dialog.service.d.ts +6 -0
  121. package/dist/lib/shell/services/about-dialog.service.d.ts.map +1 -1
  122. package/dist/lib/shell/services/about-dialog.service.js +16 -4
  123. package/dist/lib/shell/services/about-dialog.service.js.map +1 -1
  124. package/dist/lib/shell/services/profile-dialog.service.d.ts +6 -0
  125. package/dist/lib/shell/services/profile-dialog.service.d.ts.map +1 -1
  126. package/dist/lib/shell/services/profile-dialog.service.js +16 -4
  127. package/dist/lib/shell/services/profile-dialog.service.js.map +1 -1
  128. package/dist/lib/shell/services/user-sharing-center-dialog.service.d.ts +6 -0
  129. package/dist/lib/shell/services/user-sharing-center-dialog.service.d.ts.map +1 -1
  130. package/dist/lib/shell/services/user-sharing-center-dialog.service.js +15 -3
  131. package/dist/lib/shell/services/user-sharing-center-dialog.service.js.map +1 -1
  132. package/dist/lib/shell/shell.component.d.ts +275 -40
  133. package/dist/lib/shell/shell.component.d.ts.map +1 -1
  134. package/dist/lib/shell/shell.component.js +704 -290
  135. package/dist/lib/shell/shell.component.js.map +1 -1
  136. package/dist/lib/single-dashboard/Components/add-item/add-item.component.d.ts +64 -8
  137. package/dist/lib/single-dashboard/Components/add-item/add-item.component.d.ts.map +1 -1
  138. package/dist/lib/single-dashboard/Components/add-item/add-item.component.js +129 -37
  139. package/dist/lib/single-dashboard/Components/add-item/add-item.component.js.map +1 -1
  140. package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.d.ts +26 -2
  141. package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.d.ts.map +1 -1
  142. package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js +48 -10
  143. package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js.map +1 -1
  144. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.d.ts +84 -6
  145. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.d.ts.map +1 -1
  146. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js +133 -29
  147. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js.map +1 -1
  148. package/dist/lib/single-dashboard/single-dashboard.component.d.ts +173 -23
  149. package/dist/lib/single-dashboard/single-dashboard.component.d.ts.map +1 -1
  150. package/dist/lib/single-dashboard/single-dashboard.component.js +383 -109
  151. package/dist/lib/single-dashboard/single-dashboard.component.js.map +1 -1
  152. package/dist/lib/single-list-detail/single-list-detail.component.d.ts +383 -55
  153. package/dist/lib/single-list-detail/single-list-detail.component.d.ts.map +1 -1
  154. package/dist/lib/single-list-detail/single-list-detail.component.js +962 -326
  155. package/dist/lib/single-list-detail/single-list-detail.component.js.map +1 -1
  156. package/dist/lib/single-query/single-query.component.d.ts +22 -2
  157. package/dist/lib/single-query/single-query.component.d.ts.map +1 -1
  158. package/dist/lib/single-query/single-query.component.js +40 -10
  159. package/dist/lib/single-query/single-query.component.js.map +1 -1
  160. package/dist/lib/single-record/single-record.component.d.ts +41 -3
  161. package/dist/lib/single-record/single-record.component.d.ts.map +1 -1
  162. package/dist/lib/single-record/single-record.component.js +71 -11
  163. package/dist/lib/single-record/single-record.component.js.map +1 -1
  164. package/dist/lib/single-search-result/single-search-result.component.d.ts +23 -3
  165. package/dist/lib/single-search-result/single-search-result.component.d.ts.map +1 -1
  166. package/dist/lib/single-search-result/single-search-result.component.js +42 -12
  167. package/dist/lib/single-search-result/single-search-result.component.js.map +1 -1
  168. package/dist/lib/system-validation/system-validation-banner.component.d.ts +12 -2
  169. package/dist/lib/system-validation/system-validation-banner.component.d.ts.map +1 -1
  170. package/dist/lib/system-validation/system-validation-banner.component.js +25 -5
  171. package/dist/lib/system-validation/system-validation-banner.component.js.map +1 -1
  172. package/dist/lib/user-menu/user-menu.types.d.ts +4 -0
  173. package/dist/lib/user-menu/user-menu.types.d.ts.map +1 -1
  174. package/dist/lib/user-menu/user-menu.types.js +10 -2
  175. package/dist/lib/user-menu/user-menu.types.js.map +1 -1
  176. package/dist/lib/user-notifications/user-notifications.component.d.ts +59 -7
  177. package/dist/lib/user-notifications/user-notifications.component.d.ts.map +1 -1
  178. package/dist/lib/user-notifications/user-notifications.component.js +151 -47
  179. package/dist/lib/user-notifications/user-notifications.component.js.map +1 -1
  180. package/dist/lib/user-profile/user-profile.component.d.ts +3 -2
  181. package/dist/lib/user-profile/user-profile.component.d.ts.map +1 -1
  182. package/dist/lib/user-profile/user-profile.component.js +5 -4
  183. package/dist/lib/user-profile/user-profile.component.js.map +1 -1
  184. package/package.json +52 -52
@@ -1 +1 @@
1
- {"version":3,"file":"single-search-result.component.js","sourceRoot":"","sources":["../../../src/lib/single-search-result/single-search-result.component.ts","../../../src/lib/single-search-result/single-search-result.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, EventEmitter, Input, Output, ChangeDetectorRef, OnChanges, SimpleChanges } from '@angular/core';\nimport { RunView, CompositeKey, EntityInfo } from '@memberjunction/core';\nimport { NavigationService } from '@memberjunction/ng-shared';\nimport { DataLoadedEvent, RecordOpenedEvent, EntityViewerConfig, ViewRelatedRecordNavigation } from '@memberjunction/ng-entity-viewer';\n\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\ntype SearchState = 'loading' | 'no-results' | 'single-result' | 'viewer';\n\n@Component({\n standalone: false,\n selector: 'mj-single-search-result',\n templateUrl: './single-search-result.component.html',\n styleUrls: ['./single-search-result.component.css']\n})\nexport class SingleSearchResultComponent extends BaseAngularComponent implements OnChanges {\n @Input() public entity: string = '';\n @Input() public searchInput: string = '';\n @Output() public loadComplete = new EventEmitter<boolean>();\n @Output() public loadStarted = new EventEmitter<boolean>();\n\n public SearchState: SearchState = 'loading';\n public ResultCount = 0;\n public EntityInfo: EntityInfo | null = null;\n\n /** Resolved icon class for the entity, matching Data Explorer's format */\n public get EntityIcon(): string {\n if (this.EntityInfo?.Icon) {\n return this.formatEntityIcon(this.EntityInfo.Icon);\n }\n return 'fa-solid fa-table';\n }\n\n /** Configuration for the entity-viewer — matches the Data Explorer's setup */\n public ViewerConfig: Partial<EntityViewerConfig> = {\n showFilter: false,\n showViewModeToggle: false,\n showRecordCount: false,\n showPagination: true,\n serverSideFiltering: true,\n serverSideSorting: true,\n height: '100%'\n };\n\n constructor(\n private navigationService: NavigationService,\n private cdr: ChangeDetectorRef\n ) {\n super();}\n\n ngOnChanges(changes: SimpleChanges): void {\n if ((changes['entity'] || changes['searchInput']) && this.entity && this.searchInput) {\n this.ExecuteSearch();\n }\n }\n\n /**\n * Runs a lightweight pre-query (MaxRows: 2, PK fields only) to determine result count,\n * then routes to the appropriate state: no-results, single-result auto-nav, or viewer.\n */\n private async ExecuteSearch(): Promise<void> {\n this.SearchState = 'loading';\n this.ResultCount = 0;\n this.loadStarted.emit(true);\n\n // Resolve EntityInfo early so the header can show icon + display name during loading\n const entityInfo = this.findEntityInfo();\n this.EntityInfo = entityInfo ?? null;\n this.cdr.detectChanges();\n\n if (!entityInfo) {\n this.setNoResults();\n return;\n }\n\n const result = await this.runPreQuery(entityInfo);\n if (!result.Success || result.Results.length === 0) {\n this.setNoResults();\n return;\n }\n\n if (result.Results.length === 1) {\n this.navigateToSingleResult(entityInfo, result.Results[0]);\n return;\n }\n\n // 2+ results — show the entity-viewer\n this.SearchState = 'viewer';\n this.cdr.detectChanges();\n }\n\n private findEntityInfo(): EntityInfo | undefined {\n const md = this.ProviderToUse;\n return md.Entities.find(e =>\n e.Name.trim().toLowerCase() === this.entity.trim().toLowerCase()\n );\n }\n\n private async runPreQuery(entityInfo: EntityInfo) {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const pkFields = entityInfo.PrimaryKeys.map(pk => pk.Name);\n return rv.RunView<Record<string, unknown>>({\n EntityName: this.entity,\n ExtraFilter: 'ID IS NOT NULL',\n UserSearchString: this.searchInput,\n Fields: pkFields,\n ResultType: 'simple',\n MaxRows: 2,\n });\n }\n\n private setNoResults(): void {\n this.SearchState = 'no-results';\n this.ResultCount = 0;\n this.loadComplete.emit(true);\n this.cdr.detectChanges();\n }\n\n private navigateToSingleResult(entityInfo: EntityInfo, record: Record<string, unknown>): void {\n this.SearchState = 'single-result';\n this.ResultCount = 1;\n this.cdr.detectChanges();\n\n const compositeKey = new CompositeKey();\n compositeKey.LoadFromEntityInfoAndRecord(entityInfo, record);\n this.navigationService.OpenEntityRecord(entityInfo.Name, compositeKey);\n this.loadComplete.emit(true);\n }\n\n // ── Header action handlers ──\n\n public OnCreateNewRecord(): void {\n if (this.EntityInfo) {\n this.navigationService.OpenNewEntityRecord(this.EntityInfo.Name);\n }\n }\n\n // ── Entity-viewer event handlers ──\n\n public OnDataLoaded(event: DataLoadedEvent): void {\n this.ResultCount = event.totalRowCount;\n this.loadComplete.emit(true);\n this.cdr.detectChanges();\n }\n\n public OnRecordOpened(event: RecordOpenedEvent): void {\n this.navigationService.OpenEntityRecord(event.entity.Name, event.compositeKey);\n }\n\n /** Navigate to a related record requested from within a view-type renderer (e.g. a foreign-key cell). */\n public OnOpenRelatedRecord(nav: ViewRelatedRecordNavigation): void {\n if (nav?.entityName && nav.recordKey != null) {\n // The related entity is arbitrary, so its key column can have any name — resolve the key\n // against its metadata rather than hardcoding `ID` via FromID.\n const entityInfo = this.ProviderToUse.EntityByName(nav.entityName);\n this.navigationService.OpenEntityRecord(nav.entityName, CompositeKey.FromURLSegment(entityInfo, String(nav.recordKey)));\n }\n }\n\n /** Format entity icon to ensure proper Font Awesome class format */\n private formatEntityIcon(icon: string): string {\n if (!icon) {\n return 'fa-solid fa-table';\n }\n if (icon.startsWith('fa-solid') || icon.startsWith('fa-regular') ||\n icon.startsWith('fa-light') || icon.startsWith('fa-brands') ||\n icon.startsWith('fa ')) {\n return icon;\n }\n if (icon.startsWith('fa-')) {\n return `fa-solid ${icon}`;\n }\n return `fa-solid fa-${icon}`;\n }\n}\n","<div class=\"search-result-container\">\n <!-- Content Header — matches Data Explorer layout -->\n <div class=\"content-header\">\n <div class=\"header-left\">\n <i [class]=\"EntityIcon\" class=\"entity-icon\"></i>\n <h2 class=\"entity-title\">{{ EntityInfo?.DisplayNameOrName || entity }}</h2>\n @if (SearchState === 'loading') {\n <span class=\"record-count\">Searching for \"{{ searchInput }}\"...</span>\n } @else if (SearchState === 'no-results') {\n <span class=\"record-count\">No results for \"{{ searchInput }}\"</span>\n } @else if (ResultCount > 0) {\n <span class=\"record-count\">{{ ResultCount | number }} {{ ResultCount === 1 ? 'result' : 'results' }} for \"{{ searchInput }}\"</span>\n }\n </div>\n\n @if (SearchState === 'viewer' && EntityInfo) {\n <div class=\"header-right\">\n <!-- New Record -->\n <button\n class=\"header-action-btn\"\n (click)=\"OnCreateNewRecord()\"\n title=\"New Record\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n </div>\n }\n </div>\n\n <!-- Loading state -->\n @if (SearchState === 'loading') {\n <div class=\"loading-container\">\n <mj-loading text=\"Searching...\"></mj-loading>\n </div>\n }\n\n <!-- No results -->\n @if (SearchState === 'no-results') {\n <mj-empty-state\n Variant=\"no-results\"\n Icon=\"fa-solid fa-magnifying-glass\">\n <p class=\"search-result-empty-message\">No results found for \"<strong>{{ searchInput }}</strong>\" in {{ entity }}</p>\n <p class=\"empty-hint\">Try a different search term or entity</p>\n </mj-empty-state>\n }\n\n <!-- Single result — auto-navigating to entity form -->\n @if (SearchState === 'single-result') {\n <mj-empty-state\n Icon=\"fa-solid fa-arrow-right\"\n Title=\"Found 1 result — opening record...\" />\n }\n\n <!-- Entity Viewer (2+ results) -->\n @if (SearchState === 'viewer' && EntityInfo) {\n <div class=\"viewer-container\">\n <mj-entity-viewer\n [Entity]=\"EntityInfo\"\n [Provider]=\"Provider\"\n [FilterText]=\"searchInput\"\n [Config]=\"ViewerConfig\"\n (DataLoaded)=\"OnDataLoaded($event)\"\n (RecordOpened)=\"OnRecordOpened($event)\"\n (OpenRelatedRecordRequested)=\"OnOpenRelatedRecord($event)\"\n (CreateRecordRequested)=\"OnCreateNewRecord()\">\n </mj-entity-viewer>\n </div>\n }\n</div>\n"]}
1
+ {"version":3,"file":"single-search-result.component.js","sourceRoot":"","sources":["../../../src/lib/single-search-result/single-search-result.component.ts","../../../src/lib/single-search-result/single-search-result.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, EventEmitter, Input, Output, ChangeDetectorRef, OnChanges, SimpleChanges } from '@angular/core';\nimport { RunView, CompositeKey, EntityInfo } from '@memberjunction/core';\nimport { NavigationService } from '@memberjunction/ng-shared';\nimport { DataLoadedEvent, RecordOpenedEvent, EntityViewerConfig, ViewRelatedRecordNavigation } from '@memberjunction/ng-entity-viewer';\n\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\ntype SearchState = 'loading' | 'no-results' | 'single-result' | 'viewer';\n\n@Component({\n standalone: false,\n selector: 'mj-single-search-result',\n templateUrl: './single-search-result.component.html',\n styleUrls: ['./single-search-result.component.css']\n})\nexport class SingleSearchResultComponent extends BaseAngularComponent implements OnChanges {\n @Input() public entity: string = '';\n @Input() public SearchInput: string = '';\n\n /** @deprecated Use {@link SearchInput}. */\n @Input() public set searchInput(value: string) {\n this.SearchInput = value;\n }\n /** @deprecated Use {@link SearchInput}. */\n public get searchInput(): string {\n return this.SearchInput;\n }\n @Output() public LoadComplete = new EventEmitter<boolean>();\n\n /**\n * @deprecated Use {@link LoadComplete}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (loadComplete) keeps working. Must stay AFTER LoadComplete: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() public loadComplete = this.LoadComplete;\n @Output() public LoadStarted = new EventEmitter<boolean>();\n\n /**\n * @deprecated Use {@link LoadStarted}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (loadStarted) keeps working. Must stay AFTER LoadStarted: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() public loadStarted = this.LoadStarted;\n\n public SearchState: SearchState = 'loading';\n public ResultCount = 0;\n public EntityInfo: EntityInfo | null = null;\n\n /** Resolved icon class for the entity, matching Data Explorer's format */\n public get EntityIcon(): string {\n if (this.EntityInfo?.Icon) {\n return this.formatEntityIcon(this.EntityInfo.Icon);\n }\n return 'fa-solid fa-table';\n }\n\n /** Configuration for the entity-viewer — matches the Data Explorer's setup */\n public ViewerConfig: Partial<EntityViewerConfig> = {\n showFilter: false,\n showViewModeToggle: false,\n showRecordCount: false,\n showPagination: true,\n serverSideFiltering: true,\n serverSideSorting: true,\n height: '100%'\n };\n\n constructor(\n private navigationService: NavigationService,\n private cdr: ChangeDetectorRef\n ) {\n super();}\n\n ngOnChanges(changes: SimpleChanges): void {\n if ((changes['entity'] || changes['searchInput']) && this.entity && this.SearchInput) {\n this.executeSearch();\n }\n }\n\n /**\n * Runs a lightweight pre-query (MaxRows: 2, PK fields only) to determine result count,\n * then routes to the appropriate state: no-results, single-result auto-nav, or viewer.\n */\n private async executeSearch(): Promise<void> {\n this.SearchState = 'loading';\n this.ResultCount = 0;\n this.LoadStarted.emit(true);\n\n // Resolve EntityInfo early so the header can show icon + display name during loading\n const entityInfo = this.findEntityInfo();\n this.EntityInfo = entityInfo ?? null;\n this.cdr.detectChanges();\n\n if (!entityInfo) {\n this.setNoResults();\n return;\n }\n\n const result = await this.runPreQuery(entityInfo);\n if (!result.Success || result.Results.length === 0) {\n this.setNoResults();\n return;\n }\n\n if (result.Results.length === 1) {\n this.navigateToSingleResult(entityInfo, result.Results[0]);\n return;\n }\n\n // 2+ results — show the entity-viewer\n this.SearchState = 'viewer';\n this.cdr.detectChanges();\n }\n\n private findEntityInfo(): EntityInfo | undefined {\n const md = this.ProviderToUse;\n return md.Entities.find(e =>\n e.Name.trim().toLowerCase() === this.entity.trim().toLowerCase()\n );\n }\n\n private async runPreQuery(entityInfo: EntityInfo) {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const pkFields = entityInfo.PrimaryKeys.map(pk => pk.Name);\n return rv.RunView<Record<string, unknown>>({\n EntityName: this.entity,\n ExtraFilter: 'ID IS NOT NULL',\n UserSearchString: this.SearchInput,\n Fields: pkFields,\n ResultType: 'simple',\n MaxRows: 2,\n });\n }\n\n private setNoResults(): void {\n this.SearchState = 'no-results';\n this.ResultCount = 0;\n this.LoadComplete.emit(true);\n this.cdr.detectChanges();\n }\n\n private navigateToSingleResult(entityInfo: EntityInfo, record: Record<string, unknown>): void {\n this.SearchState = 'single-result';\n this.ResultCount = 1;\n this.cdr.detectChanges();\n\n const compositeKey = new CompositeKey();\n compositeKey.LoadFromEntityInfoAndRecord(entityInfo, record);\n this.navigationService.OpenEntityRecord(entityInfo.Name, compositeKey);\n this.LoadComplete.emit(true);\n }\n\n // ── Header action handlers ──\n\n public OnCreateNewRecord(): void {\n if (this.EntityInfo) {\n this.navigationService.OpenNewEntityRecord(this.EntityInfo.Name);\n }\n }\n\n // ── Entity-viewer event handlers ──\n\n public OnDataLoaded(event: DataLoadedEvent): void {\n this.ResultCount = event.totalRowCount;\n this.LoadComplete.emit(true);\n this.cdr.detectChanges();\n }\n\n public OnRecordOpened(event: RecordOpenedEvent): void {\n this.navigationService.OpenEntityRecord(event.entity.Name, event.compositeKey);\n }\n\n /** Navigate to a related record requested from within a view-type renderer (e.g. a foreign-key cell). */\n public OnOpenRelatedRecord(nav: ViewRelatedRecordNavigation): void {\n if (nav?.entityName && nav.recordKey != null) {\n // The related entity is arbitrary, so its key column can have any name — resolve the key\n // against its metadata rather than hardcoding `ID` via FromID.\n const entityInfo = this.ProviderToUse.EntityByName(nav.entityName);\n this.navigationService.OpenEntityRecord(nav.entityName, CompositeKey.FromURLSegment(entityInfo, String(nav.recordKey)));\n }\n }\n\n /** Format entity icon to ensure proper Font Awesome class format */\n private formatEntityIcon(icon: string): string {\n if (!icon) {\n return 'fa-solid fa-table';\n }\n if (icon.startsWith('fa-solid') || icon.startsWith('fa-regular') ||\n icon.startsWith('fa-light') || icon.startsWith('fa-brands') ||\n icon.startsWith('fa ')) {\n return icon;\n }\n if (icon.startsWith('fa-')) {\n return `fa-solid ${icon}`;\n }\n return `fa-solid fa-${icon}`;\n }\n}\n","<div class=\"search-result-container\">\n <!-- Content Header — matches Data Explorer layout -->\n <div class=\"content-header\">\n <div class=\"header-left\">\n <i [class]=\"EntityIcon\" class=\"entity-icon\"></i>\n <h2 class=\"entity-title\">{{ EntityInfo?.DisplayNameOrName || entity }}</h2>\n @if (SearchState === 'loading') {\n <span class=\"record-count\">Searching for \"{{ searchInput }}\"...</span>\n } @else if (SearchState === 'no-results') {\n <span class=\"record-count\">No results for \"{{ searchInput }}\"</span>\n } @else if (ResultCount > 0) {\n <span class=\"record-count\">{{ ResultCount | number }} {{ ResultCount === 1 ? 'result' : 'results' }} for \"{{ searchInput }}\"</span>\n }\n </div>\n\n @if (SearchState === 'viewer' && EntityInfo) {\n <div class=\"header-right\">\n <!-- New Record -->\n <button\n class=\"header-action-btn\"\n (click)=\"OnCreateNewRecord()\"\n title=\"New Record\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n </div>\n }\n </div>\n\n <!-- Loading state -->\n @if (SearchState === 'loading') {\n <div class=\"loading-container\">\n <mj-loading text=\"Searching...\"></mj-loading>\n </div>\n }\n\n <!-- No results -->\n @if (SearchState === 'no-results') {\n <mj-empty-state\n Variant=\"no-results\"\n Icon=\"fa-solid fa-magnifying-glass\">\n <p class=\"search-result-empty-message\">No results found for \"<strong>{{ searchInput }}</strong>\" in {{ entity }}</p>\n <p class=\"empty-hint\">Try a different search term or entity</p>\n </mj-empty-state>\n }\n\n <!-- Single result — auto-navigating to entity form -->\n @if (SearchState === 'single-result') {\n <mj-empty-state\n Icon=\"fa-solid fa-arrow-right\"\n Title=\"Found 1 result — opening record...\" />\n }\n\n <!-- Entity Viewer (2+ results) -->\n @if (SearchState === 'viewer' && EntityInfo) {\n <div class=\"viewer-container\">\n <mj-entity-viewer\n [Entity]=\"EntityInfo\"\n [Provider]=\"Provider\"\n [FilterText]=\"searchInput\"\n [Config]=\"ViewerConfig\"\n (DataLoaded)=\"OnDataLoaded($event)\"\n (RecordOpened)=\"OnRecordOpened($event)\"\n (OpenRelatedRecordRequested)=\"OnOpenRelatedRecord($event)\"\n (CreateRecordRequested)=\"OnCreateNewRecord()\">\n </mj-entity-viewer>\n </div>\n }\n</div>\n"]}
@@ -3,12 +3,22 @@ import { SystemValidationService, SystemValidationIssue } from '../services/syst
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class SystemValidationBannerComponent implements OnInit, OnDestroy {
5
5
  private validationService;
6
- issues: SystemValidationIssue[];
7
- hasErrors: boolean;
6
+ Issues: SystemValidationIssue[];
7
+ /** @deprecated Use {@link Issues}. */
8
+ get issues(): SystemValidationIssue[];
9
+ /** @deprecated Use {@link Issues}. */
10
+ set issues(value: SystemValidationIssue[]);
11
+ HasErrors: boolean;
12
+ /** @deprecated Use {@link HasErrors}. */
13
+ get hasErrors(): boolean;
14
+ /** @deprecated Use {@link HasErrors}. */
15
+ set hasErrors(value: boolean);
8
16
  private subscription;
9
17
  constructor(validationService: SystemValidationService);
10
18
  ngOnInit(): void;
11
19
  ngOnDestroy(): void;
20
+ DismissIssue(id: string): void;
21
+ /** @deprecated Use {@link DismissIssue}. */
12
22
  dismissIssue(id: string): void;
13
23
  static ɵfac: i0.ɵɵFactoryDeclaration<SystemValidationBannerComponent, never>;
14
24
  static ɵcmp: i0.ɵɵComponentDeclaration<SystemValidationBannerComponent, "mj-system-validation-banner", never, {}, {}, never, never, true, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"system-validation-banner.component.d.ts","sourceRoot":"","sources":["../../../src/lib/system-validation/system-validation-banner.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;;AAIvG,qBAoLa,+BAAgC,YAAW,MAAM,EAAE,SAAS;IAK3D,OAAO,CAAC,iBAAiB;IAJrC,MAAM,EAAE,qBAAqB,EAAE,CAAM;IACrC,SAAS,UAAS;IAClB,OAAO,CAAC,YAAY,CAA2B;gBAE3B,iBAAiB,EAAE,uBAAuB;IAE9D,QAAQ;IASR,WAAW;IAMX,YAAY,CAAC,EAAE,EAAE,MAAM;yCAtBZ,+BAA+B;2CAA/B,+BAA+B;CAyB3C"}
1
+ {"version":3,"file":"system-validation-banner.component.d.ts","sourceRoot":"","sources":["../../../src/lib/system-validation/system-validation-banner.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;;AAIvG,qBAoLa,+BAAgC,YAAW,MAAM,EAAE,SAAS;IAuB3D,OAAO,CAAC,iBAAiB;IAtBrC,MAAM,EAAE,qBAAqB,EAAE,CAAM;IAErC,sCAAsC;IACtC,IAAI,MAAM,IAAI,qBAAqB,EAAE,CAEpC;IACD,sCAAsC;IACtC,IAAI,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAExC;IACD,SAAS,UAAS;IAElB,yCAAyC;IACzC,IAAI,SAAS,YAEZ;IACD,yCAAyC;IACzC,IAAI,SAAS,CAAC,KAAK,SAAA,EAElB;IACD,OAAO,CAAC,YAAY,CAA2B;gBAE3B,iBAAiB,EAAE,uBAAuB;IAE9D,QAAQ;IASR,WAAW;IAMX,YAAY,CAAC,EAAE,EAAE,MAAM;IAIvB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,EAAE,MAAM;yCA7CZ,+BAA+B;2CAA/B,+BAA+B;CAgD3C"}
@@ -94,17 +94,33 @@ function SystemValidationBannerComponent_Conditional_0_Template(rf, ctx) { if (r
94
94
  } }
95
95
  export class SystemValidationBannerComponent {
96
96
  validationService;
97
- issues = [];
98
- hasErrors = false;
97
+ Issues = [];
98
+ /** @deprecated Use {@link Issues}. */
99
+ get issues() {
100
+ return this.Issues;
101
+ }
102
+ /** @deprecated Use {@link Issues}. */
103
+ set issues(value) {
104
+ this.Issues = value;
105
+ }
106
+ HasErrors = false;
107
+ /** @deprecated Use {@link HasErrors}. */
108
+ get hasErrors() {
109
+ return this.HasErrors;
110
+ }
111
+ /** @deprecated Use {@link HasErrors}. */
112
+ set hasErrors(value) {
113
+ this.HasErrors = value;
114
+ }
99
115
  subscription;
100
116
  constructor(validationService) {
101
117
  this.validationService = validationService;
102
118
  }
103
119
  ngOnInit() {
104
120
  this.subscription = this.validationService.validationIssues$.subscribe(issues => {
105
- this.issues = issues;
121
+ this.Issues = issues;
106
122
  // Check if there are any error-level issues
107
- this.hasErrors = issues.some(issue => issue.severity === 'error');
123
+ this.HasErrors = issues.some(issue => issue.severity === 'error');
108
124
  });
109
125
  }
110
126
  ngOnDestroy() {
@@ -112,9 +128,13 @@ export class SystemValidationBannerComponent {
112
128
  this.subscription.unsubscribe();
113
129
  }
114
130
  }
115
- dismissIssue(id) {
131
+ DismissIssue(id) {
116
132
  this.validationService.removeIssue(id);
117
133
  }
134
+ /** @deprecated Use {@link DismissIssue}. */
135
+ dismissIssue(id) {
136
+ return this.DismissIssue(id);
137
+ }
118
138
  static ɵfac = function SystemValidationBannerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SystemValidationBannerComponent)(i0.ɵɵdirectiveInject(i1.SystemValidationService)); };
119
139
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SystemValidationBannerComponent, selectors: [["mj-system-validation-banner"]], decls: 1, vars: 1, consts: [[1, "system-validation-wrapper"], [1, "system-validation-overlay"], [1, "system-validation-container"], [1, "system-validation-banner", 3, "ngClass"], [1, "banner-content"], [1, "banner-icon"], [1, "severity-icon", "severity-error"], [1, "severity-icon", "severity-warning"], [1, "severity-icon", "severity-info"], [1, "banner-message"], [1, "help-text"], [1, "banner-close"], ["aria-label", "Dismiss", 1, "dismiss-button"], ["aria-label", "Dismiss", 1, "dismiss-button", 3, "click"]], template: function SystemValidationBannerComponent_Template(rf, ctx) { if (rf & 1) {
120
140
  i0.ɵɵconditionalCreate(0, SystemValidationBannerComponent_Conditional_0_Template, 5, 1, "div", 0);
@@ -1 +1 @@
1
- {"version":3,"file":"system-validation-banner.component.js","sourceRoot":"","sources":["../../../src/lib/system-validation/system-validation-banner.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,eAAe,CAAC;AAG7D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;;;;;IAWrC,yBAA6C;;;IAUnC,+BAA2C;IAAA,sBAAC;IAAA,iBAAO;;;IAGnD,+BAA6C;IAAA,4BAAE;IAAA,iBAAO;;;IAGtD,+BAA0C;IAAA,4BAAE;IAAA,iBAAO;;;IAMnD,yBAAG;IAAA,YAAmB;IAAA,iBAAI;;;IAAvB,cAAmB;IAAnB,sCAAmB;;;IAGtB,6BAAqB;IAAA,YAAgB;IAAA,iBAAI;;;IAApB,cAAgB;IAAhB,mCAAgB;;;;IAKrC,kCAAqF;IAA7E,wQAAS,gCAAsB,KAAC;IACtC,wBACF;IAAA,iBAAS;;;IAxBb,AADF,AAHF,8BAEoD,aACtB,aACD;IACvB,sHAAkC;IAGlC,sHAAoC;IAGpC,sHAAiC;IAGnC,iBAAM;IAEJ,AADF,8BAA4B,SACtB;IAAA,YAAmB;IAAA,iBAAK;IAC5B,gHAAqB;IAGrB,sHAAkB;IAGpB,iBAAM;IACN,gCAA0B;IACxB,2HAAkC;IAOxC,AADE,AADE,iBAAM,EACF,EACF;;;IA9BJ,kEAAiD;IAG7C,eAEC;IAFD,wDAEC;IACD,cAEC;IAFD,0DAEC;IACD,cAEC;IAFD,uDAEC;IAGG,eAAmB;IAAnB,sCAAmB;IACvB,cAEC;IAFD,2CAEC;IACD,cAEC;IAFD,yCAEC;IAGD,eAIC;IAJD,yDAIC;;;IApCb,8BAAuC;IAErC,+GAAiB;IAGjB,8BAAyC;IACvC,mIAkCC;IAEL,AADE,iBAAM,EACF;;;IAxCJ,cAEC;IAFD,2CAEC;IAEC,eAkCC;IAlCD,4BAkCC;;AAsIX,MAAM,OAAO,+BAA+B;IAKtB;IAJpB,MAAM,GAA4B,EAAE,CAAC;IACrC,SAAS,GAAG,KAAK,CAAC;IACV,YAAY,CAA2B;IAE/C,YAAoB,iBAA0C;QAA1C,sBAAiB,GAAjB,iBAAiB,CAAyB;IAAI,CAAC;IAEnE,QAAQ;QACN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAC9E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YAErB,4CAA4C;YAC5C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED,YAAY,CAAC,EAAU;QACrB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;yHAxBU,+BAA+B;6DAA/B,+BAA+B;YA/KxC,iGAAyB;;YAAzB,gDA4CC;4BA9CO,YAAY;;iFAiLX,+BAA+B;cApL3C,SAAS;2BACE,6BAA6B,cAC3B,IAAI,WACP,CAAC,YAAY,CAAC,YACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8CP;;kFAkIQ,+BAA+B","sourcesContent":["import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { SystemValidationService, SystemValidationIssue } from '../services/system-validation.service';\nimport { Subscription } from 'rxjs';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'mj-system-validation-banner',\n standalone: true,\n imports: [CommonModule],\n template: `\n @if (issues.length > 0) {\n <div class=\"system-validation-wrapper\">\n <!-- Dark overlay for serious errors -->\n @if (hasErrors) {\n <div class=\"system-validation-overlay\"></div>\n }\n <div class=\"system-validation-container\">\n @for (issue of issues; track issue) {\n <div\n class=\"system-validation-banner\"\n [ngClass]=\"'system-validation-' + issue.severity\">\n <div class=\"banner-content\">\n <div class=\"banner-icon\">\n @if (issue.severity === 'error') {\n <span class=\"severity-icon severity-error\">❌</span>\n }\n @if (issue.severity === 'warning') {\n <span class=\"severity-icon severity-warning\">⚠️</span>\n }\n @if (issue.severity === 'info') {\n <span class=\"severity-icon severity-info\">ℹ️</span>\n }\n </div>\n <div class=\"banner-message\">\n <h3>{{ issue.message }}</h3>\n @if (issue.details) {\n <p>{{ issue.details }}</p>\n }\n @if (issue.help) {\n <p class=\"help-text\">{{ issue.help }}</p>\n }\n </div>\n <div class=\"banner-close\">\n @if (issue.severity !== 'error') {\n <button (click)=\"dismissIssue(issue.id)\" aria-label=\"Dismiss\" class=\"dismiss-button\">\n ✕\n </button>\n }\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n `,\n styles: [`\n .system-validation-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 10000;\n pointer-events: none;\n }\n \n .system-validation-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: var(--mj-bg-overlay);\n z-index: 10001;\n pointer-events: auto;\n }\n \n .system-validation-container {\n position: fixed;\n top: 60px;\n left: 0;\n right: 0;\n z-index: 10002;\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n max-height: 80vh;\n overflow-y: auto;\n pointer-events: auto;\n }\n\n .system-validation-banner {\n border-radius: 4px;\n box-shadow: var(--mj-shadow-md);\n padding: 16px;\n animation: slide-down 0.3s ease-out;\n }\n\n .system-validation-error {\n background-color: var(--mj-status-error-bg);\n border-left: 4px solid var(--mj-status-error);\n }\n\n .system-validation-warning {\n background-color: var(--mj-status-warning-bg);\n border-left: 4px solid var(--mj-status-warning);\n }\n\n .system-validation-info {\n background-color: var(--mj-status-info-bg);\n border-left: 4px solid var(--mj-status-info);\n }\n\n .banner-content {\n display: flex;\n align-items: flex-start;\n }\n\n .banner-icon {\n margin-right: 16px;\n font-size: 24px;\n }\n\n .severity-icon {\n font-size: 18px;\n }\n\n .severity-error {\n color: var(--mj-status-error);\n }\n\n .severity-warning {\n color: var(--mj-status-warning);\n }\n\n .severity-info {\n color: var(--mj-status-info);\n }\n\n .banner-message {\n flex: 1;\n }\n\n .banner-message h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n }\n\n .banner-message p {\n margin: 4px 0 0 0;\n font-size: 14px;\n }\n\n .help-text {\n font-style: italic;\n }\n\n .dismiss-button {\n background: transparent;\n border: none;\n cursor: pointer;\n font-size: 16px;\n color: var(--mj-text-secondary);\n padding: 4px;\n }\n\n .dismiss-button:hover {\n color: var(--mj-text-primary);\n }\n\n @keyframes slide-down {\n 0% {\n transform: translateY(-20px);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n `]\n})\nexport class SystemValidationBannerComponent implements OnInit, OnDestroy {\n issues: SystemValidationIssue[] = [];\n hasErrors = false;\n private subscription: Subscription | undefined;\n\n constructor(private validationService: SystemValidationService) { }\n\n ngOnInit() {\n this.subscription = this.validationService.validationIssues$.subscribe(issues => {\n this.issues = issues;\n \n // Check if there are any error-level issues\n this.hasErrors = issues.some(issue => issue.severity === 'error');\n });\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n dismissIssue(id: string) {\n this.validationService.removeIssue(id);\n }\n}"]}
1
+ {"version":3,"file":"system-validation-banner.component.js","sourceRoot":"","sources":["../../../src/lib/system-validation/system-validation-banner.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { SystemValidationService, SystemValidationIssue } from '../services/system-validation.service';\nimport { Subscription } from 'rxjs';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'mj-system-validation-banner',\n standalone: true,\n imports: [CommonModule],\n template: `\n @if (issues.length > 0) {\n <div class=\"system-validation-wrapper\">\n <!-- Dark overlay for serious errors -->\n @if (hasErrors) {\n <div class=\"system-validation-overlay\"></div>\n }\n <div class=\"system-validation-container\">\n @for (issue of issues; track issue) {\n <div\n class=\"system-validation-banner\"\n [ngClass]=\"'system-validation-' + issue.severity\">\n <div class=\"banner-content\">\n <div class=\"banner-icon\">\n @if (issue.severity === 'error') {\n <span class=\"severity-icon severity-error\">❌</span>\n }\n @if (issue.severity === 'warning') {\n <span class=\"severity-icon severity-warning\">⚠️</span>\n }\n @if (issue.severity === 'info') {\n <span class=\"severity-icon severity-info\">ℹ️</span>\n }\n </div>\n <div class=\"banner-message\">\n <h3>{{ issue.message }}</h3>\n @if (issue.details) {\n <p>{{ issue.details }}</p>\n }\n @if (issue.help) {\n <p class=\"help-text\">{{ issue.help }}</p>\n }\n </div>\n <div class=\"banner-close\">\n @if (issue.severity !== 'error') {\n <button (click)=\"dismissIssue(issue.id)\" aria-label=\"Dismiss\" class=\"dismiss-button\">\n ✕\n </button>\n }\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n `,\n styles: [`\n .system-validation-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 10000;\n pointer-events: none;\n }\n \n .system-validation-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: var(--mj-bg-overlay);\n z-index: 10001;\n pointer-events: auto;\n }\n \n .system-validation-container {\n position: fixed;\n top: 60px;\n left: 0;\n right: 0;\n z-index: 10002;\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n max-height: 80vh;\n overflow-y: auto;\n pointer-events: auto;\n }\n\n .system-validation-banner {\n border-radius: 4px;\n box-shadow: var(--mj-shadow-md);\n padding: 16px;\n animation: slide-down 0.3s ease-out;\n }\n\n .system-validation-error {\n background-color: var(--mj-status-error-bg);\n border-left: 4px solid var(--mj-status-error);\n }\n\n .system-validation-warning {\n background-color: var(--mj-status-warning-bg);\n border-left: 4px solid var(--mj-status-warning);\n }\n\n .system-validation-info {\n background-color: var(--mj-status-info-bg);\n border-left: 4px solid var(--mj-status-info);\n }\n\n .banner-content {\n display: flex;\n align-items: flex-start;\n }\n\n .banner-icon {\n margin-right: 16px;\n font-size: 24px;\n }\n\n .severity-icon {\n font-size: 18px;\n }\n\n .severity-error {\n color: var(--mj-status-error);\n }\n\n .severity-warning {\n color: var(--mj-status-warning);\n }\n\n .severity-info {\n color: var(--mj-status-info);\n }\n\n .banner-message {\n flex: 1;\n }\n\n .banner-message h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n }\n\n .banner-message p {\n margin: 4px 0 0 0;\n font-size: 14px;\n }\n\n .help-text {\n font-style: italic;\n }\n\n .dismiss-button {\n background: transparent;\n border: none;\n cursor: pointer;\n font-size: 16px;\n color: var(--mj-text-secondary);\n padding: 4px;\n }\n\n .dismiss-button:hover {\n color: var(--mj-text-primary);\n }\n\n @keyframes slide-down {\n 0% {\n transform: translateY(-20px);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n `]\n})\nexport class SystemValidationBannerComponent implements OnInit, OnDestroy {\n Issues: SystemValidationIssue[] = [];\n\n /** @deprecated Use {@link Issues}. */\n get issues(): SystemValidationIssue[] {\n return this.Issues;\n }\n /** @deprecated Use {@link Issues}. */\n set issues(value: SystemValidationIssue[]) {\n this.Issues = value;\n }\n HasErrors = false;\n\n /** @deprecated Use {@link HasErrors}. */\n get hasErrors() {\n return this.HasErrors;\n }\n /** @deprecated Use {@link HasErrors}. */\n set hasErrors(value) {\n this.HasErrors = value;\n }\n private subscription: Subscription | undefined;\n\n constructor(private validationService: SystemValidationService) { }\n\n ngOnInit() {\n this.subscription = this.validationService.validationIssues$.subscribe(issues => {\n this.Issues = issues;\n \n // Check if there are any error-level issues\n this.HasErrors = issues.some(issue => issue.severity === 'error');\n });\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n DismissIssue(id: string) {\n this.validationService.removeIssue(id);\n }\n\n /** @deprecated Use {@link DismissIssue}. */\n dismissIssue(id: string) {\n return this.DismissIssue(id);\n }\n}"]}
@@ -45,10 +45,14 @@ export type UserMenuElement = UserMenuItem | UserMenuDivider;
45
45
  /**
46
46
  * Type guard to check if element is a divider
47
47
  */
48
+ export declare function IsUserMenuDivider(element: UserMenuElement): element is UserMenuDivider;
49
+ /** @deprecated Use {@link IsUserMenuDivider}. */
48
50
  export declare function isUserMenuDivider(element: UserMenuElement): element is UserMenuDivider;
49
51
  /**
50
52
  * Type guard to check if element is a menu item
51
53
  */
54
+ export declare function IsUserMenuItem(element: UserMenuElement): element is UserMenuItem;
55
+ /** @deprecated Use {@link IsUserMenuItem}. */
52
56
  export declare function isUserMenuItem(element: UserMenuElement): element is UserMenuItem;
53
57
  /**
54
58
  * Minimal application info needed by user menu
@@ -1 +1 @@
1
- {"version":3,"file":"user-menu.types.d.ts","sourceRoot":"","sources":["../../../src/lib/user-menu/user-menu.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-menu.types.d.ts","sourceRoot":"","sources":["../../../src/lib/user-menu/user-menu.types.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,21 @@
1
1
  /**
2
2
  * Type guard to check if element is a divider
3
3
  */
4
- export function isUserMenuDivider(element) {
4
+ export function IsUserMenuDivider(element) {
5
5
  return 'type' in element && element.type === 'divider';
6
6
  }
7
+ /** @deprecated Use {@link IsUserMenuDivider}. */
8
+ export function isUserMenuDivider(element) {
9
+ return IsUserMenuDivider(element);
10
+ }
7
11
  /**
8
12
  * Type guard to check if element is a menu item
9
13
  */
10
- export function isUserMenuItem(element) {
14
+ export function IsUserMenuItem(element) {
11
15
  return !('type' in element);
12
16
  }
17
+ /** @deprecated Use {@link IsUserMenuItem}. */
18
+ export function isUserMenuItem(element) {
19
+ return IsUserMenuItem(element);
20
+ }
13
21
  //# sourceMappingURL=user-menu.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-menu.types.js","sourceRoot":"","sources":["../../../src/lib/user-menu/user-menu.types.ts"],"names":[],"mappings":"AA2DA;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAwB;IACtD,OAAO,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAwB;IACnD,OAAO,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC;AAChC,CAAC","sourcesContent":["import { ViewContainerRef } from '@angular/core';\nimport { UserInfo } from '@memberjunction/core';\nimport { MJUserEntity } from '@memberjunction/core-entities';\nimport type { ThemeDefinition } from '@memberjunction/ng-shared-generic';\n\n/**\n * Defines a single menu item in the user context menu\n */\nexport interface UserMenuItem {\n /** Unique identifier for the menu item */\n id: string;\n\n /** Display text for the menu item */\n label: string;\n\n /** Font Awesome icon class (e.g., 'fa-solid fa-gear') */\n icon: string;\n\n /** Optional icon/text color (CSS color value) */\n color?: string;\n\n /** Optional CSS class for custom styling */\n cssClass?: string;\n\n /** Group ID for organizing items (items with same group have dividers between groups) */\n group: 'primary' | 'developer' | 'system' | 'danger' | string;\n\n /** Sort order within group (lower = higher in menu) */\n order: number;\n\n /** Whether item requires Developer role to be visible */\n developerOnly: boolean;\n\n /** Whether the item is currently visible (dynamic control) */\n visible: boolean;\n\n /** Whether the item is currently enabled/clickable */\n enabled: boolean;\n\n /** Optional tooltip text */\n tooltip?: string;\n\n /** Optional keyboard shortcut hint */\n shortcut?: string;\n}\n\n/**\n * Defines a separator/divider in the menu\n */\nexport interface UserMenuDivider {\n type: 'divider';\n group: string;\n}\n\n/**\n * Union type for all menu element types\n */\nexport type UserMenuElement = UserMenuItem | UserMenuDivider;\n\n/**\n * Type guard to check if element is a divider\n */\nexport function isUserMenuDivider(element: UserMenuElement): element is UserMenuDivider {\n return 'type' in element && element.type === 'divider';\n}\n\n/**\n * Type guard to check if element is a menu item\n */\nexport function isUserMenuItem(element: UserMenuElement): element is UserMenuItem {\n return !('type' in element);\n}\n\n/**\n * Minimal application info needed by user menu\n */\nexport interface ApplicationInfoRef {\n ID: string;\n Name: string;\n [key: string]: unknown;\n}\n\n/**\n * Minimal tab info exposed to user menu (avoids importing full WorkspaceTab)\n */\nexport interface WorkspaceTabRef {\n id: string;\n title: string;\n applicationId: string;\n resourceTypeId: string;\n configuration: Record<string, unknown>;\n}\n\n/**\n * Interface for workspace manager operations needed by user menu\n */\nexport interface WorkspaceManagerRef {\n GetConfiguration: () => unknown;\n GetActiveTabId?: () => string | null;\n GetTab?: (tabId: string) => WorkspaceTabRef | undefined;\n}\n\n/**\n * Interface for pin service operations needed by user menu\n */\nexport interface PinServiceRef {\n IsPinned: (resourceType: string, config: Record<string, unknown>) => boolean;\n}\n\n/**\n * Interface for auth service operations needed by user menu\n */\nexport interface AuthServiceRef {\n logout: () => void | Promise<void>;\n}\n\n/**\n * Context passed to menu handlers\n */\nexport interface UserMenuContext {\n /** Current authenticated user info */\n user: UserInfo;\n\n /** Full user entity with all fields */\n userEntity: MJUserEntity;\n\n /** Reference to shell component for advanced operations */\n shell: Record<string, unknown>;\n\n /** View container for opening dialogs/modals */\n viewContainerRef: ViewContainerRef;\n\n /** Whether user has Developer role */\n isDeveloper: boolean;\n\n /** Whether developer mode is currently enabled (can be toggled) */\n developerModeEnabled: boolean;\n\n /** Current application context */\n currentApplication: ApplicationInfoRef | null;\n\n /** Workspace manager for layout operations */\n workspaceManager: WorkspaceManagerRef;\n\n /** Auth service for logout operations */\n authService: AuthServiceRef;\n\n /** Pin service for Home dashboard pinning */\n pinService?: PinServiceRef;\n\n /** Function to open settings dialog */\n openSettings: () => void;\n\n /** Current theme preference (theme ID or 'system') */\n themePreference?: string;\n\n /** All registered theme definitions, for building theme picker menus */\n availableThemes?: ThemeDefinition[];\n\n /** Currently applied theme ID (resolved, never 'system') */\n appliedTheme?: string;\n\n /** Whether the in-app feedback feature is enabled for this org */\n feedbackEnabled?: boolean;\n}\n\n/**\n * Result of a menu item click handler\n */\nexport interface UserMenuActionResult {\n /** Whether the action succeeded */\n success: boolean;\n\n /** Whether to close the menu after action */\n closeMenu: boolean;\n\n /** Optional message to display (toast notification) */\n message?: string;\n}\n\n/**\n * User display information for the menu header\n */\nexport interface UserDisplayInfo {\n /** User's display name */\n name: string;\n\n /** User's email address */\n email: string;\n\n /** URL to user's avatar image, or null */\n avatarUrl: string | null;\n\n /** Two-character initials derived from name */\n initials: string;\n\n /** Optional subtitle shown below email (e.g., organization name) */\n subtitle?: string;\n}\n\n/**\n * Options for menu configuration\n */\nexport interface UserMenuOptions {\n /** Whether to show the user name in menu header */\n showUserName: boolean;\n\n /** Whether to show the user email in menu header */\n showUserEmail: boolean;\n\n /** Menu position relative to avatar */\n menuPosition: 'below-left' | 'below-right';\n\n /** Animation style for menu opening */\n animationStyle: 'fade' | 'slide' | 'none';\n}\n"]}
1
+ {"version":3,"file":"user-menu.types.js","sourceRoot":"","sources":["../../../src/lib/user-menu/user-menu.types.ts"],"names":[],"mappings":"AA2DA;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAwB;IACtD,OAAO,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC;AAC3D,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,iBAAiB,CAAC,OAAwB;IACtD,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAwB;IACnD,OAAO,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,cAAc,CAAC,OAAwB;IACnD,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC","sourcesContent":["import { ViewContainerRef } from '@angular/core';\nimport { UserInfo } from '@memberjunction/core';\nimport { MJUserEntity } from '@memberjunction/core-entities';\nimport type { ThemeDefinition } from '@memberjunction/ng-shared-generic';\n\n/**\n * Defines a single menu item in the user context menu\n */\nexport interface UserMenuItem {\n /** Unique identifier for the menu item */\n id: string;\n\n /** Display text for the menu item */\n label: string;\n\n /** Font Awesome icon class (e.g., 'fa-solid fa-gear') */\n icon: string;\n\n /** Optional icon/text color (CSS color value) */\n color?: string;\n\n /** Optional CSS class for custom styling */\n cssClass?: string;\n\n /** Group ID for organizing items (items with same group have dividers between groups) */\n group: 'primary' | 'developer' | 'system' | 'danger' | string;\n\n /** Sort order within group (lower = higher in menu) */\n order: number;\n\n /** Whether item requires Developer role to be visible */\n developerOnly: boolean;\n\n /** Whether the item is currently visible (dynamic control) */\n visible: boolean;\n\n /** Whether the item is currently enabled/clickable */\n enabled: boolean;\n\n /** Optional tooltip text */\n tooltip?: string;\n\n /** Optional keyboard shortcut hint */\n shortcut?: string;\n}\n\n/**\n * Defines a separator/divider in the menu\n */\nexport interface UserMenuDivider {\n type: 'divider';\n group: string;\n}\n\n/**\n * Union type for all menu element types\n */\nexport type UserMenuElement = UserMenuItem | UserMenuDivider;\n\n/**\n * Type guard to check if element is a divider\n */\nexport function IsUserMenuDivider(element: UserMenuElement): element is UserMenuDivider {\n return 'type' in element && element.type === 'divider';\n}\n\n/** @deprecated Use {@link IsUserMenuDivider}. */\nexport function isUserMenuDivider(element: UserMenuElement): element is UserMenuDivider {\n return IsUserMenuDivider(element);\n}\n\n/**\n * Type guard to check if element is a menu item\n */\nexport function IsUserMenuItem(element: UserMenuElement): element is UserMenuItem {\n return !('type' in element);\n}\n\n/** @deprecated Use {@link IsUserMenuItem}. */\nexport function isUserMenuItem(element: UserMenuElement): element is UserMenuItem {\n return IsUserMenuItem(element);\n}\n\n/**\n * Minimal application info needed by user menu\n */\nexport interface ApplicationInfoRef {\n ID: string;\n Name: string;\n [key: string]: unknown;\n}\n\n/**\n * Minimal tab info exposed to user menu (avoids importing full WorkspaceTab)\n */\nexport interface WorkspaceTabRef {\n id: string;\n title: string;\n applicationId: string;\n resourceTypeId: string;\n configuration: Record<string, unknown>;\n}\n\n/**\n * Interface for workspace manager operations needed by user menu\n */\nexport interface WorkspaceManagerRef {\n GetConfiguration: () => unknown;\n GetActiveTabId?: () => string | null;\n GetTab?: (tabId: string) => WorkspaceTabRef | undefined;\n}\n\n/**\n * Interface for pin service operations needed by user menu\n */\nexport interface PinServiceRef {\n IsPinned: (resourceType: string, config: Record<string, unknown>) => boolean;\n}\n\n/**\n * Interface for auth service operations needed by user menu\n */\nexport interface AuthServiceRef {\n logout: () => void | Promise<void>;\n}\n\n/**\n * Context passed to menu handlers\n */\nexport interface UserMenuContext {\n /** Current authenticated user info */\n user: UserInfo;\n\n /** Full user entity with all fields */\n userEntity: MJUserEntity;\n\n /** Reference to shell component for advanced operations */\n shell: Record<string, unknown>;\n\n /** View container for opening dialogs/modals */\n viewContainerRef: ViewContainerRef;\n\n /** Whether user has Developer role */\n isDeveloper: boolean;\n\n /** Whether developer mode is currently enabled (can be toggled) */\n developerModeEnabled: boolean;\n\n /** Current application context */\n currentApplication: ApplicationInfoRef | null;\n\n /** Workspace manager for layout operations */\n workspaceManager: WorkspaceManagerRef;\n\n /** Auth service for logout operations */\n authService: AuthServiceRef;\n\n /** Pin service for Home dashboard pinning */\n pinService?: PinServiceRef;\n\n /** Function to open settings dialog */\n openSettings: () => void;\n\n /** Current theme preference (theme ID or 'system') */\n themePreference?: string;\n\n /** All registered theme definitions, for building theme picker menus */\n availableThemes?: ThemeDefinition[];\n\n /** Currently applied theme ID (resolved, never 'system') */\n appliedTheme?: string;\n\n /** Whether the in-app feedback feature is enabled for this org */\n feedbackEnabled?: boolean;\n}\n\n/**\n * Result of a menu item click handler\n */\nexport interface UserMenuActionResult {\n /** Whether the action succeeded */\n success: boolean;\n\n /** Whether to close the menu after action */\n closeMenu: boolean;\n\n /** Optional message to display (toast notification) */\n message?: string;\n}\n\n/**\n * User display information for the menu header\n */\nexport interface UserDisplayInfo {\n /** User's display name */\n name: string;\n\n /** User's email address */\n email: string;\n\n /** URL to user's avatar image, or null */\n avatarUrl: string | null;\n\n /** Two-character initials derived from name */\n initials: string;\n\n /** Optional subtitle shown below email (e.g., organization name) */\n subtitle?: string;\n}\n\n/**\n * Options for menu configuration\n */\nexport interface UserMenuOptions {\n /** Whether to show the user name in menu header */\n showUserName: boolean;\n\n /** Whether to show the user email in menu header */\n showUserEmail: boolean;\n\n /** Menu position relative to avatar */\n menuPosition: 'below-left' | 'below-right';\n\n /** Animation style for menu opening */\n animationStyle: 'fade' | 'slide' | 'none';\n}\n"]}
@@ -45,22 +45,46 @@ interface NotificationUrlInfo {
45
45
  queryString: string;
46
46
  }
47
47
  export declare class UserNotificationsComponent extends BaseAngularComponent implements OnInit, AfterViewInit, OnDestroy {
48
- sharedService: SharedService;
48
+ SharedService: SharedService;
49
49
  private navigationService;
50
50
  private appManager;
51
51
  private cdr;
52
- radioSelected: ReadFilterOption;
53
- currentFilter: string;
54
- notificationTypes: MJUserNotificationTypeEntity[];
55
- selectedTypeFilter: string | null;
56
- loadingTypes: boolean;
52
+ RadioSelected: ReadFilterOption;
53
+ /** @deprecated Use {@link RadioSelected}. */
54
+ get radioSelected(): ReadFilterOption;
55
+ /** @deprecated Use {@link RadioSelected}. */
56
+ set radioSelected(value: ReadFilterOption);
57
+ CurrentFilter: string;
58
+ /** @deprecated Use {@link CurrentFilter}. */
59
+ get currentFilter(): string;
60
+ /** @deprecated Use {@link CurrentFilter}. */
61
+ set currentFilter(value: string);
62
+ NotificationTypes: MJUserNotificationTypeEntity[];
63
+ /** @deprecated Use {@link NotificationTypes}. */
64
+ get notificationTypes(): MJUserNotificationTypeEntity[];
65
+ /** @deprecated Use {@link NotificationTypes}. */
66
+ set notificationTypes(value: MJUserNotificationTypeEntity[]);
67
+ SelectedTypeFilter: string | null;
68
+ /** @deprecated Use {@link SelectedTypeFilter}. */
69
+ get selectedTypeFilter(): string | null;
70
+ /** @deprecated Use {@link SelectedTypeFilter}. */
71
+ set selectedTypeFilter(value: string | null);
72
+ LoadingTypes: boolean;
73
+ /** @deprecated Use {@link LoadingTypes}. */
74
+ get loadingTypes(): boolean;
75
+ /** @deprecated Use {@link LoadingTypes}. */
76
+ set loadingTypes(value: boolean);
57
77
  /** IDs of cards currently expanded to their full rendered content. */
58
78
  Expanded: Set<string>;
59
79
  private groups;
60
80
  private groupsKey;
61
81
  private vmCache;
62
82
  private relativeTimer;
63
- constructor(sharedService: SharedService, navigationService: NavigationService, appManager: ApplicationManager);
83
+ constructor(SharedService: SharedService, navigationService: NavigationService, appManager: ApplicationManager);
84
+ /** @deprecated Use {@link SharedService}. */
85
+ get sharedService(): SharedService;
86
+ /** @deprecated Use {@link SharedService}. */
87
+ set sharedService(value: SharedService);
64
88
  ngOnInit(): Promise<void>;
65
89
  ngAfterViewInit(): void;
66
90
  ngOnDestroy(): void;
@@ -93,17 +117,35 @@ export declare class UserNotificationsComponent extends BaseAngularComponent imp
93
117
  private dayLabel;
94
118
  IsExpanded(vm: NotificationVM): boolean;
95
119
  ToggleExpanded(vm: NotificationVM, event: Event): void;
120
+ IsNotificationClickable(notification: MJUserNotificationEntity): boolean;
121
+ /** @deprecated Use {@link IsNotificationClickable}. */
96
122
  isNotificationClickable(notification: MJUserNotificationEntity): boolean;
123
+ NotificationUrl(notification: MJUserNotificationEntity): NotificationUrlInfo;
124
+ /** @deprecated Use {@link NotificationUrl}. */
97
125
  notificationUrl(notification: MJUserNotificationEntity): NotificationUrlInfo;
98
126
  get AllNotifications(): MJUserNotificationEntity[];
99
127
  get UnreadNotifications(): MJUserNotificationEntity[];
100
128
  get ReadNotifications(): MJUserNotificationEntity[];
129
+ SelectReadOption(option: ReadFilterOption): void;
130
+ /** @deprecated Use {@link SelectReadOption}. */
101
131
  selectReadOption(option: ReadFilterOption): void;
132
+ OnFilterChanged(value: string): void;
133
+ /** @deprecated Use {@link OnFilterChanged}. */
102
134
  onFilterChanged(value: string): void;
135
+ MarkAsRead(notification: MJUserNotificationEntity, bRead: boolean, transGroup: TransactionGroupBase | null): Promise<boolean>;
136
+ /** @deprecated Use {@link MarkAsRead}. */
103
137
  markAsRead(notification: MJUserNotificationEntity, bRead: boolean, transGroup: TransactionGroupBase | null): Promise<boolean>;
138
+ MarkAllAsRead(): Promise<void>;
139
+ /** @deprecated Use {@link MarkAllAsRead}. */
104
140
  markAllAsRead(): Promise<void>;
141
+ MarkAllAsUnread(): Promise<void>;
142
+ /** @deprecated Use {@link MarkAllAsUnread}. */
105
143
  markAllAsUnread(): Promise<void>;
144
+ MarkAll(bRead: boolean): Promise<void>;
145
+ /** @deprecated Use {@link MarkAll}. */
106
146
  markAll(bRead: boolean): Promise<void>;
147
+ NotificationClicked(notification: MJUserNotificationEntity): void;
148
+ /** @deprecated Use {@link NotificationClicked}. */
107
149
  notificationClicked(notification: MJUserNotificationEntity): void;
108
150
  /**
109
151
  * Opens the Meet app's Live Room in JOIN mode for a `meet-room` invite notification (the
@@ -126,10 +168,20 @@ export declare class UserNotificationsComponent extends BaseAngularComponent imp
126
168
  * Returns true if the notification was a conversation type and navigation was attempted.
127
169
  */
128
170
  private navigateToConversation;
171
+ GetNotificationType(typeId: string | null): MJUserNotificationTypeEntity | null;
172
+ /** @deprecated Use {@link GetNotificationType}. */
129
173
  getNotificationType(typeId: string | null): MJUserNotificationTypeEntity | null;
174
+ GetTypeIcon(notification: MJUserNotificationEntity): string;
175
+ /** @deprecated Use {@link GetTypeIcon}. */
130
176
  getTypeIcon(notification: MJUserNotificationEntity): string;
177
+ GetTypeColor(notification: MJUserNotificationEntity): string;
178
+ /** @deprecated Use {@link GetTypeColor}. */
131
179
  getTypeColor(notification: MJUserNotificationEntity): string;
180
+ GetTypeName(notification: MJUserNotificationEntity): string;
181
+ /** @deprecated Use {@link GetTypeName}. */
132
182
  getTypeName(notification: MJUserNotificationEntity): string;
183
+ OnTypeFilterChange(typeId: string | null): void;
184
+ /** @deprecated Use {@link OnTypeFilterChange}. */
133
185
  onTypeFilterChange(typeId: string | null): void;
134
186
  static ɵfac: i0.ɵɵFactoryDeclaration<UserNotificationsComponent, never>;
135
187
  static ɵcmp: i0.ɵɵComponentDeclaration<UserNotificationsComponent, "app-user-notifications", never, {}, {}, never, never, false, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"user-notifications.component.d.ts","sourceRoot":"","sources":["../../../src/lib/user-notifications/user-notifications.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-notifications.component.d.ts","sourceRoot":"","sources":["../../../src/lib/user-notifications/user-notifications.component.ts"],"names":[],"mappings":"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"}