@memberjunction/ng-dashboards 5.23.0 → 5.25.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 (296) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +15 -33
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +233 -493
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/agents/agent-editor.component.d.ts +2 -2
  6. package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
  7. package/dist/AI/components/agents/agent-editor.component.js +7 -7
  8. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  9. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +717 -8
  10. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +7166 -1889
  12. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  13. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +50 -4
  14. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  15. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +759 -491
  16. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  17. package/dist/AI/components/execution-monitoring.component.d.ts +4 -5
  18. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  19. package/dist/AI/components/execution-monitoring.component.js +14 -15
  20. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  21. package/dist/AI/components/models/model-management.component.d.ts +4 -4
  22. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  23. package/dist/AI/components/models/model-management.component.js +5 -5
  24. package/dist/AI/components/models/model-management.component.js.map +1 -1
  25. package/dist/AI/components/prompts/prompt-management.component.d.ts +4 -4
  26. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  27. package/dist/AI/components/prompts/prompt-management.component.js +5 -5
  28. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  29. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +2 -1
  30. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  31. package/dist/AI/components/requests/agent-requests-resource.component.js +1 -0
  32. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  33. package/dist/AI/components/system/system-configuration.component.d.ts +2 -3
  34. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  35. package/dist/AI/components/system/system-configuration.component.js +9 -11
  36. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  37. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +62 -7
  38. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  39. package/dist/AI/components/vectors/vector-management-resource.component.js +825 -359
  40. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  41. package/dist/APIKeys/api-keys-resource.component.d.ts +2 -1
  42. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  43. package/dist/APIKeys/api-keys-resource.component.js +2 -0
  44. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  45. package/dist/Actions/components/actions-overview.component.d.ts +4 -5
  46. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  47. package/dist/Actions/components/actions-overview.component.js +11 -12
  48. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  49. package/dist/Actions/components/code-management.component.d.ts +2 -3
  50. package/dist/Actions/components/code-management.component.d.ts.map +1 -1
  51. package/dist/Actions/components/code-management.component.js +4 -6
  52. package/dist/Actions/components/code-management.component.js.map +1 -1
  53. package/dist/Actions/components/entity-integration.component.d.ts +2 -3
  54. package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
  55. package/dist/Actions/components/entity-integration.component.js +4 -6
  56. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  57. package/dist/Actions/components/execution-monitoring.component.d.ts +4 -5
  58. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  59. package/dist/Actions/components/execution-monitoring.component.js +10 -11
  60. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  61. package/dist/Actions/components/explorer/action-explorer.component.d.ts +13 -12
  62. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  63. package/dist/Actions/components/explorer/action-explorer.component.js +39 -66
  64. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  65. package/dist/Actions/components/scheduled-actions.component.d.ts +2 -3
  66. package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
  67. package/dist/Actions/components/scheduled-actions.component.js +4 -6
  68. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  69. package/dist/Actions/components/security-permissions.component.d.ts +2 -3
  70. package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
  71. package/dist/Actions/components/security-permissions.component.js +4 -6
  72. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  73. package/dist/ApplicationRoles/application-roles-resource.component.d.ts +112 -0
  74. package/dist/ApplicationRoles/application-roles-resource.component.d.ts.map +1 -0
  75. package/dist/ApplicationRoles/application-roles-resource.component.js +532 -0
  76. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -0
  77. package/dist/Communication/communication-dashboard.component.d.ts.map +1 -1
  78. package/dist/Communication/communication-dashboard.component.js +1 -0
  79. package/dist/Communication/communication-dashboard.component.js.map +1 -1
  80. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  81. package/dist/Communication/communication-logs-resource.component.js +4 -1
  82. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  83. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  84. package/dist/Communication/communication-monitor-resource.component.js +4 -1
  85. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  86. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  87. package/dist/Communication/communication-providers-resource.component.js +4 -1
  88. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  89. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  90. package/dist/Communication/communication-runs-resource.component.js +4 -1
  91. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  92. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  93. package/dist/Communication/communication-templates-resource.component.js +4 -1
  94. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  95. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +2 -1
  96. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  97. package/dist/ComponentStudio/component-studio-dashboard.component.js +1 -0
  98. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  99. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  100. package/dist/Credentials/components/credentials-audit-resource.component.js +2 -0
  101. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  102. package/dist/Credentials/components/credentials-categories-resource.component.d.ts +2 -3
  103. package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
  104. package/dist/Credentials/components/credentials-categories-resource.component.js +10 -11
  105. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  106. package/dist/Credentials/components/credentials-list-resource.component.d.ts +2 -1
  107. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  108. package/dist/Credentials/components/credentials-list-resource.component.js +2 -0
  109. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  110. package/dist/Credentials/components/credentials-overview-resource.component.d.ts +4 -4
  111. package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
  112. package/dist/Credentials/components/credentials-overview-resource.component.js +8 -9
  113. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  114. package/dist/Credentials/components/credentials-types-resource.component.d.ts +2 -3
  115. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  116. package/dist/Credentials/components/credentials-types-resource.component.js +11 -12
  117. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  118. package/dist/Credentials/credentials-dashboard.component.d.ts.map +1 -1
  119. package/dist/Credentials/credentials-dashboard.component.js +1 -0
  120. package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
  121. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +2 -3
  122. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
  123. package/dist/DashboardBrowser/dashboard-browser-resource.component.js +9 -10
  124. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  125. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +2 -2
  126. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +23 -15
  127. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  128. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +167 -213
  129. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  130. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +68 -32
  131. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  132. package/dist/DataExplorer/data-explorer-dashboard.component.js +470 -437
  133. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  134. package/dist/DataExplorer/data-explorer-resource.component.d.ts +10 -3
  135. package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
  136. package/dist/DataExplorer/data-explorer-resource.component.js +35 -11
  137. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  138. package/dist/DataExplorer/models/explorer-state.interface.d.ts +12 -3
  139. package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -1
  140. package/dist/DataExplorer/models/explorer-state.interface.js +5 -1
  141. package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -1
  142. package/dist/Home/home-dashboard.component.d.ts +4 -4
  143. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  144. package/dist/Home/home-dashboard.component.js +4 -5
  145. package/dist/Home/home-dashboard.component.js.map +1 -1
  146. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  147. package/dist/Integration/components/activity/activity.component.js +2 -0
  148. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  149. package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
  150. package/dist/Integration/components/connections/connections.component.js +3 -0
  151. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  152. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts.map +1 -1
  153. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +2 -0
  154. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  155. package/dist/Integration/components/overview/overview.component.d.ts.map +1 -1
  156. package/dist/Integration/components/overview/overview.component.js +3 -0
  157. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  158. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  159. package/dist/Integration/components/pipelines/pipelines.component.js +3 -0
  160. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  161. package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -1
  162. package/dist/Integration/components/schedules/schedules.component.js +3 -0
  163. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  164. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +412 -0
  165. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -0
  166. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +4267 -0
  167. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -0
  168. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +39 -4
  169. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
  170. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +187 -13
  171. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  172. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +13 -2
  173. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  174. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +329 -224
  175. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  176. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +76 -0
  177. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -0
  178. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +602 -0
  179. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -0
  180. package/dist/KnowledgeHub/index.d.ts +2 -1
  181. package/dist/KnowledgeHub/index.d.ts.map +1 -1
  182. package/dist/KnowledgeHub/index.js +2 -1
  183. package/dist/KnowledgeHub/index.js.map +1 -1
  184. package/dist/Lists/components/lists-browse-resource.component.d.ts +2 -1
  185. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  186. package/dist/Lists/components/lists-browse-resource.component.js +2 -0
  187. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  188. package/dist/Lists/components/lists-categories-resource.component.d.ts +2 -1
  189. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  190. package/dist/Lists/components/lists-categories-resource.component.js +2 -0
  191. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  192. package/dist/Lists/components/lists-my-lists-resource.component.d.ts +2 -1
  193. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  194. package/dist/Lists/components/lists-my-lists-resource.component.js +2 -0
  195. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  196. package/dist/Lists/components/lists-operations-resource.component.d.ts +2 -1
  197. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  198. package/dist/Lists/components/lists-operations-resource.component.js +2 -0
  199. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  200. package/dist/MCP/mcp-dashboard.component.d.ts +7 -28
  201. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  202. package/dist/MCP/mcp-dashboard.component.js +25 -107
  203. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  204. package/dist/MCP/mcp-resource.component.d.ts.map +1 -1
  205. package/dist/MCP/mcp-resource.component.js +1 -0
  206. package/dist/MCP/mcp-resource.component.js.map +1 -1
  207. package/dist/QueryBrowser/query-browser-resource.component.d.ts +10 -23
  208. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  209. package/dist/QueryBrowser/query-browser-resource.component.js +41 -103
  210. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  211. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  212. package/dist/Scheduling/components/scheduling-activity-resource.component.js +1 -0
  213. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  214. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  215. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +1 -0
  216. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  217. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  218. package/dist/Scheduling/components/scheduling-overview-resource.component.js +1 -0
  219. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  220. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  221. package/dist/Scheduling/scheduling-dashboard.component.js +1 -0
  222. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  223. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +4 -4
  224. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  225. package/dist/SystemDiagnostics/system-diagnostics.component.js +9 -10
  226. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  227. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  228. package/dist/Testing/components/testing-analytics-resource.component.js +2 -0
  229. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  230. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  231. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  232. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +2 -0
  233. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  234. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  235. package/dist/Testing/components/testing-explorer-resource.component.js +2 -0
  236. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  237. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  238. package/dist/Testing/components/testing-review-resource.component.js +2 -0
  239. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  240. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  241. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  242. package/dist/Testing/components/testing-runs-resource.component.js +2 -0
  243. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  244. package/dist/Testing/testing-dashboard.component.d.ts +2 -1
  245. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  246. package/dist/Testing/testing-dashboard.component.js +1 -0
  247. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  248. package/dist/VersionHistory/components/diff-resource.component.d.ts +4 -4
  249. package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -1
  250. package/dist/VersionHistory/components/diff-resource.component.js +9 -10
  251. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  252. package/dist/VersionHistory/components/graph-resource.component.d.ts +2 -1
  253. package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -1
  254. package/dist/VersionHistory/components/graph-resource.component.js +2 -0
  255. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  256. package/dist/VersionHistory/components/labels-resource.component.d.ts +4 -4
  257. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  258. package/dist/VersionHistory/components/labels-resource.component.js +10 -11
  259. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  260. package/dist/VersionHistory/components/restore-resource.component.d.ts +2 -1
  261. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
  262. package/dist/VersionHistory/components/restore-resource.component.js +2 -0
  263. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  264. package/dist/__tests__/analytics-resource.test.d.ts +2 -0
  265. package/dist/__tests__/analytics-resource.test.d.ts.map +1 -0
  266. package/dist/__tests__/analytics-resource.test.js +181 -0
  267. package/dist/__tests__/analytics-resource.test.js.map +1 -0
  268. package/dist/__tests__/scheduling.test.d.ts +2 -0
  269. package/dist/__tests__/scheduling.test.d.ts.map +1 -0
  270. package/dist/__tests__/scheduling.test.js +205 -0
  271. package/dist/__tests__/scheduling.test.js.map +1 -0
  272. package/dist/ai-dashboards.module.d.ts +22 -18
  273. package/dist/ai-dashboards.module.d.ts.map +1 -1
  274. package/dist/ai-dashboards.module.js +29 -10
  275. package/dist/ai-dashboards.module.js.map +1 -1
  276. package/dist/core-dashboards.module.d.ts +19 -18
  277. package/dist/core-dashboards.module.d.ts.map +1 -1
  278. package/dist/core-dashboards.module.js +8 -0
  279. package/dist/core-dashboards.module.js.map +1 -1
  280. package/dist/data-explorer-dashboards.module.d.ts +2 -1
  281. package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
  282. package/dist/data-explorer-dashboards.module.js +7 -3
  283. package/dist/data-explorer-dashboards.module.js.map +1 -1
  284. package/dist/public-api.d.ts +2 -1
  285. package/dist/public-api.d.ts.map +1 -1
  286. package/dist/public-api.js +3 -1
  287. package/dist/public-api.js.map +1 -1
  288. package/dist/shared/entity-field-display.d.ts +44 -0
  289. package/dist/shared/entity-field-display.d.ts.map +1 -0
  290. package/dist/shared/entity-field-display.js +118 -0
  291. package/dist/shared/entity-field-display.js.map +1 -0
  292. package/package.json +47 -46
  293. package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts +0 -85
  294. package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts.map +0 -1
  295. package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js +0 -461
  296. package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js.map +0 -1
