@memberjunction/ng-dashboards 5.38.0 → 5.40.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 (321) hide show
  1. package/README.md +14 -7
  2. package/dist/AI/components/agents/agent-configuration.component.js +199 -198
  3. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  4. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/ai-analytics-resource.component.js +20 -17
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +15 -0
  8. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  9. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +166 -58
  10. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  11. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  12. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +2 -1
  13. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  14. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +1 -0
  15. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  16. package/dist/AI/components/analytics/model-performance/model-performance.component.js +55 -36
  17. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  18. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +9 -1
  19. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  20. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +158 -117
  21. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  22. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +1 -0
  23. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  24. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +22 -8
  25. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  26. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +217 -860
  27. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  28. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1717 -7802
  29. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  30. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts +56 -0
  31. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts.map +1 -0
  32. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js +423 -0
  33. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js.map +1 -0
  34. package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts +70 -0
  35. package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts.map +1 -0
  36. package/dist/AI/components/autotagging/components/classify-item-grid.component.js +308 -0
  37. package/dist/AI/components/autotagging/components/classify-item-grid.component.js.map +1 -0
  38. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts +29 -0
  39. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts.map +1 -0
  40. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js +186 -0
  41. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js.map +1 -0
  42. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts +69 -0
  43. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts.map +1 -0
  44. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js +278 -0
  45. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js.map +1 -0
  46. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts +73 -0
  47. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts.map +1 -0
  48. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js +393 -0
  49. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js.map +1 -0
  50. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts +122 -0
  51. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts.map +1 -0
  52. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js +908 -0
  53. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js.map +1 -0
  54. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts +87 -0
  55. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts.map +1 -0
  56. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js +475 -0
  57. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js.map +1 -0
  58. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts +29 -0
  59. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts.map +1 -0
  60. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js +208 -0
  61. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js.map +1 -0
  62. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts +21 -0
  63. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts.map +1 -0
  64. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js +70 -0
  65. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js.map +1 -0
  66. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +333 -0
  67. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -0
  68. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +2125 -0
  69. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -0
  70. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts +61 -0
  71. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts.map +1 -0
  72. package/dist/AI/components/autotagging/shared/classify.dryrun.js +78 -0
  73. package/dist/AI/components/autotagging/shared/classify.dryrun.js.map +1 -0
  74. package/dist/AI/components/autotagging/shared/classify.format.d.ts +58 -0
  75. package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -0
  76. package/dist/AI/components/autotagging/shared/classify.format.js +260 -0
  77. package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -0
  78. package/dist/AI/components/autotagging/shared/classify.types.d.ts +319 -0
  79. package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -0
  80. package/dist/AI/components/autotagging/shared/classify.types.js +6 -0
  81. package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -0
  82. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts +103 -0
  83. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts.map +1 -0
  84. package/dist/AI/components/autotagging/tabs/health-tab.component.js +571 -0
  85. package/dist/AI/components/autotagging/tabs/health-tab.component.js.map +1 -0
  86. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +77 -0
  87. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -0
  88. package/dist/AI/components/autotagging/tabs/history-tab.component.js +519 -0
  89. package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -0
  90. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts +107 -0
  91. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts.map +1 -0
  92. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js +719 -0
  93. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js.map +1 -0
  94. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +131 -0
  95. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -0
  96. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +813 -0
  97. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -0
  98. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +177 -0
  99. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -0
  100. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1465 -0
  101. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -0
  102. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +78 -0
  103. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -0
  104. package/dist/AI/components/autotagging/tabs/tags-tab.component.js +492 -0
  105. package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -0
  106. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts +397 -0
  107. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts.map +1 -0
  108. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js +3490 -0
  109. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js.map +1 -0
  110. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +56 -0
  111. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -0
  112. package/dist/AI/components/autotagging/tabs/types-tab.component.js +271 -0
  113. package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -0
  114. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +3 -0
  115. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  116. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +306 -290
  117. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  118. package/dist/AI/components/execution-monitoring.component.js +1 -1
  119. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  120. package/dist/AI/components/models/model-management.component.js +209 -208
  121. package/dist/AI/components/models/model-management.component.js.map +1 -1
  122. package/dist/AI/components/prompts/prompt-management.component.js +130 -128
  123. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  124. package/dist/AI/components/requests/agent-requests-resource.component.js +61 -61
  125. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  126. package/dist/AI/components/system/system-configuration.component.js +17 -17
  127. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  128. package/dist/AI/components/tags/tags-resource.component.d.ts +1 -0
  129. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  130. package/dist/AI/components/tags/tags-resource.component.js +578 -538
  131. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  132. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +3 -0
  133. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  134. package/dist/AI/components/vectors/vector-management-resource.component.js +331 -303
  135. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  136. package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
  137. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  138. package/dist/AI/services/ai-instrumentation.service.js +14 -2
  139. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  140. package/dist/AI/services/cache-metrics.d.ts +50 -0
  141. package/dist/AI/services/cache-metrics.d.ts.map +1 -0
  142. package/dist/AI/services/cache-metrics.js +43 -0
  143. package/dist/AI/services/cache-metrics.js.map +1 -0
  144. package/dist/APIKeys/api-applications-panel.component.js +2 -2
  145. package/dist/APIKeys/api-key-create-dialog.component.js +2 -2
  146. package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
  147. package/dist/APIKeys/api-keys-resource.component.js +132 -131
  148. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  149. package/dist/Actions/components/actions-overview.component.js +141 -141
  150. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  151. package/dist/Actions/components/execution-monitoring.component.js +15 -15
  152. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  153. package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -5
  154. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  155. package/dist/Actions/components/explorer/action-explorer.component.js +139 -212
  156. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  157. package/dist/Admin/admin-data-schema.component.js +2 -2
  158. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  159. package/dist/Admin/admin-dev-tools-resource.component.js +2 -2
  160. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  161. package/dist/Admin/admin-identity-access.component.js +2 -2
  162. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  163. package/dist/Admin/admin-monitoring.component.js +2 -2
  164. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  165. package/dist/ApplicationRoles/application-roles-resource.component.js +54 -49
  166. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  167. package/dist/Communication/communication-logs-resource.component.d.ts +6 -0
  168. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  169. package/dist/Communication/communication-logs-resource.component.js +72 -50
  170. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  171. package/dist/Communication/communication-monitor-resource.component.js +103 -102
  172. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  173. package/dist/Communication/communication-providers-resource.component.js +52 -51
  174. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  175. package/dist/Communication/communication-runs-resource.component.js +39 -38
  176. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  177. package/dist/Communication/communication-templates-resource.component.d.ts +6 -0
  178. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  179. package/dist/Communication/communication-templates-resource.component.js +92 -89
  180. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  181. package/dist/Credentials/components/credentials-audit-resource.component.js +136 -135
  182. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  183. package/dist/Credentials/components/credentials-categories-resource.component.js +155 -152
  184. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  185. package/dist/Credentials/components/credentials-list-resource.component.js +119 -118
  186. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  187. package/dist/Credentials/components/credentials-overview-resource.component.js +129 -128
  188. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  189. package/dist/Credentials/components/credentials-types-resource.component.js +107 -106
  190. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  191. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +31 -340
  192. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  193. package/dist/DataExplorer/data-explorer-dashboard.component.js +468 -1958
  194. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  195. package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
  196. package/dist/DataExplorer/data-explorer-resource.component.js +10 -0
  197. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  198. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +1 -1
  199. package/dist/DatabaseDesigner/components/entity-list.component.js +115 -114
  200. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  201. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +5 -6
  202. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  203. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +4 -5
  204. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  205. package/dist/DevTools/app-state-inspector.component.js +18 -17
  206. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  207. package/dist/DevTools/class-registry.component.js +88 -85
  208. package/dist/DevTools/class-registry.component.js.map +1 -1
  209. package/dist/DevTools/event-monitor.component.js +155 -150
  210. package/dist/DevTools/event-monitor.component.js.map +1 -1
  211. package/dist/DevTools/graphql-console.component.js +245 -243
  212. package/dist/DevTools/graphql-console.component.js.map +1 -1
  213. package/dist/DevTools/layout-inspector.component.js +18 -17
  214. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  215. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -19
  216. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  217. package/dist/Home/home-dashboard.component.js +2 -2
  218. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  219. package/dist/Integration/components/activity/activity.component.js +236 -229
  220. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  221. package/dist/Integration/components/connections/connections.component.js +390 -389
  222. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  223. package/dist/Integration/components/overview/overview.component.js +2 -2
  224. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  225. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +14 -11
  226. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  227. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +27 -2
  228. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
  229. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +244 -119
  230. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  231. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +293 -291
  232. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  233. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +62 -61
  234. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  235. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts +65 -0
  236. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts.map +1 -0
  237. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js +176 -0
  238. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js.map +1 -0
  239. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts +81 -0
  240. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts.map +1 -0
  241. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js +308 -0
  242. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js.map +1 -0
  243. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts +85 -0
  244. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts.map +1 -0
  245. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js +362 -0
  246. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js.map +1 -0
  247. package/dist/KnowledgeHub/index.d.ts +3 -0
  248. package/dist/KnowledgeHub/index.d.ts.map +1 -1
  249. package/dist/KnowledgeHub/index.js +3 -0
  250. package/dist/KnowledgeHub/index.js.map +1 -1
  251. package/dist/Lists/components/lists-browse-resource.component.d.ts +6 -2
  252. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  253. package/dist/Lists/components/lists-browse-resource.component.js +525 -566
  254. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  255. package/dist/Lists/components/lists-categories-resource.component.js +135 -134
  256. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  257. package/dist/Lists/components/lists-my-lists-resource.component.js +199 -198
  258. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  259. package/dist/MCP/components/mcp-server-dialog.component.js +2 -2
  260. package/dist/MCP/mcp-dashboard.component.js +443 -438
  261. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  262. package/dist/QueryBrowser/query-browser-resource.component.js +1 -1
  263. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  264. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  265. package/dist/Scheduling/components/scheduling-activity.component.js +146 -147
  266. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  267. package/dist/Scheduling/components/scheduling-jobs.component.js +76 -75
  268. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  269. package/dist/Scheduling/components/scheduling-overview.component.js +97 -96
  270. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  271. package/dist/Scheduling/scheduling-dashboard.component.js +24 -22
  272. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  273. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +2 -0
  274. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
  275. package/dist/Scheduling/services/scheduling-instrumentation.service.js +1 -0
  276. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  277. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +1 -1
  278. package/dist/Testing/components/testing-explorer.component.d.ts +14 -4
  279. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  280. package/dist/Testing/components/testing-explorer.component.js +436 -427
  281. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  282. package/dist/Testing/components/testing-runs-resource.component.js +1 -1
  283. package/dist/Testing/components/testing-runs.component.js +116 -115
  284. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  285. package/dist/Testing/testing-dashboard.component.js +6 -7
  286. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  287. package/dist/VersionHistory/components/labels-resource.component.js +173 -172
  288. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  289. package/dist/VersionHistory/components/restore-resource.component.d.ts +6 -0
  290. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
  291. package/dist/VersionHistory/components/restore-resource.component.js +116 -92
  292. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  293. package/dist/ai-dashboards.module.d.ts +57 -35
  294. package/dist/ai-dashboards.module.d.ts.map +1 -1
  295. package/dist/ai-dashboards.module.js +80 -1
  296. package/dist/ai-dashboards.module.js.map +1 -1
  297. package/dist/communication-dashboards.module.d.ts +1 -1
  298. package/dist/communication-dashboards.module.d.ts.map +1 -1
  299. package/dist/communication-dashboards.module.js +7 -1
  300. package/dist/communication-dashboards.module.js.map +1 -1
  301. package/dist/data-explorer-dashboards.module.d.ts +12 -14
  302. package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
  303. package/dist/data-explorer-dashboards.module.js +5 -14
  304. package/dist/data-explorer-dashboards.module.js.map +1 -1
  305. package/dist/public-api.d.ts +3 -0
  306. package/dist/public-api.d.ts.map +1 -1
  307. package/dist/public-api.js +3 -0
  308. package/dist/public-api.js.map +1 -1
  309. package/dist/testing-dashboards.module.d.ts +4 -5
  310. package/dist/testing-dashboards.module.d.ts.map +1 -1
  311. package/dist/testing-dashboards.module.js +7 -5
  312. package/dist/testing-dashboards.module.js.map +1 -1
  313. package/package.json +57 -54
  314. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts +0 -79
  315. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +0 -1
  316. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +0 -195
  317. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +0 -1
  318. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +0 -226
  319. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +0 -1
  320. package/dist/DataExplorer/components/view-selector/view-selector.component.js +0 -861
  321. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"view-selector.component.js","sourceRoot":"","sources":["../../../../src/DataExplorer/components/view-selector/view-selector.component.ts","../../../../src/DataExplorer/components/view-selector/view-selector.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges, ChangeDetectorRef, OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { EntityInfo } from '@memberjunction/core';\nimport { MJUserViewEntityExtended, UserViewEngine, ViewInfo } from '@memberjunction/core-entities';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\n\n/**\n * Represents a view in the dropdown\n */\nexport interface ViewListItem {\n id: string;\n name: string;\n isOwned: boolean;\n isShared: boolean;\n isDefault: boolean;\n userCanEdit: boolean;\n entity: MJUserViewEntityExtended;\n}\n\n/**\n * Event emitted when a view is selected\n */\nexport interface ViewSelectedEvent {\n viewId: string | null;\n view: MJUserViewEntityExtended | null;\n}\n\n/**\n * Event emitted when user requests to save the current view\n */\nexport interface SaveViewRequestedEvent {\n /** True if user wants to save as a new view */\n saveAsNew: boolean;\n}\n\n/**\n * ViewSelectorComponent - Dropdown for selecting saved views\n *\n * Features:\n * - Shows \"(Default)\" option when no view is selected\n * - Groups views into \"My Views\" and \"Shared Views\"\n * - \"Save Current View\" and \"Manage Views\" actions\n * - \"Open in Tab\" button for saved views\n */\n@Component({\n standalone: false,\n selector: 'mj-view-selector',\n templateUrl: './view-selector.component.html',\n styleUrls: ['./view-selector.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ViewSelectorComponent extends BaseAngularComponent implements OnChanges, OnDestroy {\n /**\n * The entity to load views for\n */\n @Input() entity: EntityInfo | null = null;\n\n /**\n * Currently selected view ID (null = default view)\n */\n @Input() selectedViewId: string | null = null;\n\n /**\n * Whether the current view has unsaved modifications\n */\n @Input() viewModified: boolean = false;\n\n /**\n * Emitted when a view is selected\n */\n @Output() viewSelected = new EventEmitter<ViewSelectedEvent>();\n\n /**\n * Emitted when user requests to save the current view\n */\n @Output() saveViewRequested = new EventEmitter<SaveViewRequestedEvent>();\n\n /**\n * Emitted when user wants to open the view management panel\n */\n @Output() manageViewsRequested = new EventEmitter<void>();\n\n /**\n * Emitted when user wants to open the current view in its own tab\n */\n @Output() openInTabRequested = new EventEmitter<string>();\n\n /**\n * Emitted when user wants to configure the current view\n */\n @Output() configureViewRequested = new EventEmitter<void>();\n\n /**\n * Emitted when user wants to create a new record\n */\n @Output() createNewRecordRequested = new EventEmitter<void>();\n\n /**\n * Emitted when user wants to export data to Excel\n */\n @Output() exportRequested = new EventEmitter<void>();\n\n /**\n * Emitted when user wants to duplicate a view (F-005)\n */\n @Output() duplicateViewRequested = new EventEmitter<string>();\n\n /**\n * Emitted when user wants to use the quick save dialog (F-001)\n * Emits true when user explicitly requested \"Save As New\", false for general save\n */\n @Output() quickSaveRequested = new EventEmitter<boolean>();\n\n /**\n * Emitted when user wants to revert to saved state (F-007)\n */\n @Output() revertRequested = new EventEmitter<void>();\n\n // Internal state\n public isLoading: boolean = false;\n public isDropdownOpen: boolean = false;\n public myViews: ViewListItem[] = [];\n public sharedViews: ViewListItem[] = [];\n public selectedView: MJUserViewEntityExtended | null = null;\n public searchText: string = '';\n\n private destroy$ = new Subject<void>();\n private get metadata() { return this.ProviderToUse; }\n\n constructor(private cdr: ChangeDetectorRef) { super(); }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['entity']) {\n if (this.entity) {\n this.loadViews();\n } else {\n this.myViews = [];\n this.sharedViews = [];\n this.selectedView = null;\n }\n }\n\n if (changes['selectedViewId'] && this.selectedViewId) {\n // If we have a selected view ID and it's in our lists, update selectedView\n this.updateSelectedViewFromId();\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n /**\n * Load views for the current entity\n */\n public async loadViews(): Promise<void> {\n if (!this.entity) {\n return;\n }\n\n this.isLoading = true;\n this.cdr.detectChanges();\n\n try {\n const userId = this.metadata.CurrentUser?.ID;\n\n // Use UserViewEngine cache instead of a direct RunView to avoid redundant DB calls.\n // The engine is initialized once and caches all views; GetAccessibleViewsForEntity()\n // already filters by owned + shared and checks UserCanView.\n await UserViewEngine.Instance.Config(false);\n const accessibleViews = UserViewEngine.Instance.GetAccessibleViewsForEntity(this.entity.ID);\n\n // Separate into owned and shared\n this.myViews = accessibleViews\n .filter(v => UUIDsEqual(v.UserID, userId))\n .map(v => this.mapViewToListItem(v, true));\n\n this.sharedViews = accessibleViews\n .filter(v => !UUIDsEqual(v.UserID, userId))\n .map(v => this.mapViewToListItem(v, false));\n\n // Update selected view reference\n this.updateSelectedViewFromId();\n } catch (error) {\n console.error('Failed to load views:', error);\n } finally {\n this.isLoading = false;\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Map a view entity to a list item\n */\n private mapViewToListItem(view: MJUserViewEntityExtended, isOwned: boolean): ViewListItem {\n return {\n id: view.ID,\n name: view.Name,\n isOwned,\n isShared: view.IsShared,\n isDefault: view.IsDefault,\n userCanEdit: view.UserCanEdit,\n entity: view\n };\n }\n\n /**\n * Update the selectedView reference based on selectedViewId\n */\n private updateSelectedViewFromId(): void {\n if (!this.selectedViewId) {\n this.selectedView = null;\n return;\n }\n\n // Search in both lists\n const myView = this.myViews.find(v => v.id === this.selectedViewId);\n if (myView) {\n this.selectedView = myView.entity;\n return;\n }\n\n const sharedView = this.sharedViews.find(v => v.id === this.selectedViewId);\n if (sharedView) {\n this.selectedView = sharedView.entity;\n return;\n }\n\n // View not in lists yet - it might need to be loaded\n this.selectedView = null;\n }\n\n /**\n * Get the display name for the current selection\n */\n get displayName(): string {\n if (this.selectedView) {\n return this.selectedView.Name;\n }\n return '(Default)';\n }\n\n /**\n * Toggle dropdown open/closed\n */\n toggleDropdown(): void {\n this.isDropdownOpen = !this.isDropdownOpen;\n this.cdr.detectChanges();\n }\n\n /**\n * Close the dropdown\n */\n closeDropdown(): void {\n this.isDropdownOpen = false;\n this.searchText = '';\n this.cdr.detectChanges();\n }\n\n /**\n * Select the default view (no saved view)\n */\n selectDefault(): void {\n this.selectedView = null;\n this.viewSelected.emit({ viewId: null, view: null });\n this.closeDropdown();\n }\n\n /**\n * Select a view from the list\n */\n selectView(item: ViewListItem): void {\n this.selectedView = item.entity;\n this.viewSelected.emit({ viewId: item.id, view: item.entity });\n this.closeDropdown();\n }\n\n /**\n * Request to save the current view\n */\n onSaveView(): void {\n this.saveViewRequested.emit({ saveAsNew: false });\n this.closeDropdown();\n }\n\n /**\n * Request to save as a new view - opens Quick Save dialog in \"Save As New\" mode\n */\n onSaveAsNewView(): void {\n this.quickSaveRequested.emit(true);\n this.closeDropdown();\n }\n\n /**\n * Request to manage views\n */\n onManageViews(): void {\n this.manageViewsRequested.emit();\n this.closeDropdown();\n }\n\n /**\n * Request to open the current view in a tab\n */\n onOpenInTab(): void {\n if (this.selectedViewId) {\n this.openInTabRequested.emit(this.selectedViewId);\n }\n }\n\n /**\n * Request to configure the current view\n */\n onConfigureView(): void {\n this.configureViewRequested.emit();\n }\n\n /**\n * Request to create a new record\n */\n onCreateNewRecord(): void {\n this.createNewRecordRequested.emit();\n }\n\n /**\n * Request to export data to Excel\n */\n onExport(): void {\n this.exportRequested.emit();\n }\n\n /**\n * Request to duplicate a view (F-005)\n */\n onDuplicateView(viewId: string, event: MouseEvent): void {\n event.stopPropagation(); // Don't select the view\n this.duplicateViewRequested.emit(viewId);\n this.closeDropdown();\n }\n\n /**\n * Request to open the quick save dialog (F-001)\n */\n onQuickSave(): void {\n this.quickSaveRequested.emit(false);\n this.closeDropdown();\n }\n\n /**\n * Request to revert view to saved state (F-007)\n */\n onRevert(): void {\n this.revertRequested.emit();\n }\n\n /**\n * Check if there are any views to show\n */\n get hasViews(): boolean {\n return this.myViews.length > 0 || this.sharedViews.length > 0;\n }\n\n /**\n * Check if the current user can edit the selected view\n */\n get canEditSelectedView(): boolean {\n return this.selectedView?.UserCanEdit ?? false;\n }\n\n /**\n * Handle click outside to close dropdown\n */\n onClickOutside(event: Event): void {\n this.closeDropdown();\n }\n\n // ========================================\n // RICH VIEW PANEL: Search & Metadata\n // ========================================\n\n /**\n * My views filtered by search text\n */\n get filteredMyViews(): ViewListItem[] {\n if (!this.searchText.trim()) return this.myViews;\n const term = this.searchText.toLowerCase();\n return this.myViews.filter(v =>\n v.name.toLowerCase().includes(term) ||\n (v.entity.Description || '').toLowerCase().includes(term)\n );\n }\n\n /**\n * Shared views filtered by search text\n */\n get filteredSharedViews(): ViewListItem[] {\n if (!this.searchText.trim()) return this.sharedViews;\n const term = this.searchText.toLowerCase();\n return this.sharedViews.filter(v =>\n v.name.toLowerCase().includes(term) ||\n (v.entity.Description || '').toLowerCase().includes(term)\n );\n }\n\n /**\n * Get the number of filters configured in a view by parsing its FilterState\n */\n getViewFilterCount(view: ViewListItem): number {\n try {\n const filterState = view.entity.FilterState;\n if (!filterState) return 0;\n const parsed = JSON.parse(filterState);\n if (parsed?.filters?.length) return parsed.filters.length;\n // CompositeFilterDescriptor format\n if (parsed?.logic && parsed?.filters) return parsed.filters.length;\n return 0;\n } catch {\n return 0;\n }\n }\n\n /**\n * Get the number of visible columns in a view by parsing GridState\n */\n getViewColumnCount(view: ViewListItem): number {\n try {\n const gridState = view.entity.GridState;\n if (!gridState) return 0;\n const parsed = JSON.parse(gridState);\n if (Array.isArray(parsed)) {\n return parsed.filter((c: Record<string, unknown>) => !c['hidden']).length;\n }\n return 0;\n } catch {\n return 0;\n }\n }\n\n /**\n * Get sort info string from a view's SortState\n */\n getViewSortInfo(view: ViewListItem): string {\n try {\n const sortState = view.entity.SortState;\n if (!sortState) return '';\n const parsed = JSON.parse(sortState);\n if (Array.isArray(parsed) && parsed.length > 0) {\n return `${parsed.length} sort${parsed.length > 1 ? 's' : ''}`;\n }\n return '';\n } catch {\n return '';\n }\n }\n\n /**\n * Select a specific view and open the config panel for it\n */\n onConfigureViewById(viewId: string, event: MouseEvent): void {\n event.stopPropagation();\n // First select the view, then open config\n const item = this.myViews.find(v => v.id === viewId) || this.sharedViews.find(v => v.id === viewId);\n if (item) {\n this.selectedView = item.entity;\n this.viewSelected.emit({ viewId: item.id, view: item.entity });\n }\n this.configureViewRequested.emit();\n this.closeDropdown();\n }\n\n /**\n * Open a specific view in a new tab\n */\n onOpenViewInTab(viewId: string, event: MouseEvent): void {\n event.stopPropagation();\n this.openInTabRequested.emit(viewId);\n this.closeDropdown();\n }\n\n /**\n * Reset to default view (select no view)\n */\n onResetToDefault(): void {\n this.selectDefault();\n }\n}\n","<div class=\"vs-container\">\n <!-- Backdrop for closing panel -->\n @if (isDropdownOpen) {\n <div class=\"vs-backdrop\" (click)=\"closeDropdown()\"></div>\n }\n\n <!-- Main View Selector Button -->\n <div class=\"vs-wrapper\">\n <button\n class=\"vs-button\"\n [class.modified]=\"viewModified\"\n [class.open]=\"isDropdownOpen\"\n (click)=\"toggleDropdown()\"\n [disabled]=\"isLoading\"\n title=\"Select a saved view\">\n <i class=\"fa-solid fa-layer-group vs-btn-icon\"></i>\n <span class=\"vs-btn-name\">{{ displayName }}</span>\n @if (viewModified) {\n <span class=\"vs-modified-dot\" title=\"View has unsaved changes\">•</span>\n }\n <i class=\"fa-solid fa-chevron-down vs-arrow\" [class.rotated]=\"isDropdownOpen\"></i>\n </button>\n\n <!-- Rich View Panel -->\n @if (isDropdownOpen) {\n <div class=\"vs-panel\">\n <!-- Panel Header -->\n <div class=\"vs-panel-header\">\n <i class=\"fa-solid fa-table-list vs-header-icon\"></i>\n <span class=\"vs-panel-title\">Views</span>\n @if (entity) {\n <span class=\"vs-entity-badge\">{{ entity.DisplayNameOrName }}</span>\n }\n <button class=\"vs-close-btn\" (click)=\"closeDropdown()\" title=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Search -->\n <div class=\"vs-panel-search\">\n <input\n type=\"text\"\n class=\"vs-search-input\"\n placeholder=\"Search views...\"\n [(ngModel)]=\"searchText\"\n (keydown.escape)=\"searchText = ''\"\n />\n </div>\n\n <!-- Panel Body -->\n <div class=\"vs-panel-body\">\n <!-- Default Option -->\n <div class=\"vs-section\">\n <div\n class=\"vs-card\"\n [class.active]=\"!selectedViewId\"\n (click)=\"selectDefault()\">\n <div class=\"vs-card-icon\" [class.active]=\"!selectedViewId\">\n <i class=\"fa-solid fa-table\"></i>\n </div>\n <div class=\"vs-card-content\">\n <div class=\"vs-card-name\">(Default)</div>\n </div>\n @if (!selectedViewId) {\n <i class=\"fa-solid fa-check vs-card-check\"></i>\n }\n </div>\n </div>\n\n <!-- My Views Section -->\n @if (filteredMyViews.length > 0) {\n <div class=\"vs-section\">\n <div class=\"vs-section-header\">\n <i class=\"fa-solid fa-user\"></i>\n <span>My Views</span>\n <span class=\"vs-section-count\">{{ filteredMyViews.length }}</span>\n </div>\n @for (view of filteredMyViews; track view.id) {\n <div\n class=\"vs-card\"\n [class.active]=\"selectedViewId === view.id\"\n (click)=\"selectView(view)\">\n <div class=\"vs-card-icon\" [class.active]=\"selectedViewId === view.id\">\n <i class=\"fa-solid fa-table-list\"></i>\n </div>\n <div class=\"vs-card-content\">\n <div class=\"vs-card-name\">\n {{ view.name }}\n @if (view.isDefault) {\n <span class=\"vs-default-badge\">Default</span>\n }\n </div>\n @if (view.entity.Description) {\n <div class=\"vs-card-desc\">{{ view.entity.Description }}</div>\n }\n @if (getViewFilterCount(view) > 0 || getViewColumnCount(view) > 0 || getViewSortInfo(view)) {\n <div class=\"vs-card-meta\">\n @if (getViewFilterCount(view) > 0) {\n <span><i class=\"fa-solid fa-filter\"></i> {{ getViewFilterCount(view) }} filter{{ getViewFilterCount(view) !== 1 ? 's' : '' }}</span>\n }\n @if (getViewColumnCount(view) > 0) {\n <span><i class=\"fa-solid fa-table-columns\"></i> {{ getViewColumnCount(view) }} col{{ getViewColumnCount(view) !== 1 ? 's' : '' }}</span>\n }\n @if (getViewSortInfo(view)) {\n <span><i class=\"fa-solid fa-arrow-down-short-wide\"></i> {{ getViewSortInfo(view) }}</span>\n }\n </div>\n }\n </div>\n <div class=\"vs-card-actions\">\n <button\n class=\"vs-action-btn\"\n (click)=\"onDuplicateView(view.id, $event)\"\n title=\"Duplicate\">\n <i class=\"fa-regular fa-copy\"></i>\n </button>\n <button\n class=\"vs-action-btn\"\n (click)=\"onConfigureViewById(view.id, $event)\"\n title=\"Configure\">\n <i class=\"fa-solid fa-sliders\"></i>\n </button>\n <button\n class=\"vs-action-btn\"\n (click)=\"onOpenViewInTab(view.id, $event)\"\n title=\"Open in Tab\">\n <i class=\"fa-solid fa-up-right-from-square\"></i>\n </button>\n </div>\n @if (selectedViewId === view.id) {\n <i class=\"fa-solid fa-check vs-card-check\"></i>\n }\n </div>\n }\n </div>\n }\n\n <!-- Shared Views Section -->\n @if (filteredSharedViews.length > 0) {\n <div class=\"vs-section\">\n <div class=\"vs-section-header\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>Shared With Me</span>\n <span class=\"vs-section-count\">{{ filteredSharedViews.length }}</span>\n </div>\n @for (view of filteredSharedViews; track view.id) {\n <div\n class=\"vs-card\"\n [class.active]=\"selectedViewId === view.id\"\n (click)=\"selectView(view)\">\n <div class=\"vs-card-icon shared\">\n <i class=\"fa-solid fa-users\"></i>\n </div>\n <div class=\"vs-card-content\">\n <div class=\"vs-card-name\">\n {{ view.name }}\n @if (!view.userCanEdit) {\n <span class=\"vs-shared-badge\">View Only</span>\n } @else {\n <span class=\"vs-shared-badge editable\">Can Edit</span>\n }\n </div>\n @if (view.entity.Description) {\n <div class=\"vs-card-desc\">{{ view.entity.Description }}</div>\n }\n @if (getViewFilterCount(view) > 0 || getViewColumnCount(view) > 0) {\n <div class=\"vs-card-meta\">\n @if (getViewFilterCount(view) > 0) {\n <span><i class=\"fa-solid fa-filter\"></i> {{ getViewFilterCount(view) }} filter{{ getViewFilterCount(view) !== 1 ? 's' : '' }}</span>\n }\n @if (getViewColumnCount(view) > 0) {\n <span><i class=\"fa-solid fa-table-columns\"></i> {{ getViewColumnCount(view) }} col{{ getViewColumnCount(view) !== 1 ? 's' : '' }}</span>\n }\n </div>\n }\n </div>\n <div class=\"vs-card-actions\">\n <button\n class=\"vs-action-btn\"\n (click)=\"onDuplicateView(view.id, $event)\"\n title=\"Duplicate as My View\">\n <i class=\"fa-regular fa-copy\"></i>\n </button>\n @if (view.userCanEdit) {\n <button\n class=\"vs-action-btn\"\n (click)=\"onConfigureViewById(view.id, $event)\"\n title=\"Configure\">\n <i class=\"fa-solid fa-sliders\"></i>\n </button>\n }\n </div>\n @if (selectedViewId === view.id) {\n <i class=\"fa-solid fa-check vs-card-check\"></i>\n }\n </div>\n }\n </div>\n }\n\n <!-- No Views Message -->\n @if (!hasViews && !isLoading) {\n <div class=\"vs-empty-message\">\n <i class=\"fa-solid fa-bookmark\"></i>\n <div class=\"vs-empty-text\">\n <strong>No saved views yet</strong>\n <span>Save your current configuration as a view</span>\n </div>\n </div>\n }\n\n <!-- No Search Results -->\n @if (hasViews && filteredMyViews.length === 0 && filteredSharedViews.length === 0 && searchText) {\n <div class=\"vs-empty-message\">\n <i class=\"fa-solid fa-search\"></i>\n <span>No views match \"{{ searchText }}\"</span>\n </div>\n }\n\n <!-- Loading Indicator -->\n @if (isLoading) {\n <div class=\"vs-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading views...</span>\n </div>\n }\n </div>\n\n <!-- Panel Footer -->\n <div class=\"vs-panel-footer\">\n <button\n class=\"vs-panel-btn primary\"\n (click)=\"onQuickSave()\"\n title=\"Save current view configuration\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>New View</span>\n </button>\n <button\n class=\"vs-panel-btn\"\n (click)=\"onResetToDefault()\"\n title=\"Reset to default view\">\n <i class=\"fa-solid fa-arrow-rotate-left\"></i>\n <span>Reset to Default</span>\n </button>\n </div>\n </div>\n }\n </div>\n\n <!-- Open in Tab Button (only visible when a view is selected) -->\n @if (selectedViewId) {\n <button\n class=\"vs-icon-btn\"\n (click)=\"onOpenInTab()\"\n title=\"Open this view in a new tab\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n }\n\n <!-- Configure View Button -->\n <button\n class=\"vs-icon-btn\"\n (click)=\"onConfigureView()\"\n title=\"Configure view settings (columns, filters, sorting)\">\n <i class=\"fa-solid fa-sliders-h\"></i>\n </button>\n\n <!-- Create New Record Button -->\n <button\n class=\"vs-icon-btn\"\n (click)=\"onCreateNewRecord()\"\n title=\"Create new record\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n\n <!-- Export Button -->\n <button\n class=\"vs-icon-btn vs-export-btn\"\n (click)=\"onExport()\"\n title=\"Export to Excel\">\n <i class=\"fa-solid fa-file-excel\"></i>\n </button>\n</div>\n"]}