@@ -1,85 +0,0 @@
1
- /**
2
- * @fileoverview Knowledge Hub Search Dashboard (Task 2)
3
- *
4
- * Google-style clean search experience with centered search bar,
5
- * grouped results, faceted sidebar filters, and "Ask Knowledge Agent" CTA.
6
- * Registered as BaseResourceComponent for the Knowledge Hub app.
7
- */
8
- import { OnDestroy, AfterViewInit } from '@angular/core';
9
- import { ResourceData } from '@memberjunction/core-entities';
10
- import { BaseResourceComponent } from '@memberjunction/ng-shared';
11
- import { SearchResultItem, SearchResultGroup, SearchFilter, SearchResultSelectedEvent, SearchFilterChangeEvent } from '@memberjunction/ng-search';
12
- import { RecentSearch } from '@memberjunction/ng-search';
13
- import * as i0 from "@angular/core";
14
- /** Saved search entry */
15
- interface SavedSearch {
16
- Query: string;
17
- FilterCount: number;
18
- SavedAt: Date;
19
- }
20
- export declare class KnowledgeSearchResourceComponent extends BaseResourceComponent implements AfterViewInit, OnDestroy {
21
- private cdr;
22
- private searchService;
23
- private injector;
24
- private navigationService;
25
- private destroy$;
26
- Query: string;
27
- IsSearching: boolean;
28
- HasSearched: boolean;
29
- ShowFilters: boolean;
30
- ShowResultDetail: boolean;
31
- DetailResult: SearchResultItem | null;
32
- AllResults: SearchResultItem[];
33
- ResultGroups: SearchResultGroup[];
34
- Filters: SearchFilter[];
35
- ActiveFilters: Record<string, string[]>;
36
- TotalCount: number;
37
- ElapsedMs: number;
38
- /** Minimum relevance score threshold (0-1). Results below this are hidden. */
39
- MinScoreThreshold: number;
40
- RecentSearches: RecentSearch[];
41
- SavedSearches: SavedSearch[];
42
- GetResourceDisplayName(_data: ResourceData): Promise<string>;
43
- GetResourceIconClass(_data: ResourceData): Promise<string>;
44
- ngAfterViewInit(): void;
45
- ngOnDestroy(): void;
46
- /** Execute a search query */
47
- RunSearch(): Promise<void>;
48
- /** Handle pressing Enter in the search box */
49
- OnSearchKeydown(event: KeyboardEvent): void;
50
- /** Handle selecting a result */
51
- OnResultSelected(event: SearchResultSelectedEvent): void;
52
- /** Handle "Open Record" — navigate to the entity record via NavigationService */
53
- OnOpenRecord(event: {
54
- EntityName: string;
55
- RecordID: string;
56
- }): void;
57
- /** Close the result detail view */
58
- CloseResultDetail(): void;
59
- /** Toggle the filter sidebar */
60
- ToggleFilters(): void;
61
- /** Handle a filter change from the filter component */
62
- OnFilterChanged(event: SearchFilterChangeEvent): void;
63
- /** Handle clearing all filters */
64
- OnFiltersCleared(): void;
65
- /** Handle relevance threshold slider change */
66
- OnThresholdChanged(value: number): void;
67
- /** Open the chat overlay with Knowledge Agent context */
68
- OnAskAgent(): void;
69
- /** Apply a recent search */
70
- ApplyRecentSearch(recent: RecentSearch): void;
71
- /** Clear the current search */
72
- ClearSearch(): void;
73
- /** Check if any filters are active */
74
- HasActiveFilters(): boolean;
75
- /** Parse URL parameters for deep links (e.g., ?conversationId=xxx or ?q=search+term) */
76
- private parseUrlParameters;
77
- private subscribeToSearchState;
78
- private applySearchResponse;
79
- static ɵfac: i0.ɵɵFactoryDeclaration<KnowledgeSearchResourceComponent, never>;
80
- static ɵcmp: i0.ɵɵComponentDeclaration<KnowledgeSearchResourceComponent, "app-knowledge-search-resource", never, {}, {}, never, never, false, never>;
81
- }
82
- /** Tree-shaking prevention */
83
- export declare function LoadKnowledgeSearchResource(): void;
84
- export {};
85
- //# sourceMappingURL=knowledge-search-resource.component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"knowledge-search-resource.component.d.ts","sourceRoot":"","sources":["../../../../src/KnowledgeHub/components/search/knowledge-search-resource.component.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAgC,SAAS,EAAE,aAAa,EAAoB,MAAM,eAAe,CAAC;AAIzG,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,OAAO,EAAE,qBAAqB,EAAqB,MAAM,2BAA2B,CAAC;AACrF,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EAGZ,yBAAyB,EACzB,uBAAuB,EAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAiB,YAAY,EAAE,MAAM,2BAA2B,CAAC;;AAGxE,yBAAyB;AACzB,UAAU,WAAW;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,IAAI,CAAC;CACjB;AAED,qBAOa,gCAAiC,SAAQ,qBAAsB,YAAW,aAAa,EAAE,SAAS;IAC3G,OAAO,CAAC,GAAG,CAA6B;IACxC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAuB;IAGhC,KAAK,SAAM;IACX,WAAW,UAAS;IACpB,WAAW,UAAS;IACpB,WAAW,UAAS;IACpB,gBAAgB,UAAS;IACzB,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAG7C,UAAU,EAAE,gBAAgB,EAAE,CAAM;IACpC,YAAY,EAAE,iBAAiB,EAAE,CAAM;IACvC,OAAO,EAAE,YAAY,EAAE,CAAM;IAC7B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAM;IAC7C,UAAU,SAAK;IACf,SAAS,SAAK;IACrB,8EAA8E;IACvE,iBAAiB,SAAQ;IAGzB,cAAc,EAAE,YAAY,EAAE,CAAM;IACpC,aAAa,EAAE,WAAW,EAAE,CAAM;IAEnC,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAI5D,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhE,eAAe,IAAI,IAAI;IAKvB,WAAW,IAAI,IAAI;IAKnB,6BAA6B;IAChB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBvC,8CAA8C;IACvC,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAOlD,gCAAgC;IACzB,gBAAgB,CAAC,KAAK,EAAE,yBAAyB,GAAG,IAAI;IAM/D,iFAAiF;IAC1E,YAAY,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAa1E,mCAAmC;IAC5B,iBAAiB,IAAI,IAAI;IAMhC,gCAAgC;IACzB,aAAa,IAAI,IAAI;IAK5B,uDAAuD;IAChD,eAAe,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI;IAK5D,kCAAkC;IAC3B,gBAAgB,IAAI,IAAI;IAM/B,+CAA+C;IACxC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9C,yDAAyD;IAClD,UAAU,IAAI,IAAI;IAazB,4BAA4B;IACrB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAKpD,+BAA+B;IACxB,WAAW,IAAI,IAAI;IAY1B,sCAAsC;IAC/B,gBAAgB,IAAI,OAAO;IAMlC,wFAAwF;IACxF,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,mBAAmB;yCAzMlB,gCAAgC;2CAAhC,gCAAgC;CAmN5C;AAED,8BAA8B;AAC9B,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
@@ -1,461 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- /**
8
- * @fileoverview Knowledge Hub Search Dashboard (Task 2)
9
- *
10
- * Google-style clean search experience with centered search bar,
11
- * grouped results, faceted sidebar filters, and "Ask Knowledge Agent" CTA.
12
- * Registered as BaseResourceComponent for the Knowledge Hub app.
13
- */
14
- import { Component, ChangeDetectorRef, inject, Injector } from '@angular/core';
15
- import { Subject } from 'rxjs';
16
- import { takeUntil } from 'rxjs/operators';
17
- import { CompositeKey, Metadata } from '@memberjunction/core';
18
- import { RegisterClass } from '@memberjunction/global';
19
- import { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';
20
- import { SearchService } from '@memberjunction/ng-search';
21
- import { ConversationBridgeService } from '@memberjunction/ng-conversations';
22
- import * as i0 from "@angular/core";
23
- import * as i1 from "@angular/forms";
24
- import * as i2 from "@memberjunction/ng-search";
25
- import * as i3 from "../results-detail/search-result-detail.component";
26
- import * as i4 from "@angular/common";
27
- const _forTrack0 = ($index, $item) => $item.Query;
28
- function KnowledgeSearchResourceComponent_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
29
- i0.ɵɵelementStart(0, "div", 14);
30
- i0.ɵɵelement(1, "i", 15);
31
- i0.ɵɵtext(2, " Knowledge Hub ");
32
- i0.ɵɵelementEnd();
33
- i0.ɵɵelementStart(3, "p", 16);
34
- i0.ɵɵtext(4, "Search across all your knowledge -- entities, documents, content, and more");
35
- i0.ɵɵelementEnd();
36
- } }
37
- function KnowledgeSearchResourceComponent_Conditional_0_Conditional_7_Template(rf, ctx) { if (rf & 1) {
38
- const _r3 = i0.ɵɵgetCurrentView();
39
- i0.ɵɵelementStart(0, "button", 17);
40
- i0.ɵɵlistener("click", function KnowledgeSearchResourceComponent_Conditional_0_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ClearSearch()); });
41
- i0.ɵɵelement(1, "i", 18);
42
- i0.ɵɵelementEnd();
43
- } }
44
- function KnowledgeSearchResourceComponent_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
45
- i0.ɵɵelement(0, "i", 10);
46
- } }
47
- function KnowledgeSearchResourceComponent_Conditional_0_Conditional_10_Template(rf, ctx) { if (rf & 1) {
48
- i0.ɵɵtext(0, " Search ");
49
- } }
50
- function KnowledgeSearchResourceComponent_Conditional_0_Conditional_11_Template(rf, ctx) { if (rf & 1) {
51
- const _r4 = i0.ɵɵgetCurrentView();
52
- i0.ɵɵelementStart(0, "div", 11)(1, "button", 19);
53
- i0.ɵɵlistener("click", function KnowledgeSearchResourceComponent_Conditional_0_Conditional_11_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnAskAgent()); });
54
- i0.ɵɵelement(2, "i", 20);
55
- i0.ɵɵtext(3, " Ask Knowledge Agent ");
56
- i0.ɵɵelementEnd()();
57
- } }
58
- function KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Conditional_1_Template(rf, ctx) { if (rf & 1) {
59
- const _r6 = i0.ɵɵgetCurrentView();
60
- i0.ɵɵelementStart(0, "aside", 21)(1, "mj-search-filter", 30);
61
- i0.ɵɵlistener("FilterChanged", function KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Conditional_1_Template_mj_search_filter_FilterChanged_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnFilterChanged($event)); })("FiltersCleared", function KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Conditional_1_Template_mj_search_filter_FiltersCleared_1_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnFiltersCleared()); });
62
- i0.ɵɵelementEnd();
63
- i0.ɵɵelementStart(2, "div", 31)(3, "label", 32);
64
- i0.ɵɵtext(4, " Min Relevance ");
65
- i0.ɵɵelementStart(5, "span", 33);
66
- i0.ɵɵtext(6);
67
- i0.ɵɵpipe(7, "number");
68
- i0.ɵɵelementEnd()();
69
- i0.ɵɵelementStart(8, "input", 34);
70
- i0.ɵɵlistener("input", function KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Conditional_1_Template_input_input_8_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnThresholdChanged($event.target.value / 100)); });
71
- i0.ɵɵelementEnd();
72
- i0.ɵɵelementStart(9, "div", 35)(10, "span");
73
- i0.ɵɵtext(11, "All");
74
- i0.ɵɵelementEnd();
75
- i0.ɵɵelementStart(12, "span");
76
- i0.ɵɵtext(13, "Strict");
77
- i0.ɵɵelementEnd()()()();
78
- } if (rf & 2) {
79
- const ctx_r1 = i0.ɵɵnextContext(3);
80
- i0.ɵɵadvance();
81
- i0.ɵɵproperty("Filters", ctx_r1.Filters)("ActiveFilters", ctx_r1.ActiveFilters);
82
- i0.ɵɵadvance(5);
83
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(7, 7, ctx_r1.MinScoreThreshold * 100, "1.0-0"), "%");
84
- i0.ɵɵadvance(2);
85
- i0.ɵɵproperty("min", 0)("max", 100)("step", 5)("value", ctx_r1.MinScoreThreshold * 100);
86
- } }
87
- function KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Conditional_6_Template(rf, ctx) { if (rf & 1) {
88
- i0.ɵɵelementStart(0, "span", 25);
89
- i0.ɵɵtext(1);
90
- i0.ɵɵelementEnd();
91
- } if (rf & 2) {
92
- const ctx_r1 = i0.ɵɵnextContext(3);
93
- i0.ɵɵadvance();
94
- i0.ɵɵtextInterpolate1("in ", ctx_r1.ElapsedMs, "ms");
95
- } }
96
- function KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Conditional_8_Conditional_2_Template(rf, ctx) { if (rf & 1) {
97
- i0.ɵɵtext(0, " Filters Active ");
98
- } }
99
- function KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Conditional_8_Conditional_3_Template(rf, ctx) { if (rf & 1) {
100
- i0.ɵɵtext(0, " Filters ");
101
- } }
102
- function KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Conditional_8_Template(rf, ctx) { if (rf & 1) {
103
- const _r7 = i0.ɵɵgetCurrentView();
104
- i0.ɵɵelementStart(0, "button", 36);
105
- i0.ɵɵlistener("click", function KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleFilters()); });
106
- i0.ɵɵelement(1, "i", 37);
107
- i0.ɵɵconditionalCreate(2, KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Conditional_8_Conditional_2_Template, 1, 0)(3, KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Conditional_8_Conditional_3_Template, 1, 0);
108
- i0.ɵɵelementEnd();
109
- } if (rf & 2) {
110
- const ctx_r1 = i0.ɵɵnextContext(3);
111
- i0.ɵɵadvance(2);
112
- i0.ɵɵconditional(ctx_r1.HasActiveFilters() ? 2 : 3);
113
- } }
114
- function KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Conditional_10_Template(rf, ctx) { if (rf & 1) {
115
- const _r8 = i0.ɵɵgetCurrentView();
116
- i0.ɵɵelementStart(0, "div", 29);
117
- i0.ɵɵelement(1, "i", 38);
118
- i0.ɵɵelementStart(2, "div", 39)(3, "strong");
119
- i0.ɵɵtext(4, "Can't find what you're looking for?");
120
- i0.ɵɵelementEnd();
121
- i0.ɵɵelementStart(5, "p");
122
- i0.ɵɵtext(6, "Ask the Knowledge Agent for a deeper analysis");
123
- i0.ɵɵelementEnd()();
124
- i0.ɵɵelementStart(7, "button", 40);
125
- i0.ɵɵlistener("click", function KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Conditional_10_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnAskAgent()); });
126
- i0.ɵɵtext(8, " Ask Agent ");
127
- i0.ɵɵelementEnd()();
128
- } }
129
- function KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
130
- const _r5 = i0.ɵɵgetCurrentView();
131
- i0.ɵɵelementStart(0, "div", 12);
132
- i0.ɵɵconditionalCreate(1, KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Conditional_1_Template, 14, 10, "aside", 21);
133
- i0.ɵɵelementStart(2, "div", 22)(3, "div", 23)(4, "span", 24);
134
- i0.ɵɵtext(5);
135
- i0.ɵɵconditionalCreate(6, KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Conditional_6_Template, 2, 1, "span", 25);
136
- i0.ɵɵelementEnd();
137
- i0.ɵɵelementStart(7, "div", 26);
138
- i0.ɵɵconditionalCreate(8, KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Conditional_8_Template, 4, 1, "button", 27);
139
- i0.ɵɵelementEnd()();
140
- i0.ɵɵelementStart(9, "mj-search-results", 28);
141
- i0.ɵɵlistener("ResultSelected", function KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Template_mj_search_results_ResultSelected_9_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnResultSelected($event)); })("OpenRecordRequested", function KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Template_mj_search_results_OpenRecordRequested_9_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnOpenRecord($event)); });
142
- i0.ɵɵelementEnd();
143
- i0.ɵɵconditionalCreate(10, KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Conditional_10_Template, 9, 0, "div", 29);
144
- i0.ɵɵelementEnd()();
145
- } if (rf & 2) {
146
- const ctx_r1 = i0.ɵɵnextContext(2);
147
- i0.ɵɵadvance();
148
- i0.ɵɵconditional(ctx_r1.ShowFilters && ctx_r1.Filters.length > 0 ? 1 : -1);
149
- i0.ɵɵadvance(4);
150
- i0.ɵɵtextInterpolate1(" ", ctx_r1.TotalCount, " results ");
151
- i0.ɵɵadvance();
152
- i0.ɵɵconditional(ctx_r1.ElapsedMs > 0 ? 6 : -1);
153
- i0.ɵɵadvance(2);
154
- i0.ɵɵconditional(ctx_r1.Filters.length > 0 ? 8 : -1);
155
- i0.ɵɵadvance();
156
- i0.ɵɵproperty("ResultGroups", ctx_r1.ResultGroups)("IsLoading", ctx_r1.IsSearching)("TotalCount", ctx_r1.TotalCount)("ElapsedMs", ctx_r1.ElapsedMs);
157
- i0.ɵɵadvance();
158
- i0.ɵɵconditional(ctx_r1.TotalCount === 0 && !ctx_r1.IsSearching ? 10 : -1);
159
- } }
160
- function KnowledgeSearchResourceComponent_Conditional_0_Conditional_13_Conditional_1_For_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
161
- const _r9 = i0.ɵɵgetCurrentView();
162
- i0.ɵɵelementStart(0, "div", 44);
163
- i0.ɵɵlistener("click", function KnowledgeSearchResourceComponent_Conditional_0_Conditional_13_Conditional_1_For_4_Conditional_0_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r9); const recent_r10 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.ApplyRecentSearch(recent_r10)); });
164
- i0.ɵɵelement(1, "i", 45);
165
- i0.ɵɵelementStart(2, "span", 46);
166
- i0.ɵɵtext(3);
167
- i0.ɵɵelementEnd();
168
- i0.ɵɵelementStart(4, "span", 47);
169
- i0.ɵɵtext(5);
170
- i0.ɵɵelementEnd()();
171
- } if (rf & 2) {
172
- const recent_r10 = i0.ɵɵnextContext().$implicit;
173
- i0.ɵɵadvance(3);
174
- i0.ɵɵtextInterpolate(recent_r10.Query);
175
- i0.ɵɵadvance(2);
176
- i0.ɵɵtextInterpolate1("", recent_r10.ResultCount, " results");
177
- } }
178
- function KnowledgeSearchResourceComponent_Conditional_0_Conditional_13_Conditional_1_For_4_Template(rf, ctx) { if (rf & 1) {
179
- i0.ɵɵconditionalCreate(0, KnowledgeSearchResourceComponent_Conditional_0_Conditional_13_Conditional_1_For_4_Conditional_0_Template, 6, 2, "div", 43);
180
- } if (rf & 2) {
181
- const ɵ$index_119_r11 = ctx.$index;
182
- i0.ɵɵconditional(ɵ$index_119_r11 < 8 ? 0 : -1);
183
- } }
184
- function KnowledgeSearchResourceComponent_Conditional_0_Conditional_13_Conditional_1_Template(rf, ctx) { if (rf & 1) {
185
- i0.ɵɵelementStart(0, "h3", 41);
186
- i0.ɵɵtext(1, "Recent Searches");
187
- i0.ɵɵelementEnd();
188
- i0.ɵɵelementStart(2, "div", 42);
189
- i0.ɵɵrepeaterCreate(3, KnowledgeSearchResourceComponent_Conditional_0_Conditional_13_Conditional_1_For_4_Template, 1, 1, null, null, _forTrack0);
190
- i0.ɵɵelementEnd();
191
- } if (rf & 2) {
192
- const ctx_r1 = i0.ɵɵnextContext(3);
193
- i0.ɵɵadvance(3);
194
- i0.ɵɵrepeater(ctx_r1.RecentSearches);
195
- } }
196
- function KnowledgeSearchResourceComponent_Conditional_0_Conditional_13_Template(rf, ctx) { if (rf & 1) {
197
- i0.ɵɵelementStart(0, "div", 13);
198
- i0.ɵɵconditionalCreate(1, KnowledgeSearchResourceComponent_Conditional_0_Conditional_13_Conditional_1_Template, 5, 0);
199
- i0.ɵɵelementEnd();
200
- } if (rf & 2) {
201
- const ctx_r1 = i0.ɵɵnextContext(2);
202
- i0.ɵɵadvance();
203
- i0.ɵɵconditional(ctx_r1.RecentSearches.length > 0 ? 1 : -1);
204
- } }
205
- function KnowledgeSearchResourceComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
206
- const _r1 = i0.ɵɵgetCurrentView();
207
- i0.ɵɵelementStart(0, "div", 2)(1, "div", 3);
208
- i0.ɵɵconditionalCreate(2, KnowledgeSearchResourceComponent_Conditional_0_Conditional_2_Template, 5, 0);
209
- i0.ɵɵelementStart(3, "div", 4)(4, "div", 5);
210
- i0.ɵɵelement(5, "i", 6);
211
- i0.ɵɵelementStart(6, "input", 7);
212
- i0.ɵɵtwoWayListener("ngModelChange", function KnowledgeSearchResourceComponent_Conditional_0_Template_input_ngModelChange_6_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.Query, $event) || (ctx_r1.Query = $event); return i0.ɵɵresetView($event); });
213
- i0.ɵɵlistener("keydown", function KnowledgeSearchResourceComponent_Conditional_0_Template_input_keydown_6_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnSearchKeydown($event)); });
214
- i0.ɵɵelementEnd();
215
- i0.ɵɵconditionalCreate(7, KnowledgeSearchResourceComponent_Conditional_0_Conditional_7_Template, 2, 0, "button", 8);
216
- i0.ɵɵelementStart(8, "button", 9);
217
- i0.ɵɵlistener("click", function KnowledgeSearchResourceComponent_Conditional_0_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.RunSearch()); });
218
- i0.ɵɵconditionalCreate(9, KnowledgeSearchResourceComponent_Conditional_0_Conditional_9_Template, 1, 0, "i", 10)(10, KnowledgeSearchResourceComponent_Conditional_0_Conditional_10_Template, 1, 0);
219
- i0.ɵɵelementEnd()();
220
- i0.ɵɵconditionalCreate(11, KnowledgeSearchResourceComponent_Conditional_0_Conditional_11_Template, 4, 0, "div", 11);
221
- i0.ɵɵelementEnd()();
222
- i0.ɵɵconditionalCreate(12, KnowledgeSearchResourceComponent_Conditional_0_Conditional_12_Template, 11, 9, "div", 12)(13, KnowledgeSearchResourceComponent_Conditional_0_Conditional_13_Template, 2, 1, "div", 13);
223
- i0.ɵɵelementEnd();
224
- } if (rf & 2) {
225
- const ctx_r1 = i0.ɵɵnextContext();
226
- i0.ɵɵclassProp("search-page-has-results", ctx_r1.HasSearched);
227
- i0.ɵɵadvance();
228
- i0.ɵɵclassProp("search-hero-compact", ctx_r1.HasSearched);
229
- i0.ɵɵadvance();
230
- i0.ɵɵconditional(!ctx_r1.HasSearched ? 2 : -1);
231
- i0.ɵɵadvance(4);
232
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.Query);
233
- i0.ɵɵadvance();
234
- i0.ɵɵconditional(ctx_r1.Query.length > 0 ? 7 : -1);
235
- i0.ɵɵadvance();
236
- i0.ɵɵproperty("disabled", ctx_r1.IsSearching || !ctx_r1.Query.trim());
237
- i0.ɵɵadvance();
238
- i0.ɵɵconditional(ctx_r1.IsSearching ? 9 : 10);
239
- i0.ɵɵadvance(2);
240
- i0.ɵɵconditional(!ctx_r1.HasSearched ? 11 : -1);
241
- i0.ɵɵadvance();
242
- i0.ɵɵconditional(ctx_r1.HasSearched ? 12 : !ctx_r1.IsSearching ? 13 : -1);
243
- } }
244
- function KnowledgeSearchResourceComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
245
- const _r12 = i0.ɵɵgetCurrentView();
246
- i0.ɵɵelementStart(0, "app-search-result-detail", 48);
247
- i0.ɵɵlistener("BackClicked", function KnowledgeSearchResourceComponent_Conditional_1_Template_app_search_result_detail_BackClicked_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseResultDetail()); })("NavigateToRecord", function KnowledgeSearchResourceComponent_Conditional_1_Template_app_search_result_detail_NavigateToRecord_0_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnOpenRecord($event)); });
248
- i0.ɵɵelementEnd();
249
- } if (rf & 2) {
250
- const ctx_r1 = i0.ɵɵnextContext();
251
- i0.ɵɵproperty("Result", ctx_r1.DetailResult);
252
- } }
253
- let KnowledgeSearchResourceComponent = class KnowledgeSearchResourceComponent extends BaseResourceComponent {
254
- cdr = inject(ChangeDetectorRef);
255
- searchService = inject(SearchService);
256
- injector = inject(Injector);
257
- navigationService = inject(NavigationService);
258
- destroy$ = new Subject();
259
- // --- State ---
260
- Query = '';
261
- IsSearching = false;
262
- HasSearched = false;
263
- ShowFilters = false;
264
- ShowResultDetail = false;
265
- DetailResult = null;
266
- // --- Results ---
267
- AllResults = [];
268
- ResultGroups = [];
269
- Filters = [];
270
- ActiveFilters = {};
271
- TotalCount = 0;
272
- ElapsedMs = 0;
273
- /** Minimum relevance score threshold (0-1). Results below this are hidden. */
274
- MinScoreThreshold = 0.35;
275
- // --- Recent & Saved ---
276
- RecentSearches = [];
277
- SavedSearches = [];
278
- async GetResourceDisplayName(_data) {
279
- return 'Knowledge Search';
280
- }
281
- async GetResourceIconClass(_data) {
282
- return 'fa-solid fa-magnifying-glass';
283
- }
284
- ngAfterViewInit() {
285
- this.subscribeToSearchState();
286
- this.parseUrlParameters();
287
- }
288
- ngOnDestroy() {
289
- this.destroy$.next();
290
- this.destroy$.complete();
291
- }
292
- /** Execute a search query */
293
- async RunSearch() {
294
- const query = this.Query.trim();
295
- if (!query)
296
- return;
297
- const request = {
298
- Query: query,
299
- MaxResults: 50,
300
- ActiveFilters: this.ActiveFilters,
301
- IncludeSources: ['vector', 'fulltext', 'entity'],
302
- MinScore: this.MinScoreThreshold,
303
- };
304
- const response = await this.searchService.ExecuteSearch(request);
305
- this.applySearchResponse(response);
306
- }
307
- /** Handle pressing Enter in the search box */
308
- OnSearchKeydown(event) {
309
- if (event.key === 'Enter') {
310
- event.preventDefault();
311
- this.RunSearch();
312
- }
313
- }
314
- /** Handle selecting a result */
315
- OnResultSelected(event) {
316
- this.DetailResult = event.Result;
317
- this.ShowResultDetail = true;
318
- this.cdr.detectChanges();
319
- }
320
- /** Handle "Open Record" — navigate to the entity record via NavigationService */
321
- OnOpenRecord(event) {
322
- const md = new Metadata();
323
- const entityInfo = md.Entities.find(e => e.Name === event.EntityName);
324
- const pkey = new CompositeKey();
325
- if (entityInfo) {
326
- pkey.LoadFromURLSegment(entityInfo, event.RecordID);
327
- }
328
- else {
329
- // Fallback: treat as simple single-field PK
330
- pkey.KeyValuePairs = [{ FieldName: 'ID', Value: event.RecordID }];
331
- }
332
- this.navigationService.OpenEntityRecord(event.EntityName, pkey);
333
- }
334
- /** Close the result detail view */
335
- CloseResultDetail() {
336
- this.ShowResultDetail = false;
337
- this.DetailResult = null;
338
- this.cdr.detectChanges();
339
- }
340
- /** Toggle the filter sidebar */
341
- ToggleFilters() {
342
- this.ShowFilters = !this.ShowFilters;
343
- this.cdr.detectChanges();
344
- }
345
- /** Handle a filter change from the filter component */
346
- OnFilterChanged(event) {
347
- this.ActiveFilters[event.Category] = event.SelectedValues;
348
- this.RunSearch();
349
- }
350
- /** Handle clearing all filters */
351
- OnFiltersCleared() {
352
- this.ActiveFilters = {};
353
- this.MinScoreThreshold = 0.35;
354
- this.RunSearch();
355
- }
356
- /** Handle relevance threshold slider change */
357
- OnThresholdChanged(value) {
358
- this.MinScoreThreshold = value;
359
- this.RunSearch();
360
- }
361
- /** Open the chat overlay with Knowledge Agent context */
362
- OnAskAgent() {
363
- try {
364
- const bridge = this.injector.get(ConversationBridgeService, null);
365
- if (bridge) {
366
- bridge.SwitchToOverlay(null);
367
- }
368
- else {
369
- console.warn('[KnowledgeSearch] ConversationBridgeService not available');
370
- }
371
- }
372
- catch {
373
- console.warn('[KnowledgeSearch] ConversationBridgeService not available');
374
- }
375
- }
376
- /** Apply a recent search */
377
- ApplyRecentSearch(recent) {
378
- this.Query = recent.Query;
379
- this.RunSearch();
380
- }
381
- /** Clear the current search */
382
- ClearSearch() {
383
- this.Query = '';
384
- this.AllResults = [];
385
- this.ResultGroups = [];
386
- this.Filters = [];
387
- this.ActiveFilters = {};
388
- this.TotalCount = 0;
389
- this.HasSearched = false;
390
- this.ShowFilters = false;
391
- this.cdr.detectChanges();
392
- }
393
- /** Check if any filters are active */
394
- HasActiveFilters() {
395
- return Object.values(this.ActiveFilters).some(v => v.length > 0);
396
- }
397
- // --- Private Methods ---
398
- /** Parse URL parameters for deep links (e.g., ?conversationId=xxx or ?q=search+term) */
399
- parseUrlParameters() {
400
- try {
401
- const urlParams = new URLSearchParams(window.location.search);
402
- const conversationId = urlParams.get('conversationId');
403
- if (conversationId) {
404
- // Deep link to conversation - open the agent chat
405
- this.OnAskAgent();
406
- }
407
- const searchQuery = urlParams.get('q');
408
- if (searchQuery) {
409
- this.Query = searchQuery;
410
- this.RunSearch();
411
- }
412
- }
413
- catch {
414
- // Ignore URL parsing errors
415
- }
416
- }
417
- subscribeToSearchState() {
418
- this.searchService.IsSearching$
419
- .pipe(takeUntil(this.destroy$))
420
- .subscribe((val) => {
421
- this.IsSearching = val;
422
- this.cdr.detectChanges();
423
- });
424
- this.searchService.RecentSearches$
425
- .pipe(takeUntil(this.destroy$))
426
- .subscribe((val) => {
427
- this.RecentSearches = val;
428
- this.cdr.detectChanges();
429
- });
430
- }
431
- applySearchResponse(response) {
432
- this.AllResults = response.Results;
433
- this.ResultGroups = response.Groups;
434
- this.Filters = response.Filters;
435
- this.TotalCount = response.TotalCount;
436
- this.ElapsedMs = response.ElapsedMs;
437
- this.HasSearched = true;
438
- this.ShowFilters = response.Filters.length > 0;
439
- this.cdr.detectChanges();
440
- }
441
- static ɵfac = /*@__PURE__*/ (() => { let ɵKnowledgeSearchResourceComponent_BaseFactory; return function KnowledgeSearchResourceComponent_Factory(__ngFactoryType__) { return (ɵKnowledgeSearchResourceComponent_BaseFactory || (ɵKnowledgeSearchResourceComponent_BaseFactory = i0.ɵɵgetInheritedFactory(KnowledgeSearchResourceComponent)))(__ngFactoryType__ || KnowledgeSearchResourceComponent); }; })();
442
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KnowledgeSearchResourceComponent, selectors: [["app-knowledge-search-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [[1, "search-page", 3, "search-page-has-results"], [3, "Result"], [1, "search-page"], [1, "search-hero"], [1, "search-container"], [1, "search-box"], [1, "fa-solid", "fa-magnifying-glass", "search-box-icon"], ["type", "text", "placeholder", "Search across all your knowledge...", "autocomplete", "off", "spellcheck", "false", 1, "search-box-input", 3, "ngModelChange", "keydown", "ngModel"], [1, "search-clear-btn"], [1, "search-submit-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "search-quick-actions"], [1, "search-results-layout"], [1, "search-recent-area"], [1, "search-logo"], [1, "fa-solid", "fa-brain"], [1, "search-subtitle"], [1, "search-clear-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "quick-action-btn", 3, "click"], [1, "fa-solid", "fa-robot"], [1, "search-sidebar"], [1, "search-results-main"], [1, "search-results-header"], [1, "search-results-count"], [1, "search-results-time"], [1, "search-results-actions"], [1, "toggle-filters-btn"], [3, "ResultSelected", "OpenRecordRequested", "ResultGroups", "IsLoading", "TotalCount", "ElapsedMs"], [1, "search-agent-cta"], [3, "FilterChanged", "FiltersCleared", "Filters", "ActiveFilters"], [1, "threshold-section"], [1, "threshold-label"], [1, "threshold-value"], ["type", "range", 1, "threshold-slider", 3, "input", "min", "max", "step", "value"], [1, "threshold-range-labels"], [1, "toggle-filters-btn", 3, "click"], [1, "fa-solid", "fa-filter"], [1, "fa-solid", "fa-robot", "cta-icon"], [1, "cta-text"], [1, "cta-btn", 3, "click"], [1, "recent-title"], [1, "recent-list"], [1, "recent-item"], [1, "recent-item", 3, "click"], [1, "fa-solid", "fa-clock", "recent-icon"], [1, "recent-query"], [1, "recent-count"], [3, "BackClicked", "NavigateToRecord", "Result"]], template: function KnowledgeSearchResourceComponent_Template(rf, ctx) { if (rf & 1) {
443
- i0.ɵɵconditionalCreate(0, KnowledgeSearchResourceComponent_Conditional_0_Template, 14, 11, "div", 0)(1, KnowledgeSearchResourceComponent_Conditional_1_Template, 1, 1, "app-search-result-detail", 1);
444
- } if (rf & 2) {
445
- i0.ɵɵconditional(!ctx.ShowResultDetail ? 0 : 1);
446
- } }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, i2.SearchResultsComponent, i2.SearchFilterComponent, i3.SearchResultDetailComponent, i4.DecimalPipe], styles: ["\n\n\n.search-page[_ngcontent-%COMP%] {\n min-height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n\n\n.search-hero[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 6rem 2rem 2rem;\n transition: padding 0.4s ease;\n}\n\n.search-hero-compact[_ngcontent-%COMP%] {\n padding: 1.5rem 2rem 1rem;\n}\n\n.search-logo[_ngcontent-%COMP%] {\n font-size: 2.2rem;\n font-weight: 700;\n color: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n gap: 0.75rem;\n margin-bottom: 0.5rem;\n transition: font-size 0.4s ease;\n}\n\n.search-hero-compact[_ngcontent-%COMP%] .search-logo[_ngcontent-%COMP%] {\n font-size: 0;\n height: 0;\n margin: 0;\n overflow: hidden;\n}\n\n.search-subtitle[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 1rem;\n margin-bottom: 2rem;\n text-align: center;\n transition: all 0.4s ease;\n}\n\n.search-hero-compact[_ngcontent-%COMP%] .search-subtitle[_ngcontent-%COMP%] {\n font-size: 0;\n height: 0;\n margin: 0;\n overflow: hidden;\n opacity: 0;\n}\n\n\n\n.search-container[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 720px;\n}\n\n.search-box[_ngcontent-%COMP%] {\n width: 100%;\n display: flex;\n align-items: center;\n background: var(--mj-bg-surface);\n border: 1.5px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 0 0.25rem 0 1rem;\n gap: 0.5rem;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n}\n\n.search-box[_ngcontent-%COMP%]:focus-within {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.search-box-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 1rem;\n}\n\n.search-box-input[_ngcontent-%COMP%] {\n flex: 1;\n border: none;\n background: transparent;\n padding: 0.85rem 0;\n font-size: 1rem;\n color: var(--mj-text-primary);\n outline: none;\n font-family: inherit;\n}\n\n.search-box-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n}\n\n.search-clear-btn[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 0.5rem;\n border-radius: 6px;\n font-size: 0.85rem;\n}\n\n.search-clear-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.search-submit-btn[_ngcontent-%COMP%] {\n padding: 0.55rem 1.25rem;\n border-radius: 8px;\n border: none;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n font-size: 0.9rem;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s ease;\n white-space: nowrap;\n}\n\n.search-submit-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.search-submit-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n\n.search-quick-actions[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n gap: 0.75rem;\n margin-top: 1rem;\n}\n\n.quick-action-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 0.4rem;\n padding: 0.45rem 1rem;\n border-radius: 9999px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 0.85rem;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.quick-action-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n\n\n.search-results-layout[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n gap: 1.5rem;\n padding: 0 2rem 2rem;\n max-width: 1200px;\n margin: 0 auto;\n width: 100%;\n}\n\n.search-sidebar[_ngcontent-%COMP%] {\n width: 260px;\n flex-shrink: 0;\n}\n\n.search-results-main[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n overflow-y: auto;\n max-height: calc(100vh - 220px);\n}\n\n\n\n.search-results-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 0.75rem;\n}\n\n.search-results-count[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n color: var(--mj-text-secondary);\n}\n\n.search-results-time[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.toggle-filters-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 0.4rem;\n padding: 0.35rem 0.75rem;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 0.82rem;\n cursor: pointer;\n}\n\n.toggle-filters-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n\n\n.search-agent-cta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1.25rem;\n margin-top: 1.5rem;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.cta-icon[_ngcontent-%COMP%] {\n font-size: 1.5rem;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.cta-text[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.cta-text[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-size: 0.9rem;\n}\n\n.cta-text[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.82rem;\n margin: 0.2rem 0 0;\n}\n\n.cta-btn[_ngcontent-%COMP%] {\n padding: 0.5rem 1rem;\n border-radius: 8px;\n border: none;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n font-size: 0.85rem;\n font-weight: 500;\n cursor: pointer;\n white-space: nowrap;\n}\n\n.cta-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n\n\n.search-recent-area[_ngcontent-%COMP%] {\n max-width: 600px;\n margin: 0 auto;\n padding: 1rem 2rem;\n}\n\n.recent-title[_ngcontent-%COMP%] {\n font-size: 0.82rem;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n font-weight: 600;\n margin-bottom: 0.75rem;\n}\n\n.recent-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n}\n\n.recent-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n padding: 0.6rem 0.75rem;\n border-radius: 8px;\n cursor: pointer;\n transition: background 0.1s ease;\n}\n\n.recent-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.recent-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.82rem;\n}\n\n.recent-query[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-primary);\n font-size: 0.9rem;\n}\n\n.recent-count[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.78rem;\n}\n\n\n\n.threshold-section[_ngcontent-%COMP%] {\n margin-top: 1.25rem;\n padding-top: 1rem;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.threshold-label[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 0.82rem;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n margin-bottom: 0.5rem;\n}\n\n.threshold-value[_ngcontent-%COMP%] {\n font-weight: 700;\n color: var(--mj-brand-primary);\n font-size: 0.85rem;\n}\n\n.threshold-slider[_ngcontent-%COMP%] {\n width: 100%;\n height: 4px;\n appearance: none;\n -webkit-appearance: none;\n background: var(--mj-border-default);\n border-radius: 2px;\n outline: none;\n cursor: pointer;\n}\n\n.threshold-slider[_ngcontent-%COMP%]::-webkit-slider-thumb {\n -webkit-appearance: none;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n border: 2px solid var(--mj-bg-surface);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n cursor: pointer;\n}\n\n.threshold-slider[_ngcontent-%COMP%]::-moz-range-thumb {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n border: 2px solid var(--mj-bg-surface);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n cursor: pointer;\n}\n\n.threshold-range-labels[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n font-size: 0.72rem;\n color: var(--mj-text-muted);\n margin-top: 0.25rem;\n}\n\n\n\n@media (max-width: 768px) {\n .search-results-layout[_ngcontent-%COMP%] {\n flex-direction: column;\n padding: 0 1rem 1rem;\n }\n\n .search-sidebar[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .search-hero[_ngcontent-%COMP%] {\n padding: 3rem 1rem 1rem;\n }\n}"] });
447
- };
448
- KnowledgeSearchResourceComponent = __decorate([
449
- RegisterClass(BaseResourceComponent, 'KnowledgeSearchResource')
450
- ], KnowledgeSearchResourceComponent);
451
- export { KnowledgeSearchResourceComponent };
452
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KnowledgeSearchResourceComponent, [{
453
- type: Component,
454
- args: [{ standalone: false, selector: 'app-knowledge-search-resource', template: "@if (!ShowResultDetail) {\n <div class=\"search-page\" [class.search-page-has-results]=\"HasSearched\">\n <!-- Search Hero Section -->\n <div class=\"search-hero\" [class.search-hero-compact]=\"HasSearched\">\n @if (!HasSearched) {\n <div class=\"search-logo\">\n <i class=\"fa-solid fa-brain\"></i>\n Knowledge Hub\n </div>\n <p class=\"search-subtitle\">Search across all your knowledge -- entities, documents, content, and more</p>\n }\n\n <!-- Search Bar -->\n <div class=\"search-container\">\n <div class=\"search-box\">\n <i class=\"fa-solid fa-magnifying-glass search-box-icon\"></i>\n <input\n type=\"text\"\n class=\"search-box-input\"\n placeholder=\"Search across all your knowledge...\"\n [(ngModel)]=\"Query\"\n (keydown)=\"OnSearchKeydown($event)\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n @if (Query.length > 0) {\n <button class=\"search-clear-btn\" (click)=\"ClearSearch()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n <button class=\"search-submit-btn\" (click)=\"RunSearch()\" [disabled]=\"IsSearching || !Query.trim()\">\n @if (IsSearching) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n Search\n }\n </button>\n </div>\n\n <!-- Quick filters row -->\n @if (!HasSearched) {\n <div class=\"search-quick-actions\">\n <button class=\"quick-action-btn\" (click)=\"OnAskAgent()\">\n <i class=\"fa-solid fa-robot\"></i>\n Ask Knowledge Agent\n </button>\n </div>\n }\n </div>\n </div>\n\n @if (HasSearched) {\n <!-- Results Area -->\n <div class=\"search-results-layout\">\n <!-- Sidebar Filters -->\n @if (ShowFilters && Filters.length > 0) {\n <aside class=\"search-sidebar\">\n <mj-search-filter\n [Filters]=\"Filters\"\n [ActiveFilters]=\"ActiveFilters\"\n (FilterChanged)=\"OnFilterChanged($event)\"\n (FiltersCleared)=\"OnFiltersCleared()\"\n ></mj-search-filter>\n\n <!-- Relevance Threshold Slider -->\n <div class=\"threshold-section\">\n <label class=\"threshold-label\">\n Min Relevance\n <span class=\"threshold-value\">{{ (MinScoreThreshold * 100) | number:'1.0-0' }}%</span>\n </label>\n <input\n type=\"range\"\n class=\"threshold-slider\"\n [min]=\"0\"\n [max]=\"100\"\n [step]=\"5\"\n [value]=\"MinScoreThreshold * 100\"\n (input)=\"OnThresholdChanged($any($event.target).value / 100)\"\n />\n <div class=\"threshold-range-labels\">\n <span>All</span>\n <span>Strict</span>\n </div>\n </div>\n </aside>\n }\n\n <!-- Results Main -->\n <div class=\"search-results-main\">\n <!-- Results Header -->\n <div class=\"search-results-header\">\n <span class=\"search-results-count\">\n {{ TotalCount }} results\n @if (ElapsedMs > 0) {\n <span class=\"search-results-time\">in {{ ElapsedMs }}ms</span>\n }\n </span>\n <div class=\"search-results-actions\">\n @if (Filters.length > 0) {\n <button class=\"toggle-filters-btn\" (click)=\"ToggleFilters()\">\n <i class=\"fa-solid fa-filter\"></i>\n @if (HasActiveFilters()) {\n Filters Active\n } @else {\n Filters\n }\n </button>\n }\n </div>\n </div>\n\n <!-- Results List -->\n <mj-search-results\n [ResultGroups]=\"ResultGroups\"\n [IsLoading]=\"IsSearching\"\n [TotalCount]=\"TotalCount\"\n [ElapsedMs]=\"ElapsedMs\"\n (ResultSelected)=\"OnResultSelected($event)\"\n (OpenRecordRequested)=\"OnOpenRecord($event)\"\n ></mj-search-results>\n\n <!-- Agent CTA at bottom -->\n @if (TotalCount === 0 && !IsSearching) {\n <div class=\"search-agent-cta\">\n <i class=\"fa-solid fa-robot cta-icon\"></i>\n <div class=\"cta-text\">\n <strong>Can't find what you're looking for?</strong>\n <p>Ask the Knowledge Agent for a deeper analysis</p>\n </div>\n <button class=\"cta-btn\" (click)=\"OnAskAgent()\">\n Ask Agent\n </button>\n </div>\n }\n </div>\n </div>\n } @else if (!IsSearching) {\n <!-- Empty state: recent searches -->\n <div class=\"search-recent-area\">\n @if (RecentSearches.length > 0) {\n <h3 class=\"recent-title\">Recent Searches</h3>\n <div class=\"recent-list\">\n @for (recent of RecentSearches; track recent.Query; let i = $index) {\n @if (i < 8) {\n <div class=\"recent-item\" (click)=\"ApplyRecentSearch(recent)\">\n <i class=\"fa-solid fa-clock recent-icon\"></i>\n <span class=\"recent-query\">{{ recent.Query }}</span>\n <span class=\"recent-count\">{{ recent.ResultCount }} results</span>\n </div>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n} @else {\n <!-- Result Detail View (Task 8) -->\n <app-search-result-detail\n [Result]=\"DetailResult\"\n (BackClicked)=\"CloseResultDetail()\"\n (NavigateToRecord)=\"OnOpenRecord($event)\"\n ></app-search-result-detail>\n}\n", styles: ["/* Knowledge Search Resource - Google-style clean */\n\n.search-page {\n min-height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n/* Search Hero */\n.search-hero {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 6rem 2rem 2rem;\n transition: padding 0.4s ease;\n}\n\n.search-hero-compact {\n padding: 1.5rem 2rem 1rem;\n}\n\n.search-logo {\n font-size: 2.2rem;\n font-weight: 700;\n color: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n gap: 0.75rem;\n margin-bottom: 0.5rem;\n transition: font-size 0.4s ease;\n}\n\n.search-hero-compact .search-logo {\n font-size: 0;\n height: 0;\n margin: 0;\n overflow: hidden;\n}\n\n.search-subtitle {\n color: var(--mj-text-secondary);\n font-size: 1rem;\n margin-bottom: 2rem;\n text-align: center;\n transition: all 0.4s ease;\n}\n\n.search-hero-compact .search-subtitle {\n font-size: 0;\n height: 0;\n margin: 0;\n overflow: hidden;\n opacity: 0;\n}\n\n/* Search Box */\n.search-container {\n width: 100%;\n max-width: 720px;\n}\n\n.search-box {\n width: 100%;\n display: flex;\n align-items: center;\n background: var(--mj-bg-surface);\n border: 1.5px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 0 0.25rem 0 1rem;\n gap: 0.5rem;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n}\n\n.search-box:focus-within {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.search-box-icon {\n color: var(--mj-text-muted);\n font-size: 1rem;\n}\n\n.search-box-input {\n flex: 1;\n border: none;\n background: transparent;\n padding: 0.85rem 0;\n font-size: 1rem;\n color: var(--mj-text-primary);\n outline: none;\n font-family: inherit;\n}\n\n.search-box-input::placeholder {\n color: var(--mj-text-muted);\n}\n\n.search-clear-btn {\n border: none;\n background: transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 0.5rem;\n border-radius: 6px;\n font-size: 0.85rem;\n}\n\n.search-clear-btn:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.search-submit-btn {\n padding: 0.55rem 1.25rem;\n border-radius: 8px;\n border: none;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n font-size: 0.9rem;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s ease;\n white-space: nowrap;\n}\n\n.search-submit-btn:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.search-submit-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Quick Actions */\n.search-quick-actions {\n display: flex;\n justify-content: center;\n gap: 0.75rem;\n margin-top: 1rem;\n}\n\n.quick-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 0.4rem;\n padding: 0.45rem 1rem;\n border-radius: 9999px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 0.85rem;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.quick-action-btn:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n/* Results Layout */\n.search-results-layout {\n display: flex;\n flex: 1;\n gap: 1.5rem;\n padding: 0 2rem 2rem;\n max-width: 1200px;\n margin: 0 auto;\n width: 100%;\n}\n\n.search-sidebar {\n width: 260px;\n flex-shrink: 0;\n}\n\n.search-results-main {\n flex: 1;\n min-width: 0;\n overflow-y: auto;\n max-height: calc(100vh - 220px);\n}\n\n/* Results Header */\n.search-results-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 0.75rem;\n}\n\n.search-results-count {\n font-size: 0.85rem;\n color: var(--mj-text-secondary);\n}\n\n.search-results-time {\n color: var(--mj-text-muted);\n}\n\n.toggle-filters-btn {\n display: inline-flex;\n align-items: center;\n gap: 0.4rem;\n padding: 0.35rem 0.75rem;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 0.82rem;\n cursor: pointer;\n}\n\n.toggle-filters-btn:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n/* Agent CTA */\n.search-agent-cta {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1.25rem;\n margin-top: 1.5rem;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.cta-icon {\n font-size: 1.5rem;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.cta-text {\n flex: 1;\n}\n\n.cta-text strong {\n color: var(--mj-text-primary);\n font-size: 0.9rem;\n}\n\n.cta-text p {\n color: var(--mj-text-muted);\n font-size: 0.82rem;\n margin: 0.2rem 0 0;\n}\n\n.cta-btn {\n padding: 0.5rem 1rem;\n border-radius: 8px;\n border: none;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n font-size: 0.85rem;\n font-weight: 500;\n cursor: pointer;\n white-space: nowrap;\n}\n\n.cta-btn:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n/* Recent Searches */\n.search-recent-area {\n max-width: 600px;\n margin: 0 auto;\n padding: 1rem 2rem;\n}\n\n.recent-title {\n font-size: 0.82rem;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n font-weight: 600;\n margin-bottom: 0.75rem;\n}\n\n.recent-list {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n}\n\n.recent-item {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n padding: 0.6rem 0.75rem;\n border-radius: 8px;\n cursor: pointer;\n transition: background 0.1s ease;\n}\n\n.recent-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.recent-icon {\n color: var(--mj-text-muted);\n font-size: 0.82rem;\n}\n\n.recent-query {\n flex: 1;\n color: var(--mj-text-primary);\n font-size: 0.9rem;\n}\n\n.recent-count {\n color: var(--mj-text-muted);\n font-size: 0.78rem;\n}\n\n/* Relevance Threshold */\n.threshold-section {\n margin-top: 1.25rem;\n padding-top: 1rem;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.threshold-label {\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 0.82rem;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n margin-bottom: 0.5rem;\n}\n\n.threshold-value {\n font-weight: 700;\n color: var(--mj-brand-primary);\n font-size: 0.85rem;\n}\n\n.threshold-slider {\n width: 100%;\n height: 4px;\n appearance: none;\n -webkit-appearance: none;\n background: var(--mj-border-default);\n border-radius: 2px;\n outline: none;\n cursor: pointer;\n}\n\n.threshold-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n border: 2px solid var(--mj-bg-surface);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n cursor: pointer;\n}\n\n.threshold-slider::-moz-range-thumb {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n border: 2px solid var(--mj-bg-surface);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n cursor: pointer;\n}\n\n.threshold-range-labels {\n display: flex;\n justify-content: space-between;\n font-size: 0.72rem;\n color: var(--mj-text-muted);\n margin-top: 0.25rem;\n}\n\n/* Mobile responsive */\n@media (max-width: 768px) {\n .search-results-layout {\n flex-direction: column;\n padding: 0 1rem 1rem;\n }\n\n .search-sidebar {\n width: 100%;\n }\n\n .search-hero {\n padding: 3rem 1rem 1rem;\n }\n}\n"] }]
455
- }], null, null); })();
456
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KnowledgeSearchResourceComponent, { className: "KnowledgeSearchResourceComponent", filePath: "src/KnowledgeHub/components/search/knowledge-search-resource.component.ts", lineNumber: 42 }); })();
457
- /** Tree-shaking prevention */
458
- export function LoadKnowledgeSearchResource() {
459
- // Prevents tree-shaking of the component
460
- }
461
- //# sourceMappingURL=knowledge-search-resource.component.js.map